/*************************************************************************************************************************************/
/* */
/* 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 F L O T T A N T E S : */
/* */
/* */
/* Author of '$xci/multC_02.01$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20060619141252). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
#define GENERER_LES_GET_ARGUMENTS_DE_CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS
/* Introduit le 20061018093953... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S : */
/* */
/*************************************************************************************************************************************/
#include INCLUDES_BASE
#include image_image_IMAGESF_EXT
#include image_image_PENT_IMAGE_EXT
#include image_image_GOOF_IMAGE_EXT
/* Introduit le 20061018093953... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define LES_IMAGESA_SONT_STANDARDS \
FAUX
#define LES_IMAGESR_SONT_STANDARDS \
FAUX
/* Pour permettre de traiter aussi bien des images standards que non. Ceci fut introduit le */
/* 20060625115015... */
#define MINIMUM_FORCE \
COORDONNEE_BARYCENTRIQUE_MINIMALE
#define MAXIMUM_FORCE \
COORDONNEE_BARYCENTRIQUE_MAXIMALE
/* Definition de la normalisation des images standards (introduit le 20060625115015...). */
#define UTILISER_L_ARITHMETIQUE_ETENDUE \
FAUX \
/* Faut-il utiliser l'arithmetique etendue ('VRAI') ou pas ('FAUX') ? Ceci fut introduit */ \
/* le 20061018093953, la valeur par defaut assurant la compatibilite anterieure... */
#define PONDERATION_R_IMPLICITE \
FZERO
#define PONDERATION_I_IMPLICITE \
FZERO
#define PONDERATION_M_IMPLICITE \
FZERO
#define PONDERATION_A_IMPLICITE \
FZERO
/* Ponderation de selection des composantes des resultats apres le produit. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 F L O T T A N T E S : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA_R_1),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA_I_1),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA_R_2),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA_I_2),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageP),NOM_PIPE));
DEFV(genere_Float,INIT(minimum_force,MINIMUM_FORCE));
DEFV(genere_Float,INIT(maximum_force,MAXIMUM_FORCE));
/* Definition de la normalisation des images standards (introduit le 20060625115015...). */
DEFV(Logical,INIT(utiliser_l_arithmetique_etendue,UTILISER_L_ARITHMETIQUE_ETENDUE));
/* Faut-il utiliser l'arithmetique etendue ('VRAI') ou pas ('FAUX') ? Ceci fut introduit */
/* le 20061018093953, la valeur par defaut assurant la compatibilite anterieure... */
DEFV(Float,INIT(ponderation_R,PONDERATION_R_IMPLICITE));
DEFV(Float,INIT(ponderation_I,PONDERATION_I_IMPLICITE));
DEFV(Float,INIT(ponderation_M,PONDERATION_M_IMPLICITE));
DEFV(Float,INIT(ponderation_A,PONDERATION_A_IMPLICITE));
/* Ponderation de selection des composantes des resultats apres le produit. */
/*..............................................................................................................................*/
EGAL(si_le_GooF_est_activable_utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base,VRAI);
/* A priori, l'utilisation de l'arithmetique etendue est forcee puisque l'option */
/* 'utiliser_l_arithmetique_etendue' peut etre activee et que cette derniere n'a */
/* evidemment d'interet qu'avec l'arithmetique etendue. Ce forcage a ete introduit */
/* le 20061018111605 parce que c'est evidemment le mode le plus interessant ici. */
EGAL(C_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base,VRAI);
/* A priori, l'utilisation de l'arithmetique etendue dans les complexes est forcee */
/* parce que c'est evidemment le mode le plus interessant ici (introduit le 20070130094701). */
EGAL(les_imagesA_sont_standards,LES_IMAGESA_SONT_STANDARDS);
EGAL(les_imagesR_sont_standards,LES_IMAGESR_SONT_STANDARDS);
/* Pour permettre de traiter aussi bien des images standards que non. Ceci fut introduit le */
/* 20060625115015... */
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA_R_1=""AR1=",nom_imageA_R_1);
GET_ARGUMENT_C("imageA_I_1=""AI1=",nom_imageA_I_1);
GET_ARGUMENT_C("imageA_R_2=""AR2=",nom_imageA_R_2);
GET_ARGUMENT_C("imageA_I_2=""AI2=",nom_imageA_I_2);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_L("standardA=",les_imagesA_sont_standards);
GET_ARGUMENT_L("standardR=",les_imagesR_sont_standards);
/* Introduit le 20060625115015... */
GET_ARGUMENT_F("minimum=""min=",minimum_force);
GET_ARGUMENT_F("maximum=""max=",maximum_force);
/* Introduit le 20060625115015... */
GET_ARGUMENT_L("arithmetique_etendue_produit=""ariep=",utiliser_l_arithmetique_etendue);
/* Introduit le 20061018093953... */
/* */
/* On notera que ces parametres conditionnent la fonction 'IFproduit_...(...)' qui sera */
/* appelee ci-apres, alors que les parametres 'v $xig/fonct$vv$DEF arithmetique_etendue=', */
/* eux conditionnent le choix entre l'arithmetique de base et l'arithmetique etendue a son */
/* niveau le plus basique (et dans le cas present a l'interieur meme de la fonction */
/* 'IFproduit_complexe_etendu(...)' si c'est elle qui a ete choisie...). */
GET_ARGUMENT_L("multiplicatif=",IFproduit_complexe_____multiplicatif);
GET_ARGUMENT_N("additif=",IFproduit_complexe_____multiplicatif);
GET_ARGUMENT_L("direct=",IFproduit_complexe_____direct);
GET_ARGUMENT_N("inverse=",IFproduit_complexe_____direct);
GET_ARGUMENT_F("pr=""pR=""Pond1=",ponderation_R);
GET_ARGUMENT_F("pi=""pI=""Pond2=",ponderation_I);
GET_ARGUMENT_F("pm=""pM=""Pond3=",ponderation_M);
GET_ARGUMENT_F("pa=""pA=""Pond4=",ponderation_A);
CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_COMPLEXES;
/* Cette extension a ete introduite le 20070130105257... */
)
);
CALi(gInettoyage(les_imagesR_sont_standards,ImageR,IFmageR));
/* Initialisation de l'image Resultat. */
Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_imagesA_sont_standards,ImageA1,IFmageA1,nom_imageA_R_1))))
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_imagesA_sont_standards,ImageA2,IFmageA2,nom_imageA_I_1))))
Bblock
/* Chargement des images {R,I} Argument 1. */
Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_imagesA_sont_standards,ImageA3,IFmageA3,nom_imageA_R_2))))
Bblock
Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_imagesA_sont_standards,ImageA4,IFmageA4,nom_imageA_I_2))))
Bblock
/* Chargement des images {R,I} Argument 2. */
Test(EST_VRAI(les_imagesA_sont_standards))
Bblock
CALS(Istd_float(IFmageA1,minimum_force,maximum_force,ImageA1));
CALS(Istd_float(IFmageA2,minimum_force,maximum_force,ImageA2));
CALS(Istd_float(IFmageA3,minimum_force,maximum_force,ImageA3));
CALS(Istd_float(IFmageA4,minimum_force,maximum_force,ImageA4));
/* Normalisation des images standards (introduit le 20060625115015...). */
Eblock
ATes
Bblock
Eblock
ETes
Test(IL_NE_FAUT_PAS(utiliser_l_arithmetique_etendue))
/* Test introduit le 20061018093953... */
Bblock
CALS(IFproduit_complexe(IFmageR
,ponderation_R,ponderation_I
,ponderation_M,ponderation_A
,IFmageA1,IFmageA2
,IFmageA3,IFmageA4
)
);
/* Et produit "complexe" des quatre images Argument. */
Eblock
ATes
Bblock
CALS(IFproduit_complexe_etendu(IFmageR
,ponderation_R,ponderation_I
,ponderation_M,ponderation_A
,IFmageA1,IFmageA2
,IFmageA3,IFmageA4
)
);
/* Et produit "complexe" generalise des quatre images Argument (introduit le */
/* 20061018093953). */
Eblock
ETes
Test(EST_VRAI(les_imagesR_sont_standards))
Bblock
CALS(Ifloat_std_avec_renormalisation(ImageR,IFmageR));
/* Denormalisation de l'image Resultat (introduit le 20060625115015...). */
Eblock
ATes
Bblock
Eblock
ETes
CALi(gIupdate_image(les_imagesR_sont_standards,nom_imageR,ImageR,IFmageR));
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
RETU_Commande;
Eblock
ECommande
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.