/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N V E R S I O N S   G E N E R A L E S   D E   C O O R D O N N E E S   C A R T E S I E N N E S                          */
/*        E N   C O O R D O N N E E S   S P H E R I Q U E S   E T   I N V E R S E M E N T  :                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xcg/ConversionCartesiennesSpheriques.01$K' :                                                                   */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20220612103847).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   PRAGMA_CL_____PAS_DE_LIBRAIRIES_DYNAMIQUES

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_MINI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   LES_COORDONNEES_SONT_CARTESIENNES                                                                                             \
                    VRAI                                                                                                                \
                                        /* Choix entre les coordonnees cartesiennes et spheriques...                                 */

#define   NOMBRES_COMPLEXES                                                                                                             \
                    VRAI
#define   NOMBRES_HYPER_COMPLEXES                                                                                                       \
                    VRAI
#define   NOMBRES_HYPER_HYPER_COMPLEXES                                                                                                 \
                    VRAI
                                        /* Choix {C,HC,HHC}...                                                                       */

#define   COORDONNEES_X1                                                                                                                \
                    FZERO
#define   COORDONNEES_X2                                                                                                                \
                    FZERO
#define   COORDONNEES_X3                                                                                                                \
                    FZERO
#define   COORDONNEES_X4                                                                                                                \
                    FZERO
#define   COORDONNEES_X5                                                                                                                \
                    FZERO
#define   COORDONNEES_X6                                                                                                                \
                    FZERO
#define   COORDONNEES_X7                                                                                                                \
                    FZERO
#define   COORDONNEES_X8                                                                                                                \
                    FZERO
                                        /* Coordonnees cartesiennes a 2, 4 et 8 dimensions.                                          */

#define   COORDONNEES_R_                                                                                                                \
                    FZERO
#define   COORDONNEES_A1                                                                                                                \
                    FZERO
#define   COORDONNEES_A2                                                                                                                \
                    FZERO
#define   COORDONNEES_A3                                                                                                                \
                    FZERO
#define   COORDONNEES_A4                                                                                                                \
                    FZERO
#define   COORDONNEES_A5                                                                                                                \
                    FZERO
#define   COORDONNEES_A6                                                                                                                \
                    FZERO
#define   COORDONNEES_A7                                                                                                                \
                    FZERO
                                        /* Coordonnees spheriques a 2, 4 et 8 dimensions.                                            */

#include  xcg/ARIT.01.I"
#include  xci/valeurs.01.I"

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  xci/valeurs.02.I"

#define   EDITION_2_2_VALEURS(v11,v12,v21,v22)                                                                                          \
                    Bblock                                                                                                              \
                    CAL2(Prin2("{%+.^^^,%+.^^^}"                                                                                        \
                              ,v11,v12                                                                                                  \
                               )                                                                                                        \
                         );                                                                                                             \
                    CAL2(Prin0(" --> "));                                                                                               \
                    CAL2(Prin2("{%+.^^^,%+.^^^}"                                                                                        \
                              ,v21,v22                                                                                                  \
                               )                                                                                                        \
                         );                                                                                                             \
                    CAL2(Prin0("\n"));                                                                                                  \
                    Eblock

#define   EDITION_4_4_VALEURS(v11,v12,v13,v14,v21,v22,v23,v24)                                                                          \
                    Bblock                                                                                                              \
                    CAL2(Prin4("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                                                          \
                              ,v11,v12,v13,v14                                                                                          \
                               )                                                                                                        \
                         );                                                                                                             \
                    CAL2(Prin0(" --> "));                                                                                               \
                    CAL2(Prin4("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                                                          \
                              ,v21,v22,v23,v24                                                                                          \
                               )                                                                                                        \
                         );                                                                                                             \
                    CAL2(Prin0("\n"));                                                                                                  \
                    Eblock

