Annotation of rpl/src/instructions_m3.c, revision 1.1
1.1 ! bertrand 1: /*
! 2: ================================================================================
! 3: RPL/2 (R) version 4.0.9
! 4: Copyright (C) 1989-2010 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>