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