#define   EDITION_8_8_VALEURS(v11,v12,v13,v14,v15,v16,v17,v18,v21,v22,v23,v24,v25,v26,v27,v28)                                          \
                    Bblock                                                                                                              \
                    CAL2(Prin8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                              \
                              ,v11,v12,v13,v14,v15,v16,v17,v18                                                                          \
                               )                                                                                                        \
                         );                                                                                                             \
                    CAL2(Prin0(" --> "));                                                                                               \
                    CAL2(Prin8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                              \
                              ,v21,v22,v23,v24,v25,v26,v27,v28                                                                          \
                               )                                                                                                        \
                         );                                                                                                             \
                    CAL2(Prin0("\n"));                                                                                                  \
                    Eblock
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N V E R S I O N S   G E N E R A L E S   D E   C O O R D O N N E E S   C A R T E S I E N N E S                          */
/*        E N   C O O R D O N N E E S   S P H E R I Q U E S   E T   I N V E R S E M E N T  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Logical,INIT(les_coordonnees_sont_cartesiennes,LES_COORDONNEES_SONT_CARTESIENNES));
                                        /* Choix entre les coordonnees cartesiennes et spheriques...                                 */

     DEFV(Logical,INIT(nombres_complexes,NOMBRES_COMPLEXES));
     DEFV(Logical,INIT(nombres_hyper_complexes,NOMBRES_HYPER_COMPLEXES));
     DEFV(Logical,INIT(nombres_hyper_hyper_complexes,NOMBRES_HYPER_HYPER_COMPLEXES));
                                        /* Choix {C,HC,HHC}...                                                                       */

     DEFV(Float,INIT(coordonnees_X1,COORDONNEES_X1));
     DEFV(Float,INIT(coordonnees_X2,COORDONNEES_X2));
     DEFV(Float,INIT(coordonnees_X3,COORDONNEES_X3));
     DEFV(Float,INIT(coordonnees_X4,COORDONNEES_X4));
     DEFV(Float,INIT(coordonnees_X5,COORDONNEES_X5));
     DEFV(Float,INIT(coordonnees_X6,COORDONNEES_X6));
     DEFV(Float,INIT(coordonnees_X7,COORDONNEES_X7));
     DEFV(Float,INIT(coordonnees_X8,COORDONNEES_X8));
                                        /* Coordonnees cartesiennes a 2, 4 et 8 dimensions.                                          */
     DEFV(Float,INIT(coordonnees_R_,COORDONNEES_R_));
     DEFV(Float,INIT(coordonnees_A1,COORDONNEES_A1));
     DEFV(Float,INIT(coordonnees_A2,COORDONNEES_A2));
     DEFV(Float,INIT(coordonnees_A3,COORDONNEES_A3));
     DEFV(Float,INIT(coordonnees_A4,COORDONNEES_A4));
     DEFV(Float,INIT(coordonnees_A5,COORDONNEES_A5));
     DEFV(Float,INIT(coordonnees_A6,COORDONNEES_A6));
     DEFV(Float,INIT(coordonnees_A7,COORDONNEES_A7));
                                        /* Coordonnees spheriques a 2, 4 et 8 dimensions.                                            */

     DEFV(complexe,z);
     DEFV(complexe_etendu,z_etendu);

     DEFV(hyper_complexe,q);
     DEFV(hyper_complexe_etendu,q_etendu);

     DEFV(hyper_hyper_complexe,o);
     DEFV(hyper_hyper_complexe_etendu,o_etendu);
