/*************************************************************************************************************************************/
/* */
/* 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) \
) \
)