_______________________________________________________________________________________________________________________________________
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   D E   B A S E   N E C E S S I T A N T   L E   ' GooF '  :                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Ce fichier contient toutes les fonctions                                                                       */
/*                  de base de gestion et de manipulation d'une                                                                      */
/*                  image raster, quelle que soit la definition                                                                      */
/*                  et necessitant le 'GooF'. Ceci a ete cree le                                                                     */
/*                  20051128153129 a partir de 'v $xiii/di_image$FON'                                                                */
/*                  afin d'alleger le processus 'v $xcc/cpp$Z' dans le                                                               */
/*                  mode '$xcp/substitue.01$X' (au lieu de '$SE').                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xiii/GooF_image$FON' :                                                                                         */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20051128153129).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   L A   D Y N A M I Q U E   D E   V E R H U L S T  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   NIVEAU_MINIMUM_DE_L_ITERATION_0                                                                                               \
                    FZERO
#define   NIVEAU_MAXIMUM_DE_L_ITERATION_0                                                                                               \
                    FU
                                        /* Extrema suggeres pour l'image Argument...                                                 */

#define   VERIFICATION_INITIALE_DE_LA_DYNAMIQUE_DE_VERHULST(image)                                                                      \
                    Bblock                                                                                                              \
                    DEFV(genere_Float,INIT(niveau_minimum,FLOT__NIVEAU_UNDEF));                                                         \
                    DEFV(genere_Float,INIT(niveau_maximum,FLOT__NIVEAU_UNDEF));                                                         \
                                        /* Donne les extrema de 'image'.                                                             */ \
                                                                                                                                        \
                    CALS(IFnivo_extrema(image                                                                                           \
                                       ,ADRESSE(niveau_minimum)                                                                         \
                                       ,ADRESSE(niveau_maximum)                                                                         \
                                        )                                                                                               \
                         );                                                                                                             \
                                        /* Recherche des extrema...                                                                  */ \
                                                                                                                                        \
                    Test(IFET(IFINff(niveau_minimum,NIVEAU_MINIMUM_DE_L_ITERATION_0,NIVEAU_MAXIMUM_DE_L_ITERATION_0)                    \
                             ,IFINff(niveau_maximum,NIVEAU_MINIMUM_DE_L_ITERATION_0,NIVEAU_MAXIMUM_DE_L_ITERATION_0)                    \
                              )                                                                                                         \
                         )                                                                                                              \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         PRINT_ATTENTION("les extrema de l'image Argument risque de provoquer des debordements flottants");             \
                         CAL1(Prer2("extrema mesures  = (%g,%g)\n",niveau_minimum,niveau_maximum));                                     \
                         CAL1(Prer2("extrema suggeres = (%g,%g)\n",NIVEAU_MINIMUM_DE_L_ITERATION_0,NIVEAU_MAXIMUM_DE_L_ITERATION_0));   \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Verification du segment d'appartenance des niveaux de 'image'.                            */

#define   DYNAMIQUE_DE_VERHULST(transformer,valeur_N,valeur_N_1,increment_du_taux_de_croissance)                                        \
                    Bblock                                                                                                              \
                    DEFV(Float,INIT(taux_de_croissance_courant,loadF_point(taux_de_croissance,X,Y)));                                   \
                                        /* Taux de croissance au point {X,Y}...                                                      */ \
                                                                                                                                        \
                    Test(IL_FAUT(transformer))                                                                                          \
                         Bblock                                                                                                         \
                         EGAL(valeur_N_1,valeur_N);                                                                                     \
                                        /* Iteration...                                                                              */ \
                         EGAL(valeur_N                                                                                                  \
                             ,SOUS(MUL2(ADD2(taux_de_croissance_courant,increment_du_taux_de_croissance)                                \
                                       ,valeur_N_1                                                                                      \
                                        )                                                                                               \
                                  ,MUL2(taux_de_croissance_courant,EXP2(valeur_N_1))                                                    \
                                   )                                                                                                    \
                              );                                                                                                        \
                                        /* Rappelons que la dynamique de Verhulst est definie par l'iteration suivante :             */ \
                                        /*                                                                                           */ \
                                        /*                                       2                                                   */ \
                                        /*                  X  = (R+1).X    - R.X                                                    */ \
                                        /*                   n          n-1      n-1                                                 */ \
                                        /*                                                                                           */ \
                                        /* et qu'elle est tres sensible aux erreurs d'arrondi (pour R>2.57)...                       */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Definition de la dynamique de Verhulst.                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A N S F O R M A T I O N   I T E R A T I V E   D ' U N E   I M A G E                                                    */
/*        P A R   L A   D Y N A M I Q U E   D E   V E R H U L S T   D E L O C A L I S E E  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(Float,SINT(IFdynamique_de_Verhulst_delocalisee_____increment_du_taux_de_croissance,FU)));
                                        /* Increment de 'R' qui vaut generalement '+1'...                                            */

DEFV(Common,DEFV(FonctionF,POINTERF(IFdynamique_de_Verhulst_delocalisee(imageR
                                                                       ,taux_de_croissance
                                                                       ,nombre_d_iterations
                                                                       ,imageA
                                                                       ,transformer_les_niveaux
                                                                       ,transformer_les_coordonnees_X
                                                                       ,transformer_les_coordonnees_Y
                                                                        )
                                    )
                 )
     )
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la modification de 'imageA' par la dynamique de Verhulst iteree         */
                                        /* et "delocalisee" (c'est-a-dire que a la fois {X,Y} et le niveau changent).                */
DEFV(Argument,DEFV(imageF,taux_de_croissance));
                                        /* Taux de croissance 'R' (passe de 'Float' a 'imageF' le 20040915171730).                   */
DEFV(Argument,DEFV(Positive,nombre_d_iterations));
                                        /* Nombre d'iterations 'N'.                                                                  */
DEFV(Argument,DEFV(imageF,imageA));
                                        /* Image Argument a modifier.                                                                */
DEFV(Argument,DEFV(Logical,transformer_les_niveaux));
DEFV(Argument,DEFV(Logical,transformer_les_coordonnees_X));
DEFV(Argument,DEFV(Logical,transformer_les_coordonnees_Y));
                                        /* Indiquent si les niveaux et les coordonnees sont respectivement a transformer.            */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     VERIFICATION_INITIALE_DE_LA_DYNAMIQUE_DE_VERHULST(imageA);

     begin_image
          Bblock
          DEFV(genere_Float,INIT(niveau_N_1,FLOT__NIVEAU_UNDEF));
          DEFV(genere_Float,INIT(niveau_N,loadF_point(imageA,X,Y)));
                                        /* Niveau flottant avant et apres iteration.                                                 */
          DEFV(Float,INIT(coordonnee_X_N_1,FLOT__UNDEF));
          DEFV(Float,INIT(coordonnee_X_N,_____cNORMALISE_OX(X)));
                                        /* Coordonnee 'X' avant et apres iteration.                                                  */
          DEFV(Float,INIT(coordonnee_Y_N_1,FLOT__UNDEF));
          DEFV(Float,INIT(coordonnee_Y_N,_____cNORMALISE_OY(Y)));
                                        /* Coordonnee 'Y' avant et apres iteration.                                                  */

          Repe(nombre_d_iterations)
               Bblock
               USs_GooF(BLOC(
                             Bblock
                             DYNAMIQUE_DE_VERHULST(transformer_les_niveaux
                                                  ,niveau_N
                                                  ,niveau_N_1
                                                  ,IFdynamique_de_Verhulst_delocalisee_____increment_du_taux_de_croissance
                                                   );
                             DYNAMIQUE_DE_VERHULST(transformer_les_coordonnees_X
                                                  ,coordonnee_X_N
                                                  ,coordonnee_X_N_1
                                                  ,IFdynamique_de_Verhulst_delocalisee_____increment_du_taux_de_croissance
                                                   );
                             DYNAMIQUE_DE_VERHULST(transformer_les_coordonnees_Y
                                                  ,coordonnee_Y_N
                                                  ,coordonnee_Y_N_1
                                                  ,IFdynamique_de_Verhulst_delocalisee_____increment_du_taux_de_croissance
                                                   );
                             Eblock
                             )
                        );
                                        /* Procedure introduite le 20080105225731...                                                 */
               Eblock
          ERep

          storeF_point_valide(niveau_N
                             ,imageR
                             ,_cDENORMALISE_OX(coordonnee_X_N),_cDENORMALISE_OY(coordonnee_Y_N)
                              );
                                        /* Modification element par element delocalisee, c'est-a-dire que a la fois {X,Y} et le      */
                                        /* niveau changent ; ainsi, 'N' designant le niveau, on fait :                               */
                                        /*                                                                                           */
                                        /*                  X  = Verhulst(X   )                                                      */
                                        /*                   n             n-1                                                       */
                                        /*                                                                                           */
                                        /*                  Y  = Verhulst(Y   )                                                      */
                                        /*                   n             n-1                                                       */
                                        /*                                                                                           */
                                        /*                  N  = Verhulst(N   )                                                      */
                                        /*                   n             n-1                                                       */
                                        /*                                                                                           */
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A N S F O R M A T I O N   I T E R A T I V E   D ' U N E   I M A G E                                                    */
/*        P A R   L A   D Y N A M I Q U E   D E   V E R H U L S T   L O C A L I S E E  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(Float,SINT(IFdynamique_de_Verhulst_localisee_____increment_du_taux_de_croissance,FU)));
                                        /* Increment de 'R' qui vaut generalement '+1'...                                            */

