/*************************************************************************************************************************************/ /* */ /* T R A N S F O R M A T I O N " H O R N E R I E N N E " D ' U N E I M A G E F L O T T A N T E */ /* ( " A U N E V A R I A B L E " ) D U N E U V I E M E D E G R E : */ /* A A R I T H M E T I Q U E V A R I A B L E L O C A L E M E N T : */ /* */ /* */ /* Author of '$xci/traHorner.11$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20080501101603). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ #define GENERER_LES_GET_ARGUMENTS_DE_CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE #include image_image_IMAGESF_EXT #include image_image_GOOF_IMAGE_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #define imageX \ IFmageA1 #define imageA_ADD2_ADD2 \ IFmageA2 #define imageA_ADD2_MUL2 \ IFmageA3 #define imageA_ADD2_MAX2 \ IFmageA4 #define imageA_ADD2_MINMAX \ IFmageA5 #define imageA_ADD2_MAXMIN \ IFmageA6 #define imageA_MUL2_ADD2 \ IFmageA7 #define imageA_MUL2_MUL2 \ IFmageA8 #define imageA_MUL2_MAX2 \ IFmageA9 #define imageA_MUL2_MINMAX \ IFmageAA #define imageA_MUL2_MAXMIN \ IFmageAB #define imageR \ IFmageR /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* T R A N S F O R M A T I O N " H O R N E R I E N N E " D ' U N E I M A G E F L O T T A N T E */ /* ( " A U N E V A R I A B L E " ) D U N E U V I E M E D E G R E : */ /* A A R I T H M E T I Q U E V A R I A B L E L O C A L E M E N T : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageX),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_ADD2_ADD2),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_ADD2_MUL2),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_ADD2_MAX2),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_ADD2_MINMAX),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_ADD2_MAXMIN),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_MUL2_ADD2),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_MUL2_MUL2),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_MUL2_MAX2),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_MUL2_MINMAX),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA_MUL2_MAXMIN),NOM_PIPE)); /*..............................................................................................................................*/ EGAL(si_le_GooF_est_activable_utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base,VRAI); /* A priori, l'utilisation de l'arithmetique etendue est forcee puisque l'option */ /* 'utiliser_l_arithmetique_etendue' peut etre activee et que cette derniere n'a */ /* evidemment d'interet qu'avec l'arithmetique etendue. */ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageX=""X=",nom_imageX); GET_ARGUMENT_C("imageADD2_ADD2=""ADD2_ADD2=",nom_imageA_ADD2_ADD2); GET_ARGUMENT_C("imageADD2_MUL2=""ADD2_MUL2=",nom_imageA_ADD2_MUL2); GET_ARGUMENT_C("imageADD2_MAX2=""ADD2_MAX2=",nom_imageA_ADD2_MAX2); GET_ARGUMENT_C("imageADD2_MINMAX=""ADD2_MINMAX=",nom_imageA_ADD2_MINMAX); GET_ARGUMENT_C("imageADD2_MAXMIN=""ADD2_MAXMIN=",nom_imageA_ADD2_MAXMIN); GET_ARGUMENT_C("imageMUL2_ADD2=""MUL2_ADD2=",nom_imageA_MUL2_ADD2); GET_ARGUMENT_C("imageMUL2_MUL2=""MUL2_MUL2=",nom_imageA_MUL2_MUL2); GET_ARGUMENT_C("imageMUL2_MAX2=""MUL2_MAX2=",nom_imageA_MUL2_MAX2); GET_ARGUMENT_C("imageMUL2_MINMAX=""MUL2_MINMAX=",nom_imageA_MUL2_MINMAX); GET_ARGUMENT_C("imageMUL2_MAXMIN=""MUL2_MAXMIN=",nom_imageA_MUL2_MAXMIN); GET_ARGUMENT_F("A9=""a9=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A9); GET_ARGUMENT_F("A8=""a8=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A8); GET_ARGUMENT_F("A7=""a7=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A7); GET_ARGUMENT_F("A6=""a6=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A6); GET_ARGUMENT_F("A5=""a5=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A5); GET_ARGUMENT_F("A4=""a4=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A4); GET_ARGUMENT_F("A3=""a3=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A3); GET_ARGUMENT_F("A2=""a2=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A2); GET_ARGUMENT_F("A1=""a1=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A1); GET_ARGUMENT_F("A0=""a0=",IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A0); GET_ARGUMENT_C("imageR=""R=",nom_imageR); ) ); CALi(IFinitialisation(imageR,FZERO)); /* Initialisation de l'image Resultat. */ Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageX,nom_imageX)))) Bblock /* Entree de l'image Argument {imageX} a transformer de facon "hornerienne". */ Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_ADD2_ADD2,nom_imageA_ADD2_ADD2)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_ADD2_MUL2,nom_imageA_ADD2_MUL2)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_ADD2_MAX2,nom_imageA_ADD2_MAX2)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_ADD2_MINMAX,nom_imageA_ADD2_MINMAX)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_ADD2_MAXMIN,nom_imageA_ADD2_MAXMIN)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_MUL2_ADD2,nom_imageA_MUL2_ADD2)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_MUL2_MUL2,nom_imageA_MUL2_MUL2)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_MUL2_MAX2,nom_imageA_MUL2_MAX2)))) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_MUL2_MINMAX ,nom_imageA_MUL2_MINMAX ) ) ) ) Bblock Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(imageA_MUL2_MAXMIN ,nom_imageA_MUL2_MAXMIN ) ) ) ) Bblock /* Entree des dix images Arguments definissant l'arithmetique locale... */ CALS(IFtransformation_hornerienne_var1_degre9_avl(imageR ,imageX ,imageA_ADD2_ADD2 ,imageA_ADD2_MUL2 ,imageA_ADD2_MAX2 ,imageA_ADD2_MINMAX ,imageA_ADD2_MAXMIN ,imageA_MUL2_ADD2 ,imageA_MUL2_MUL2 ,imageA_MUL2_MAX2 ,imageA_MUL2_MINMAX ,imageA_MUL2_MAXMIN ) ); /* Calcul du polynome courant : */ /* */ /* i=9 */ /* _____ */ /* \ i */ /* P(X) = \ A .X */ /* / i */ /* /_____ */ /* i=0 */ /* */ CALi(IupdateF_image(nom_imageR,imageR)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande