Annotation of rpl/src/instructions_f2.c, revision 1.2

1.1       bertrand    1: /*
                      2: ================================================================================
1.2     ! bertrand    3:   RPL/2 (R) version 4.0.10
1.1       bertrand    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 '->HMS'
                     29: ================================================================================
                     30:   Entrées : structure processus
                     31: --------------------------------------------------------------------------------
                     32:   Sorties :
                     33: --------------------------------------------------------------------------------
                     34:   Effets de bord : néant
                     35: ================================================================================
                     36: */
                     37: 
                     38: void
                     39: instruction_fleche_hms(struct_processus *s_etat_processus)
                     40: {
                     41:    struct_objet                    *s_copie;
                     42:    struct_objet                    *s_objet;
                     43: 
                     44:    (*s_etat_processus).erreur_execution = d_ex;
                     45: 
                     46:    if ((*s_etat_processus).affichage_arguments == 'Y')
                     47:    {
                     48:        printf("\n  ->HMS ");
                     49: 
                     50:        if ((*s_etat_processus).langue == 'F')
                     51:        {
                     52:            printf("(conversion sexadécimale)\n\n");
                     53:        }
                     54:        else
                     55:        {
                     56:            printf("(conversion to hours minutes seconds)\n\n");
                     57:        }
                     58: 
                     59:        printf("    1: %s\n", d_INT);
                     60:        printf("->  1: %s\n\n", d_INT);
                     61: 
                     62:        printf("    1: %s\n", d_REL);
                     63:        printf("->  1: %s\n", d_REL);
                     64: 
                     65:        return;
                     66:    }
                     67:    else if ((*s_etat_processus).test_instruction == 'Y')
                     68:    {
                     69:        (*s_etat_processus).nombre_arguments = -1;
                     70:        return;
                     71:    }
                     72: 
                     73:    if (test_cfsf(s_etat_processus, 31) == d_vrai)
                     74:    {
                     75:        if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
                     76:        {
                     77:            return;
                     78:        }
                     79:    }
                     80: 
                     81:    if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                     82:            &s_objet) == d_erreur)
                     83:    {
                     84:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                     85:        return;
                     86:    }
                     87: 
                     88: /*
                     89: --------------------------------------------------------------------------------
                     90:   Argument entier
                     91: --------------------------------------------------------------------------------
                     92: */
                     93: 
                     94:    if ((*s_objet).type == INT)
                     95:    {
                     96:        /*
                     97:         * On ne fait rien...
                     98:         */
                     99:    }
                    100: 
                    101: /*
                    102: --------------------------------------------------------------------------------
                    103:   Argument réel
                    104: --------------------------------------------------------------------------------
                    105: */
                    106: 
                    107:    else if ((*s_objet).type == REL)
                    108:    {
                    109:        if ((s_copie = copie_objet(s_etat_processus, s_objet, 'O')) == NULL)
                    110:        {
                    111:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    112:            return;
                    113:        }
                    114: 
                    115:        liberation(s_etat_processus, s_objet);
                    116:        s_objet = s_copie;
                    117: 
                    118:        conversion_decimal_vers_hms((real8 *) (*s_objet).objet);
                    119:    }
                    120: 
                    121: /*
                    122: --------------------------------------------------------------------------------
                    123:   Argument invalide
                    124: --------------------------------------------------------------------------------
                    125: */
                    126: 
                    127:    else
                    128:    {
                    129:        liberation(s_etat_processus, s_objet);
                    130: 
                    131:        (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
                    132:        return;
                    133:    }
                    134: 
                    135:    if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    136:            s_objet) == d_erreur)
                    137:    {
                    138:        return;
                    139:    }
                    140: 
                    141:    return;
                    142: }
                    143: 
                    144: 
                    145: /*
                    146: ================================================================================
                    147:   Fonction '->ARRAY'
                    148: ================================================================================
                    149:   Entrées : structure processus
                    150: --------------------------------------------------------------------------------
                    151:   Sorties :
                    152: --------------------------------------------------------------------------------
                    153:   Effets de bord : néant
                    154: ================================================================================
                    155: */
                    156: 
                    157: void
                    158: instruction_fleche_array(struct_processus *s_etat_processus)
                    159: {
                    160:    enum t_type                     type;
                    161: 
                    162:    struct_liste_chainee            *l_element_courant;
                    163: 
                    164:    struct_objet                    *s_objet;
                    165:    struct_objet                    *s_objet_elementaire;
                    166: 
                    167:    unsigned long                   i;
                    168:    unsigned long                   j;
                    169:    unsigned long                   nombre_colonnes;
                    170:    unsigned long                   nombre_lignes;
                    171:    unsigned long                   nombre_dimensions;
                    172:    unsigned long                   nombre_termes;
                    173: 
                    174:    (*s_etat_processus).erreur_execution = d_ex;
                    175: 
                    176:    if ((*s_etat_processus).affichage_arguments == 'Y')
                    177:    {
                    178:        printf("\n  ->ARRAY [->ARRY] ");
                    179: 
                    180:        if ((*s_etat_processus).langue == 'F')
                    181:        {
                    182:            printf("(création d'un vecteur ou d'une matrice)\n\n");
                    183:        }
                    184:        else
                    185:        {
                    186:            printf("(create vector or matrix)\n\n");
                    187:        }
                    188: 
                    189:        printf("    n: %s, %s, %s\n", d_INT, d_REL, d_CPL);
                    190:        printf("    ...\n");
                    191:        printf("    2: %s, %s, %s\n", d_INT, d_REL, d_CPL);
                    192:        printf("    1: %s\n", d_LST);
                    193:        printf("->  1: %s, %s, %s,\n"
                    194:                "       %s, %s, %s\n", d_VIN, d_VRL, d_VCX,
                    195:                d_MIN, d_MRL, d_MCX);
                    196: 
                    197:        return;
                    198:    }
                    199:    else if ((*s_etat_processus).test_instruction == 'Y')
                    200:    {
                    201:        (*s_etat_processus).nombre_arguments = -1;
                    202:        return;
                    203:    }
                    204: 
                    205:    if (test_cfsf(s_etat_processus, 31) == d_vrai)
                    206:    {
                    207:        if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
                    208:        {
                    209:            return;
                    210:        }
                    211:    }
                    212: 
                    213:    if ((*s_etat_processus).hauteur_pile_operationnelle == 0)
                    214:    {
                    215:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    216:        return;
                    217:    }
                    218: 
                    219:    if ((*(*(*s_etat_processus).l_base_pile).donnee).type != LST)
                    220:    {
                    221:        (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
                    222:        return;
                    223:    }
                    224: 
                    225:    l_element_courant = (*(*(*s_etat_processus).l_base_pile).donnee).objet;
                    226:    nombre_dimensions = 0;
                    227: 
                    228:    while(l_element_courant != NULL)
                    229:    {
                    230:        nombre_dimensions++;
                    231:        l_element_courant = (*l_element_courant).suivant;
                    232:    }
                    233: 
                    234:    if (nombre_dimensions > 2)
                    235:    {
                    236:        (*s_etat_processus).erreur_execution = d_ex_dimensions_invalides;
                    237:        return;
                    238:    }
                    239: 
                    240:    l_element_courant = (*(*(*s_etat_processus).l_base_pile).donnee).objet;
                    241:    nombre_termes = 1;
                    242: 
                    243:    nombre_lignes = 0;
                    244:    nombre_colonnes = 0;
                    245: 
                    246:    while(l_element_courant != NULL)
                    247:    {
                    248:        if ((*(*l_element_courant).donnee).type != INT)
                    249:        {
                    250:            (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
                    251:            return;
                    252:        }
                    253: 
                    254:        if ((*((integer8 *) (*(*l_element_courant).donnee).objet)) <= 0)
                    255:        {
                    256:            (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
                    257:            return;
                    258:        }
                    259: 
                    260:        if (nombre_lignes == 0)
                    261:        {
                    262:            nombre_lignes = (*((integer8 *) (*(*l_element_courant)
                    263:                    .donnee).objet));
                    264:        }
                    265:        else
                    266:        {
                    267:            nombre_colonnes = (*((integer8 *) (*(*l_element_courant)
                    268:                    .donnee).objet));
                    269:        }
                    270: 
                    271:        nombre_termes *= (*((integer8 *) (*(*l_element_courant)
                    272:                .donnee).objet));
                    273:        l_element_courant = (*l_element_courant).suivant;
                    274:    }
                    275: 
                    276:    if (test_cfsf(s_etat_processus, 31) == d_vrai)
                    277:    {
                    278:        if (empilement_pile_last(s_etat_processus, nombre_termes + 1) ==
                    279:                d_erreur)
                    280:        {
                    281:            return;
                    282:        }
                    283:    }
                    284: 
                    285:    if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    286:            &s_objet) == d_erreur)
                    287:    {
                    288:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    289:        return;
                    290:    }
                    291: 
                    292:    liberation(s_etat_processus, s_objet);
                    293: 
                    294:    if ((*s_etat_processus).hauteur_pile_operationnelle < nombre_termes)
                    295:    {
                    296:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    297:        return;
                    298:    }
                    299: 
                    300:    type = (nombre_dimensions == 1) ? VIN : MIN;
                    301:    
                    302:    l_element_courant = (*s_etat_processus).l_base_pile;
                    303: 
                    304:    for(i = 0; i < nombre_termes; i++)
                    305:    {
                    306:        if ((*(*l_element_courant).donnee).type == INT)
                    307:        {
                    308:            /*
                    309:             * Rien à faire...
                    310:             */
                    311:        }
                    312:        else if ((*(*l_element_courant).donnee).type == REL)
                    313:        {
                    314:            type = (nombre_dimensions == 1) ? VRL : MRL;
                    315:        }
                    316:        else if ((*(*l_element_courant).donnee).type == CPL)
                    317:        {
                    318:            type = (nombre_dimensions == 1) ? VCX : MCX;
                    319:        }
                    320:        else
                    321:        {
                    322:            (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
                    323:            return;
                    324:        }
                    325: 
                    326:        l_element_courant = (*l_element_courant).suivant;
                    327:    }
                    328: 
                    329: /*
                    330: --------------------------------------------------------------------------------
                    331:   Traitement des vecteurs
                    332: --------------------------------------------------------------------------------
                    333: */
                    334: 
                    335:    if (nombre_dimensions == 1)
                    336:    {
                    337:        if (type == VIN)
                    338:        {
                    339:            if ((s_objet = allocation(s_etat_processus, VIN)) == NULL)
                    340:            {
                    341:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    342:                return;
                    343:            }
                    344: 
                    345:            if (((*((struct_vecteur *) (*s_objet).objet)).tableau =
                    346:                    malloc(nombre_lignes * sizeof(integer8))) == NULL)
                    347:            {
                    348:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    349:                return;
                    350:            }
                    351:        }
                    352:        else if (type == VRL)
                    353:        {
                    354:            if ((s_objet = allocation(s_etat_processus, VRL)) == NULL)
                    355:            {
                    356:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    357:                return;
                    358:            }
                    359: 
                    360:            if (((*((struct_vecteur *) (*s_objet).objet)).tableau =
                    361:                    malloc(nombre_lignes * sizeof(real8))) == NULL)
                    362:            {
                    363:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    364:                return;
                    365:            }
                    366:        }
                    367:        else
                    368:        {
                    369:            if ((s_objet = allocation(s_etat_processus, VCX)) == NULL)
                    370:            {
                    371:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    372:                return;
                    373:            }
                    374: 
                    375:            if (((*((struct_vecteur *) (*s_objet).objet)).tableau =
                    376:                    malloc(nombre_lignes * sizeof(struct_complexe16)))
                    377:                    == NULL)
                    378:            {
                    379:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    380:                return;
                    381:            }
                    382:        }
                    383: 
                    384:        (*((struct_vecteur *) (*s_objet).objet)).taille = nombre_lignes;
                    385: 
                    386:        for(i = 0; i < nombre_lignes; i++)
                    387:        {
                    388:            if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    389:                    &s_objet_elementaire) == d_erreur)
                    390:            {
                    391:                (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    392:                return;
                    393:            }
                    394: 
                    395:            if ((*((struct_vecteur *) (*s_objet).objet)).type == 'I')
                    396:            {
                    397:                ((integer8 *) (*((struct_vecteur *) (*s_objet).objet))
                    398:                        .tableau)[nombre_lignes - (i + 1)] = (*((integer8 *)
                    399:                        (*s_objet_elementaire).objet));
                    400:            }
                    401:            else if ((*((struct_vecteur *) (*s_objet).objet)).type == 'R')
                    402:            {
                    403:                if ((*s_objet_elementaire).type == INT)
                    404:                {
                    405:                    ((real8 *) (*((struct_vecteur *) (*s_objet).objet))
                    406:                            .tableau)[nombre_lignes - (i + 1)] =
                    407:                            (real8) (*((integer8 *)
                    408:                            (*s_objet_elementaire).objet));
                    409:                }
                    410:                else
                    411:                {
                    412:                    ((real8 *) (*((struct_vecteur *) (*s_objet).objet))
                    413:                            .tableau)[nombre_lignes - (i + 1)] = (*((real8 *)
                    414:                            (*s_objet_elementaire).objet));
                    415:                }
                    416:            }
                    417:            else
                    418:            {
                    419:                if ((*s_objet_elementaire).type == INT)
                    420:                {
                    421:                    ((struct_complexe16 *) (*((struct_vecteur *)
                    422:                            (*s_objet).objet)).tableau)
                    423:                            [nombre_lignes - (i + 1)].partie_reelle =
                    424:                            (real8) (*((integer8 *)
                    425:                            (*s_objet_elementaire).objet));
                    426:                    ((struct_complexe16 *) (*((struct_vecteur *)
                    427:                            (*s_objet).objet)).tableau)
                    428:                            [nombre_lignes - (i + 1)].partie_imaginaire = 0;
                    429:                }
                    430:                else if ((*s_objet_elementaire).type == REL)
                    431:                {
                    432:                    ((struct_complexe16 *) (*((struct_vecteur *)
                    433:                            (*s_objet).objet)).tableau)
                    434:                            [nombre_lignes - (i + 1)].partie_reelle =
                    435:                            (*((real8 *) (*s_objet_elementaire).objet));
                    436:                    ((struct_complexe16 *) (*((struct_vecteur *)
                    437:                            (*s_objet).objet)).tableau)
                    438:                            [nombre_lignes - (i + 1)].partie_imaginaire = 0;
                    439:                }
                    440:                else
                    441:                {
                    442:                    ((struct_complexe16 *) (*((struct_vecteur *)
                    443:                            (*s_objet).objet)).tableau)
                    444:                            [nombre_lignes - (i + 1)].partie_reelle =
                    445:                            (*((struct_complexe16 *)
                    446:                            (*s_objet_elementaire).objet)).partie_reelle;
                    447:                    ((struct_complexe16 *) (*((struct_vecteur *)
                    448:                            (*s_objet).objet)).tableau)
                    449:                            [nombre_lignes - (i + 1)].partie_imaginaire =
                    450:                            (*((struct_complexe16 *)
                    451:                            (*s_objet_elementaire).objet)).partie_imaginaire;
                    452:                }
                    453:            }
                    454: 
                    455:            liberation(s_etat_processus, s_objet_elementaire);
                    456:        }
                    457:    }
                    458: 
                    459: /*
                    460: --------------------------------------------------------------------------------
                    461:   Traitement des matrices
                    462: --------------------------------------------------------------------------------
                    463: */
                    464: 
                    465:    else
                    466:    {
                    467:        if (type == MIN)
                    468:        {
                    469:            if ((s_objet = allocation(s_etat_processus, MIN))
                    470:                    == NULL)
                    471:            {
                    472:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    473:                return;
                    474:            }
                    475: 
                    476:            if (((*((struct_matrice *) (*s_objet).objet)).tableau =
                    477:                    malloc(nombre_lignes * sizeof(integer8 *))) == NULL)
                    478:            {
                    479:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    480:                return;
                    481:            }
                    482:        }
                    483:        else if (type == MRL)
                    484:        {
                    485:            if ((s_objet = allocation(s_etat_processus, MRL))
                    486:                    == NULL)
                    487:            {
                    488:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    489:                return;
                    490:            }
                    491: 
                    492:            if (((*((struct_matrice *) (*s_objet).objet)).tableau =
                    493:                    malloc(nombre_lignes * sizeof(real8 *))) == NULL)
                    494:            {
                    495:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    496:                return;
                    497:            }
                    498:        }
                    499:        else
                    500:        {
                    501:            if ((s_objet = allocation(s_etat_processus, MCX))
                    502:                    == NULL)
                    503:            {
                    504:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    505:                return;
                    506:            }
                    507: 
                    508:            if (((*((struct_matrice *) (*s_objet).objet)).tableau =
                    509:                    malloc(nombre_lignes * sizeof(struct_complexe16 *)))
                    510:                    == NULL)
                    511:            {
                    512:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    513:                return;
                    514:            }
                    515:        }
                    516: 
                    517:        (*((struct_matrice *) (*s_objet).objet)).nombre_lignes = nombre_lignes;
                    518:        (*((struct_matrice *) (*s_objet).objet)).nombre_colonnes =
                    519:                nombre_colonnes;
                    520: 
                    521:        for(i = 0; i < nombre_lignes; i++)
                    522:        {
                    523:            if ((*((struct_matrice *) (*s_objet).objet)).type == 'I')
                    524:            {
                    525:                if ((((integer8 **) (*((struct_matrice *)
                    526:                        (*s_objet).objet)).tableau)[nombre_lignes - (i + 1)]
                    527:                        = malloc(nombre_colonnes * sizeof(integer8))) == NULL)
                    528:                {
                    529:                    (*s_etat_processus).erreur_systeme =
                    530:                            d_es_allocation_memoire;
                    531:                    return;
                    532:                }
                    533:            }
                    534:            else if ((*((struct_matrice *) (*s_objet).objet)).type == 'R')
                    535:            {
                    536:                if ((((real8 **) (*((struct_matrice *)
                    537:                        (*s_objet).objet)).tableau)[nombre_lignes - (i + 1)]
                    538:                        = malloc(nombre_colonnes * sizeof(real8))) == NULL)
                    539:                {
                    540:                    (*s_etat_processus).erreur_systeme =
                    541:                            d_es_allocation_memoire;
                    542:                    return;
                    543:                }
                    544:            }
                    545:            else
                    546:            {
                    547:                if ((((struct_complexe16 **) (*((struct_matrice *)
                    548:                        (*s_objet).objet)).tableau)[nombre_lignes - (i + 1)]
                    549:                        = malloc(nombre_colonnes * sizeof(struct_complexe16)))
                    550:                        == NULL)
                    551:                {
                    552:                    (*s_etat_processus).erreur_systeme =
                    553:                            d_es_allocation_memoire;
                    554:                    return;
                    555:                }
                    556:            }
                    557: 
                    558:            for(j = 0; j < nombre_colonnes; j++)
                    559:            {
                    560:                if (depilement(s_etat_processus, &((*s_etat_processus)
                    561:                        .l_base_pile), &s_objet_elementaire) == d_erreur)
                    562:                {
                    563:                    (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    564:                    return;
                    565:                }
                    566: 
                    567:                if ((*((struct_matrice *) (*s_objet).objet)).type == 'I')
                    568:                {
                    569:                    ((integer8 **) (*((struct_matrice *) (*s_objet).objet))
                    570:                            .tableau)[nombre_lignes - (i + 1)]
                    571:                            [nombre_colonnes - (j + 1)] = (*((integer8 *)
                    572:                            (*s_objet_elementaire).objet));
                    573:                }
                    574:                else if ((*((struct_matrice *) (*s_objet).objet)).type == 'R')
                    575:                {
                    576:                    if ((*s_objet_elementaire).type == INT)
                    577:                    {
                    578:                        ((real8 **) (*((struct_matrice *) (*s_objet).objet))
                    579:                                .tableau)[nombre_lignes - (i + 1)]
                    580:                                [nombre_colonnes - (j + 1)] =
                    581:                                (real8) (*((integer8 *)
                    582:                                (*s_objet_elementaire).objet));
                    583:                    }
                    584:                    else
                    585:                    {
                    586:                        ((real8 **) (*((struct_matrice *) (*s_objet).objet))
                    587:                                .tableau)[nombre_lignes - (i + 1)]
                    588:                                [nombre_colonnes - (j + 1)] = (*((real8 *)
                    589:                                (*s_objet_elementaire).objet));
                    590:                    }
                    591:                }
                    592:                else
                    593:                {
                    594:                    if ((*s_objet_elementaire).type == INT)
                    595:                    {
                    596:                        ((struct_complexe16 **) (*((struct_matrice *)
                    597:                                (*s_objet).objet)).tableau)
                    598:                                [nombre_lignes - (i + 1)]
                    599:                                [nombre_colonnes - (j + 1)].partie_reelle =
                    600:                                (real8) (*((integer8 *)
                    601:                                (*s_objet_elementaire).objet));
                    602:                        ((struct_complexe16 **) (*((struct_matrice *)
                    603:                                (*s_objet).objet)).tableau)
                    604:                                [nombre_lignes - (i + 1)]
                    605:                                [nombre_colonnes - (j + 1)]
                    606:                                .partie_imaginaire = 0;
                    607:                    }
                    608:                    else if ((*s_objet_elementaire).type == REL)
                    609:                    {
                    610:                        ((struct_complexe16 **) (*((struct_matrice *)
                    611:                                (*s_objet).objet)).tableau)
                    612:                                [nombre_lignes - (i + 1)]
                    613:                                [nombre_colonnes - (j + 1)].partie_reelle =
                    614:                                (*((real8 *) (*s_objet_elementaire).objet));
                    615:                        ((struct_complexe16 **) (*((struct_matrice *)
                    616:                                (*s_objet).objet)).tableau)
                    617:                                [nombre_lignes - (i + 1)]
                    618:                                [nombre_colonnes - (j + 1)]
                    619:                                .partie_imaginaire = 0;
                    620:                    }
                    621:                    else
                    622:                    {
                    623:                        ((struct_complexe16 **) (*((struct_matrice *)
                    624:                                (*s_objet).objet)).tableau)
                    625:                                [nombre_lignes - (i + 1)]
                    626:                                [nombre_colonnes - (j + 1)].partie_reelle =
                    627:                                (*((struct_complexe16 *)
                    628:                                (*s_objet_elementaire).objet)).partie_reelle;
                    629:                        ((struct_complexe16 **) (*((struct_matrice *)
                    630:                                (*s_objet).objet)).tableau)
                    631:                                [nombre_lignes - (i + 1)]
                    632:                                [nombre_colonnes - (j + 1)].partie_imaginaire =
                    633:                                (*((struct_complexe16 *)
                    634:                                (*s_objet_elementaire).objet))
                    635:                                .partie_imaginaire;
                    636:                    }
                    637:                }
                    638: 
                    639:                liberation(s_etat_processus, s_objet_elementaire);
                    640:            }
                    641:        }
                    642:    }
                    643: 
                    644:    if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    645:            s_objet) == d_erreur)
                    646:    {
                    647:        return;
                    648:    }
                    649: 
                    650:    return;
                    651: }
                    652: 
                    653: 
                    654: /*
                    655: ================================================================================
                    656:   Fonction 'false'
                    657: ================================================================================
                    658:   Entrées : structure processus
                    659: --------------------------------------------------------------------------------
                    660:   Sorties :
                    661: --------------------------------------------------------------------------------
                    662:   Effets de bord : néant
                    663: ================================================================================
                    664: */
                    665: 
                    666: void
                    667: instruction_false(struct_processus *s_etat_processus)
                    668: {
                    669:    struct_objet                    *s_objet;
                    670: 
                    671:    (*s_etat_processus).erreur_execution = d_ex;
                    672: 
                    673:    if ((*s_etat_processus).affichage_arguments == 'Y')
                    674:    {
                    675:        printf("\n  FALSE ");
                    676: 
                    677:        if ((*s_etat_processus).langue == 'F')
                    678:        {
                    679:            printf("(valeur fausse)\n\n");
                    680:        }
                    681:        else
                    682:        {
                    683:            printf("(false value)\n\n");
                    684:        }
                    685: 
                    686:        printf("->  1: %s\n", d_INT);
                    687: 
                    688:        return;
                    689:    }
                    690:    else if ((*s_etat_processus).test_instruction == 'Y')
                    691:    {
                    692:        (*s_etat_processus).nombre_arguments = -1;
                    693:        return;
                    694:    }
                    695: 
                    696:    if ((s_objet = allocation(s_etat_processus, INT)) == NULL)
                    697:    {
                    698:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    699:        return;
                    700:    }
                    701: 
                    702:    (*((integer8 *) (*s_objet).objet)) = 0;
                    703: 
                    704:    if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    705:            s_objet) == d_erreur)
                    706:    {
                    707:        return;
                    708:    }
                    709: 
                    710:    return;
                    711: }
                    712: 
                    713: 
                    714: /*
                    715: ================================================================================
                    716:   Fonction '->STR'
                    717: ================================================================================
                    718:   Entrées : structure processus
                    719: --------------------------------------------------------------------------------
                    720:   Sorties :
                    721: --------------------------------------------------------------------------------
                    722:   Effets de bord : néant
                    723: ================================================================================
                    724: */
                    725: 
                    726: void
                    727: instruction_fleche_str(struct_processus *s_etat_processus)
                    728: {
                    729:    struct_objet                    *s_objet_argument;
                    730:    struct_objet                    *s_objet_resultat;
                    731: 
                    732:    (*s_etat_processus).erreur_execution = d_ex;
                    733: 
                    734:    if ((*s_etat_processus).affichage_arguments == 'Y')
                    735:    {
                    736:        printf("\n  ->STR ");
                    737: 
                    738:        if ((*s_etat_processus).langue == 'F')
                    739:        {
                    740:            printf("(conversion en chaîne)\n\n");
                    741:        }
                    742:        else
                    743:        {
                    744:            printf("(conversion into string of chars)\n\n");
                    745:        }
                    746: 
                    747:        printf("    1: %s, %s, %s, %s, %s, %s,\n"
                    748:                "       %s, %s, %s, %s, %s,\n"
                    749:                "       %s, %s, %s, %s, %s,\n"
                    750:                "       %s\n",
                    751:                d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
                    752:                d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB);
                    753:        printf("->  1: %s\n", d_INT);
                    754: 
                    755:        return;
                    756:    }
                    757:    else if ((*s_etat_processus).test_instruction == 'Y')
                    758:    {
                    759:        (*s_etat_processus).nombre_arguments = -1;
                    760:        return;
                    761:    }
                    762: 
                    763:    if (test_cfsf(s_etat_processus, 31) == d_vrai)
                    764:    {
                    765:        if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
                    766:        {
                    767:            return;
                    768:        }
                    769:    }
                    770: 
                    771:    if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    772:            &s_objet_argument) == d_erreur)
                    773:    {
                    774:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    775:        return;
                    776:    }
                    777: 
                    778:    if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL)
                    779:    {
                    780:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    781:        return;
                    782:    }
                    783: 
                    784:    (*s_objet_resultat).objet = (void *) formateur(s_etat_processus, 0,
                    785:            s_objet_argument);
                    786: 
                    787:    if ((*s_objet_resultat).objet == NULL)
                    788:    {
                    789:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    790:        return;
                    791:    }
                    792: 
                    793:    liberation(s_etat_processus, s_objet_argument);
                    794: 
                    795:    if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    796:            s_objet_resultat) == d_erreur)
                    797:    {
                    798:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    799:        return;
                    800:    }
                    801: 
                    802:    return;
                    803: }
                    804: 
                    805: 
                    806: /*
                    807: ================================================================================
                    808:   Fonction 'FFT'
                    809: ================================================================================
                    810:   Entrées : structure processus
                    811: --------------------------------------------------------------------------------
                    812:   Sorties :
                    813: --------------------------------------------------------------------------------
                    814:   Effets de bord : néant
                    815: ================================================================================
                    816: */
                    817: 
                    818: void
                    819: instruction_fft(struct_processus *s_etat_processus)
                    820: {
                    821:    integer4                    erreur;
                    822:    integer4                    inverse;
                    823:    integer4                    nombre_colonnes;
                    824:    integer4                    nombre_lignes;
                    825: 
                    826:    logical1                    presence_longueur_fft;
                    827: 
                    828:    long                        longueur_fft_signee;
                    829: 
                    830:    struct_complexe16           *matrice_f77;
                    831: 
                    832:    struct_objet                *s_objet_argument;
                    833:    struct_objet                *s_objet_longueur_fft;
                    834:    struct_objet                *s_objet_resultat;
                    835: 
                    836:    unsigned long               i;
                    837:    unsigned long               j;
                    838:    unsigned long               k;
                    839:    unsigned long               longueur_fft;
                    840: 
                    841:    (*s_etat_processus).erreur_execution =d_ex;
                    842: 
                    843:    if ((*s_etat_processus).affichage_arguments == 'Y')
                    844:    {
                    845:        printf("\n  FFT ");
                    846: 
                    847:        if ((*s_etat_processus).langue == 'F')
                    848:        {
                    849:            printf("(transformée de Fourier rapide)\n\n");
                    850:        }
                    851:        else
                    852:        {
                    853:            printf("(fast Fourier transform)\n\n");
                    854:        }
                    855: 
                    856:        printf("    1: %s, %s, %s\n", d_VIN, d_VRL, d_VCX);
                    857:        printf("->  1: %s\n\n", d_VCX);
                    858: 
                    859:        printf("    1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
                    860:        printf("->  1: %s\n\n", d_MCX);
                    861: 
                    862:        printf("    2: %s, %s, %s\n", d_VIN, d_VRL, d_VCX);
                    863:        printf("    1: %s\n", d_INT);
                    864:        printf("->  1: %s\n\n", d_VCX);
                    865: 
                    866:        printf("    2: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
                    867:        printf("    1: %s\n", d_INT);
                    868:        printf("->  1: %s\n", d_MCX);
                    869: 
                    870:        return;
                    871:    }
                    872:    else if ((*s_etat_processus).test_instruction == 'Y')
                    873:    {
                    874:        (*s_etat_processus).nombre_arguments = -1;
                    875:        return;
                    876:    }
                    877: 
                    878:    /*
                    879:     * Il est possible d'imposer une longueur de FFT au premier niveau
                    880:     * de la pile.
                    881:     */
                    882: 
                    883:    if ((*s_etat_processus).l_base_pile == NULL)
                    884:    {
                    885:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    886:        return;
                    887:    }
                    888: 
                    889:    if ((*(*(*s_etat_processus).l_base_pile).donnee).type == INT)
                    890:    {
                    891:        presence_longueur_fft = d_vrai;
                    892: 
                    893:        if (test_cfsf(s_etat_processus, 31) == d_vrai)
                    894:        {
                    895:            if (empilement_pile_last(s_etat_processus, 2) == d_erreur)
                    896:            {
                    897:                return;
                    898:            }
                    899:        }
                    900: 
                    901:        if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    902:                &s_objet_longueur_fft) == d_erreur)
                    903:        {
                    904:            (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    905:            return;
                    906:        }
                    907: 
                    908:        longueur_fft_signee = (*((integer8 *) (*s_objet_longueur_fft).objet));
                    909: 
                    910:        liberation(s_etat_processus, s_objet_longueur_fft);
                    911: 
                    912:        if (longueur_fft_signee <= 0)
                    913:        {
                    914:            (*s_etat_processus).erreur_execution = d_ex_longueur_fft;
                    915:            return;
                    916:        }
                    917: 
                    918:        longueur_fft = longueur_fft_signee;
                    919:    }
                    920:    else
                    921:    {
                    922:        presence_longueur_fft = d_faux;
                    923:        longueur_fft = 0;
                    924: 
                    925:        if (test_cfsf(s_etat_processus, 31) == d_vrai)
                    926:        {
                    927:            if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
                    928:            {
                    929:                return;
                    930:            }
                    931:        }
                    932:    }
                    933: 
                    934:    if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    935:            &s_objet_argument) == d_erreur)
                    936:    {
                    937:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    938:        return;
                    939:    }
                    940: 
                    941: /*
                    942: --------------------------------------------------------------------------------
                    943:   Vecteur
                    944: --------------------------------------------------------------------------------
                    945: */
                    946: 
                    947:    if (((*s_objet_argument).type == VIN) ||
                    948:            ((*s_objet_argument).type == VRL) ||
                    949:            ((*s_objet_argument).type == VCX))
                    950:    {
                    951:        if (presence_longueur_fft == d_faux)
                    952:        {
                    953:            longueur_fft = pow(2, (integer4) ceil(log((real8)
                    954:                    (*((struct_vecteur *)
                    955:                    (*s_objet_argument).objet)).taille) / log((real8) 2)));
                    956: 
                    957:            if ((longueur_fft / ((real8) (*((struct_vecteur *)
                    958:                    (*s_objet_argument).objet)).taille)) == 2)
                    959:            {
                    960:                longueur_fft /= 2;
                    961:            }
                    962:        }
                    963: 
                    964:        if ((matrice_f77 = malloc(longueur_fft *
                    965:                sizeof(struct_complexe16))) == NULL)
                    966:        {
                    967:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    968:            return;
                    969:        }
                    970: 
                    971:        if ((*s_objet_argument).type == VIN)
                    972:        {
                    973:            for(i = 0; i < (*((struct_vecteur *) (*s_objet_argument).objet))
                    974:                    .taille; i++)
                    975:            {
                    976:                matrice_f77[i].partie_reelle = (real8) ((integer8 *)
                    977:                        (*((struct_vecteur *) (*s_objet_argument).objet))
                    978:                        .tableau)[i];
                    979:                matrice_f77[i].partie_imaginaire = (real8) 0;
                    980:            }
                    981:        }
                    982:        else if ((*s_objet_argument).type == VRL)
                    983:        {
                    984:            for(i = 0; i < (*((struct_vecteur *) (*s_objet_argument).objet))
                    985:                    .taille; i++)
                    986:            {
                    987:                matrice_f77[i].partie_reelle = ((real8 *)
                    988:                        (*((struct_vecteur *) (*s_objet_argument).objet))
                    989:                        .tableau)[i];
                    990:                matrice_f77[i].partie_imaginaire = (real8) 0;
                    991:            }
                    992:        }
                    993:        else
                    994:        {
                    995:            for(i = 0; i < (*((struct_vecteur *) (*s_objet_argument).objet))
                    996:                    .taille; i++)
                    997:            {
                    998:                matrice_f77[i].partie_reelle = ((struct_complexe16 *)
                    999:                        (*((struct_vecteur *) (*s_objet_argument).objet))
                   1000:                        .tableau)[i].partie_reelle;
                   1001:                matrice_f77[i].partie_imaginaire = ((struct_complexe16 *)
                   1002:                        (*((struct_vecteur *) (*s_objet_argument).objet))
                   1003:                        .tableau)[i].partie_imaginaire;
                   1004:            }
                   1005:        }
                   1006: 
                   1007:        for(; i < longueur_fft; i++)
                   1008:        {
                   1009:                matrice_f77[i].partie_reelle = (real8) 0;
                   1010:                matrice_f77[i].partie_imaginaire = (real8) 0;
                   1011:        }
                   1012: 
                   1013:        nombre_lignes = 1;
                   1014:        nombre_colonnes = longueur_fft;
                   1015:        inverse = 0;
                   1016: 
                   1017:        dft(matrice_f77, &nombre_lignes, &nombre_colonnes, &inverse, &erreur);
                   1018: 
                   1019:        if (erreur != 0)
                   1020:        {
                   1021:            liberation(s_etat_processus, s_objet_argument);
                   1022:            free(matrice_f77);
                   1023: 
                   1024:            (*s_etat_processus).erreur_execution = d_ex_longueur_fft;
                   1025:            return;
                   1026:        }
                   1027: 
                   1028:        if ((s_objet_resultat = allocation(s_etat_processus, VCX))
                   1029:                == NULL)
                   1030:        {
                   1031:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   1032:            return;
                   1033:        }
                   1034: 
                   1035:        (*((struct_vecteur *) (*s_objet_resultat).objet)).taille = longueur_fft;
                   1036:        (*((struct_vecteur *) (*s_objet_resultat).objet)).tableau = matrice_f77;
                   1037:    }
                   1038: 
                   1039: /*
                   1040: --------------------------------------------------------------------------------
                   1041:   Matrice
                   1042: --------------------------------------------------------------------------------
                   1043: */
                   1044: 
                   1045:    else if (((*s_objet_argument).type == MIN) ||
                   1046:            ((*s_objet_argument).type == MRL) ||
                   1047:            ((*s_objet_argument).type == MCX))
                   1048:    {
                   1049:        if (presence_longueur_fft == d_faux)
                   1050:        {
                   1051:            longueur_fft = pow(2, (integer4) ceil(log((real8)
                   1052:                    (*((struct_matrice *)
                   1053:                    (*s_objet_argument).objet)).nombre_colonnes) /
                   1054:                    log((real8) 2)));
                   1055: 
                   1056:            if ((longueur_fft / ((real8) (*((struct_matrice *)
                   1057:                    (*s_objet_argument).objet)).nombre_colonnes)) == 2)
                   1058:            {
                   1059:                longueur_fft /= 2;
                   1060:            }
                   1061:        }
                   1062: 
                   1063:        if ((matrice_f77 = malloc(longueur_fft *
                   1064:                (*((struct_matrice *) (*s_objet_argument).objet))
                   1065:                .nombre_lignes * sizeof(struct_complexe16))) == NULL)
                   1066:        {
                   1067:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   1068:            return;
                   1069:        }
                   1070: 
                   1071:        if ((*s_objet_argument).type == MIN)
                   1072:        {
                   1073:            for(k = 0, i = 0; i < (*((struct_matrice *) (*s_objet_argument)
                   1074:                    .objet)).nombre_colonnes; i++)
                   1075:            {
                   1076:                for(j = 0; j < (*((struct_matrice *) (*s_objet_argument)
                   1077:                        .objet)).nombre_lignes; j++)
                   1078:                {
                   1079:                    matrice_f77[k].partie_reelle = (real8) ((integer8 **)
                   1080:                            (*((struct_matrice *) (*s_objet_argument).objet))
                   1081:                            .tableau)[j][i];
                   1082:                    matrice_f77[k++].partie_imaginaire = (real8) 0;
                   1083:                }
                   1084:            }
                   1085: 
                   1086:            for(; k < longueur_fft * (*((struct_matrice *) (*s_objet_argument)
                   1087:                    .objet)).nombre_lignes; k++)
                   1088:            {
                   1089:                matrice_f77[k].partie_reelle = (real8) 0;
                   1090:                matrice_f77[k].partie_imaginaire = (real8) 0;
                   1091:            }
                   1092:        }
                   1093:        else if ((*s_objet_argument).type == MRL)
                   1094:        {
                   1095:            for(k = 0, i = 0; i < (*((struct_matrice *) (*s_objet_argument)
                   1096:                    .objet)).nombre_colonnes; i++)
                   1097:            {
                   1098:                for(j = 0; j < (*((struct_matrice *) (*s_objet_argument)
                   1099:                        .objet)).nombre_lignes; j++)
                   1100:                {
                   1101:                    matrice_f77[k].partie_reelle = ((real8 **)
                   1102:                            (*((struct_matrice *) (*s_objet_argument).objet))
                   1103:                            .tableau)[j][i];
                   1104:                    matrice_f77[k++].partie_imaginaire = (real8) 0;
                   1105:                }
                   1106:            }
                   1107: 
                   1108:            for(; k < longueur_fft * (*((struct_matrice *) (*s_objet_argument)
                   1109:                    .objet)).nombre_lignes; k++)
                   1110:            {
                   1111:                matrice_f77[k].partie_reelle = (real8) 0;
                   1112:                matrice_f77[k].partie_imaginaire = (real8) 0;
                   1113:            }
                   1114:        }
                   1115:        else
                   1116:        {
                   1117:            for(k = 0, i = 0; i < (*((struct_matrice *) (*s_objet_argument)
                   1118:                    .objet)).nombre_colonnes; i++)
                   1119:            {
                   1120:                for(j = 0; j < (*((struct_matrice *) (*s_objet_argument)
                   1121:                        .objet)).nombre_lignes; j++)
                   1122:                {
                   1123:                    matrice_f77[k].partie_reelle = ((struct_complexe16 **)
                   1124:                            (*((struct_matrice *) (*s_objet_argument).objet))
                   1125:                            .tableau)[j][i].partie_reelle;
                   1126:                    matrice_f77[k++].partie_imaginaire =
                   1127:                            ((struct_complexe16 **) (*((struct_matrice *)
                   1128:                            (*s_objet_argument).objet)).tableau)[j][i]
                   1129:                            .partie_imaginaire;
                   1130:                }
                   1131:            }
                   1132: 
                   1133:            for(; k < longueur_fft * (*((struct_matrice *) (*s_objet_argument)
                   1134:                    .objet)).nombre_lignes; k++)
                   1135:            {
                   1136:                matrice_f77[k].partie_reelle = (real8) 0;
                   1137:                matrice_f77[k].partie_imaginaire = (real8) 0;
                   1138:            }
                   1139:        }
                   1140: 
                   1141:        nombre_lignes = (*((struct_matrice *) (*s_objet_argument).objet))
                   1142:                .nombre_lignes;
                   1143:        nombre_colonnes = longueur_fft;
                   1144:        inverse = 0;
                   1145: 
                   1146:        dft(matrice_f77, &nombre_lignes, &nombre_colonnes, &inverse, &erreur);
                   1147: 
                   1148:        if (erreur != 0)
                   1149:        {
                   1150:            liberation(s_etat_processus, s_objet_argument);
                   1151:            free(matrice_f77);
                   1152: 
                   1153:            (*s_etat_processus).erreur_execution = d_ex_longueur_fft;
                   1154:            return;
                   1155:        }
                   1156: 
                   1157:        if ((s_objet_resultat = allocation(s_etat_processus, MCX))
                   1158:                == NULL)
                   1159:        {
                   1160:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   1161:            return;
                   1162:        }
                   1163: 
                   1164:        (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
                   1165:                (*((struct_matrice *) (*s_objet_argument).objet))
                   1166:                .nombre_lignes;
                   1167:        (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
                   1168:                longueur_fft;
                   1169: 
                   1170:        if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
                   1171:                malloc((*((struct_matrice *) (*s_objet_resultat).objet))
                   1172:                .nombre_lignes * sizeof(struct_complexe16 *))) == NULL)
                   1173:        {
                   1174:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   1175:            return;
                   1176:        }
                   1177: 
                   1178:        for(i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
                   1179:                .nombre_lignes; i++)
                   1180:        {
                   1181:            if ((((struct_complexe16 **) (*((struct_matrice *)
                   1182:                    (*s_objet_resultat).objet)).tableau)[i] =
                   1183:                    malloc((*((struct_matrice *)
                   1184:                    (*s_objet_resultat).objet)).nombre_colonnes *
                   1185:                    sizeof(struct_complexe16))) == NULL)
                   1186:            {
                   1187:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   1188:                return;
                   1189:            }
                   1190:        }
                   1191: 
                   1192:        for(k = 0, i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
                   1193:                .nombre_colonnes; i++)
                   1194:        {
                   1195:            for(j = 0; j < (*((struct_matrice *) (*s_objet_resultat).objet))
                   1196:                    .nombre_lignes; j++)
                   1197:            {
                   1198:                ((struct_complexe16 **) (*((struct_matrice *)
                   1199:                        (*s_objet_resultat).objet)).tableau)[j][i]
                   1200:                        .partie_reelle = matrice_f77[k].partie_reelle;
                   1201:                ((struct_complexe16 **) (*((struct_matrice *)
                   1202:                        (*s_objet_resultat).objet)).tableau)[j][i]
                   1203:                        .partie_imaginaire = matrice_f77[k++].partie_imaginaire;
                   1204:            }
                   1205:        }
                   1206: 
                   1207:        free(matrice_f77);
                   1208:    }
                   1209: 
                   1210: /*
                   1211: --------------------------------------------------------------------------------
                   1212:   Calcul de FFT impossible
                   1213: --------------------------------------------------------------------------------
                   1214: */
                   1215: 
                   1216:    else
                   1217:    {
                   1218:        liberation(s_etat_processus, s_objet_argument);
                   1219: 
                   1220:        (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
                   1221:        return;
                   1222:    }
                   1223: 
                   1224:    liberation(s_etat_processus, s_objet_argument);
                   1225: 
                   1226:    if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                   1227:            s_objet_resultat) == d_erreur)
                   1228:    {
                   1229:        return;
                   1230:    }
                   1231: 
                   1232:    return;
                   1233: }
                   1234: 
                   1235: 
                   1236: /*
                   1237: ================================================================================
                   1238:   Fonction 'function' (passe en mode d'affichage y=f(x))
                   1239: ================================================================================
                   1240:   Entrées : structure processus
                   1241: --------------------------------------------------------------------------------
                   1242:   Sorties :
                   1243: --------------------------------------------------------------------------------
                   1244:   Effets de bord : néant
                   1245: ================================================================================
                   1246: */
                   1247: 
                   1248: void
                   1249: instruction_function(struct_processus *s_etat_processus)
                   1250: {
                   1251:    (*s_etat_processus).erreur_execution = d_ex;
                   1252: 
                   1253:    if ((*s_etat_processus).affichage_arguments == 'Y')
                   1254:    {
                   1255:        printf("\n  FUNCTION ");
                   1256: 
                   1257:        if ((*s_etat_processus).langue == 'F')
                   1258:        {
                   1259:            printf("(tracé y=f(x))\n\n");
                   1260:            printf("  Aucun argument\n");
                   1261:        }
                   1262:        else
                   1263:        {
                   1264:            printf("(plot y=f(x))\n\n");
                   1265:            printf("  No argument\n");
                   1266:        }
                   1267: 
                   1268:        return;
                   1269:    }
                   1270:    else if ((*s_etat_processus).test_instruction == 'Y')
                   1271:    {
                   1272:        (*s_etat_processus).nombre_arguments = -1;
                   1273:        return;
                   1274:    }
                   1275:    
                   1276:    strcpy((*s_etat_processus).type_trace_eq, "FONCTION");
                   1277: 
                   1278:    return;
                   1279: }
                   1280: 
                   1281: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>