DEFV(Common,DEFV(FonctionF,POINTERF(IFdynamique_de_Verhulst_localisee(imageR
                                                                     ,taux_de_croissance
                                                                     ,nombre_d_iterations
                                                                     ,imageA
                                                                     ,ponderation_X
                                                                     ,ponderation_Y
                                                                     ,ponderation_N
                                                                     ,translation__
                                                                      )
                                    )
                 )
     )
                                        /* Fonction introduite le 20040915100234.                                                    */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la modification de 'imageA' par la dynamique de Verhulst iteree         */
                                        /* et "localisee" (c'est-a-dire que seul le niveau change, {X,Y} restant inchange).          */
DEFV(Argument,DEFV(imageF,taux_de_croissance));
                                        /* Taux de croissance 'R' (passe de 'Float' a 'imageF' le 20040915171730).                   */
DEFV(Argument,DEFV(Positive,nombre_d_iterations));
                                        /* Nombre d'iterations 'N'.                                                                  */
DEFV(Argument,DEFV(imageF,imageA));
                                        /* Image Argument a modifier.                                                                */
DEFV(Argument,DEFV(imageF,ponderation_X));
DEFV(Argument,DEFV(imageF,ponderation_Y));
DEFV(Argument,DEFV(imageF,ponderation_N));
DEFV(Argument,DEFV(imageF,translation__));
                                        /* Ponderation et translation des differents elements pris en compte...                      */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     VERIFICATION_INITIALE_DE_LA_DYNAMIQUE_DE_VERHULST(imageA);
                                        /* ATTENTION : je note le 20040915113707 que ce test n'est que partiel car finalement il     */
                                        /* fait l'hypothese suivante :                                                               */
                                        /*                                                                                           */
                                        /*                  ponderation_X_courante = 0                                               */
                                        /*                  ponderation_Y_courante = 0                                               */
                                        /*                  ponderation_N_courante = +1                                              */
                                        /*                  translation___courante = 0                                               */
                                        /*                                                                                           */
                                        /* et l'experience montre que par exemple :                                                  */
                                        /*                                                                                           */
                                        /*                  ponderation_X_courante = -1                                              */
                                        /*                  ponderation_Y_courante = +1                                              */
                                        /*                  ponderation_N_courante = +1                                              */
                                        /*                  translation___courante = 0                                               */
                                        /*                                                                                           */
                                        /* provoque des debordements...                                                              */

     begin_image
          Bblock
          DEFV(Float,INIT(ponderation_X_courante,loadF_point(ponderation_X,X,Y)));
          DEFV(Float,INIT(ponderation_Y_courante,loadF_point(ponderation_Y,X,Y)));
          DEFV(Float,INIT(ponderation_N_courante,loadF_point(ponderation_N,X,Y)));
          DEFV(Float,INIT(translation___courante,loadF_point(translation__,X,Y)));
                                        /* Nouveau niveau flottant avant et apres iteration.                                         */

          Test(IZNE(ADD4(ponderation_X_courante
                        ,ponderation_Y_courante
                        ,ponderation_N_courante
                        ,translation___courante
                         )
                    )
               )
               Bblock
               DEFV(genere_Float,INIT(nouveau_niveau_N_1,FLOT__NIVEAU_UNDEF));
               DEFV(genere_Float,INIT(nouveau_niveau_N
                                     ,LIR3(ponderation_X_courante
                                          ,_____cNORMALISE_OX(X)
                                          ,ponderation_Y_courante
                                          ,_____cNORMALISE_OY(Y)
                                          ,ponderation_N_courante
                                          ,loadF_point(imageA,X,Y)
                                          ,translation___courante
                                           )
                                      )
                    );
                                        /* Nouveau niveau flottant avant et apres iteration.                                         */

               Repe(nombre_d_iterations)
                    Bblock
                    USs_GooF(BLOC(
                                  Bblock
                                  DYNAMIQUE_DE_VERHULST(VRAI
                                                       ,nouveau_niveau_N
                                                       ,nouveau_niveau_N_1
                                                       ,IFdynamique_de_Verhulst_localisee_____increment_du_taux_de_croissance
                                                        );
                                  Eblock
                                  )
                             );
                                        /* Procedure introduite le 20080105225731...                                                 */
                    Eblock
               ERep

               storeF_point_valide(nouveau_niveau_N
                                  ,imageR
                                  ,X,Y
                                   );
                                        /* Modification element par element localisee, c'est-a-dire que seul le niveau change,       */
                                        /* {X,Y} restant inchange (d'ou le "local"). Ce qui est en fait itere est une sorte de       */
                                        /* niveau generalise 'NG' obtenu par une combinaison de {X,Y} et du niveau 'N' :             */
                                        /*                                                                                           */
                                        /*                  NG = PX.X + PY.Y + PN.N + translation                                    */
                                        /*                                                                                           */
                                        /* et iteration de 'NG' :                                                                    */
                                        /*                                                                                           */
                                        /*                  NG  = Verhulst(NG   )                                                    */
                                        /*                    n              n-1                                                     */
                                        /*                                                                                           */
                                        /* les quatre parametres {PX,PY,PN,translation} etant introduits sous forme d'images de      */
                                        /* type 'imageF'...                                                                          */
               Eblock
          ATes
               Bblock
               PRINT_ATTENTION("division par zero dans le 'LIR3(...)' de 'IFdynamique_de_Verhulst_localisee(...)'");
               CAL1(Prer2("(au point X=%d Y=%d)\n",X,Y));

               storeF_point_valide(FZERO
                                  ,imageR
                                  ,X,Y
                                   );
                                        /* Et on met une valeur arbitraire...                                                        */
               Eblock
          ETes
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

#undef    DYNAMIQUE_DE_VERHULST

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T R A N S F O R M A T I O N   I T E R A T I V E   D ' U N E   I M A G E                                                    */
/*        P A R   L A   D Y N A M I Q U E   D E   V E R H U L S T   L O C A L I S E E   G E N E R A L I S E E  :                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(FonctionF,POINTERF(IFdynamique_de_Verhulst_localisee_generalisee(imageR
                                                                                 ,definition_du_polynome
                                                                                 ,nombre_d_iterations
                                                                                 ,imageA
                                                                                 ,ponderation_X
                                                                                 ,ponderation_Y
                                                                                 ,ponderation_N
                                                                                 ,translation__
                                                                                  )
                                    )
                 )
     )
                                        /* Fonction introduite le 20040922100812.                                                    */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la modification de 'imageA' par la dynamique de Verhulst iteree         */
                                        /* et "localisee" (c'est-a-dire que seul le niveau change, {X,Y} restant inchange).          */
DEFV(Argument,DEFV(albumF,definition_du_polynome));
                                        /* Definition du polynome variable (en {X,Y}) a l'aide d'un album.                           */
DEFV(Argument,DEFV(Positive,nombre_d_iterations));
                                        /* Nombre d'iterations 'N'.                                                                  */
DEFV(Argument,DEFV(imageF,imageA));
                                        /* Image Argument a modifier.                                                                */
