/*************************************************************************************************************************************/ /* */ /* M U L T I P L I C A T I O N H Y P E R - C O M P L E X E D E D E U X E N S E M B L E S D E F I C H I E R S : */ /* */ /* */ /* Author of '$xrv/MUL2.HC.11$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20060619122205). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_BASE /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* V A L E U R S I M P L I C I T E S D E S P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define C_EST_UNE_OPERATION_MULTIPLICATIVE \ VRAI #define C_EST_UNE_OPERATION_DIRECTE \ VRAI /* Indicateurs introduits le 20060627091021 afin de permettre en fait les quatre */ /* operations {{+,-},{*,/}}, la multiplication etant l'operation par defaut... */ #define PONDERATION_R_IMPLICITE \ FZERO #define PONDERATION_I_IMPLICITE \ FZERO #define PONDERATION_J_IMPLICITE \ FZERO #define PONDERATION_K_IMPLICITE \ FZERO /* Ponderation de selection des composantes des resultats apres le produit. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N D E S F I C H I E R S : */ /* */ /*************************************************************************************************************************************/ #include xrv/ARITHMET.1d.I" /* Passage a l'allocation dynamique le 20060214182410... */ #include xrv/ARITHMET.21.I" #include xrv/champs_5.41.I" #define PARTIE_R_1_IMPLICITE \ FZERO #define PARTIE_I_1_IMPLICITE \ FZERO #define PARTIE_J_1_IMPLICITE \ FZERO #define PARTIE_K_1_IMPLICITE \ FZERO gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_R_1,liste_initiale_des_PARTIE_R_1); gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_I_1,liste_initiale_des_PARTIE_I_1); gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_J_1,liste_initiale_des_PARTIE_J_1); gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_K_1,liste_initiale_des_PARTIE_K_1); /* Definition en memoire des fichiers {R,I,J,K} numero 1. */ #define ELEMENT_DU_FICHIER_LISTE_PARTIE_R_1(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_R_1,index) #define ELEMENT_DU_FICHIER_LISTE_PARTIE_I_1(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_I_1,index) #define ELEMENT_DU_FICHIER_LISTE_PARTIE_J_1(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_J_1,index) #define ELEMENT_DU_FICHIER_LISTE_PARTIE_K_1(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_K_1,index) /* Acces a un element courant des fichiers {R,I,J,K} numero 1. */ #define PARTIE_R_2_IMPLICITE \ FZERO #define PARTIE_I_2_IMPLICITE \ FZERO #define PARTIE_J_2_IMPLICITE \ FZERO #define PARTIE_K_2_IMPLICITE \ FZERO gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_R_2,liste_initiale_des_PARTIE_R_2); gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_I_2,liste_initiale_des_PARTIE_I_2); gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_J_2,liste_initiale_des_PARTIE_J_2); gGENERATION_D_UN_FICHIER(fichier_LISTE_PARTIE_K_2,liste_initiale_des_PARTIE_K_2); /* Definition en memoire des fichiers {R,I,J,K} numero 2. */ #define ELEMENT_DU_FICHIER_LISTE_PARTIE_R_2(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_R_2,index) #define ELEMENT_DU_FICHIER_LISTE_PARTIE_I_2(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_I_2,index) #define ELEMENT_DU_FICHIER_LISTE_PARTIE_J_2(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_J_2,index) #define ELEMENT_DU_FICHIER_LISTE_PARTIE_K_2(index) \ gELEMENT_DU_FICHIER(liste_initiale_des_PARTIE_K_2,index) /* Acces a un element courant des fichiers {R,I,J,K} numero 2. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M U L T I P L I C A T I O N H Y P E R - C O M P L E X E D E D E U X E N S E M B L E S D E F I C H I E R S : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xrv/ARITHMET.22.I" #include xci/valeurs.03.I" DEFV(Logical,INIT(c_est_une_operation_multiplicative,C_EST_UNE_OPERATION_MULTIPLICATIVE)); DEFV(Logical,INIT(c_est_une_operation_directe,C_EST_UNE_OPERATION_DIRECTE)); /* Indicateurs introduits le 20060627091021 afin de permettre en fait les quatre */ /* operations {{+,-},{*,/}}, la multiplication etant l'operation par defaut... */ DEFV(Float,INIT(ponderation_R,PONDERATION_R_IMPLICITE)); DEFV(Float,INIT(ponderation_I,PONDERATION_I_IMPLICITE)); DEFV(Float,INIT(ponderation_J,PONDERATION_J_IMPLICITE)); DEFV(Float,INIT(ponderation_K,PONDERATION_K_IMPLICITE)); /* Ponderation de selection des composantes des resultats apres le produit. */ /*..............................................................................................................................*/ #include xrv/champs_5.1A.I" /* Ceci fut introduit le 20070103172314... */ GET_ARGUMENTS_(nombre_d_arguments ,BLOC(PROCESS_ARGUMENT_I("nombre_elements=""ne=",nombre_d_elements ,BLOC(VIDE;) ,BLOC(Bblock PRINT_AVERTISSEMENT("'ne=' doit etre defini avant toute entree de fichiers"); Eblock ) ); PROCESS_ARGUMENTS_DE_DEFINITION_DES_FICHIERS_01; PROKESF_ARGUMENT_FICHIER("LISTE_R_1=" ,fichier_LISTE_PARTIE_R_1 ,liste_initiale_des_PARTIE_R_1 ,PARTIE_R_1_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_I_1=" ,fichier_LISTE_PARTIE_I_1 ,liste_initiale_des_PARTIE_I_1 ,PARTIE_I_1_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_J_1=" ,fichier_LISTE_PARTIE_J_1 ,liste_initiale_des_PARTIE_J_1 ,PARTIE_J_1_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_K_1=" ,fichier_LISTE_PARTIE_K_1 ,liste_initiale_des_PARTIE_K_1 ,PARTIE_K_1_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_R_2=" ,fichier_LISTE_PARTIE_R_2 ,liste_initiale_des_PARTIE_R_2 ,PARTIE_R_2_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_I_2=" ,fichier_LISTE_PARTIE_I_2 ,liste_initiale_des_PARTIE_I_2 ,PARTIE_I_2_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_J_2=" ,fichier_LISTE_PARTIE_J_2 ,liste_initiale_des_PARTIE_J_2 ,PARTIE_J_2_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); PROKESF_ARGUMENT_FICHIER("LISTE_K_2=" ,fichier_LISTE_PARTIE_K_2 ,liste_initiale_des_PARTIE_K_2 ,PARTIE_K_2_IMPLICITE ,lTRANSFORMAT_0d ,iGENERATION_D_UN_FICHIER ); GET_ARGUMENT_L("multiplicatif=",c_est_une_operation_multiplicative); GET_ARGUMENT_N("additif=",c_est_une_operation_multiplicative); GET_ARGUMENT_L("direct=",c_est_une_operation_directe); GET_ARGUMENT_N("inverse=",c_est_une_operation_directe); /* Introduit le 20060627091021... */ GET_ARGUMENT_F("pr=""pR=""Pond1=",ponderation_R); GET_ARGUMENT_F("pi=""pI=""Pond2=",ponderation_I); GET_ARGUMENT_F("pj=""pJ=""Pond3=",ponderation_J); GET_ARGUMENT_F("pk=""pK=""Pondr=",ponderation_K); PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_3; /* Cette procedure fut introduite le 20070103172314... */ PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; /* Cette procedure fut introduite le 20061226193741... */ PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_5; /* Cette procedure fut introduite le 20211005104601... */ ) ); gOPERATION_SUR_LES_FICHIERS(BLOC( DEFV(hyper_complexe,quaternion_A1); DEFV(hyper_complexe,quaternion_A2); DEFV(hyper_complexe,quaternion_R); /* Definition des nombres quaternions Arguments et Resultat. */ HCinitialisation(quaternion_A1 ,ELEMENT_DU_FICHIER_LISTE_PARTIE_R_1(index) ,ELEMENT_DU_FICHIER_LISTE_PARTIE_I_1(index) ,ELEMENT_DU_FICHIER_LISTE_PARTIE_J_1(index) ,ELEMENT_DU_FICHIER_LISTE_PARTIE_K_1(index) ); HCinitialisation(quaternion_A2 ,ELEMENT_DU_FICHIER_LISTE_PARTIE_R_2(index) ,ELEMENT_DU_FICHIER_LISTE_PARTIE_I_2(index) ,ELEMENT_DU_FICHIER_LISTE_PARTIE_J_2(index) ,ELEMENT_DU_FICHIER_LISTE_PARTIE_K_2(index) ); /* Recuperation des deux nombres quaternions Arguments. */ Test(EST_VRAI(c_est_une_operation_multiplicative)) Bblock Test(EST_VRAI(c_est_une_operation_directe)) Bblock HCproduit(quaternion_R,quaternion_A1,quaternion_A2); /* Calcul du produit des deux nombres quaternions Argument... */ Eblock ATes Bblock HCquotient(quaternion_R,quaternion_A1,quaternion_A2); /* Calcul du quotient des deux nombres quaternions Argument... */ Eblock ETes Eblock ATes Bblock Test(EST_VRAI(c_est_une_operation_directe)) Bblock HCsomme(quaternion_R,quaternion_A1,quaternion_A2); /* Calcul de la somme des deux nombres quaternions Argument... */ Eblock ATes Bblock HCdifference(quaternion_R,quaternion_A1,quaternion_A2); /* Calcul de la difference des deux nombres quaternions Argument... */ Eblock ETes Eblock ETes ) ,LIZ4(ponderation_R,HReelle(quaternion_R) ,ponderation_I,HImaginaire(quaternion_R) ,ponderation_J,HJmaginaire(quaternion_R) ,ponderation_K,HKmaginaire(quaternion_R) ) ,EDITER_LA_VALEUR_RESULTANTE_DANS_gOPERATION_SUR_LES_FICHIERS ,nombre_d_exemplaires_du_resultat_de_l_operation_sur_les_valeurs_courantes ); /* Produit hyper-complexe... */ lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_K_2,PARTIE_K_2_IMPLICITE); lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_J_2,PARTIE_J_2_IMPLICITE); lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_I_2,PARTIE_I_2_IMPLICITE); lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_R_2,PARTIE_R_2_IMPLICITE); lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_K_1,PARTIE_K_1_IMPLICITE); lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_J_1,PARTIE_J_1_IMPLICITE); lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_I_1,PARTIE_I_1_IMPLICITE); lGENERATION_D_UN_FICHIER(liste_initiale_des_PARTIE_R_1,PARTIE_R_1_IMPLICITE); RETU_Commande; Eblock ECommande