Diff for /rpl/src/statistiques.c between versions 1.34 and 1.66

version 1.34, 2012/05/21 17:25:46 version 1.66, 2020/01/10 11:15:52
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.9    RPL/2 (R) version 4.1.32
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2020 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 36 Line 36
 */  */
   
 struct_vecteur *  struct_vecteur *
 sommation_statistique(struct_matrice *s_matrice)  sommation_statistique(struct_processus *s_etat_processus,
           struct_matrice *s_matrice)
 {  {
     integer8                    *cumul_entier;      integer8                    *cumul_entier;
   
Line 47  sommation_statistique(struct_matrice *s_ Line 48  sommation_statistique(struct_matrice *s_
   
     struct_vecteur              *s_vecteur;      struct_vecteur              *s_vecteur;
   
     unsigned long               i;      integer8                    i;
     unsigned long               j;      integer8                    j;
   
     if ((s_vecteur = (struct_vecteur *) malloc(sizeof(struct_vecteur))) == NULL)      if ((s_vecteur = (struct_vecteur *) malloc(sizeof(struct_vecteur)))
               == NULL)
     {      {
         return NULL;          return NULL;
     }      }
Line 61  sommation_statistique(struct_matrice *s_ Line 63  sommation_statistique(struct_matrice *s_
   
     if ((*s_matrice).type == 'I')      if ((*s_matrice).type == 'I')
     {      {
         if ((cumul_entier = (integer8 *) malloc((*s_matrice).nombre_colonnes *          if ((cumul_entier = (integer8 *) malloc(((size_t) (*s_matrice)
                 sizeof(integer8))) == NULL)                  .nombre_colonnes) * sizeof(integer8))) == NULL)
         {          {
             free(s_vecteur);              free(s_vecteur);
             return NULL;              return NULL;
Line 103  sommation_statistique(struct_matrice *s_ Line 105  sommation_statistique(struct_matrice *s_
   
             free(cumul_entier);              free(cumul_entier);
   
             if (((*s_vecteur).tableau = malloc((*s_matrice).nombre_colonnes *              if (((*s_vecteur).tableau = malloc(((size_t) (*s_matrice)
                     sizeof(real8))) == NULL)                      .nombre_colonnes) * sizeof(real8))) == NULL)
             {              {
                 free(s_vecteur);                  free(s_vecteur);
                 return NULL;                  return NULL;
             }              }
   
             if ((colonne = (real8 *) malloc((*s_matrice).nombre_lignes *              if ((colonne = (real8 *) malloc(((size_t) (*s_matrice)
                     sizeof(real8))) == NULL)                      .nombre_lignes) * sizeof(real8))) == NULL)
             {              {
                 free(s_vecteur);                  free(s_vecteur);
                 return NULL;                  return NULL;
Line 149  sommation_statistique(struct_matrice *s_ Line 151  sommation_statistique(struct_matrice *s_
   
     else if ((*s_matrice).type == 'R')      else if ((*s_matrice).type == 'R')
     {      {
         if (((*s_vecteur).tableau = malloc((*s_matrice).nombre_colonnes *          if (((*s_vecteur).tableau = malloc(((size_t) (*s_matrice)
                 sizeof(real8))) == NULL)                  .nombre_colonnes) * sizeof(real8))) == NULL)
         {          {
             free(s_vecteur);              free(s_vecteur);
             return NULL;              return NULL;
         }          }
   
         if ((colonne = (real8 *) malloc((*s_matrice).nombre_lignes *          if ((colonne = (real8 *) malloc(((size_t) (*s_matrice).nombre_lignes) *
                 sizeof(real8))) == NULL)                  sizeof(real8))) == NULL)
         {          {
             free(s_vecteur);              free(s_vecteur);
Line 204  sommation_statistique(struct_matrice *s_ Line 206  sommation_statistique(struct_matrice *s_
 */  */
   
 struct_vecteur *  struct_vecteur *
 sommation_produits_colonnes_statistiques(struct_matrice *s_matrice,  sommation_produits_colonnes_statistiques(struct_processus *s_etat_processus,
         unsigned long position_1, unsigned long position_2)          struct_matrice *s_matrice,
           integer8 position_1, integer8 position_2)
 {  {
     integer8                    *cumul_entier;      integer8                    *cumul_entier;
     integer8                    tampon;      integer8                    tampon;
Line 217  sommation_produits_colonnes_statistiques Line 220  sommation_produits_colonnes_statistiques
   
     struct_vecteur              *s_vecteur;      struct_vecteur              *s_vecteur;
   
     unsigned long               i;      integer8                    i;
   
     if ((s_vecteur = (struct_vecteur *) malloc(sizeof(struct_vecteur))) == NULL)      if ((s_vecteur = (struct_vecteur *) malloc(sizeof(struct_vecteur))) == NULL)
     {      {
Line 281  sommation_produits_colonnes_statistiques Line 284  sommation_produits_colonnes_statistiques
                 return NULL;                  return NULL;
             }              }
   
             if ((colonne = (real8 *) malloc((*s_matrice).nombre_lignes *              if ((colonne = (real8 *) malloc(((size_t) (*s_matrice)
                     sizeof(real8))) == NULL)                      .nombre_lignes) * sizeof(real8))) == NULL)
             {              {
                 free(s_vecteur);                  free(s_vecteur);
                 return NULL;                  return NULL;
Line 325  sommation_produits_colonnes_statistiques Line 328  sommation_produits_colonnes_statistiques
             return NULL;              return NULL;
         }          }
   
         if ((colonne = (real8 *) malloc((*s_matrice).nombre_lignes *          if ((colonne = (real8 *) malloc(((size_t) (*s_matrice).nombre_lignes) *
                 sizeof(real8))) == NULL)                  sizeof(real8))) == NULL)
         {          {
             free(s_vecteur);              free(s_vecteur);
Line 370  sommation_produits_colonnes_statistiques Line 373  sommation_produits_colonnes_statistiques
 */  */
   
 struct_vecteur *  struct_vecteur *
 sommation_colonne_statistique(struct_matrice *s_matrice, unsigned long position)  sommation_colonne_statistique(struct_processus *s_etat_processus,
           struct_matrice *s_matrice, integer8 position)
 {  {
     integer8                    *cumul_entier;      integer8                    *cumul_entier;
   
Line 381  sommation_colonne_statistique(struct_mat Line 385  sommation_colonne_statistique(struct_mat
   
     struct_vecteur              *s_vecteur;      struct_vecteur              *s_vecteur;
   
     unsigned long               i;      integer8                    i;
   
     if ((s_vecteur = (struct_vecteur *) malloc(sizeof(struct_vecteur))) == NULL)      if ((s_vecteur = (struct_vecteur *) malloc(sizeof(struct_vecteur))) == NULL)
     {      {
Line 439  sommation_colonne_statistique(struct_mat Line 443  sommation_colonne_statistique(struct_mat
                 return NULL;                  return NULL;
             }              }
   
             if ((colonne = (real8 *) malloc((*s_matrice).nombre_lignes *              if ((colonne = (real8 *) malloc(((size_t) (*s_matrice)
                     sizeof(real8))) == NULL)                      .nombre_lignes) * sizeof(real8))) == NULL)
             {              {
                 free(s_vecteur);                  free(s_vecteur);
                 return NULL;                  return NULL;
Line 481  sommation_colonne_statistique(struct_mat Line 485  sommation_colonne_statistique(struct_mat
             return NULL;              return NULL;
         }          }
   
         if ((colonne = (real8 *) malloc((*s_matrice).nombre_lignes *          if ((colonne = (real8 *) malloc(((size_t) (*s_matrice).nombre_lignes) *
                 sizeof(real8))) == NULL)                  sizeof(real8))) == NULL)
         {          {
             free(s_vecteur);              free(s_vecteur);
Line 525  sommation_colonne_statistique(struct_mat Line 529  sommation_colonne_statistique(struct_mat
 */  */
   
 struct_vecteur *  struct_vecteur *
 moyenne_statistique(struct_matrice *s_matrice)  moyenne_statistique(struct_processus *s_etat_processus,
           struct_matrice *s_matrice)
 {  {
     integer8                    *tampon;      integer8                    *tampon;
   
Line 533  moyenne_statistique(struct_matrice *s_ma Line 538  moyenne_statistique(struct_matrice *s_ma
   
     struct_vecteur              *s_vecteur;      struct_vecteur              *s_vecteur;
   
     unsigned long               i;      integer8                    i;
   
     if ((s_vecteur = sommation_statistique(s_matrice)) == NULL)      if ((s_vecteur = sommation_statistique(s_etat_processus, s_matrice))
               == NULL)
     {      {
         return NULL;          return NULL;
     }      }
Line 574  moyenne_statistique(struct_matrice *s_ma Line 580  moyenne_statistique(struct_matrice *s_ma
         {          {
             tampon = (*s_vecteur).tableau;              tampon = (*s_vecteur).tableau;
   
             if (((*s_vecteur).tableau = malloc((*s_vecteur).taille *              if (((*s_vecteur).tableau = malloc(((size_t) (*s_vecteur).taille) *
                     sizeof(real8))) == NULL)                      sizeof(real8))) == NULL)
             {              {
                 return NULL;                  return NULL;
Line 610  moyenne_statistique(struct_matrice *s_ma Line 616  moyenne_statistique(struct_matrice *s_ma
 */  */
   
 struct_vecteur *  struct_vecteur *
 variance_statistique(struct_matrice *s_matrice, unsigned char type)  variance_statistique(struct_processus *s_etat_processus,
           struct_matrice *s_matrice, unsigned char type)
 {  {
     integer8                        *tampon;      integer8                        *tampon;
   
     logical1                        erreur_memoire;      logical1                        erreur_memoire;
   
     unsigned long                   i;      integer8                        i;
     unsigned long                   j;      integer8                        j;
   
     real8                           *cumul;      real8                           *cumul;
   
     struct_vecteur                  *s_moyenne;      struct_vecteur                  *s_moyenne;
     struct_vecteur                  *s_variance;      struct_vecteur                  *s_variance;
   
     if ((s_moyenne = moyenne_statistique(s_matrice)) == NULL)      if ((s_moyenne = moyenne_statistique(s_etat_processus, s_matrice)) == NULL)
     {      {
         return NULL;          return NULL;
     }      }
Line 633  variance_statistique(struct_matrice *s_m Line 640  variance_statistique(struct_matrice *s_m
      * Le résultat de cette fonction est toujours réel.       * Le résultat de cette fonction est toujours réel.
      */       */
   
     if ((cumul = (real8 *) malloc((*s_matrice).nombre_lignes * sizeof(real8)))      if ((cumul = (real8 *) malloc(((size_t) (*s_matrice).nombre_lignes) *
             == NULL)             sizeof(real8))) == NULL)
     {      {
         return NULL;          return NULL;
     }      }
Line 649  variance_statistique(struct_matrice *s_m Line 656  variance_statistique(struct_matrice *s_m
     {      {
         tampon = (*s_moyenne).tableau;          tampon = (*s_moyenne).tableau;
   
         if (((*s_moyenne).tableau = malloc((*s_moyenne).taille * sizeof(real8)))          if (((*s_moyenne).tableau = malloc(((size_t) (*s_moyenne).taille) *
                 == NULL)                  sizeof(real8))) == NULL)
         {          {
             return NULL;              return NULL;
         }          }
Line 664  variance_statistique(struct_matrice *s_m Line 671  variance_statistique(struct_matrice *s_m
         free(tampon);          free(tampon);
     }      }
   
     if (((*s_variance).tableau = malloc((*s_matrice).nombre_colonnes *      if (((*s_variance).tableau = malloc(((size_t) (*s_matrice).nombre_colonnes)
             sizeof(real8))) == NULL)              * sizeof(real8))) == NULL)
     {      {
         return NULL;          return NULL;
     }      }
Line 759  variance_statistique(struct_matrice *s_m Line 766  variance_statistique(struct_matrice *s_m
 */  */
   
 struct_vecteur *  struct_vecteur *
 ecart_type_statistique(struct_matrice *s_matrice, unsigned char type)  ecart_type_statistique(struct_processus *s_etat_processus,
           struct_matrice *s_matrice, unsigned char type)
 {  {
     struct_vecteur                  *s_vecteur;      struct_vecteur                  *s_vecteur;
   
     unsigned long                   i;      integer8                        i;
   
     if ((s_vecteur = variance_statistique(s_matrice, type)) == NULL)      if ((s_vecteur = variance_statistique(s_etat_processus, s_matrice, type))
               == NULL)
     {      {
         return NULL;          return NULL;
     }      }
Line 794  ecart_type_statistique(struct_matrice *s Line 803  ecart_type_statistique(struct_matrice *s
   
 real8  real8
 correlation_statistique(struct_matrice *s_matrice,  correlation_statistique(struct_matrice *s_matrice,
         unsigned long colonne_1, unsigned long colonne_2, logical1 *erreur)          integer8 colonne_1, integer8 colonne_2, logical1 *erreur)
 {  {
     logical1                erreur_memoire;      logical1                erreur_memoire;
   
Line 804  correlation_statistique(struct_matrice * Line 813  correlation_statistique(struct_matrice *
     real8                   numerateur;      real8                   numerateur;
     real8                   *vecteur;      real8                   *vecteur;
   
     unsigned long           i;      integer8                i;
     unsigned long           nombre_observations;      integer8                nombre_observations;
   
     (*erreur) = d_absence_erreur;      (*erreur) = d_absence_erreur;
   
     if ((vecteur = (real8 *) malloc((nombre_observations =      if ((vecteur = sys_malloc(((size_t) (nombre_observations =
             (*s_matrice).nombre_lignes) * sizeof(real8))) == NULL)              (*s_matrice).nombre_lignes)) * sizeof(real8))) == NULL)
     {      {
         (*erreur) = d_erreur;          (*erreur) = d_erreur;
         return 0;          return 0;
Line 827  correlation_statistique(struct_matrice * Line 836  correlation_statistique(struct_matrice *
         }          }
   
         moyenne_colonne_1 = sommation_vecteur_reel(vecteur,          moyenne_colonne_1 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 841  correlation_statistique(struct_matrice * Line 851  correlation_statistique(struct_matrice *
         }          }
   
         moyenne_colonne_2 = sommation_vecteur_reel(vecteur,          moyenne_colonne_2 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 908  correlation_statistique(struct_matrice * Line 919  correlation_statistique(struct_matrice *
         }          }
   
         moyenne_colonne_1 = sommation_vecteur_reel(vecteur,          moyenne_colonne_1 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 923  correlation_statistique(struct_matrice * Line 935  correlation_statistique(struct_matrice *
         }          }
   
         moyenne_colonne_2 = sommation_vecteur_reel(vecteur,          moyenne_colonne_2 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 985  correlation_statistique(struct_matrice * Line 998  correlation_statistique(struct_matrice *
         denominateur = sqrt(denominateur);          denominateur = sqrt(denominateur);
     }      }
   
     free(vecteur);      sys_free(vecteur);
   
     return numerateur / denominateur;      return numerateur / denominateur;
 }  }
Line 1004  correlation_statistique(struct_matrice * Line 1017  correlation_statistique(struct_matrice *
 */  */
   
 real8  real8
 covariance_statistique(struct_matrice *s_matrice,  covariance_statistique(struct_matrice *s_matrice, integer8 colonne_1,
         unsigned long colonne_1, unsigned long colonne_2,          integer8 colonne_2, unsigned char type, logical1 *erreur)
         unsigned char type, logical1 *erreur)  
 {  {
     logical1                erreur_memoire;      logical1                erreur_memoire;
   
Line 1016  covariance_statistique(struct_matrice *s Line 1028  covariance_statistique(struct_matrice *s
     real8                   numerateur;      real8                   numerateur;
     real8                   *vecteur;      real8                   *vecteur;
   
     unsigned long           i;      integer8                i;
     unsigned long           nombre_observations;      integer8                nombre_observations;
   
     (*erreur) = d_absence_erreur;      (*erreur) = d_absence_erreur;
   
     if ((vecteur = (real8 *) malloc((nombre_observations =      if ((vecteur = sys_malloc(((size_t) (nombre_observations =
             (*s_matrice).nombre_lignes) * sizeof(real8))) == NULL)              (*s_matrice).nombre_lignes)) * sizeof(real8))) == NULL)
     {      {
         (*erreur) = d_erreur;          (*erreur) = d_erreur;
         return 0;          return 0;
Line 1033  covariance_statistique(struct_matrice *s Line 1045  covariance_statistique(struct_matrice *s
   
     if (type == 'E')      if (type == 'E')
     {      {
         denominateur = nombre_observations - 1;          denominateur = ((real8) nombre_observations) - 1;
     }      }
     else      else
     {      {
         denominateur = nombre_observations;          denominateur = ((real8) nombre_observations);
     }      }
   
     if ((*s_matrice).type == 'R')      if ((*s_matrice).type == 'R')
Line 1048  covariance_statistique(struct_matrice *s Line 1060  covariance_statistique(struct_matrice *s
         }          }
   
         moyenne_colonne_1 = sommation_vecteur_reel(vecteur,          moyenne_colonne_1 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 1062  covariance_statistique(struct_matrice *s Line 1075  covariance_statistique(struct_matrice *s
         }          }
   
         moyenne_colonne_2 = sommation_vecteur_reel(vecteur,          moyenne_colonne_2 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 1095  covariance_statistique(struct_matrice *s Line 1109  covariance_statistique(struct_matrice *s
         }          }
   
         moyenne_colonne_1 = sommation_vecteur_reel(vecteur,          moyenne_colonne_1 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 1110  covariance_statistique(struct_matrice *s Line 1125  covariance_statistique(struct_matrice *s
         }          }
   
         moyenne_colonne_2 = sommation_vecteur_reel(vecteur,          moyenne_colonne_2 = sommation_vecteur_reel(vecteur,
                 &nombre_observations, &erreur_memoire) / nombre_observations;                  &nombre_observations, &erreur_memoire) /
                   ((real8) nombre_observations);
   
         if (erreur_memoire == d_vrai)          if (erreur_memoire == d_vrai)
         {          {
Line 1136  covariance_statistique(struct_matrice *s Line 1152  covariance_statistique(struct_matrice *s
         }          }
     }      }
   
     free(vecteur);      sys_free(vecteur);
   
     return numerateur / denominateur;      return numerateur / denominateur;
 }  }

Removed from v.1.34  
changed lines
  Added in v.1.66


CVSweb interface <joel.bertrand@systella.fr>