DEFV(Argument,DEFV(imageF,ponderation_X));
DEFV(Argument,DEFV(imageF,ponderation_Y));
DEFV(Argument,DEFV(imageF,ponderation_N));
DEFV(Argument,DEFV(imageF,translation__));
                                        /* Ponderation et translation des differents elements pris en compte...                      */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     VERIFICATION_INITIALE_DE_LA_DYNAMIQUE_DE_VERHULST(imageA);
                                        /* ATTENTION : ce test est partiel ('v $xiii/di_image$FON 20040915113707').                  */

     begin_image
          Bblock
          DEFV(Float,INIT(ponderation_X_courante,loadF_point(ponderation_X,X,Y)));
          DEFV(Float,INIT(ponderation_Y_courante,loadF_point(ponderation_Y,X,Y)));
          DEFV(Float,INIT(ponderation_N_courante,loadF_point(ponderation_N,X,Y)));
          DEFV(Float,INIT(translation___courante,loadF_point(translation__,X,Y)));
                                        /* Nouveau niveau flottant avant et apres iteration.                                         */

          Test(IZNE(ADD4(ponderation_X_courante
                        ,ponderation_Y_courante
                        ,ponderation_N_courante
                        ,translation___courante
                         )
                    )
               )
               Bblock
               DEFV(genere_Float,INIT(nouveau_niveau_N_1,FLOT__NIVEAU_UNDEF));
               DEFV(genere_Float,INIT(nouveau_niveau_N
                                     ,LIR3(ponderation_X_courante
                                          ,_____cNORMALISE_OX(X)
                                          ,ponderation_Y_courante
                                          ,_____cNORMALISE_OY(Y)
                                          ,ponderation_N_courante
                                          ,loadF_point(imageA,X,Y)
                                          ,translation___courante
                                           )
                                      )
                    );
                                        /* Nouveau niveau flottant avant et apres iteration.                                         */

               Repe(nombre_d_iterations)
                    Bblock
                    DEFV(Float,INIT(polynome_courant,FZERO));
                                        /* Valeur courante du polynome calculee par la methode de Horner...                          */

                    EGAL(nouveau_niveau_N_1,nouveau_niveau_N);

                    begin_fuite_back
                         Bblock
                         DEFV(genere_Float,INIT(niveau_courant,AloadF_point(definition_du_polynome,X,Y,Z)));
                                        /* Variable introduite le 20080108130451 afin de simplifier au maximum le calcul             */
                                        /* 'HORNER_1_01(...))' qui suit. En effet, 'AloadF_point(...)' contient evidemment des       */
                                        /* operations arithmetiques elementaires qu'il ne faut pas etendre...                        */

                         USs_GooF(BLOC(
                                       Bblock
                                       EGAL(polynome_courant
                                           ,HORNER_1_01(nouveau_niveau_N_1
                                                       ,polynome_courant
                                                       ,niveau_courant
                                                        )
                                            );
                                        /* Calcul du polynome courant :                                                              */
                                        /*                                                                                           */
                                        /*                                    0       1             p                                */
                                        /*                  polynome(n) = A .n  + A .n  + ... + A .n                                 */
                                        /*                                 0       1             p                                   */
                                        /*                                                                                           */
                                        /* ou 'A(i)' designe la i-ieme page de l'album 'definition_du_polynome' et 'n' le            */
                                        /* niveau generalise 'NG' (voir ci-apres...).                                                */
                                       Eblock
                                       )
                                  );
                                        /* Procedure introduite le 20080105225731...                                                 */
                         Eblock
                    end_fuite_back

                                  EGAL(nouveau_niveau_N,polynome_courant);
                                        /* Iteration...                                                                              */
                    Eblock
               ERep

               storeF_point_valide(nouveau_niveau_N
                                  ,imageR
                                  ,X,Y
                                   );
                                        /* Modification element par element localisee, c'est-a-dire que seul le niveau change,       */
                                        /* {X,Y} restant inchange (d'ou le "local"). Ce qui est en fait itere est une sorte de       */
                                        /* niveau generalise 'NG' obtenu par une combinaison de {X,Y} et du niveau 'N' :             */
                                        /*                                                                                           */
                                        /*                  NG = PX.X + PY.Y + PN.N + translation                                    */
                                        /*                                                                                           */
                                        /* et iteration de 'NG' :                                                                    */
                                        /*                                                                                           */
                                        /*                  NG  = Verhulst(NG   )                                                    */
                                        /*                    n              n-1                                                     */
                                        /*                                                                                           */
                                        /* les quatre parametres {PX,PY,PN,translation} etant introduits sous forme d'images de      */
                                        /* type 'imageF'...                                                                          */
               Eblock
          ATes
               Bblock
               PRINT_ATTENTION("division par zero dans le 'LIR3(...)' de 'IFdynamique_de_Verhulst_localisee_generalisee(...)'");
               CAL1(Prer2("(au point X=%d Y=%d)\n",X,Y));

               storeF_point_valide(FZERO
                                  ,imageR
                                  ,X,Y
                                   );
                                        /* Et on met une valeur arbitraire...                                                        */
               Eblock
          ETes
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

#undef    VERIFICATION_INITIALE_DE_LA_DYNAMIQUE_DE_VERHULST

#undef    NIVEAU_MAXIMUM_DE_L_ITERATION_0
#undef    NIVEAU_MINIMUM_DE_L_ITERATION_0

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   C O M P L E X E   D E   Q U A T R E   I M A G E S                                                          */
/*        U T I L I S A N T   L ' A R I T H M E T I Q U E   E T E N D U E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(FonctionF,POINTERF(IFproduit_complexe_etendu(imageR
                                                             ,ponderation_R,ponderation_I
                                                             ,ponderation_M,ponderation_A
                                                             ,imageA_R_1,imageA_I_1
                                                             ,imageA_R_2,imageA_I_2
                                                              )
                                    )
                 )
     )
                                        /* Fonction introduite le 20061018093427. Elle est une version simplifiee de la fonction     */
                                        /* de 'v $xiii/pent_image$FON IFproduit_complexe'. Avant le 20061019080811, son nom          */
                                        /* nom etait 'IFproduit_complexe_generalise(...)'.                                           */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat.                                                                           */
DEFV(Argument,DEFV(Float,ponderation_R));
DEFV(Argument,DEFV(Float,ponderation_I));
DEFV(Argument,DEFV(Float,ponderation_M));
DEFV(Argument,DEFV(Float,ponderation_A));
                                        /* Ponderations de generation de l'image Resultat.                                           */
DEFV(Argument,DEFV(imageF,imageA_R_1));
DEFV(Argument,DEFV(imageF,imageA_I_1));
                                        /* Definition du doublet d'images {R,I} Argument 1.                                          */
DEFV(Argument,DEFV(imageF,imageA_R_2));
DEFV(Argument,DEFV(imageF,imageA_I_2));
                                        /* Definition du doublet d'images {R,I} Argument 2.                                          */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(complexe,complexe_A1);
          DEFV(complexe,complexe_A2);
          DEFV(complexe,complexe_R);
                                        /* Definition des nombres complexes Arguments et Resultat.                                   */

          Cinitialisation(complexe_A1
                         ,loadF_point(imageA_R_1,X,Y)
                         ,loadF_point(imageA_I_1,X,Y)
                          );
          Cinitialisation(complexe_A2
                         ,loadF_point(imageA_R_2,X,Y)
                         ,loadF_point(imageA_I_2,X,Y)
                          );
                                        /* Recuperation des nombres complexes Argument...                                            */

          USs_GooF(BLOC(
                        Bblock
                        Cproduit(complexe_R,complexe_A1,complexe_A2);
                                        /* Calcul du produit generalise des deux nombres complexes Argument...                       */
                        Eblock
                        )
                   );
                                        /* Procedure introduite le 20080105225731...                                                 */

          storeF_point(LIZ4(ponderation_R,Reelle(complexe_R)
                           ,ponderation_I,Imaginaire(complexe_R)
                           ,ponderation_M,Cmodule(complexe_R)
                           ,ponderation_A,Cargument_PI(complexe_R)
                            )
                      ,imageR
                      ,X,Y
                       );
                                        /* Et enfin, renvoi d'une "partie" du Resultat...                                            */
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   H Y P E R - C O M P L E X E   D E   H U I T   I M A G E S                                                  */
/*        U T I L I S A N T   L ' A R I T H M E T I Q U E   E T E N D U E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(FonctionF,POINTERF(IFproduit_hyper_complexe_etendu(imageR
                                                                   ,ponderation_R,ponderation_I,ponderation_J,ponderation_K
                                                                   ,ponderation_M,ponderation_T,ponderation_P,ponderation_A
                                                                   ,imageA_R_1,imageA_I_1,imageA_J_1,imageA_K_1
                                                                   ,imageA_R_2,imageA_I_2,imageA_J_2,imageA_K_2
                                                                    )
                                    )
                 )
     )
                                        /* Fonction introduite le 20061018093427. Elle est une version simplifiee de la fonction     */
                                        /* de 'v $xiii/pent_image$FON IFproduit_hyper_complexe'. Avant le 20061019080811, son nom    */
                                        /* nom etait 'IFproduit_hyper_complexe_generalise(...)'.                                     */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat.                                                                           */
DEFV(Argument,DEFV(Float,ponderation_R));
DEFV(Argument,DEFV(Float,ponderation_I));
DEFV(Argument,DEFV(Float,ponderation_J));
DEFV(Argument,DEFV(Float,ponderation_K));
DEFV(Argument,DEFV(Float,ponderation_M));
DEFV(Argument,DEFV(Float,ponderation_T));
DEFV(Argument,DEFV(Float,ponderation_P));
DEFV(Argument,DEFV(Float,ponderation_A));
                                        /* Ponderations de generation de l'image Resultat.                                           */
DEFV(Argument,DEFV(imageF,imageA_R_1));
DEFV(Argument,DEFV(imageF,imageA_I_1));
DEFV(Argument,DEFV(imageF,imageA_J_1));
DEFV(Argument,DEFV(imageF,imageA_K_1));
                                        /* Definition du quadruplet d'images {R,I,J,K} Argument 1.                                   */
