/*************************************************************************************************************************************/
/* */
/* T E S T D E S R O T A T I O N S D E S N O M B R E S C O M P L E X E S E T D E S Q U A T E R N I O N S : */
/* */
/* */
/* Author of '$xtKg/rotations_C_HC.01$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20181201093604). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
#define ROTATION__C(theta_) \
Bblock \
DEFV(complexe,z2); \
\
CAL3(Prme1("rotation={%+.^^^}",theta_)); \
CALS(FPrme0(" ")); \
\
Crotation(z2,z1,theta_); \
\
CAL3(Prme2("z1={%+.^^^,%+.^^^}",Reelle(z1),Imaginaire(z1))); \
CALS(FPrme0(" --> ")); \
CAL3(Prme2("z2={%+.^^^,%+.^^^}",Reelle(z2),Imaginaire(z2))); \
CALS(Fsauts_de_lignes(UN)); \
Eblock
#define ROTATION_HC(alpha,phi__,theta_) \
Bblock \
DEFV(hyper_complexe,q2); \
\
CAL3(Prme3("rotation={%+.^^^,%+.^^^,%+.^^^}",alpha,phi__,theta_)); \
CALS(FPrme0(" ")); \
\
HCrotation(q2,q1,alpha,phi__,theta_); \
\
CAL3(Prme4("q1={%+.^^^,%+.^^^,%+.^^^,%+.^^^}",HReelle(q1),HImaginaire(q1),HJmaginaire(q1),HKmaginaire(q1))); \
CALS(FPrme0(" --> ")); \
CAL3(Prme4("q2={%+.^^^,%+.^^^,%+.^^^,%+.^^^}",HReelle(q2),HImaginaire(q2),HJmaginaire(q2),HKmaginaire(q2))); \
CALS(Fsauts_de_lignes(UN)); \
Eblock
/*===================================================================================================================================*/
/* */
/* T E S T D E S R O T A T I O N D E S N O M B R E S C O M P L E X E S E T D E S Q U A T E R N I O N S : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Float,INIT(c1,11));
DEFV(Float,INIT(ci,22));
DEFV(Float,INIT(cj,33));
DEFV(Float,INIT(ck,44));
/* Composantes flottantes. */
DEFV(complexe,z1);
DEFV(hyper_complexe,q1);
/* Variables complexe et hyper-complexe. */
/*..............................................................................................................................*/
EGAL(nombre_de_chiffres_des_editions_flottantes,QUATRE);
EGAL(PREMIER_CARACTERE_ITb0(mode_fg_de_FORMAT_FLOT_EDITION),K_f);
GET_ARGUMENTS_(nombre_d_arguments
,BLOC(VIDE;)
);
Cinitialisation(z1,c1,ci);
HCinitialisation(q1,c1,ci,cj,ck);
ROTATION__C(FZERO);
/* Il s'agit de la rotation "neutre"... */
ROTATION__C(PI_SUR_2);
/* Il s'agit d'une rotation de pi/2 dans le plan complexe... */
CALS(Fsauts_de_lignes(UN));
ROTATION_HC(PI_SUR_2,PI_SUR_2,FZERO);
/* Il s'agit de la rotation "neutre"... */
ROTATION_HC(PI_SUR_2,PI_SUR_2,PI_SUR_2);
/* Il s'agit d'une rotation de pi/2 dans le plan complexe... */
ROTATION_HC(FZERO,FZERO,FZERO);
/* Et la, "dans les choux"... */
RETU_Commande;
Eblock
ECommande