/*************************************************************************************************************************************/ /* */ /* N O R M A L I S A T I O N D E C H A Q U E E L E M E N T D ' U N F I C H I E R N U M E R I Q U E */ /* P A R R A P P O R T A U X E X T R E M A D E C E L U I - C I : */ /* */ /* */ /* Author of '$xrv/normalise.01$I' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20230220103850). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* R E C H E R C H E D E S E X T R E M A D ' U N F I C H I E R N U M E R I Q U E : */ /* */ /*************************************************************************************************************************************/ #define RECHERCHE_COURANTE_DES_EXTREMA(valeur_courante \ ,compatibilite \ ,minimum_courant,maximum_courant \ ,conserver_une_valeur_particuliere,valeur_particuliere_a_conserver \ ) \ Bblock \ Test(IFOU(IL_FAUT(compatibilite) \ ,IFET(IL_NE_FAUT_PAS(compatibilite) \ ,IFOU(IL_NE_FAUT_PAS(conserver_une_valeur_particuliere) \ ,IFET(IL_FAUT(conserver_une_valeur_particuliere) \ ,IFNE(valeur_courante,valeur_particuliere_a_conserver) \ ) \ ) \ ) \ ) \ ) \ Bblock \ EGAL(minimum_courant,MIN2(valeur_courante,minimum_courant)); \ EGAL(maximum_courant,MAX2(valeur_courante,maximum_courant)); \ /* Recherche des extrema qui ne peuvent etre une eventuelle valeur a conserver... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ Eblock #define RECHERCHE_DES_EXTREMA(forcer_les_extrema \ ,compatibilite \ ,minimum_ancien,maximum_ancien \ ,minimum_courant,maximum_courant \ ,ACCES_A_UN_ELEMENT_DU_FICHIER \ ,conserver_une_valeur_particuliere,valeur_particuliere_a_conserver \ ) \ Bblock \ Test(IL_FAUT(forcer_les_extrema)) \ Bblock \ EGAL(minimum_courant,minimum_ancien); \ EGAL(maximum_courant,maximum_ancien); \ /* Forcage des extrema. */ \ Eblock \ ATes \ Bblock \ DEFV(Int,INIT(index,UNDEF)); \ \ EGAL(minimum_courant,F_INFINI); \ EGAL(maximum_courant,F_MOINS_L_INFINI); \ \ DoIn(index \ ,PREMIER_ELEMENT_D_UN_FICHIER \ ,DERNIER_ELEMENT_D_UN_FICHIER \ ,I \ ) \ Bblock \ DEFV(Float,INIT(valeur_courante,ACCES_A_UN_ELEMENT_DU_FICHIER(index))); \ /* Recuperation de la valeur courante dans le fichier. */ \ \ RECHERCHE_COURANTE_DES_EXTREMA(valeur_courante \ ,compatibilite \ ,minimum_courant,maximum_courant \ ,conserver_une_valeur_particuliere,valeur_particuliere_a_conserver \ ) \ Eblock \ EDoI \ Eblock \ ETes \ Eblock /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* N O R M A L I S A T I O N D ' U N E V A L E U R : */ /* */ /*************************************************************************************************************************************/ #define NORMALISATION_D_UNE_VALEUR(valeur_courante \ ,normaliser \ ,ignorer_l_uniformite_du_ficher,valeur_a_forcer_dans_le_cas_de_l_uniformite_du_ficher \ ,conserver_une_valeur_particuliere,valeur_particuliere_a_conserver \ ,minimum_courant,maximum_courant \ ,minimum_nouveau,maximum_nouveau \ ,faire_un_AXPB \ ) \ COND(IL_FAUT(normaliser) \ ,COND(IFOU(IL_FAUT(ignorer_l_uniformite_du_ficher) \ ,IFET(IL_NE_FAUT_PAS(ignorer_l_uniformite_du_ficher) \ ,IFNE(minimum_courant,maximum_courant) \ ) \ ) \ ,COND(IFOU(IL_NE_FAUT_PAS(conserver_une_valeur_particuliere) \ ,IFET(IL_FAUT(conserver_une_valeur_particuliere) \ ,IFNE(valeur_courante,valeur_particuliere_a_conserver) \ ) \ ) \ ,HOMZ(valeur_courante \ ,minimum_courant,maximum_courant \ ,minimum_nouveau,maximum_nouveau \ ,minimum_nouveau \ ) \ ,valeur_courante \ ) \ ,valeur_a_forcer_dans_le_cas_de_l_uniformite_du_ficher \ ) \ ,COND(IL_NE_FAUT_PAS(faire_un_AXPB) \ ,valeur_courante \ ,AXPB(SOUS(maximum_nouveau,minimum_nouveau),valeur_courante,minimum_nouveau) \ ) \ )