DEFV(Argument,DEFV(imageF,imageA_R_2));
DEFV(Argument,DEFV(imageF,imageA_I_2));
DEFV(Argument,DEFV(imageF,imageA_J_2));
DEFV(Argument,DEFV(imageF,imageA_K_2));
                                        /* Definition du quadruplet d'images {R,I,J,K} Argument 2.                                   */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(hyper_complexe,quaternion_A1);
          DEFV(hyper_complexe,quaternion_A2);
          DEFV(hyper_complexe,quaternion_R);
                                        /* Definition des nombres hyper-complexes Arguments et Resultat.                             */

          HCinitialisation(quaternion_A1
                          ,loadF_point(imageA_R_1,X,Y)
                          ,loadF_point(imageA_I_1,X,Y)
                          ,loadF_point(imageA_J_1,X,Y)
                          ,loadF_point(imageA_K_1,X,Y)
                           );
          HCinitialisation(quaternion_A2
                          ,loadF_point(imageA_R_2,X,Y)
                          ,loadF_point(imageA_I_2,X,Y)
                          ,loadF_point(imageA_J_2,X,Y)
                          ,loadF_point(imageA_K_2,X,Y)
                           );
                                        /* Recuperation des nombres hyper-complexes Argument...                                      */

          USs_GooF(BLOC(
                        Bblock
                        HCproduit(quaternion_R,quaternion_A1,quaternion_A2);
                                        /* Calcul du produit generalise des deux nombres hyper-complexes Argument...                 */
                        Eblock
                        )
                   );
                                        /* Procedure introduite le 20080105225731...                                                 */

          storeF_point(LIZ8(ponderation_R,HReelle(quaternion_R)
                           ,ponderation_I,HImaginaire(quaternion_R)
                           ,ponderation_J,HJmaginaire(quaternion_R)
                           ,ponderation_K,HKmaginaire(quaternion_R)
                           ,ponderation_M,HCmodule(quaternion_R)
                           ,ponderation_T,HCargumentT_PI(quaternion_R)
                           ,ponderation_P,HCargumentP_PI(quaternion_R)
                           ,ponderation_A,HCargumentA_PI(quaternion_R)
                            )
                      ,imageR
                      ,X,Y
                       );
                                        /* Et enfin, renvoi d'une "partie" du Resultat...                                            */
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   H Y P E R - H Y P E R - C O M P L E X E   D E   S E I Z E   I M A G E S                                    */
/*        U T I L I S A N T   L ' A R I T H M E T I Q U E   E T E N D U E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(FonctionF,POINTERF(IFproduit_hyper_hyper_complexe_etendu(imageR
                                                                         ,ponderation_R,ponderation_I,ponderation_J,ponderation_K
                                                                         ,ponderation_S,ponderation_T,ponderation_U,ponderation_V
                                                                         ,ponderation_M_,ponderation_A1,ponderation_A2,ponderation_A3
                                                                         ,ponderation_A4,ponderation_A5,ponderation_A6,ponderation_A7
                                                                         ,imageA_R_1,imageA_I_1,imageA_J_1,imageA_K_1
                                                                         ,imageA_S_1,imageA_T_1,imageA_U_1,imageA_V_1
                                                                         ,imageA_R_2,imageA_I_2,imageA_J_2,imageA_K_2
                                                                         ,imageA_S_2,imageA_T_2,imageA_U_2,imageA_V_2
                                                                          )
                                    )
                 )
     )
                                        /* Fonction introduite le 20110826104124.                                                    */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat.                                                                           */
DEFV(Argument,DEFV(Float,ponderation_R));
DEFV(Argument,DEFV(Float,ponderation_I));
DEFV(Argument,DEFV(Float,ponderation_J));
DEFV(Argument,DEFV(Float,ponderation_K));
DEFV(Argument,DEFV(Float,ponderation_S));
DEFV(Argument,DEFV(Float,ponderation_T));
DEFV(Argument,DEFV(Float,ponderation_U));
DEFV(Argument,DEFV(Float,ponderation_V));

DEFV(Argument,DEFV(Float,ponderation_M_));
DEFV(Argument,DEFV(Float,ponderation_A1));
DEFV(Argument,DEFV(Float,ponderation_A2));
DEFV(Argument,DEFV(Float,ponderation_A3));
DEFV(Argument,DEFV(Float,ponderation_A4));
DEFV(Argument,DEFV(Float,ponderation_A5));
DEFV(Argument,DEFV(Float,ponderation_A6));
DEFV(Argument,DEFV(Float,ponderation_A7));
                                        /* Ponderations de generation de l'image Resultat.                                           */
DEFV(Argument,DEFV(imageF,imageA_R_1));
DEFV(Argument,DEFV(imageF,imageA_I_1));
DEFV(Argument,DEFV(imageF,imageA_J_1));
DEFV(Argument,DEFV(imageF,imageA_K_1));
DEFV(Argument,DEFV(imageF,imageA_S_1));
DEFV(Argument,DEFV(imageF,imageA_T_1));
DEFV(Argument,DEFV(imageF,imageA_U_1));
DEFV(Argument,DEFV(imageF,imageA_V_1));
                                        /* Definition de l'octuplet d'images {R,I,J,K,S,T,U,V} Argument 1.                           */
DEFV(Argument,DEFV(imageF,imageA_R_2));
DEFV(Argument,DEFV(imageF,imageA_I_2));
DEFV(Argument,DEFV(imageF,imageA_J_2));
DEFV(Argument,DEFV(imageF,imageA_K_2));
DEFV(Argument,DEFV(imageF,imageA_S_2));
DEFV(Argument,DEFV(imageF,imageA_T_2));
DEFV(Argument,DEFV(imageF,imageA_U_2));
DEFV(Argument,DEFV(imageF,imageA_V_2));
                                        /* Definition de l'octuplet d'images {R,I,J,K,S,T,U,V} Argument 2.                           */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(hyper_hyper_complexe,octonion_A1);
          DEFV(hyper_hyper_complexe,octonion_A2);
          DEFV(hyper_hyper_complexe,octonion_R);
                                        /* Definition des nombres hyper-hyper-complexes Arguments et Resultat.                       */

          HHCinitialisation(octonion_A1
                           ,loadF_point(imageA_R_1,X,Y)
                           ,loadF_point(imageA_I_1,X,Y)
                           ,loadF_point(imageA_J_1,X,Y)
                           ,loadF_point(imageA_K_1,X,Y)
                           ,loadF_point(imageA_S_1,X,Y)
                           ,loadF_point(imageA_T_1,X,Y)
                           ,loadF_point(imageA_U_1,X,Y)
                           ,loadF_point(imageA_V_1,X,Y)
                            );
          HHCinitialisation(octonion_A2
                           ,loadF_point(imageA_R_2,X,Y)
                           ,loadF_point(imageA_I_2,X,Y)
                           ,loadF_point(imageA_J_2,X,Y)
                           ,loadF_point(imageA_K_2,X,Y)
                           ,loadF_point(imageA_S_2,X,Y)
                           ,loadF_point(imageA_T_2,X,Y)
                           ,loadF_point(imageA_U_2,X,Y)
                           ,loadF_point(imageA_V_2,X,Y)
                            );
                                        /* Recuperation des nombres hyper-hyper-complexes Argument...                                */

          USs_GooF(BLOC(
                        Bblock
                        HHCproduit(octonion_R,octonion_A1,octonion_A2);
                                        /* Calcul du produit generalise des deux nombres hyper-hyper-complexes Argument...           */
                        Eblock
                        )
                   );

          storeF_point(LIZ16(ponderation_R,HHReelle(octonion_R)
                            ,ponderation_I,HHImaginaire(octonion_R)
                            ,ponderation_J,HHJmaginaire(octonion_R)
                            ,ponderation_K,HHKmaginaire(octonion_R)
                            ,ponderation_S,HHSmaginaire(octonion_R)
                            ,ponderation_T,HHTmaginaire(octonion_R)
                            ,ponderation_U,HHUmaginaire(octonion_R)
                            ,ponderation_V,HHVmaginaire(octonion_R)
                            ,ponderation_M_,HHCmodule(octonion_R)
                            ,ponderation_A1,HHCargumentA1_PI(octonion_R)
                            ,ponderation_A2,HHCargumentA2_PI(octonion_R)
                            ,ponderation_A3,HHCargumentA3_PI(octonion_R)
                            ,ponderation_A4,HHCargumentA4_PI(octonion_R)
                            ,ponderation_A5,HHCargumentA5_PI(octonion_R)
                            ,ponderation_A6,HHCargumentA6_PI(octonion_R)
                            ,ponderation_A7,HHCargumentA7_PI(octonion_R)
                             )
                      ,imageR
                      ,X,Y
                       );
                                        /* Et enfin, renvoi d'une "partie" du Resultat...                                            */
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S O M M E   E T E N D U E   D E   D E U X   I M A G E S                                                                    */
/*        A V E C   L ' A R I T H M E T I Q U E   E T E N D U E   V A R I A B L E   L O C A L E M E N T  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

#define   __imageA_ADD2__                                                                                                               \
                    imageA_ADD2__
#define   __imageA_SOUS__                                                                                                               \
                    imageA_SOUS__
#define   __imageA_MUL2__                                                                                                               \
                    imageA_MUL2__
#define   __imageA_DIVZ__                                                                                                               \
                    imageA_DIVZ__
#define   __imageA_MIN2__                                                                                                               \
                    imageA_MIN2__
#define   __imageA_MAX2__                                                                                                               \
                    imageA_MAX2__
                                        /* Introduit le 20080408131626 pour ameliorer les tabulations lors de la mise en place       */
                                        /* de la ponderation locale...                                                               */

#define   MISE_EN_PLACE_DE_LA_PONDERATION(ponderation,image_de_ponderation)                                                             \
                    Bblock                                                                                                              \
                    EGAL(ponderation,loadF_point(image_de_ponderation,X,Y));                                                            \
                    Eblock                                                                                                              \
                                        /* Mise en place de la ponderation locale...                                                 */

