Diff for /rpl/src/calcul_integral.c between versions 1.27 and 1.69

version 1.27, 2011/07/25 07:44:53 version 1.69, 2021/03/13 12:50:37
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.2    RPL/2 (R) version 4.1.33
   Copyright (C) 1989-2011 Dr. BERTRAND Joël    Copyright (C) 1989-2021 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 55  integrale_romberg(struct_processus *s_et Line 55  integrale_romberg(struct_processus *s_et
   
     struct_variable             s_variable;      struct_variable             s_variable;
   
     unsigned long               i;      integer8                    i;
     unsigned long               j;      integer8                    j;
     unsigned long               k;      integer8                    k;
     unsigned long               n;      integer8                    n;
     unsigned long               p;      integer8                    p;
     unsigned long               nombre_elements;      integer8                    nombre_elements;
     unsigned long               nombre_termes;      integer8                    nombre_termes;
     unsigned long               taille_vecteur_precedent;      integer8                    taille_vecteur_precedent;
   
     /*      /*
      * Création d'une variable locale représentant la variable d'intégration       * Création d'une variable locale représentant la variable d'intégration
Line 137  integrale_romberg(struct_processus *s_et Line 137  integrale_romberg(struct_processus *s_et
   
     do      do
     {      {
         h = (b - a) / (nombre_elements = (1ULL << (++n)));          h = (b - a) / ((real8) (nombre_elements = (((integer8) 1) << (++n))));
   
           if (nombre_elements == 0)
           {
               // Dépassement de capacité
               n--;
               break;
           }
   
         x = a;          x = a;
   
         /*          /*
Line 146  integrale_romberg(struct_processus *s_et Line 154  integrale_romberg(struct_processus *s_et
   
         t_tampon = t;          t_tampon = t;
   
         if ((t = (real8 **) malloc((n + 1) * sizeof(real8 *))) == NULL)          if ((t = (real8 **) malloc((((size_t) n) + 1) * sizeof(real8 *)))
                   == NULL)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
             return;              return;
Line 154  integrale_romberg(struct_processus *s_et Line 163  integrale_romberg(struct_processus *s_et
   
         for(i = 0; i <= n; i++)          for(i = 0; i <= n; i++)
         {          {
             if ((t[i] = (real8 *) malloc((n + 1) * sizeof(real8))) == NULL)              if ((t[i] = (real8 *) malloc((((size_t) n) + 1) * sizeof(real8)))
                       == NULL)
             {              {
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                 return;                  return;
Line 180  integrale_romberg(struct_processus *s_et Line 190  integrale_romberg(struct_processus *s_et
          * Boucle principale           * Boucle principale
          */           */
   
         if ((vecteur = (real8 *) malloc((nombre_elements + 1) *          if ((vecteur = (real8 *) malloc((((size_t) nombre_elements) + 1) *
                 sizeof(real8))) == NULL)                  sizeof(real8))) == NULL)
         {          {
             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;              (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
Line 258  integrale_romberg(struct_processus *s_et Line 268  integrale_romberg(struct_processus *s_et
         for(p = 1; p <= n; p++)          for(p = 1; p <= n; p++)
         {          {
             k = n - p;              k = n - p;
             t[p][k] = ((pow(4, p) * t[p - 1][k + 1]) - t[p - 1][k]) /              t[p][k] = ((pow(4, (real8) p) * t[p - 1][k + 1]) - t[p - 1][k]) /
                     ((real8) (pow(4, p) - 1));                      ((real8) (pow(4, (real8) p) - 1));
         }          }
     } while(((erreur = fabs(t[n][0] - t[n - 1][0])) > precision) &&      } while(((erreur = fabs(t[n][0] - t[n - 1][0])) > precision) &&
             ((*s_etat_processus).var_volatile_requete_arret == 0));              ((*s_etat_processus).var_volatile_requete_arret == 0));
Line 340  evaluation_romberg(struct_processus *s_e Line 350  evaluation_romberg(struct_processus *s_e
         struct_objet *s_expression, unsigned char *variable, real8 *point,          struct_objet *s_expression, unsigned char *variable, real8 *point,
         real8 *valeur, logical1 *validite)          real8 *valeur, logical1 *validite)
 {  {
     long                                hauteur_pile;      integer8                            hauteur_pile;
   
     struct_liste_pile_systeme           *l_position_normale;      struct_liste_pile_systeme           *l_position_normale;
   
Line 415  evaluation_romberg(struct_processus *s_e Line 425  evaluation_romberg(struct_processus *s_e
              */               */
   
             while((*s_etat_processus).hauteur_pile_operationnelle >              while((*s_etat_processus).hauteur_pile_operationnelle >
                     (unsigned long) hauteur_pile)                      hauteur_pile)
             {              {
                 if (depilement(s_etat_processus, &((*s_etat_processus)                  if (depilement(s_etat_processus, &((*s_etat_processus)
                         .l_base_pile), &s_objet) == d_erreur)                          .l_base_pile), &s_objet) == d_erreur)
Line 466  evaluation_romberg(struct_processus *s_e Line 476  evaluation_romberg(struct_processus *s_e
   
         if ((*s_objet).type == INT)          if ((*s_objet).type == INT)
         {          {
             (*valeur) = (*((integer8 *) (*s_objet).objet));              (*valeur) = (real8) (*((integer8 *) (*s_objet).objet));
             (*validite) = d_vrai;              (*validite) = d_vrai;
         }          }
         else if ((*s_objet).type == REL)          else if ((*s_objet).type == REL)

Removed from v.1.27  
changed lines
  Added in v.1.69


CVSweb interface <joel.bertrand@systella.fr>