File:  [local] / rpl / src / instructions_m3.c
Revision 1.16.2.2: download - view: text, annotated - select for diffs - revision graph
Thu Apr 14 08:46:44 2011 UTC (13 years ago) by bertrand
Branches: rpl-4_0
CVS tags: rpl-4_0_24
Diff to: branchpoint 1.16: preferred, colored
En route pour la 4.0.23.

    1: /*
    2: ================================================================================
    3:   RPL/2 (R) version 4.0.23
    4:   Copyright (C) 1989-2011 Dr. BERTRAND Joël
    5: 
    6:   This file is part of RPL/2.
    7: 
    8:   RPL/2 is free software; you can redistribute it and/or modify it
    9:   under the terms of the CeCILL V2 License as published by the french
   10:   CEA, CNRS and INRIA.
   11:  
   12:   RPL/2 is distributed in the hope that it will be useful, but WITHOUT
   13:   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   14:   FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
   15:   for more details.
   16:  
   17:   You should have received a copy of the CeCILL License
   18:   along with RPL/2. If not, write to info@cecill.info.
   19: ================================================================================
   20: */
   21: 
   22: 
   23: #include "rpl-conv.h"
   24: 
   25: 
   26: /*
   27: ================================================================================
   28:   Fonction 'mean'
   29: ================================================================================
   30:   Entrées : pointeur sur une structure struct_processus
   31: --------------------------------------------------------------------------------
   32:   Sorties :
   33: --------------------------------------------------------------------------------
   34:   Effets de bord : néant
   35: ================================================================================
   36: */
   37: 
   38: void
   39: instruction_mean(struct_processus *s_etat_processus)
   40: {
   41:     logical1                            presence_variable;
   42: 
   43:     long                                i;
   44: 
   45:     struct_objet                        *s_objet_statistique;
   46:     struct_objet                        *s_objet_resultat;
   47:     struct_objet                        *s_objet_temporaire;
   48: 
   49:     unsigned long                       nombre_colonnes;
   50: 
   51:     (*s_etat_processus).erreur_execution = d_ex;
   52: 
   53:     if ((*s_etat_processus).affichage_arguments == 'Y')
   54:     {
   55:         printf("\n  MEAN ");
   56: 
   57:         if ((*s_etat_processus).langue == 'F')
   58:         {
   59:             printf("(moyenne)\n\n");
   60:         }
   61:         else
   62:         {
   63:             printf("(mean)\n\n");
   64:         }
   65: 
   66:         printf("->  1: %s, %s, %s, %s\n", d_INT, d_REL, d_VIN, d_VRL);
   67: 
   68:         return;
   69:     }
   70:     else if ((*s_etat_processus).test_instruction == 'Y')
   71:     {
   72:         (*s_etat_processus).nombre_arguments = -1;
   73:         return;
   74:     }
   75: 
   76:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
   77:     {
   78:         if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
   79:         {
   80:             return;
   81:         }
   82:     }
   83: 
   84:     /*
   85:      * Recherche d'une variable globale référencée par SIGMA
   86:      */
   87: 
   88:     if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
   89:     {
   90:         /*
   91:          * Aucune variable SIGMA
   92:          */
   93: 
   94:         (*s_etat_processus).erreur_systeme = d_es;
   95:         (*s_etat_processus).erreur_execution = d_ex_absence_observations;
   96:         return;
   97:     }
   98:     else
   99:     {
  100:         /*
  101:          * Il existe une variable locale SIGMA. Reste à vérifier l'existence
  102:          * d'une variable SIGMA globale...
  103:          */
  104: 
  105:         i = (*s_etat_processus).position_variable_courante;
  106:         presence_variable = d_faux;
  107: 
  108:         while(i >= 0)
  109:         {
  110:             if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
  111:                     ds_sdat) == 0) && ((*s_etat_processus)
  112:                     .s_liste_variables[i].niveau == 1))
  113:             {
  114:                 presence_variable = d_vrai;
  115:                 break;
  116:             }
  117: 
  118:             i--;
  119:         }
  120: 
  121:         if (presence_variable == d_faux)
  122:         {
  123:             (*s_etat_processus).erreur_execution = d_ex_absence_observations;
  124:             return;
  125:         }
  126:         else
  127:         {
  128:             (*s_etat_processus).position_variable_courante = i;
  129: 
  130:             if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
  131:             {
  132:                 (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
  133:                 return;
  134:             }
  135: 
  136:             if (((*((*s_etat_processus).s_liste_variables
  137:                     [(*s_etat_processus).position_variable_courante].objet))
  138:                     .type != MIN) && ((*((*s_etat_processus)
  139:                     .s_liste_variables[(*s_etat_processus)
  140:                     .position_variable_courante].objet)).type != MRL))
  141:             {
  142:                 (*s_etat_processus).erreur_execution =
  143:                         d_ex_matrice_statistique_invalide;
  144:                 return;
  145:             }
  146: 
  147:             nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
  148:                     .s_liste_variables[(*s_etat_processus)
  149:                     .position_variable_courante].objet)).objet))
  150:                     .nombre_colonnes;
  151:         }
  152:     }
  153: 
  154:     s_objet_statistique = ((*s_etat_processus).s_liste_variables
  155:             [(*s_etat_processus).position_variable_courante]).objet;
  156: 
  157:     if (((*s_objet_statistique).type == MIN) ||
  158:             ((*s_objet_statistique).type == MRL))
  159:     {
  160:         if ((s_objet_resultat = allocation(s_etat_processus, NON)) == NULL)
  161:         {
  162:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  163:             return;
  164:         }
  165: 
  166:         if (((*s_objet_resultat).objet = moyenne_statistique((struct_matrice *)
  167:                 (*s_objet_statistique).objet)) == NULL)
  168:         {
  169:             (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  170:             return;
  171:         }
  172: 
  173:         if (nombre_colonnes == 1)
  174:         {
  175:             if ((*((struct_vecteur *) (*s_objet_resultat).objet)).type == 'I')
  176:             {
  177:                 (*s_objet_resultat).type = VIN;
  178:                 s_objet_temporaire = s_objet_resultat;
  179: 
  180:                 if ((s_objet_resultat = allocation(s_etat_processus, INT))
  181:                         == NULL)
  182:                 {
  183:                     (*s_etat_processus).erreur_systeme =
  184:                             d_es_allocation_memoire;
  185:                     return;
  186:                 }
  187: 
  188:                 (*((integer8 *) (*s_objet_resultat).objet)) =
  189:                         ((integer8 *) (*((struct_vecteur *)
  190:                         (*s_objet_temporaire).objet)).tableau)[0];
  191: 
  192:                 liberation(s_etat_processus, s_objet_temporaire);
  193:             }
  194:             else
  195:             {
  196:                 (*s_objet_resultat).type = VRL;
  197:                 s_objet_temporaire = s_objet_resultat;
  198: 
  199:                 if ((s_objet_resultat = allocation(s_etat_processus, REL))
  200:                         == NULL)
  201:                 {
  202:                     (*s_etat_processus).erreur_systeme =
  203:                             d_es_allocation_memoire;
  204:                     return;
  205:                 }
  206: 
  207:                 (*((real8 *) (*s_objet_resultat).objet)) =
  208:                         ((real8 *) (*((struct_vecteur *)
  209:                         (*s_objet_temporaire).objet)).tableau)[0];
  210: 
  211:                 liberation(s_etat_processus, s_objet_temporaire);
  212:             }
  213:         }
  214:         else
  215:         {
  216:             if ((*((struct_vecteur *) (*s_objet_resultat).objet)).type == 'I')
  217:             {
  218:                 (*s_objet_resultat).type = VIN;
  219:             }
  220:             else
  221:             {
  222:                 (*s_objet_resultat).type = VRL;
  223:             }
  224:         }
  225: 
  226:         if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  227:                 s_objet_resultat) == d_erreur)
  228:         {
  229:             return;
  230:         }
  231:     }
  232:     else
  233:     {
  234:         (*s_etat_processus).erreur_execution =
  235:                 d_ex_matrice_statistique_invalide;
  236:         return;
  237:     }
  238: 
  239:     return;
  240: }
  241: 
  242: 
  243: /*
  244: ================================================================================
  245:   Fonction 'mins'
  246: ================================================================================
  247:   Entrées : pointeur sur une structure struct_processus
  248: --------------------------------------------------------------------------------
  249:   Sorties :
  250: --------------------------------------------------------------------------------
  251:   Effets de bord : néant
  252: ================================================================================
  253: */
  254: 
  255: void
  256: instruction_mins(struct_processus *s_etat_processus)
  257: {
  258:     logical1                            presence_variable;
  259: 
  260:     long                                i;
  261:     long                                j;
  262: 
  263:     struct_objet                        *s_objet_statistique;
  264:     struct_objet                        *s_objet_resultat;
  265: 
  266:     unsigned long                       nombre_colonnes;
  267: 
  268:     (*s_etat_processus).erreur_execution = d_ex;
  269: 
  270:     if ((*s_etat_processus).affichage_arguments == 'Y')
  271:     {
  272:         printf("\n  MINS ");
  273: 
  274:         if ((*s_etat_processus).langue == 'F')
  275:         {
  276:             printf("(minimum de la matrice statistique)\n\n");
  277:         }
  278:         else
  279:         {
  280:             printf("(statistical matrix minimum)\n\n");
  281:         }
  282: 
  283:         printf("->  1: %s, %s, %s, %s\n", d_INT, d_REL, d_VIN, d_VRL);
  284: 
  285:         return;
  286:     }
  287:     else if ((*s_etat_processus).test_instruction == 'Y')
  288:     {
  289:         (*s_etat_processus).nombre_arguments = -1;
  290:         return;
  291:     }
  292: 
  293:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  294:     {
  295:         if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
  296:         {
  297:             return;
  298:         }
  299:     }
  300: 
  301:     /*
  302:      * Recherche d'une variable globale référencée par SIGMA
  303:      */
  304: 
  305:     if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
  306:     {
  307:         /*
  308:          * Aucune variable SIGMA
  309:          */
  310: 
  311:         (*s_etat_processus).erreur_systeme = d_es;
  312:         (*s_etat_processus).erreur_execution = d_ex_absence_observations;
  313:         return;
  314:     }
  315:     else
  316:     {
  317:         /*
  318:          * Il existe une variable locale SIGMA. Reste à vérifier l'existence
  319:          * d'une variable SIGMA globale...
  320:          */
  321: 
  322:         i = (*s_etat_processus).position_variable_courante;
  323:         presence_variable = d_faux;
  324: 
  325:         while(i >= 0)
  326:         {
  327:             if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
  328:                     ds_sdat) == 0) && ((*s_etat_processus)
  329:                     .s_liste_variables[i].niveau == 1))
  330:             {
  331:                 presence_variable = d_vrai;
  332:                 break;
  333:             }
  334: 
  335:             i--;
  336:         }
  337: 
  338:         if (presence_variable == d_faux)
  339:         {
  340:             (*s_etat_processus).erreur_execution = d_ex_absence_observations;
  341:             return;
  342:         }
  343:         else
  344:         {
  345:             (*s_etat_processus).position_variable_courante = i;
  346: 
  347:             if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
  348:             {
  349:                 (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
  350:                 return;
  351:             }
  352: 
  353:             if (((*((*s_etat_processus).s_liste_variables
  354:                     [(*s_etat_processus).position_variable_courante].objet))
  355:                     .type != MIN) && ((*((*s_etat_processus)
  356:                     .s_liste_variables[(*s_etat_processus)
  357:                     .position_variable_courante].objet)).type != MRL))
  358:             {
  359:                 (*s_etat_processus).erreur_execution =
  360:                         d_ex_matrice_statistique_invalide;
  361:                 return;
  362:             }
  363: 
  364:             nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
  365:                     .s_liste_variables[(*s_etat_processus)
  366:                     .position_variable_courante].objet)).objet))
  367:                     .nombre_colonnes;
  368:         }
  369:     }
  370: 
  371:     s_objet_statistique = ((*s_etat_processus).s_liste_variables
  372:             [(*s_etat_processus).position_variable_courante]).objet;
  373: 
  374:     if (nombre_colonnes == 1)
  375:     {
  376:         if ((*s_objet_statistique).type == MRL)
  377:         {
  378:             if ((s_objet_resultat = allocation(s_etat_processus, REL))
  379:                     == NULL)
  380:             {
  381:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  382:                 return;
  383:             }
  384: 
  385:             (*((real8 *) (*s_objet_resultat).objet)) = ((real8 **)
  386:                     (*((struct_matrice *) (*s_objet_statistique).objet))
  387:                     .tableau)[0][0];
  388: 
  389:             for(i = 1; i < (long) (*((struct_matrice *) (*s_objet_statistique)
  390:                     .objet)).nombre_lignes; i++)
  391:             {
  392:                 if ((*((real8 *) (*s_objet_resultat).objet)) > ((real8 **)
  393:                         (*((struct_matrice *) (*s_objet_statistique).objet))
  394:                         .tableau)[i][0])
  395:                 {
  396:                     (*((real8 *) (*s_objet_resultat).objet)) = ((real8 **)
  397:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  398:                             .tableau)[i][0];
  399:                 }
  400:             }
  401:         }
  402:         else
  403:         {
  404:             if ((s_objet_resultat = allocation(s_etat_processus, INT))
  405:                     == NULL)
  406:             {
  407:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  408:                 return;
  409:             }
  410: 
  411:             (*((integer8 *) (*s_objet_resultat).objet)) = ((integer8 **)
  412:                     (*((struct_matrice *) (*s_objet_statistique).objet))
  413:                     .tableau)[0][0];
  414: 
  415:             for(i = 1; i < (long) (*((struct_matrice *) (*s_objet_statistique)
  416:                     .objet)).nombre_lignes; i++)
  417:             {
  418:                 if ((*((integer8 *) (*s_objet_resultat).objet)) > ((integer8 **)
  419:                         (*((struct_matrice *) (*s_objet_statistique).objet))
  420:                         .tableau)[i][0])
  421:                 {
  422:                     (*((integer8 *) (*s_objet_resultat).objet)) = ((integer8 **)
  423:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  424:                             .tableau)[i][0];
  425:                 }
  426:             }
  427:         }
  428:     }
  429:     else
  430:     {
  431:         if ((*s_objet_statistique).type == MRL)
  432:         {
  433:             if ((s_objet_resultat = allocation(s_etat_processus, VRL))
  434:                     == NULL)
  435:             {
  436:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  437:                 return;
  438:             }
  439: 
  440:             (*((struct_vecteur *) (*s_objet_resultat).objet)).taille =
  441:                     nombre_colonnes;
  442: 
  443:             if (((*((struct_vecteur *) (*s_objet_resultat).objet)).tableau =
  444:                     malloc(nombre_colonnes * sizeof(real8))) == NULL)
  445:             {
  446:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  447:                 return;
  448:             }
  449: 
  450:             for(j = 0; j < (long) nombre_colonnes; j++)
  451:             {
  452:                 ((real8 *) (*((struct_vecteur *) (*s_objet_resultat).objet))
  453:                         .tableau)[j] = ((real8 **) (*((struct_matrice *)
  454:                         (*s_objet_statistique).objet)).tableau)[0][j];
  455: 
  456:                 for(i = 1; i < (long) (*((struct_matrice *)
  457:                         (*s_objet_statistique).objet)).nombre_lignes; i++)
  458:                 {
  459:                     if (((real8 *) (*((struct_vecteur *) (*s_objet_resultat)
  460:                             .objet)).tableau)[j] > ((real8 **)
  461:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  462:                             .tableau)[i][j])
  463:                     {
  464:                         ((real8 *) (*((struct_vecteur *) (*s_objet_resultat)
  465:                                 .objet)).tableau)[j] = ((real8 **)
  466:                                 (*((struct_matrice *) (*s_objet_statistique)
  467:                                 .objet)).tableau)[i][j];
  468:                     }
  469:                 }
  470:             }
  471:         }
  472:         else
  473:         {
  474:             if ((s_objet_resultat = allocation(s_etat_processus, VIN))
  475:                     == NULL)
  476:             {
  477:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  478:                 return;
  479:             }
  480: 
  481:             (*((struct_vecteur *) (*s_objet_resultat).objet)).taille =
  482:                     nombre_colonnes;
  483: 
  484:             if (((*((struct_vecteur *) (*s_objet_resultat).objet)).tableau =
  485:                     malloc(nombre_colonnes * sizeof(integer8))) == NULL)
  486:             {
  487:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  488:                 return;
  489:             }
  490: 
  491:             for(j = 0; j < (long) nombre_colonnes; j++)
  492:             {
  493:                 ((integer8 *) (*((struct_vecteur *) (*s_objet_resultat).objet))
  494:                         .tableau)[j] = ((integer8 **) (*((struct_matrice *)
  495:                         (*s_objet_statistique).objet)).tableau)[0][j];
  496: 
  497:                 for(i = 1; i < (long) (*((struct_matrice *)
  498:                         (*s_objet_statistique).objet)).nombre_lignes; i++)
  499:                 {
  500:                     if (((integer8 *) (*((struct_vecteur *) (*s_objet_resultat)
  501:                             .objet)).tableau)[j] > ((integer8 **)
  502:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  503:                             .tableau)[i][j])
  504:                     {
  505:                         ((integer8 *) (*((struct_vecteur *) (*s_objet_resultat)
  506:                                 .objet)).tableau)[j] = ((integer8 **)
  507:                                 (*((struct_matrice *) (*s_objet_statistique)
  508:                                 .objet)).tableau)[i][j];
  509:                     }
  510:                 }
  511:             }
  512:         }
  513:     }
  514: 
  515:     if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  516:             s_objet_resultat) == d_erreur)
  517:     {
  518:         return;
  519:     }
  520: 
  521:     return;
  522: }
  523: 
  524: 
  525: /*
  526: ================================================================================
  527:   Fonction 'maxs'
  528: ================================================================================
  529:   Entrées : pointeur sur une structure struct_processus
  530: --------------------------------------------------------------------------------
  531:   Sorties :
  532: --------------------------------------------------------------------------------
  533:   Effets de bord : néant
  534: ================================================================================
  535: */
  536: 
  537: void
  538: instruction_maxs(struct_processus *s_etat_processus)
  539: {
  540:     logical1                            presence_variable;
  541: 
  542:     long                                i;
  543:     long                                j;
  544: 
  545:     struct_objet                        *s_objet_statistique;
  546:     struct_objet                        *s_objet_resultat;
  547: 
  548:     unsigned long                       nombre_colonnes;
  549: 
  550:     (*s_etat_processus).erreur_execution = d_ex;
  551: 
  552:     if ((*s_etat_processus).affichage_arguments == 'Y')
  553:     {
  554:         printf("\n  MAXS ");
  555: 
  556:         if ((*s_etat_processus).langue == 'F')
  557:         {
  558:             printf("(maximum de la matrice statistique)\n\n");
  559:         }
  560:         else
  561:         {
  562:             printf("(statistical matrix maximum)\n\n");
  563:         }
  564: 
  565:         printf("->  1: %s, %s, %s, %s\n", d_INT, d_REL, d_VIN, d_VRL);
  566: 
  567:         return;
  568:     }
  569:     else if ((*s_etat_processus).test_instruction == 'Y')
  570:     {
  571:         (*s_etat_processus).nombre_arguments = -1;
  572:         return;
  573:     }
  574: 
  575:     if (test_cfsf(s_etat_processus, 31) == d_vrai)
  576:     {
  577:         if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
  578:         {
  579:             return;
  580:         }
  581:     }
  582: 
  583:     /*
  584:      * Recherche d'une variable globale référencée par SIGMA
  585:      */
  586: 
  587:     if (recherche_variable(s_etat_processus, ds_sdat) == d_faux)
  588:     {
  589:         /*
  590:          * Aucune variable SIGMA
  591:          */
  592: 
  593:         (*s_etat_processus).erreur_systeme = d_es;
  594:         (*s_etat_processus).erreur_execution = d_ex_absence_observations;
  595:         return;
  596:     }
  597:     else
  598:     {
  599:         /*
  600:          * Il existe une variable locale SIGMA. Reste à vérifier l'existence
  601:          * d'une variable SIGMA globale...
  602:          */
  603: 
  604:         i = (*s_etat_processus).position_variable_courante;
  605:         presence_variable = d_faux;
  606: 
  607:         while(i >= 0)
  608:         {
  609:             if ((strcmp((*s_etat_processus).s_liste_variables[i].nom,
  610:                     ds_sdat) == 0) && ((*s_etat_processus)
  611:                     .s_liste_variables[i].niveau == 1))
  612:             {
  613:                 presence_variable = d_vrai;
  614:                 break;
  615:             }
  616: 
  617:             i--;
  618:         }
  619: 
  620:         if (presence_variable == d_faux)
  621:         {
  622:             (*s_etat_processus).erreur_execution = d_ex_absence_observations;
  623:             return;
  624:         }
  625:         else
  626:         {
  627:             (*s_etat_processus).position_variable_courante = i;
  628: 
  629:             if ((*s_etat_processus).s_liste_variables[i].objet == NULL)
  630:             {
  631:                 (*s_etat_processus).erreur_execution = d_ex_variable_partagee;
  632:                 return;
  633:             }
  634: 
  635:             if (((*((*s_etat_processus).s_liste_variables
  636:                     [(*s_etat_processus).position_variable_courante].objet))
  637:                     .type != MIN) && ((*((*s_etat_processus)
  638:                     .s_liste_variables[(*s_etat_processus)
  639:                     .position_variable_courante].objet)).type != MRL))
  640:             {
  641:                 (*s_etat_processus).erreur_execution =
  642:                         d_ex_matrice_statistique_invalide;
  643:                 return;
  644:             }
  645: 
  646:             nombre_colonnes = (*((struct_matrice *) (*((*s_etat_processus)
  647:                     .s_liste_variables[(*s_etat_processus)
  648:                     .position_variable_courante].objet)).objet))
  649:                     .nombre_colonnes;
  650:         }
  651:     }
  652: 
  653:     s_objet_statistique = ((*s_etat_processus).s_liste_variables
  654:             [(*s_etat_processus).position_variable_courante]).objet;
  655: 
  656:     if (nombre_colonnes == 1)
  657:     {
  658:         if ((*s_objet_statistique).type == MRL)
  659:         {
  660:             if ((s_objet_resultat = allocation(s_etat_processus, REL))
  661:                     == NULL)
  662:             {
  663:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  664:                 return;
  665:             }
  666: 
  667:             (*((real8 *) (*s_objet_resultat).objet)) = ((real8 **)
  668:                     (*((struct_matrice *) (*s_objet_statistique).objet))
  669:                     .tableau)[0][0];
  670: 
  671:             for(i = 1; i < (long) (*((struct_matrice *) (*s_objet_statistique)
  672:                     .objet)).nombre_lignes; i++)
  673:             {
  674:                 if ((*((real8 *) (*s_objet_resultat).objet)) < ((real8 **)
  675:                         (*((struct_matrice *) (*s_objet_statistique).objet))
  676:                         .tableau)[i][0])
  677:                 {
  678:                     (*((real8 *) (*s_objet_resultat).objet)) = ((real8 **)
  679:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  680:                             .tableau)[i][0];
  681:                 }
  682:             }
  683:         }
  684:         else
  685:         {
  686:             if ((s_objet_resultat = allocation(s_etat_processus, INT))
  687:                     == NULL)
  688:             {
  689:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  690:                 return;
  691:             }
  692: 
  693:             (*((integer8 *) (*s_objet_resultat).objet)) = ((integer8 **)
  694:                     (*((struct_matrice *) (*s_objet_statistique).objet))
  695:                     .tableau)[0][0];
  696: 
  697:             for(i = 1; i < (long) (*((struct_matrice *) (*s_objet_statistique)
  698:                     .objet)).nombre_lignes; i++)
  699:             {
  700:                 if ((*((integer8 *) (*s_objet_resultat).objet)) < ((integer8 **)
  701:                         (*((struct_matrice *) (*s_objet_statistique).objet))
  702:                         .tableau)[i][0])
  703:                 {
  704:                     (*((integer8 *) (*s_objet_resultat).objet)) = ((integer8 **)
  705:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  706:                             .tableau)[i][0];
  707:                 }
  708:             }
  709:         }
  710:     }
  711:     else
  712:     {
  713:         if ((*s_objet_statistique).type == MRL)
  714:         {
  715:             if ((s_objet_resultat = allocation(s_etat_processus, VRL))
  716:                     == NULL)
  717:             {
  718:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  719:                 return;
  720:             }
  721: 
  722:             (*((struct_vecteur *) (*s_objet_resultat).objet)).taille =
  723:                     nombre_colonnes;
  724: 
  725:             if (((*((struct_vecteur *) (*s_objet_resultat).objet)).tableau =
  726:                     malloc(nombre_colonnes * sizeof(real8))) == NULL)
  727:             {
  728:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  729:                 return;
  730:             }
  731: 
  732:             for(j = 0; j < (long) nombre_colonnes; j++)
  733:             {
  734:                 ((real8 *) (*((struct_vecteur *) (*s_objet_resultat).objet))
  735:                         .tableau)[j] = ((real8 **) (*((struct_matrice *)
  736:                         (*s_objet_statistique).objet)).tableau)[0][j];
  737: 
  738:                 for(i = 1; i < (long) (*((struct_matrice *)
  739:                         (*s_objet_statistique).objet)).nombre_lignes; i++)
  740:                 {
  741:                     if (((real8 *) (*((struct_vecteur *) (*s_objet_resultat)
  742:                             .objet)).tableau)[j] < ((real8 **)
  743:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  744:                             .tableau)[i][j])
  745:                     {
  746:                         ((real8 *) (*((struct_vecteur *) (*s_objet_resultat)
  747:                                 .objet)).tableau)[j] = ((real8 **)
  748:                                 (*((struct_matrice *) (*s_objet_statistique)
  749:                                 .objet)).tableau)[i][j];
  750:                     }
  751:                 }
  752:             }
  753:         }
  754:         else
  755:         {
  756:             if ((s_objet_resultat = allocation(s_etat_processus, VIN))
  757:                     == NULL)
  758:             {
  759:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  760:                 return;
  761:             }
  762: 
  763:             (*((struct_vecteur *) (*s_objet_resultat).objet)).taille =
  764:                     nombre_colonnes;
  765: 
  766:             if (((*((struct_vecteur *) (*s_objet_resultat).objet)).tableau =
  767:                     malloc(nombre_colonnes * sizeof(integer8))) == NULL)
  768:             {
  769:                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
  770:                 return;
  771:             }
  772: 
  773:             for(j = 0; j < (long) nombre_colonnes; j++)
  774:             {
  775:                 ((integer8 *) (*((struct_vecteur *) (*s_objet_resultat).objet))
  776:                         .tableau)[j] = ((integer8 **) (*((struct_matrice *)
  777:                         (*s_objet_statistique).objet)).tableau)[0][j];
  778: 
  779:                 for(i = 1; i < (long) (*((struct_matrice *)
  780:                         (*s_objet_statistique).objet)).nombre_lignes; i++)
  781:                 {
  782:                     if (((integer8 *) (*((struct_vecteur *) (*s_objet_resultat)
  783:                             .objet)).tableau)[j] < ((integer8 **)
  784:                             (*((struct_matrice *) (*s_objet_statistique).objet))
  785:                             .tableau)[i][j])
  786:                     {
  787:                         ((integer8 *) (*((struct_vecteur *) (*s_objet_resultat)
  788:                                 .objet)).tableau)[j] = ((integer8 **)
  789:                                 (*((struct_matrice *) (*s_objet_statistique)
  790:                                 .objet)).tableau)[i][j];
  791:                     }
  792:                 }
  793:             }
  794:         }
  795:     }
  796: 
  797:     if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
  798:             s_objet_resultat) == d_erreur)
  799:     {
  800:         return;
  801:     }
  802: 
  803:     return;
  804: }
  805: 
  806: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>