DEFV(Common,DEFV(FonctionF,POINTERF(IFaddition_etendue_a_variations_locales(imageR
                                                                           ,imageA1
                                                                           ,imageA2
                                                                           ,imageA_ADD2__,imageA_SOUS__
                                                                           ,imageA_MUL2__,imageA_DIVZ__
                                                                           ,imageA_MIN2__,imageA_MAX2__
                                                                           ,imageA_MINMAX,imageA_MAXMIN
                                                                            )
                                    )
                 )
     )
                                        /* Fonction introduite le 20080107093638.                                                    */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat.                                                                           */
DEFV(Argument,DEFV(imageF,imageA1));
                                        /* Premiere image Argument,                                                                  */
DEFV(Argument,DEFV(imageF,imageA2));
                                        /* Seconde image Argument.                                                                   */
DEFV(Argument,DEFV(imageF,imageA_ADD2__));
DEFV(Argument,DEFV(imageF,imageA_SOUS__));
DEFV(Argument,DEFV(imageF,imageA_MUL2__));
DEFV(Argument,DEFV(imageF,imageA_DIVZ__));
DEFV(Argument,DEFV(imageF,imageA_MIN2__));
DEFV(Argument,DEFV(imageF,imageA_MAX2__));
DEFV(Argument,DEFV(imageF,imageA_MINMAX));
DEFV(Argument,DEFV(imageF,imageA_MAXMIN));
                                        /* Definition des ponderations de l'arithmetique locale.                                     */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     BSaveVariable(Float,FfxADD2_____ponderation_de_ADD2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_SOUS);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MUL2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_DIVZ);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MIN2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MAX2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MINMAX);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MAXMIN);
                                        /* Sauvegardes introduites le 20080408131626 (c'est quand meme plus propre ainsi...).        */
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(genere_Float,INIT(niveau_1,loadF_point(imageA1,X,Y)));
          DEFV(genere_Float,INIT(niveau_2,loadF_point(imageA2,X,Y)));
                                        /* Niveau courant des images Arguments.                                                      */
          DEFV(genere_Float,INIT(somme_etendue_courante,FLOT__NIVEAU_UNDEF));
                                        /* Somme etendue de 'niveau_1' et de 'niveau_2'.                                             */

          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_ADD2,__imageA_ADD2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_SOUS,__imageA_SOUS__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MUL2,__imageA_MUL2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_DIVZ,__imageA_DIVZ__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MIN2,__imageA_MIN2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MAX2,__imageA_MAX2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MINMAX,imageA_MINMAX);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MAXMIN,imageA_MAXMIN);
                                        /* Mise en place de la ponderation locale...                                                 */
                                        /*                                                                                           */
                                        /* On notera le 20080107104759 que ne sont pas utilisees :                                   */
                                        /*                                                                                           */
                                        /*                  FfxADD2_____ponderation_de_IMINMAX                                       */
                                        /*                  FfxADD2_____ponderation_de_IMAXMIN                                       */
                                        /*                  FfxADD2_____ponderation_de_MOYE                                          */
                                        /*                  FfxADD2_____ponderation_de_MOYZ                                          */
                                        /*                  FfxADD2_____ponderation_de_MOYZSI                                        */
                                        /*                  FfxADD2_____ponderation_de_MOYQ                                          */
                                        /*                  FfxADD2_____ponderation_de_MOYQSI                                        */
                                        /*                  FfxADD2_____ponderation_de_SPUIX                                         */
                                        /*                                                                                           */
                                        /* car elles sont de peu d'utilite, mais les ajouter serait evidemment trivial...            */
                                        /*                                                                                           */
                                        /* De meme le 20180823100402 pour :                                                          */
                                        /*                                                                                           */
                                        /*                  FfxADD2_____ponderation_de_MOYH                                          */
                                        /*                  FfxADD2_____ponderation_de_SE12                                          */
                                        /*                  FfxADD2_____ponderation_de_SE22                                          */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* De meme le 20181009171225 pour :                                                          */
                                        /*                                                                                           */
                                        /*                  FfxADD2_____ponderation_de_ATAN                                          */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /* De meme le 20181203162540 pour :                                                          */
                                        /*                                                                                           */
                                        /*                  FfxADD2_____ponderation_de_MULH24                                        */
                                        /*                                                                                           */

          USs_GooF(BLOC(
                        Bblock
                        EGAL(somme_etendue_courante,ADD2(niveau_1,niveau_2));
                        Eblock
                        )
                   );

          storeF_point(somme_etendue_courante
                      ,imageR
                      ,X,Y
                       );
                                        /* Et enfin, renvoi de la somme etendue localement...                                        */
          Eblock
     end_image

     ESaveVariable(Float,FfxADD2_____ponderation_de_MAXMIN);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MINMAX);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MAX2);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MIN2);
     ESaveVariable(Float,FfxADD2_____ponderation_de_DIVZ);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MUL2);
     ESaveVariable(Float,FfxADD2_____ponderation_de_SOUS);
     ESaveVariable(Float,FfxADD2_____ponderation_de_ADD2);
                                        /* Restaurations introduites le 20080408131626 (c'est quand meme plus propre ainsi...).      */

     RETIF(imageR);
     Eblock

#undef    MISE_EN_PLACE_DE_LA_PONDERATION

#undef    __imageA_MAX2__
#undef    __imageA_MIN2__
#undef    __imageA_DIVZ__
#undef    __imageA_MUL2__
#undef    __imageA_SOUS__
#undef    __imageA_ADD2__

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(FonctionF,POINTERF(IFtransformation_hornerienne_var1_degre9_cvl(imageR
                                                                                ,imageX
                                                                                ,imageA9
                                                                                ,imageA8
                                                                                ,imageA7
                                                                                ,imageA6
                                                                                ,imageA5
                                                                                ,imageA4
                                                                                ,imageA3
                                                                                ,imageA2
                                                                                ,imageA1
                                                                                ,imageA0
                                                                                 )
                                    )
                 )
     )
                                        /* Fonction introduite le 20080324083248.                                                    */
                                        /*                                                                                           */
                                        /* Le 20080430132022 son nom anterieur 'IFtransformation_hornerienne_var1_degre9' a ete      */
                                        /* "augmente" par "Coefficients Variables Localement".                                       */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la transformation de {imageX} par le polynome {imageA(i)}.              */
DEFV(Argument,DEFV(imageF,imageX));
                                        /* Image Argument definissant {X}.                                                           */
DEFV(Argument,DEFV(imageF,imageA9));
DEFV(Argument,DEFV(imageF,imageA8));
DEFV(Argument,DEFV(imageF,imageA7));
DEFV(Argument,DEFV(imageF,imageA6));
DEFV(Argument,DEFV(imageF,imageA5));
DEFV(Argument,DEFV(imageF,imageA4));
DEFV(Argument,DEFV(imageF,imageA3));
DEFV(Argument,DEFV(imageF,imageA2));
DEFV(Argument,DEFV(imageF,imageA1));
DEFV(Argument,DEFV(imageF,imageA0));
                                        /* Images Arguments definissant le polynome {imageA(i)}.                                     */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(genere_Float,INIT(Xf,loadF_point(imageX,X,Y)));
                                        /* Definition du {X} courant.                                                                */
          DEFV(genere_Float,INIT(transformation_hornerienne,FLOT__UNDEF));
                                        /* Valeur resultante...                                                                      */

          DEFV(genere_Float,INIT(A9,loadF_point(imageA9,X,Y)));
          DEFV(genere_Float,INIT(A8,loadF_point(imageA8,X,Y)));
          DEFV(genere_Float,INIT(A7,loadF_point(imageA7,X,Y)));
          DEFV(genere_Float,INIT(A6,loadF_point(imageA6,X,Y)));
          DEFV(genere_Float,INIT(A5,loadF_point(imageA5,X,Y)));
          DEFV(genere_Float,INIT(A4,loadF_point(imageA4,X,Y)));
          DEFV(genere_Float,INIT(A3,loadF_point(imageA3,X,Y)));
          DEFV(genere_Float,INIT(A2,loadF_point(imageA2,X,Y)));
          DEFV(genere_Float,INIT(A1,loadF_point(imageA1,X,Y)));
          DEFV(genere_Float,INIT(A0,loadF_point(imageA0,X,Y)));
                                        /* Definition du polynome courant {A(i)}.                                                    */

          USs_GooF(BLOC(
                        Bblock
                        EGAL(transformation_hornerienne
                            ,HORNER_1_09(Xf
                                        ,A9,A8,A7,A6,A5,A4,A3,A2,A1,A0
                                         )
                             );
                                        /* Calcul du polynome courant :                                                              */
                                        /*                                                                                           */
                                        /*                           i=9                                                             */
                                        /*                          _____                                                            */
                                        /*                         \          i                                                      */
                                        /*                  P(X) =  \     A .X                                                       */
                                        /*                          /      i                                                         */
                                        /*                         /_____                                                            */
                                        /*                           i=0                                                             */
                                        /*                                                                                           */
                        Eblock
                        )
                   );

          storeF_point_valide(transformation_hornerienne
                             ,imageR
                             ,X,Y
                              );
                                        /* Et rangement du resultat...                                                               */
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

