/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A B L E   D E   M U L T I P L I C A T I O N   D E S   O C T O N I O N S  :                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtKg/octonions$K' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1992??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

@define   PRAGMA_CL_____MODULE_NON_OPTIMISABLE

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   TEST(o1,o2)                                                                                                                   \
                    IFET(IFEQ(HHReelle(o1),HHReelle(o2))                                                                                \
                        ,IFET(IFEQ(HHImaginaire(o1),HHImaginaire(o2))                                                                   \
                             ,IFET(IFEQ(HHJmaginaire(o1),HHJmaginaire(o2))                                                              \
                                  ,IFET(IFEQ(HHKmaginaire(o1),HHKmaginaire(o2))                                                         \
                                       ,IFET(IFEQ(HHSmaginaire(o1),HHSmaginaire(o2))                                                    \
                                            ,IFET(IFEQ(HHTmaginaire(o1),HHTmaginaire(o2))                                               \
                                                 ,IFET(IFEQ(HHUmaginaire(o1),HHUmaginaire(o2))                                          \
                                                      ,IFET(IFEQ(HHVmaginaire(o1),HHVmaginaire(o2))                                     \
                                                           ,TOUJOURS_VRAI                                                               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  )                                                                                     \
                                             )                                                                                          \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
#define   ANTI_TEST(o1,o2)                                                                                                              \
                    IFET(IFEQ(HHReelle(o1),NEGA(HHReelle(o2)))                                                                          \
                        ,IFET(IFEQ(HHImaginaire(o1),NEGA(HHImaginaire(o2)))                                                             \
                             ,IFET(IFEQ(HHJmaginaire(o1),NEGA(HHJmaginaire(o2)))                                                        \
                                  ,IFET(IFEQ(HHKmaginaire(o1),NEGA(HHKmaginaire(o2)))                                                   \
                                       ,IFET(IFEQ(HHSmaginaire(o1),NEGA(HHSmaginaire(o2)))                                              \
                                            ,IFET(IFEQ(HHTmaginaire(o1),NEGA(HHTmaginaire(o2)))                                         \
                                                 ,IFET(IFEQ(HHUmaginaire(o1),NEGA(HHUmaginaire(o2)))                                    \
                                                      ,IFET(IFEQ(HHVmaginaire(o1),NEGA(HHVmaginaire(o2)))                               \
                                                           ,TOUJOURS_VRAI                                                               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  )                                                                                     \
                                             )                                                                                          \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )
#define   TEST_BASE(o,o1)                                                                                                               \
                    Bblock                                                                                                              \
                    Test(TEST(o,base`o1))                                                                                               \
                         Bblock                                                                                                         \
                         CAL2(Prin0("+o1"));                                                                                            \
                                        /* Le 20050316121810, le signe "+" a ete ajoute (par symetrie avec le signe "-"...).         */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Test(ANTI_TEST(o,base`o1))                                                                                          \
                         Bblock                                                                                                         \
                         CAL2(Prin0("-o1"));                                                                                            \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Eblock
#define   PRODUIT(o1,o2)                                                                                                                \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o);                                                                                       \
                                        /* Produit : o = o1.o2.                                                                      */ \
                    HHCinitialisation(o,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO);                                               \
                                        /* Par pure hygiene...                                                                       */ \
                    aHHCproduit(o,base`o1,base`o2);                                                                                     \
                                        /* Calcul du produit...                                                                      */ \
                                        /*                                                                                           */ \
                                        /* Le 20111220094553 je suis passe de 'HHCproduit(...)' a 'aHHCproduit(...)' a cause         */ \
                                        /* de '$LACT18' sur laquelle il y a eu a cette date les messages :                           */ \
                                        /*                                                                                           */ \
                                        /*                  internal compiler error: in add_stack_var_conflict, at cfgexpand.c:264   */ \
                                        /*                                                                                           */ \
                                        /* qui vient surement de la complexite du code '$c' genere...                                */ \
                    CAL2(Prin0("o1.o2 = "));                                                                                            \
                    TEST_BASE(o,1);                                                                                                     \
                    TEST_BASE(o,i);                                                                                                     \
                    TEST_BASE(o,j);                                                                                                     \
                    TEST_BASE(o,k);                                                                                                     \
                    TEST_BASE(o,s);                                                                                                     \
                    TEST_BASE(o,t);                                                                                                     \
                    TEST_BASE(o,u);                                                                                                     \
                    TEST_BASE(o,v);                                                                                                     \
                    CAL2(Prin0("\n"));                                                                                                  \
                                        /* Edition d'une entree de la table de multiplication...                                     */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A B L E   D E   M U L T I P L I C A T I O N   D E S   O C T O N I O N S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(hyper_hyper_complexe,base_1);
     DEFV(hyper_hyper_complexe,base_i);
     DEFV(hyper_hyper_complexe,base_j);
     DEFV(hyper_hyper_complexe,base_k);
     DEFV(hyper_hyper_complexe,base_s);
     DEFV(hyper_hyper_complexe,base_t);
     DEFV(hyper_hyper_complexe,base_u);
     DEFV(hyper_hyper_complexe,base_v);
                                        /* Definition de la base (1,i,j,k,s,t,u,v).                                                  */
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(VIDE;)
                    );

     HHCinitialisation(base_1,FU___,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO);
     HHCinitialisation(base_i,FZERO,FU___,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO);
     HHCinitialisation(base_j,FZERO,FZERO,FU___,FZERO,FZERO,FZERO,FZERO,FZERO);
     HHCinitialisation(base_k,FZERO,FZERO,FZERO,FU___,FZERO,FZERO,FZERO,FZERO);
     HHCinitialisation(base_s,FZERO,FZERO,FZERO,FZERO,FU___,FZERO,FZERO,FZERO);
     HHCinitialisation(base_t,FZERO,FZERO,FZERO,FZERO,FZERO,FU___,FZERO,FZERO);
     HHCinitialisation(base_u,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO,FU___,FZERO);
     HHCinitialisation(base_v,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO,FZERO,FU___);
                                        /* Initialisation de la base (1,i,j,k,s,t,u,v).                                              */

     PRODUIT(1,1);
     PRODUIT(1,i);
     PRODUIT(1,j);
     PRODUIT(1,k);
     PRODUIT(1,s);
     PRODUIT(1,t);
     PRODUIT(1,u);
     PRODUIT(1,v);

     CAL2(Prin0("\n"));

     PRODUIT(i,1);
     PRODUIT(i,i);
     PRODUIT(i,j);
     PRODUIT(i,k);
     PRODUIT(i,s);
     PRODUIT(i,t);
     PRODUIT(i,u);
     PRODUIT(i,v);

     CAL2(Prin0("\n"));

     PRODUIT(j,1);
     PRODUIT(j,i);
     PRODUIT(j,j);
     PRODUIT(j,k);
     PRODUIT(j,s);
     PRODUIT(j,t);
     PRODUIT(j,u);
     PRODUIT(j,v);

     CAL2(Prin0("\n"));

     PRODUIT(k,1);
     PRODUIT(k,i);
     PRODUIT(k,j);
     PRODUIT(k,k);
     PRODUIT(k,s);
     PRODUIT(k,t);
     PRODUIT(k,u);
     PRODUIT(k,v);

     CAL2(Prin0("\n"));

     PRODUIT(s,1);
     PRODUIT(s,i);
     PRODUIT(s,j);
     PRODUIT(s,k);
     PRODUIT(s,s);
     PRODUIT(s,t);
     PRODUIT(s,u);
     PRODUIT(s,v);

     CAL2(Prin0("\n"));

     PRODUIT(t,1);
     PRODUIT(t,i);
     PRODUIT(t,j);
     PRODUIT(t,k);
     PRODUIT(t,s);
     PRODUIT(t,t);
     PRODUIT(t,u);
     PRODUIT(t,v);

     CAL2(Prin0("\n"));

     PRODUIT(u,1);
     PRODUIT(u,i);
     PRODUIT(u,j);
     PRODUIT(u,k);
     PRODUIT(u,s);
     PRODUIT(u,t);
     PRODUIT(u,u);
     PRODUIT(u,v);

     CAL2(Prin0("\n"));

     PRODUIT(v,1);
     PRODUIT(v,i);
     PRODUIT(v,j);
     PRODUIT(v,k);
     PRODUIT(v,s);
     PRODUIT(v,t);
     PRODUIT(v,u);
     PRODUIT(v,v);

     CAL2(Prin0("\n"));

     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.