#include  xci/valeurs.03.I"
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(
                         GET_ARGUMENT_L("coordonnees_cartesiennes=""cc=",les_coordonnees_sont_cartesiennes);
                         GET_ARGUMENT_N("coordonnees_spheriques=""cs=",les_coordonnees_sont_cartesiennes);

                         GET_ARGUMENT_L("nombres_complexes=""C=",nombres_complexes);
                         GET_ARGUMENT_L("nombres_hyper_complexes=""HC=",nombres_hyper_complexes);
                         GET_ARGUMENT_L("nombres_hyper_hyper_complexes=""HHC=",nombres_hyper_hyper_complexes);

                         GET_ARGUMENT_F("X1=""x1=",coordonnees_X1);
                         GET_ARGUMENT_F("X2=""x2=",coordonnees_X2);
                         GET_ARGUMENT_F("X3=""x3=",coordonnees_X3);
                         GET_ARGUMENT_F("X4=""x4=",coordonnees_X4);
                         GET_ARGUMENT_F("X5=""x5=",coordonnees_X5);
                         GET_ARGUMENT_F("X6=""x6=",coordonnees_X6);
                         GET_ARGUMENT_F("X7=""x7=",coordonnees_X7);
                         GET_ARGUMENT_F("X8=""x8=",coordonnees_X8);

                         GET_ARGUMENT_F("R=""r=",coordonnees_R_);
                         GET_ARGUMENT_F("A1=""a1=",coordonnees_A1);
                         GET_ARGUMENT_F("A2=""a2=",coordonnees_A2);
                         GET_ARGUMENT_F("A3=""a3=",coordonnees_A3);
                         GET_ARGUMENT_F("A4=""a4=",coordonnees_A4);
                         GET_ARGUMENT_F("A5=""a5=",coordonnees_A5);
                         GET_ARGUMENT_F("A6=""a6=",coordonnees_A6);
                         GET_ARGUMENT_F("A7=""a7=",coordonnees_A7);

                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1;
                         PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_2;
                                        /* Ces deux procedures furent introduites le 20061226182515...                               */
                         )
                    );

     Test(EST_VRAI(les_coordonnees_sont_cartesiennes))
          Bblock
          CAL2(Prin0("Conversion Cartesienne --> Spherique\n"));

          Test(IL_FAUT(nombres_complexes))
               Bblock
               Cinitialisation(z
                              ,coordonnees_X1
                              ,coordonnees_X2
                               );
               Cextension_directe(z_etendu,z);

               EDITION_2_2_VALEURS(Reelle(z)
                                  ,Imaginaire(z)
                                  ,CP_Rho(z_etendu)
                                  ,CP_Theta(z_etendu)
                                   );
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          Test(IL_FAUT(nombres_hyper_complexes))
               Bblock
               HCinitialisation(q
                               ,coordonnees_X1
                               ,coordonnees_X2
                               ,coordonnees_X3
                               ,coordonnees_X4
                                );
               HCextension_directe(q_etendu,q);

               EDITION_4_4_VALEURS(HReelle(q)
                                  ,HImaginaire(q)
                                  ,HJmaginaire(q)
                                  ,HKmaginaire(q)
                                  ,HCHS_Rho(q_etendu)
                                  ,HCHS_Theta(q_etendu)
                                  ,HCHS_Phi(q_etendu)
                                  ,HCHS_Alpha(q_etendu)
                                   );
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          Test(IL_FAUT(nombres_hyper_hyper_complexes))
               Bblock
               HHCinitialisation(o
                                ,coordonnees_X1
                                ,coordonnees_X2
                                ,coordonnees_X3
                                ,coordonnees_X4
                                ,coordonnees_X5
                                ,coordonnees_X6
                                ,coordonnees_X7
                                ,coordonnees_X8
                                 );
               HHCextension_directe(o_etendu,o);

               EDITION_8_8_VALEURS(HHReelle(o)
                                  ,HHImaginaire(o)
                                  ,HHJmaginaire(o)
                                  ,HHKmaginaire(o)
                                  ,HHSmaginaire(o)
                                  ,HHTmaginaire(o)
                                  ,HHUmaginaire(o)
                                  ,HHVmaginaire(o)
                                  ,HHCHHS_Rho(o_etendu)
                                  ,HHCHHS_Angle1(o_etendu)
                                  ,HHCHHS_Angle2(o_etendu)
                                  ,HHCHHS_Angle3(o_etendu)
                                  ,HHCHHS_Angle4(o_etendu)
                                  ,HHCHHS_Angle5(o_etendu)
                                  ,HHCHHS_Angle6(o_etendu)
                                  ,HHCHHS_Angle7(o_etendu)
                                   );
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          CAL2(Prin0("Conversion Spherique --> Cartesienne\n"));

          Test(IL_FAUT(nombres_complexes))
               Bblock
               Cinitialisation_trigonometrique(z
                                              ,coordonnees_R_
                                              ,coordonnees_A1
                                               );

               EDITION_2_2_VALEURS(coordonnees_R_
                                  ,coordonnees_A1
                                  ,Reelle(z)
                                  ,Imaginaire(z)
                                   );
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          Test(IL_FAUT(nombres_hyper_complexes))
               Bblock
               HCinitialisation_trigonometrique(q
                                               ,coordonnees_R_
                                               ,coordonnees_A1
                                               ,coordonnees_A2
                                               ,coordonnees_A3
                                                );

               EDITION_4_4_VALEURS(coordonnees_R_
                                  ,coordonnees_A1
                                  ,coordonnees_A2
                                  ,coordonnees_A3
                                  ,HReelle(q)
                                  ,HImaginaire(q)
                                  ,HJmaginaire(q)
                                  ,HKmaginaire(q)
                                   );
               Eblock
          ATes
               Bblock
               Eblock
          ETes

          Test(IL_FAUT(nombres_hyper_hyper_complexes))
               Bblock
               HHCinitialisation_trigonometrique(o
                                                ,coordonnees_R_
                                                ,coordonnees_A1
                                                ,coordonnees_A2
                                                ,coordonnees_A3
                                                ,coordonnees_A4
                                                ,coordonnees_A5
                                                ,coordonnees_A6
                                                ,coordonnees_A7
                                                 );

               EDITION_8_8_VALEURS(coordonnees_R_
                                  ,coordonnees_A1
                                  ,coordonnees_A2
                                  ,coordonnees_A3
                                  ,coordonnees_A4
                                  ,coordonnees_A5
                                  ,coordonnees_A6
                                  ,coordonnees_A7
                                  ,HHReelle(o)
                                  ,HHImaginaire(o)
                                  ,HHJmaginaire(o)
                                  ,HHKmaginaire(o)
                                  ,HHSmaginaire(o)
                                  ,HHTmaginaire(o)
                                  ,HHUmaginaire(o)
                                  ,HHVmaginaire(o)
                                   );
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ETes

     RETU_Commande;
     Eblock
ECommande



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