#define   __imageA_ADD2_ADD2__                                                                                                          \
                    imageA_ADD2_ADD2__
#define   __imageA_ADD2_MUL2__                                                                                                          \
                    imageA_ADD2_MUL2__
#define   __imageA_ADD2_MAX2__                                                                                                          \
                    imageA_ADD2_MAX2__
#define   __imageA_ADD2_MINMAX                                                                                                          \
                    imageA_ADD2_MINMAX
#define   __imageA_ADD2_MAXMIN                                                                                                          \
                    imageA_ADD2_MAXMIN
                                        /* Afin d'ameliorer les tabulations lors de la mise en place de la ponderation locale...     */
#define   __imageA_MUL2_ADD2__                                                                                                          \
                    imageA_MUL2_ADD2__
#define   __imageA_MUL2_MUL2__                                                                                                          \
                    imageA_MUL2_MUL2__
#define   __imageA_MUL2_MAX2__                                                                                                          \
                    imageA_MUL2_MAX2__
#define   __imageA_MUL2_MINMAX                                                                                                          \
                    imageA_MUL2_MINMAX
#define   __imageA_MUL2_MAXMIN                                                                                                          \
                    imageA_MUL2_MAXMIN
                                        /* Afin d'ameliorer les tabulations lors de la mise en place de la ponderation locale...     */

#define   MISE_EN_PLACE_DE_LA_PONDERATION(ponderation,image_de_ponderation)                                                             \
                    Bblock                                                                                                              \
                    EGAL(ponderation,loadF_point(image_de_ponderation,X,Y));                                                            \
                    Eblock                                                                                                              \
                                        /* Mise en place de la ponderation locale...                                                 */

DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A9,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A8,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A7,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A6,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A5,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A4,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A3,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A2,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A1,FU)));
DEFV(Common,DEFV(Float,SINT(IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A0,FZERO)));
                                        /* Definition du polynome {Ai} initialise sur :                                              */
                                        /*                                                                                           */
                                        /*                  X                                                                        */
                                        /*                                                                                           */

DEFV(Common,DEFV(FonctionF,POINTERF(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
                                                                                 )
                                    )
                 )
     )
                                        /* Fonction introduite le 20080501095430.                                                    */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la transformation de {imageX} par le polynome {Ai}.                     */
DEFV(Argument,DEFV(imageF,imageX));
                                        /* Image Argument definissant {X}.                                                           */
DEFV(Argument,DEFV(imageF,imageA_ADD2_ADD2__));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MUL2__));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MAX2__));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MINMAX));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MAXMIN));
                                        /* Definition des ponderations de l'arithmetique locale pour 'ADD2'.                         */
DEFV(Argument,DEFV(imageF,imageA_MUL2_ADD2__));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MUL2__));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MAX2__));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MINMAX));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MAXMIN));
                                        /* Definition des ponderations de l'arithmetique locale pour 'MUL2'.                         */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     BSaveVariable(Float,FfxADD2_____ponderation_de_ADD2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MUL2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MAX2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MINMAX);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MAXMIN);
                                        /* Sauvegarde de la definition de 'ADD2'...                                                  */
     BSaveVariable(Float,FfxMUL2_____ponderation_de_ADD2);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MUL2);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MAX2);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MINMAX);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MAXMIN);
                                        /* Sauvegarde de la definition de 'MUL2'...                                                  */
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(genere_Float,INIT(Xf,loadF_point(imageX,X,Y)));
                                        /* Definition du {X} courant.                                                                */
          DEFV(genere_Float,INIT(transformation_hornerienne,FLOT__UNDEF));
                                        /* Valeur resultante...                                                                      */

          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_ADD2,__imageA_ADD2_ADD2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MUL2,__imageA_ADD2_MUL2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MAX2,__imageA_ADD2_MAX2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MINMAX,imageA_ADD2_MINMAX);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MAXMIN,imageA_ADD2_MAXMIN);
                                        /* Mise en place de la ponderation locale de 'ADD2', en notant que toutes les possibilites   */
                                        /* ne sont pas exploitees et ce afin de minimiser le nombre d'images Argument...             */
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_ADD2,__imageA_MUL2_ADD2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MUL2,__imageA_MUL2_MUL2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MAX2,__imageA_MUL2_MAX2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MINMAX,imageA_MUL2_MINMAX);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MAXMIN,imageA_MUL2_MAXMIN);
                                        /* Mise en place de la ponderation locale de 'MUL2', en notant que toutes les possibilites   */
                                        /* ne sont pas exploitees et ce afin de minimiser le nombre d'images Argument...             */

          USs_GooF(BLOC(
                        Bblock
                        EGAL(transformation_hornerienne
                            ,HORNER_1_09(Xf
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A9
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A8
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A7
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A6
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A5
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A4
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A3
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A2
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A1
                                        ,IFtransformation_hornerienne_var1_degre9_avl_____coefficient_A0
                                         )
                             );
                                        /* Calcul du polynome courant :                                                              */
                                        /*                                                                                           */
                                        /*                           i=9                                                             */
                                        /*                          _____                                                            */
                                        /*                         \          i                                                      */
                                        /*                  P(X) =  \     A .X                                                       */
                                        /*                          /      i                                                         */
                                        /*                         /_____                                                            */
                                        /*                           i=0                                                             */
                                        /*                                                                                           */
                        Eblock
                        )
                   );

          storeF_point_valide(transformation_hornerienne
                             ,imageR
                             ,X,Y
                              );
                                        /* Et rangement du resultat...                                                               */
          Eblock
     end_image

     ESaveVariable(Float,FfxMUL2_____ponderation_de_MAXMIN);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_MINMAX);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_MAX2);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_MUL2);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_ADD2);
                                        /* Restaurations de la definition de 'MUL2'...                                               */
     ESaveVariable(Float,FfxADD2_____ponderation_de_MAXMIN);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MINMAX);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MAX2);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MUL2);
     ESaveVariable(Float,FfxADD2_____ponderation_de_ADD2);
                                        /* Restaurations de la definition de 'ADD2'...                                               */

     RETIF(imageR);
     Eblock

#undef    MISE_EN_PLACE_DE_LA_PONDERATION

#undef    __imageA_MUL2_MAXMIN
#undef    __imageA_MUL2_MINMAX
#undef    __imageA_MUL2_MAX2__
#undef    __imageA_MUL2_MUL2__
#undef    __imageA_MUL2_ADD2__

#undef    __imageA_ADD2_MAXMIN
#undef    __imageA_ADD2_MINMAX
#undef    __imageA_ADD2_MAX2__
#undef    __imageA_ADD2_MUL2__
#undef    __imageA_ADD2_ADD2__

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   " H O R N E R I E N N E "   D E   D E U X   I M A G E S   F L O T T A N T E S                      */
/*        ( " A   D E U X   V A R I A B L E S " )   D U   S E C O N D   D E G R E                                                    */
/*        A   C O E F F I C I E N T S   V A R I A B L E S   L O C A L E M E N T  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(FonctionF,POINTERF(IFcombinaison_hornerienne_var2_degre2_cvl(imageR
                                                                             ,imageX,imageY
                                                                             ,imageA22,imageA21,imageA20
                                                                             ,imageA12,imageA11,imageA10
                                                                             ,imageA02,imageA01,imageA00
                                                                              )
                                    )
                 )
     )
                                        /* Fonction introduite le 20080219152521.                                                    */
                                        /*                                                                                           */
                                        /* Le 20080430130838 son nom anterieur 'IFcombinaison_hornerienne_var2_degre2' a ete         */
                                        /* "augmente" par "Coefficients Variables Localement".                                       */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la combinaison de {imageX,imageY} par le polynome {imageA(i,j)}.        */
DEFV(Argument,DEFV(imageF,imageX));
DEFV(Argument,DEFV(imageF,imageY));
                                        /* Images Arguments definissant {X,Y}.                                                       */
