Diff for /rpl/src/instructions_m1.c between versions 1.30 and 1.42

version 1.30, 2012/01/05 10:19:02 version 1.42, 2013/03/16 11:31:41
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.5    RPL/2 (R) version 4.1.13
   Copyright (C) 1989-2012 Dr. BERTRAND Joël    Copyright (C) 1989-2013 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 39  void Line 39  void
 instruction_moins(struct_processus *s_etat_processus)  instruction_moins(struct_processus *s_etat_processus)
 {  {
     integer8                        tampon;      integer8                        tampon;
     integer8                        tampon_2;  
   
     logical1                        depassement;      logical1                        depassement;
     logical1                        drapeau;      logical1                        drapeau;
Line 136  instruction_moins(struct_processus *s_et Line 135  instruction_moins(struct_processus *s_et
     if (((*s_objet_argument_1).type == INT) &&      if (((*s_objet_argument_1).type == INT) &&
             ((*s_objet_argument_2).type == INT))              ((*s_objet_argument_2).type == INT))
     {      {
         tampon_2 = -(*((integer8 *) (*s_objet_argument_1).objet));          if (depassement_soustraction((integer8 *) (*s_objet_argument_2).objet,
                   (integer8 *) (*s_objet_argument_1).objet, &tampon) ==
         if (depassement_addition(&tampon_2,  
                 (integer8 *) (*s_objet_argument_2).objet, &tampon) ==  
                 d_absence_erreur)                  d_absence_erreur)
         {          {
             if ((s_objet_resultat = allocation(s_etat_processus, INT))              if ((s_objet_resultat = allocation(s_etat_processus, INT))
Line 161  instruction_moins(struct_processus *s_et Line 158  instruction_moins(struct_processus *s_et
             }              }
   
             (*((real8 *) (*s_objet_resultat).objet)) = ((real8)              (*((real8 *) (*s_objet_resultat).objet)) = ((real8)
                     (-(*((integer8 *) (*s_objet_argument_1).objet))))                      (*((integer8 *) (*s_objet_argument_2).objet)))
                     + ((real8) (*((integer8 *) (*s_objet_argument_2).objet)));                      - ((real8) (*((integer8 *) (*s_objet_argument_1).objet)));
         }          }
     }      }
   
Line 351  instruction_moins(struct_processus *s_et Line 348  instruction_moins(struct_processus *s_et
         for(i = 0; i < (*(((struct_vecteur *) (*s_objet_resultat)          for(i = 0; i < (*(((struct_vecteur *) (*s_objet_resultat)
                 .objet))).taille; i++)                  .objet))).taille; i++)
         {          {
             tampon = -((integer8 *) (*((struct_vecteur *) (*s_objet_argument_1)              if (depassement_soustraction(&(((integer8 *) (*((struct_vecteur *)
                     .objet)).tableau)[i];                      (*s_objet_argument_2).objet)).tableau)[i]),
                       &(((integer8 *) (*((struct_vecteur *) (*s_objet_argument_1)
             if (depassement_addition(&(((integer8 *) (*((struct_vecteur *)                      .objet)).tableau)[i]),
                     (*s_objet_argument_2).objet)).tableau)[i]), &tampon,  
                     &(((integer8 *) (*((struct_vecteur *)                      &(((integer8 *) (*((struct_vecteur *)
                     (*s_objet_resultat).objet)).tableau)[i])) == d_erreur)                      (*s_objet_resultat).objet)).tableau)[i])) == d_erreur)
             {              {
Line 738  instruction_moins(struct_processus *s_et Line 734  instruction_moins(struct_processus *s_et
             for(j = 0; j < (*(((struct_matrice *) (*s_objet_resultat).objet)))              for(j = 0; j < (*(((struct_matrice *) (*s_objet_resultat).objet)))
                     .nombre_colonnes; j++)                      .nombre_colonnes; j++)
             {              {
                 tampon = -((integer8 **) (*((struct_matrice *)                  if (depassement_soustraction(&(((integer8 **)
                         (*s_objet_argument_1).objet)).tableau)[i][j];                          (*((struct_matrice *) (*s_objet_argument_2).objet))
                           .tableau)[i][j]), &(((integer8 **) (*((struct_matrice *)
                 if (depassement_addition(&(((integer8 **) (*((struct_matrice *)                          (*s_objet_argument_1).objet)).tableau)[i][j]),
                         (*s_objet_argument_2).objet)).tableau)[i][j]), &tampon,  
                         &(((integer8 **) (*((struct_matrice *)                          &(((integer8 **) (*((struct_matrice *)
                         (*s_objet_resultat).objet)).tableau)[i][j]))                          (*s_objet_resultat).objet)).tableau)[i][j]))
                         == d_erreur)                          == d_erreur)
Line 5795  instruction_mant(struct_processus *s_eta Line 5790  instruction_mant(struct_processus *s_eta
     real8                               base_reelle;      real8                               base_reelle;
     real8                               reduction_reelle;      real8                               reduction_reelle;
   
     integer4                            erreur;  
   
     integer8                            base_entiere;      integer8                            base_entiere;
     integer8                            exposant;      integer8                            exposant;
     integer8                            reduction_entiere;      integer8                            reduction_entiere;
Line 5898  instruction_mant(struct_processus *s_eta Line 5891  instruction_mant(struct_processus *s_eta
                 (*s_objet_argument).objet))));                  (*s_objet_argument).objet))));
   
         base_reelle = 10;          base_reelle = 10;
         f77puissanceri_(&base_reelle, &exposant, &reduction_reelle, &erreur);          f77puissanceri_(&base_reelle, &exposant, &reduction_reelle);
   
         if (erreur == -1)  
         {  
             if (test_cfsf(s_etat_processus, 59) == d_vrai)  
             {  
                 liberation(s_etat_processus, s_objet_argument);  
                 liberation(s_etat_processus, s_objet_resultat);  
   
                 (*s_etat_processus).exception = d_ep_overflow;  
                 return;  
             }  
             else  
             {  
                 reduction_reelle = ((double) 1) / ((double) 0);  
             }  
         }  
   
         (*((real8 *) (*s_objet_resultat).objet)) =          (*((real8 *) (*s_objet_resultat).objet)) =
                 (*((real8 *) (*s_objet_argument).objet)) / reduction_reelle;                  (*((real8 *) (*s_objet_argument).objet)) / reduction_reelle;

Removed from v.1.30  
changed lines
  Added in v.1.42


CVSweb interface <joel.bertrand@systella.fr>