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