DEFV(Argument,DEFV(imageF,imageA22));
DEFV(Argument,DEFV(imageF,imageA21));
DEFV(Argument,DEFV(imageF,imageA20));
DEFV(Argument,DEFV(imageF,imageA12));
DEFV(Argument,DEFV(imageF,imageA11));
DEFV(Argument,DEFV(imageF,imageA10));
DEFV(Argument,DEFV(imageF,imageA02));
DEFV(Argument,DEFV(imageF,imageA01));
DEFV(Argument,DEFV(imageF,imageA00));
                                        /* Images Arguments definissant le polynome {imageA(i,j)}.                                   */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(genere_Float,INIT(Xf,loadF_point(imageX,X,Y)));
          DEFV(genere_Float,INIT(Yf,loadF_point(imageY,X,Y)));
                                        /* Definition du {X,Y} courant.                                                              */
          DEFV(genere_Float,INIT(A22,loadF_point(imageA22,X,Y)));
          DEFV(genere_Float,INIT(A21,loadF_point(imageA21,X,Y)));
          DEFV(genere_Float,INIT(A20,loadF_point(imageA20,X,Y)));
          DEFV(genere_Float,INIT(A12,loadF_point(imageA12,X,Y)));
          DEFV(genere_Float,INIT(A11,loadF_point(imageA11,X,Y)));
          DEFV(genere_Float,INIT(A10,loadF_point(imageA10,X,Y)));
          DEFV(genere_Float,INIT(A02,loadF_point(imageA02,X,Y)));
          DEFV(genere_Float,INIT(A01,loadF_point(imageA01,X,Y)));
          DEFV(genere_Float,INIT(A00,loadF_point(imageA00,X,Y)));
                                        /* Definition du polynome courant {A(i,j)}.                                                  */

          DEFV(genere_Float,INIT(combinaison_hornerienne,FLOT__UNDEF));
                                        /* Valeur resultante...                                                                      */

          USs_GooF(BLOC(
                        Bblock
                        EGAL(combinaison_hornerienne
                            ,HORNER_2_02(Xf,Yf
                                        ,A22,A21,A20
                                        ,A12,A11,A10
                                        ,A02,A01,A00
                                         )
                             );
                                        /* Calcul du polynome courant :                                                              */
                                        /*                                                                                           */
                                        /*                             i=2    j=2                                                    */
                                        /*                            _____  _____                                                   */
                                        /*                           \      \           j  i                                         */
                                        /*                  P(X,Y) =  \      \     A  .X .Y                                          */
                                        /*                            /      /      ij                                               */
                                        /*                           /_____ /_____                                                   */
                                        /*                             i=0    j=0                                                    */
                                        /*                                                                                           */
                                        /* en notant bien que :                                                                      */
                                        /*                                                                                           */
                                        /*                  i --0--> Y                                                               */
                                        /*                  j --0--> X                                                               */
                                        /*                                                                                           */
                                        /* dans 'A(i,j)' et non pas l'inverse (qui pourrait paraitre plus logique...).               */
                        Eblock
                        )
                   );

          storeF_point_valide(combinaison_hornerienne
                             ,imageR
                             ,X,Y
                              );
                                        /* Et rangement du resultat...                                                               */
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   " H O R N E R I E N N E "   D E   D E U X   I M A G E S   F L O T T A N T E S                      */
/*        ( " A   D E U X   V A R I A B L E S " )   D U   S E C O N D   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  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

#define   __imageA_ADD2_ADD2__                                                                                                          \
                    imageA_ADD2_ADD2__
#define   __imageA_ADD2_MUL2__                                                                                                          \
                    imageA_ADD2_MUL2__
#define   __imageA_ADD2_MAX2__                                                                                                          \
                    imageA_ADD2_MAX2__
#define   __imageA_ADD2_MINMAX                                                                                                          \
                    imageA_ADD2_MINMAX
#define   __imageA_ADD2_MAXMIN                                                                                                          \
                    imageA_ADD2_MAXMIN
                                        /* Afin d'ameliorer les tabulations lors de la mise en place de la ponderation locale...     */
#define   __imageA_MUL2_ADD2__                                                                                                          \
                    imageA_MUL2_ADD2__
#define   __imageA_MUL2_MUL2__                                                                                                          \
                    imageA_MUL2_MUL2__
#define   __imageA_MUL2_MAX2__                                                                                                          \
                    imageA_MUL2_MAX2__
#define   __imageA_MUL2_MINMAX                                                                                                          \
                    imageA_MUL2_MINMAX
#define   __imageA_MUL2_MAXMIN                                                                                                          \
                    imageA_MUL2_MAXMIN
                                        /* Afin d'ameliorer les tabulations lors de la mise en place de la ponderation locale...     */

#define   MISE_EN_PLACE_DE_LA_PONDERATION(ponderation,image_de_ponderation)                                                             \
                    Bblock                                                                                                              \
                    EGAL(ponderation,loadF_point(image_de_ponderation,X,Y));                                                            \
                    Eblock                                                                                                              \
                                        /* Mise en place de la ponderation locale...                                                 */

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A22,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A21,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A20,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A12,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A11,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A10,FU)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A02,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A01,FU)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A00,FZERO)));
                                        /* Definition du polynome {Aij} initialise sur :                                             */
                                        /*                                                                                           */
                                        /*                  X+Y                                                                      */
                                        /*                                                                                           */

DEFV(Common,DEFV(FonctionF,POINTERF(IFcombinaison_hornerienne_var2_degre2_avl(imageR
                                                                             ,imageX,imageY
                                                                             ,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
                                                                              )
                                    )
                 )
     )
                                        /* Fonction introduite le 20080430134553.                                                    */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la combinaison de {imageX,imageY} par le polynome {Aij}.                */
DEFV(Argument,DEFV(imageF,imageX));
DEFV(Argument,DEFV(imageF,imageY));
                                        /* Images Arguments definissant {X,Y}.                                                       */
DEFV(Argument,DEFV(imageF,imageA_ADD2_ADD2__));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MUL2__));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MAX2__));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MINMAX));
DEFV(Argument,DEFV(imageF,imageA_ADD2_MAXMIN));
                                        /* Definition des ponderations de l'arithmetique locale pour 'ADD2'.                         */
DEFV(Argument,DEFV(imageF,imageA_MUL2_ADD2__));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MUL2__));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MAX2__));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MINMAX));
DEFV(Argument,DEFV(imageF,imageA_MUL2_MAXMIN));
                                        /* Definition des ponderations de l'arithmetique locale pour 'MUL2'.                         */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     BSaveVariable(Float,FfxADD2_____ponderation_de_ADD2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MUL2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MAX2);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MINMAX);
     BSaveVariable(Float,FfxADD2_____ponderation_de_MAXMIN);
                                        /* Sauvegarde de la definition de 'ADD2'...                                                  */
     BSaveVariable(Float,FfxMUL2_____ponderation_de_ADD2);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MUL2);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MAX2);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MINMAX);
     BSaveVariable(Float,FfxMUL2_____ponderation_de_MAXMIN);
                                        /* Sauvegarde de la definition de 'MUL2'...                                                  */
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(genere_Float,INIT(Xf,loadF_point(imageX,X,Y)));
          DEFV(genere_Float,INIT(Yf,loadF_point(imageY,X,Y)));
                                        /* Definition du {X,Y} courant.                                                              */
          DEFV(genere_Float,INIT(combinaison_hornerienne,FLOT__UNDEF));
                                        /* Valeur resultante...                                                                      */

          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_ADD2,__imageA_ADD2_ADD2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MUL2,__imageA_ADD2_MUL2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MAX2,__imageA_ADD2_MAX2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MINMAX,imageA_ADD2_MINMAX);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxADD2_____ponderation_de_MAXMIN,imageA_ADD2_MAXMIN);
                                        /* Mise en place de la ponderation locale de 'ADD2', en notant que toutes les possibilites   */
                                        /* ne sont pas exploitees et ce afin de minimiser le nombre d'images Argument...             */
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_ADD2,__imageA_MUL2_ADD2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MUL2,__imageA_MUL2_MUL2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MAX2,__imageA_MUL2_MAX2__);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MINMAX,imageA_MUL2_MINMAX);
          MISE_EN_PLACE_DE_LA_PONDERATION(FfxMUL2_____ponderation_de_MAXMIN,imageA_MUL2_MAXMIN);
                                        /* Mise en place de la ponderation locale de 'MUL2', en notant que toutes les possibilites   */
                                        /* ne sont pas exploitees et ce afin de minimiser le nombre d'images Argument...             */

          USs_GooF(BLOC(
                        Bblock
                        EGAL(combinaison_hornerienne
                            ,HORNER_2_02(Xf,Yf
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A22
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A21
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A20
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A12
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A11
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A10
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A02
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A01
                                        ,IFcombinaison_hornerienne_var2_degre2_avl_____coefficient_A00
                                         )
                             );
                                        /* Calcul du polynome courant :                                                              */
                                        /*                                                                                           */
                                        /*                             i=2    j=2                                                    */
                                        /*                            _____  _____                                                   */
                                        /*                           \      \           j  i                                         */
                                        /*                  P(X,Y) =  \      \     A  .X .Y                                          */
                                        /*                            /      /      ij                                               */
                                        /*                           /_____ /_____                                                   */
                                        /*                             i=0    j=0                                                    */
                                        /*                                                                                           */
                                        /* en notant bien que :                                                                      */
                                        /*                                                                                           */
                                        /*                  i --0--> Y                                                               */
                                        /*                  j --0--> X                                                               */
                                        /*                                                                                           */
                                        /* dans 'A(i,j)' et non pas l'inverse (qui pourrait paraitre plus logique...).               */
                                        /*                                                                                           */
                                        /* On notera que l'arithmetique est redefinissable uniquement pour 'ADD2' et 'MUL2'          */
                                        /* puisqu'en effet ce sont les seuls operateurs qui sont utilises dans 'HORNER_2_02(...)'.   */
                        Eblock
                        )
                   );

          storeF_point_valide(combinaison_hornerienne
                             ,imageR
                             ,X,Y
                              );
                                        /* Et rangement du resultat...                                                               */
          Eblock
     end_image

     ESaveVariable(Float,FfxMUL2_____ponderation_de_MAXMIN);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_MINMAX);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_MAX2);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_MUL2);
     ESaveVariable(Float,FfxMUL2_____ponderation_de_ADD2);
                                        /* Restaurations de la definition de 'MUL2'...                                               */
     ESaveVariable(Float,FfxADD2_____ponderation_de_MAXMIN);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MINMAX);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MAX2);
     ESaveVariable(Float,FfxADD2_____ponderation_de_MUL2);
     ESaveVariable(Float,FfxADD2_____ponderation_de_ADD2);
                                        /* Restaurations de la definition de 'ADD2'...                                               */

     RETIF(imageR);
     Eblock

#undef    MISE_EN_PLACE_DE_LA_PONDERATION

#undef    __imageA_MUL2_MAXMIN
#undef    __imageA_MUL2_MINMAX
#undef    __imageA_MUL2_MAX2__
#undef    __imageA_MUL2_MUL2__
#undef    __imageA_MUL2_ADD2__

#undef    __imageA_ADD2_MAXMIN
#undef    __imageA_ADD2_MINMAX
#undef    __imageA_ADD2_MAX2__
#undef    __imageA_ADD2_MUL2__
#undef    __imageA_ADD2_ADD2__

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   " H O R N E R I E N N E "   D E   T R O I S   I M A G E S   F L O T T A N T E S                    */
/*        ( " A   T R O I S   V A R I A B L E S " )   D U   P R E M I E R   D E G R E                                                */
/*        A   C O E F F I C I E N T S   V A R I A B L E S   L O C A L E M E N T  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(FonctionF,POINTERF(IFcombinaison_hornerienne_var3_degre1_cvl(imageR
                                                                             ,imageX,imageY,imageZ
                                                                             ,imageA111,imageA110,imageA101,imageA100
                                                                             ,imageA011,imageA010,imageA001,imageA000
                                                                              )
                                    )
                 )
     )
                                        /* Fonction introduite le 20080324102759.                                                    */
                                        /*                                                                                           */
                                        /* Le 20080709144543, le nom 'IFcombinaison_hornerienne_var3_degre1(...)' fut change en      */
                                        /* 'IFcombinaison_hornerienne_var3_degre1_cvl(...)' pour des raisons d'homogeneite...        */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat de la combinaison de {imageX,imageY,imageZ} par le polynome                */
                                        /* {imageA(i,j,k)}.                                                                          */
DEFV(Argument,DEFV(imageF,imageX));
DEFV(Argument,DEFV(imageF,imageY));
DEFV(Argument,DEFV(imageF,imageZ));
                                        /* Images Arguments definissant {X,Y,Z}.                                                     */
DEFV(Argument,DEFV(imageF,imageA111));
DEFV(Argument,DEFV(imageF,imageA110));
DEFV(Argument,DEFV(imageF,imageA101));
DEFV(Argument,DEFV(imageF,imageA100));
DEFV(Argument,DEFV(imageF,imageA011));
DEFV(Argument,DEFV(imageF,imageA010));
DEFV(Argument,DEFV(imageF,imageA001));
DEFV(Argument,DEFV(imageF,imageA000));
                                        /* Images Arguments definissant le polynome {imageA(i,j,k)}.                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(genere_Float,INIT(Xf,loadF_point(imageX,X,Y)));
          DEFV(genere_Float,INIT(Yf,loadF_point(imageY,X,Y)));
          DEFV(genere_Float,INIT(Zf,loadF_point(imageZ,X,Y)));
                                        /* Definition du {X,Y,Z} courant.                                                            */
          DEFV(genere_Float,INIT(A111,loadF_point(imageA111,X,Y)));
          DEFV(genere_Float,INIT(A110,loadF_point(imageA110,X,Y)));
          DEFV(genere_Float,INIT(A101,loadF_point(imageA101,X,Y)));
          DEFV(genere_Float,INIT(A100,loadF_point(imageA100,X,Y)));
          DEFV(genere_Float,INIT(A011,loadF_point(imageA011,X,Y)));
          DEFV(genere_Float,INIT(A010,loadF_point(imageA010,X,Y)));
          DEFV(genere_Float,INIT(A001,loadF_point(imageA001,X,Y)));
          DEFV(genere_Float,INIT(A000,loadF_point(imageA000,X,Y)));
                                        /* Definition du polynome courant {A(i,j,k)}.                                                */

          DEFV(genere_Float,INIT(combinaison_hornerienne,FLOT__UNDEF));
                                        /* Valeur resultante...                                                                      */

          USs_GooF(BLOC(
                        Bblock
                        EGAL(combinaison_hornerienne
                            ,HORNER_3_01(Xf,Yf,Zf
                                        ,A111,A110,A101,A100
                                        ,A011,A010,A001,A000
                                         )
                             );
                                        /* Calcul du polynome courant :                                                              */
                                        /*                                                                                           */
                                        /*                               i=1    j=1    k=1                                           */
                                        /*                              _____  _____  _____                                          */
                                        /*                             \      \      \            k  j  i                            */
                                        /*                  P(X,Y,Z) =  \      \      \     A   .X .Y .Z                             */
                                        /*                              /      /      /      ijk                                     */
                                        /*                             /_____ /_____ /_____                                          */
                                        /*                               i=0    j=0    k=0                                           */
                                        /*                                                                                           */
                                        /* en notant bien que :                                                                      */
                                        /*                                                                                           */
                                        /*                  i --0--> Z                                                               */
                                        /*                  j --0--> Y                                                               */
                                        /*                  k --0--> X                                                               */
                                        /*                                                                                           */
                                        /* dans 'A(i,j,k)' et non pas l'inverse (qui pourrait paraitre plus logique...).             */
                        Eblock
                        )
                   );

          storeF_point_valide(combinaison_hornerienne
                             ,imageR
                             ,X,Y
                              );
                                        /* Et rangement du resultat...                                                               */
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   " H O R N E R I E N N E "   D E   Q U A T R E   I M A G E S   F L O T T A N T E S                  */
/*        ( " A   Q U A T R E   V A R I A B L E S " )   D U   P R E M I E R   D E G R E                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionF

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1111,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1110,FZERO)));

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1101,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1100,FZERO)));

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1011,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1010,FZERO)));

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1001,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_1000,FU)));

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0111,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0110,FZERO)));

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0101,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0100,FU)));

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0011,FZERO)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0010,FU)));

DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0001,FU)));
DEFV(Common,DEFV(Float,SINT(IFcombinaison_hornerienne_var4_degre1_____coefficient_0000,FZERO)));

                                        /* Definition du polynome...                                                                 */

DEFV(Common,DEFV(FonctionF,POINTERF(IFcombinaison_hornerienne_var4_degre1(imageR,imageA1,imageA2,imageA3,imageA4))))
                                        /* Fonction introduite le 20071101094825...                                                  */
                                        /*                                                                                           */
                                        /* Le 20080709142600, elle fut rebaptisee 'IFcombinaison_hornerienne_var4_degre1(...)' et    */
                                        /* deplacee de 'v $xiii/pent_image$FON IFpolynome_4_01' a ici pour des raisons de logique    */
                                        /* evidentes...                                                                              */
DEFV(Argument,DEFV(imageF,imageR));
                                        /* Image Resultat, telle que : imageR=HORNER_4_01(imageA1,imageA2,imageA3,imageA4).          */
DEFV(Argument,DEFV(imageF,imageA1));
                                        /* Premiere image Argument,                                                                  */
DEFV(Argument,DEFV(imageF,imageA2));
                                        /* Seconde image Argument,                                                                   */
DEFV(Argument,DEFV(imageF,imageA3));
                                        /* Troisieme image Argument,                                                                 */
DEFV(Argument,DEFV(imageF,imageA4));
                                        /* Quatrieme image Argument.                                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     begin_image
          Bblock
          DEFV(genere_Float,INIT(niveau_imageA1,loadF_point(imageA1,X,Y)));
          DEFV(genere_Float,INIT(niveau_imageA2,loadF_point(imageA2,X,Y)));
          DEFV(genere_Float,INIT(niveau_imageA3,loadF_point(imageA3,X,Y)));
          DEFV(genere_Float,INIT(niveau_imageA4,loadF_point(imageA4,X,Y)));
                                        /* Niveaux Arguments.                                                                        */

          DEFV(genere_Float,INIT(combinaison_hornerienne,FLOT__UNDEF));
                                        /* Valeur resultante...                                                                      */

          USs_GooF(BLOC(
                        Bblock
                        EGAL(combinaison_hornerienne
                            ,HORNER_4_01(niveau_imageA1,niveau_imageA2,niveau_imageA3,niveau_imageA4

                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1111
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1110
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1101
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1100
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1011
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1010
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1001
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_1000
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0111
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0110
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0101
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0100
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0011
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0010
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0001
                                        ,IFcombinaison_hornerienne_var4_degre1_____coefficient_0000
                                         )
                             );
                        Eblock
                        )
                   );

          storeF_point(combinaison_hornerienne
                      ,imageR
                      ,X,Y
                       );
          Eblock
     end_image

     RETIF(imageR);
     Eblock

EFonctionF

_______________________________________________________________________________________________________________________________________



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.