/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        O P E R A T I O N S   E L E M E N T A I R E S   S U R                                                                      */
/*        L E S   N O M B R E S   C O M P L E X E S ,                                                                                */
/*        L E S   N O M B R E S   H Y P E R - C O M P L E X E S   E T                                                                */
/*        L E S   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                          */
/*        S O U S   F O R M E   D E   " D E F I N E " S  :                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Dans ce fichier se trouvent les                                                                                */
/*                  operations elementaires sur les                                                                                  */
/*                  nombres complexes, les nombres hyper-complexes                                                                   */
/*                  et les nombres hyper-hyper-complexes, telles                                                                     */
/*                  l'egalite et l'addition ; elles sont exprimees                                                                   */
/*                  sous forme de "defines", ce qui donne de tres                                                                    */
/*                  bonnes performances, mais un grand encombrement...                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Le 20061210104935, je tente d'expliquer la                                                                     */
/*                  difference qui peut exister entre les couples                                                                    */
/*                  de procedures du type (pour un certain operateur                                                                 */
/*                  'Coperateur(...)') :                                                                                             */
/*                                                                                                                                   */
/*                                      #define   Coperateur(z,z1,...)                                                            \  */
/*                                                          Bblock                                                                \  */
/*                                                          FCoperateur(z,z1,...);                                                \  */
/*                                                          Eblock                                                                   */
/*                                      #define   FCoperateur(z,z1,...)                                                           \  */
/*                                                          Bblock                                                                \  */
/*                                                          UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_C                 \  */
/*                                                              (BLOC(FgCoperateur(z,z1,...);)                                    \  */
/*                                                              ,FCoperateur_____utiliser_l_arithmetique_etendue                  \  */
/*                                                               );                                                               \  */
/*                                                          Eblock                                                                   */
/*                                      #define   FgCoperateur(z,z1,...)                                                          \  */
/*                                                          Bblock                                                                \  */
/*                                                          (...)                                                                 \  */
/*                                                          Eblock                                                                   */
/*                                                                                                                                   */
/*                  L'analyse des differents fichiers qui les                                                                        */
/*                  utilisent semblent indiquer les utilisations                                                                     */
/*                  suivantes :                                                                                                      */
/*                                                                                                                                   */
/*                                      FgCoperateur(...)                   --> $ximcd/operator$FON (utilisation locale et           */
/*                                                                                                  restreinte aux definitions       */
/*                                                                                                  des operateurs basiques),        */
/*                                                                                                                                   */
/*                                      FCoperateur(...)                    --> $ximcd/operator$FON (utilisation locale pour         */
/*                                                                                                  la definition des operateurs     */
/*                                                                                                  non basiques et prend en         */
/*                                                                                                  compte l'extension eventuelle    */
/*                                                                                                  de l'arithmetique),              */
/*                                                                                                                                   */
/*                                      Coperateur(...)                     --> tout autre fichier  ('$DEF', '$FON', '$K',...).      */
/*                                                                                                                                   */
/*                  C'est en fait peu utile, mais restons-en la ;                                                                    */
/*                  mais voila que ci-apres, cela a servi...                                                                         */
/*                                                                                                                                   */
/*                    Le 20070129095008 le niveau "fondamental"                                                                      */
/*                  'FgCoperateur(...)' fut introduit de facon a                                                                     */
/*                  permettre l'introduction de l'arithmetique                                                                       */
/*                  etendue, la ou cela est utile. Au passage,                                                                       */
/*                  cela ne fut pas implemente pour les nombres                                                                      */
/*                  hyper-hyper-complexes qui, en fait, ne servent                                                                   */
/*                  pas et sont la juste en tant qu'exercice de                                                                      */
/*                  style...                                                                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$ximcd/operator$FON' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 19870000000000).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*        :Debut_listMN_DEFINITION_DES_OPERATEURS_DES_CORPS_CONSTRUITS_A_PARTIR_DE_R:                                                */
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   G E N E R A L E   D E S   O P E R A T E U R S   D A N S   L E S                                      */
/*        C O R P S   C O N S T R U I T S   A   P A R T I R   D E S   N O M B R E S   R E E L S  :                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Tous les operateurs arithmetiques dans                                                                         */
/*                  un corps vont etre definis recursivement                                                                         */
/*                  a partir de ceux du sous-corps grace auquel                                                                      */
/*                  le corps est defini. Soient ainsi 'a', 'a1'                                                                      */
/*                  et 'a2' des nombres Arguments dans le corps,                                                                     */
/*                  et 'r' le Resultat d'une certaine operation                                                                      */
/*                  concernant ces Arguments ; soit d'autre part                                                                     */
/*                  'R(...)' et 'I(...)' les fonctions d'acces                                                                       */
/*                  aux parties Reelle et Imaginaire generalisees                                                                    */
/*                  definissant un nombre quelconque du corps en                                                                     */
/*                  tant que vecteur compose de deux nombres du                                                                      */
/*                  sous corps.                                                                                                      */
/*                                                                                                                                   */
/*                    On a donc, par definition, pour tout nombre 'a' :                                                              */
/*                                                                                                                                   */
/*                                      a = {R(a),I(a)}                                                                              */
/*                                                                                                                                   */
/*                  'a' appartenant a un certain corps K et                                                                          */
/*                  'R(a)' et 'I(a)' appartenant au "sous-corps"                                                                     */
/*                  sK a partir duquel K est defini.                                                                                 */
/*                                                                                                                                   */
/*                    De plus, tout nombre Reel 'x' est egal a                                                                       */
/*                  son conjugue :                                                                                                   */
/*                                                                                                                                   */
/*                                      _                                                                                            */
/*                                      x = x                                                                                        */
/*                                                                                                                                   */
/*                  A partir de R (les nombres Reels) sera                                                                           */
/*                  donc construit C (les nombres Complexes),                                                                        */
/*                  qui lui-meme servira de base a Q (les                                                                            */
/*                  Quaternions, appeles aussi HC [Hyper-Complexes]),                                                                */
/*                  qui lui-meme servira de base a O (les                                                                            */
/*                  Octonions, appeles aussi HHC [Hyper-Hyper-Complexes]).                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition recursive des operateurs arithmetiques :                                                                        */
/*                                                                                                                                   */
/*                  r = a               <==>      {R(r),I(r)} = {R(a),I(a)}                                                          */
/*                                                                                                                                   */
/*                  r = -a              <==>      {R(r),I(r)} = {-R(a),-I(a)}                                                        */
/*                                                                                                                                   */
/*                      _                                        ____                                                                */
/*                  r = a               <==>      {R(r),I(r)} = {R(a),-I(a)}                                                         */
/*                                                                                                                                   */
/*                  r = a1 + a2         <==>      {R(r),I(r)} = {R(a1)+R(a2),I(a1)+I(a2)}                                            */
/*                                                                                                                                   */
/*                  r = a1 - a2         <==>      {R(r),I(r)} = {R(a1)-R(a2),I(a1)-I(a2)}                                            */
/*                                                                                                                                   */
/*                  r = (A.a1) + (B.a2) <==>      {R(r),I(r)} = {[A.R(a1)]+[B.R(a2)],[A.I(a1)]+[B.I(a2)]}                            */
/*                                                                                                                                   */
/*                                                                                      _____                         _____          */
/*                  r = a1.a2           <==>      {R(r),I(r)} = {[R(a1).R(a2)] - [I(a1).I(a2)],[R(a1).I(a2)] + [I(a1).R(a2)]}        */
/*                                                                                                                                   */
/*                     2                             2                2         2                                                    */
/*                  |a|                 <==>      |a|         = |R(a)|  + |I(a)|                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Exceptions au schema recursif :                                                                                            */
/*                                                                                                                                   */
/*                    Malheureusement, echappent a ce schema, deux                                                                   */
/*                  operateurs car, en effet, ils considerent chaque                                                                 */
/*                  nombre du groupe, non pas comme un vecteur                                                                       */
/*                  bidimensionnel dans le sous-groupe sous-jacent,                                                                  */
/*                  mais comme un vecteur N-dimensionnel defini dans                                                                 */
/*                  les nombres Reels. Ces operateurs d'exception                                                                    */
/*                  sont :                                                                                                           */
/*                                                                                                                                   */
/*                                      FH...Cinitialisation(...)                                                                    */
/*                                      FH...Cforme_lineaire(...)                                                                    */
/*                                                                                                                                   */
/*                  qui initialise et calcule une forme lineaire                                                                     */
/*                  respectivement. D'une part le nombre d'arguments                                                                 */
/*                  varient quand la dimension du groupe change, et                                                                  */
/*                  d'autre part, en ce qui concerne le second, l'operation                                                          */
/*                  qu'il realise dissymetrise les differentes composantes,                                                          */
/*                  la premiere etant "scalee" et "translatee", alors que                                                            */
/*                  les suivantes ne sont que "scalees"...                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*        :Fin_listMN_DEFINITION_DES_OPERATEURS_DES_CORPS_CONSTRUITS_A_PARTIR_DE_R:                                                  */

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

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FGegal(prefixe,corps,sous_corps,R,A,Preelle,Pimaginaire,egal)                                                            \
                                        /* Definitions des arguments :                                                               */ \
                                        /*                                                                                           */ \
                                        /* prefixe        : permet l'appel recursif de cette procedure, en prefixant le variables    */ \
                                        /*                  locales qui y sont definies (mais ATTENTION, 'prefixe' et 'corps'        */ \
                                        /*                  doivent etre places cote a cote pour garantir le bon fonctionnement      */ \
                                        /*                  de l'operateur '`' de concatenation...),                                 */ \
                                        /* corps          : nom du corps dans lequel on definit l'affectation (par exemple, le       */ \
                                        /*                  corps des Quaternions),                                                  */ \
                                        /* sous_corps     : nom du sous-corps grace auquel l'affectation va etre definie (par        */ \
                                        /*                  exemple, le corps des Complexes),                                        */ \
                                        /* R              : nom de l'element Resultat de l'affectation (R = A),                      */ \
                                        /* A              : nom de l'Argument,                                                       */ \
                                        /* Preelle        : definition de la fonction d'acces a la partie reelle generalisee d'un    */ \
                                        /*                  element du corps (par exemple 'dHReelle(...)'),                          */ \
                                        /* Pimaginaire    : definition de la fonction d'acces a la partie imaginaire generalisee     */ \
                                        /*                  d'un element du corps (par exemple 'dHImaginaire(...)'),                 */ \
                                        /* egal           : definition de la fonction d'affectation dans le sous-corps (par exemple  */ \
                                        /*                  'Cegal(...)').                                                           */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'ici 'prefixe', 'corps' et 'sous_corps' sont inutiles dans cette procedure,   */ \
                                        /* mais conserves afin d'ameliorer la lisibilite, tout en garantissant la symetrie avec les  */ \
                                        /* procedures qui les utilisent...                                                           */ \
                         Bblock                                                                                                         \
                         egal(Preelle(R),Preelle(A));                                                                                   \
                         egal(Pimaginaire(R),Pimaginaire(A));                                                                           \
                                        /* Decomposition-recomposition du resultat :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  {R(r),I(r)} = {R(a),I(a)}                                                */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                                        /* Definition generale de l'affectation d'un vecteur bidimensionnel defini dans un           */ \
                                        /* corps tel que celui des Complexes ou celui des Quaternions...                             */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

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

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FGnegation(prefixe,corps,sous_corps,R,A,Preelle,Pimaginaire,egal,negation)                                               \
                                        /* Definitions des arguments :                                                               */ \
                                        /*                                                                                           */ \
                                        /* prefixe        : permet l'appel recursif de cette procedure, en prefixant le variables    */ \
                                        /*                  locales qui y sont definies (mais ATTENTION, 'prefixe' et 'corps'        */ \
                                        /*                  doivent etre places cote a cote pour garantir le bon fonctionnement      */ \
                                        /*                  de l'operateur '`' de concatenation...),                                 */ \
                                        /* corps          : nom du corps dans lequel on definit l'affectation (par exemple, le       */ \
                                        /*                  corps des Quaternions),                                                  */ \
                                        /* sous_corps     : nom du sous-corps grace auquel l'affectation va etre definie (par        */ \
                                        /*                  exemple, le corps des Complexes),                                        */ \
                                        /* R              : nom de l'element Resultat de l'affectation (R = A),                      */ \
                                        /* A              : nom de l'Argument,                                                       */ \
                                        /* Preelle        : definition de la fonction d'acces a la partie reelle generalisee d'un    */ \
                                        /*                  element du corps (par exemple 'dHReelle(...)'),                          */ \
                                        /* Pimaginaire    : definition de la fonction d'acces a la partie imaginaire generalisee     */ \
                                        /*                  d'un element du corps (par exemple 'dHImaginaire(...)'),                 */ \
                                        /* egal           : definition de la fonction d'affectation dans le sous-corps (par exemple  */ \
                                        /*                  'Cegal(...)'),                                                           */ \
                                        /* negation :       definition de la negation dans le sous-corps (par exemple                */ \
                                        /*                  'Cnegation(...)').                                                       */ \
                                        /*                                                                                           */ \
                         Bblock                                                                                                         \
                         DEFV(sous_corps,prefixe`reel_A_inversee);                                                                      \
                                        /* Partie reelle generalisee de l'Argument 'A', mais inversee (en ce qui concerne les        */ \
                                        /* signes).                                                                                  */ \
                         DEFV(sous_corps,prefixe`imaginaire_A_inversee);                                                                \
                                        /* Partie imaginaire generalisee de l'Argument 'A', mais inversee (en ce qui concerne les    */ \
                                        /* signes).                                                                                  */ \
                                                                                                                                        \
                         negation(prefixe`reel_A_inversee,Preelle(A));                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  -R(a)                                                                    */ \
                                        /*                                                                                           */ \
                         negation(prefixe`imaginaire_A_inversee,Pimaginaire(A));                                                        \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  -I(a)                                                                    */ \
                                        /*                                                                                           */ \
                         egal(Preelle(R),prefixe`reel_A_inversee);                                                                      \
                         egal(Pimaginaire(R),prefixe`imaginaire_A_inversee);                                                            \
                                        /* Decomposition-recomposition du resultat :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  {R(r),I(r)} = {-R(a),-I(a)}                                              */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                                        /* Definition generale de la negation d'un vecteur bidimensionnel defini dans un             */ \
                                        /* corps tel que celui des Complexes ou celui des Quaternions...                             */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

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

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FGconjugaison(prefixe,corps,sous_corps,R,A,Preelle,Pimaginaire,egal,conjugaison,negation)                                \
                                        /* Definitions des arguments :                                                               */ \
                                        /*                                                                                           */ \
                                        /* prefixe        : permet l'appel recursif de cette procedure, en prefixant le variables    */ \
                                        /*                  locales qui y sont definies (mais ATTENTION, 'prefixe' et 'corps'        */ \
                                        /*                  doivent etre places cote a cote pour garantir le bon fonctionnement      */ \
                                        /*                  de l'operateur '`' de concatenation...),                                 */ \
                                        /* corps          : nom du corps dans lequel on definit l'affectation (par exemple, le       */ \
                                        /*                  corps des Quaternions),                                                  */ \
                                        /* sous_corps     : nom du sous-corps grace auquel l'affectation va etre definie (par        */ \
                                        /*                  exemple, le corps des Complexes),                                        */ \
                                        /* R              : nom de l'element Resultat de l'affectation (R = A),                      */ \
                                        /* A              : nom de l'Argument,                                                       */ \
                                        /* Preelle        : definition de la fonction d'acces a la partie reelle generalisee d'un    */ \
                                        /*                  element du corps (par exemple 'dHReelle(...)'),                          */ \
                                        /* Pimaginaire    : definition de la fonction d'acces a la partie imaginaire generalisee     */ \
                                        /*                  d'un element du corps (par exemple 'dHImaginaire(...)'),                 */ \
                                        /* egal           : definition de la fonction d'affectation dans le sous-corps (par exemple  */ \
                                        /*                  'Cegal(...)'),                                                           */ \
                                        /* conjugaison    : definition de la fonction de conjugaison dans le sous-corps (par exemple */ \
                                        /*                  'Cconjugaison(...)'),                                                    */ \
                                        /* negation :       definition de la negation dans le sous-corps (par exemple                */ \
                                        /*                  'Cnegation(...)').                                                       */ \
                                        /*                                                                                           */ \
                         Bblock                                                                                                         \
                         DEFV(sous_corps,prefixe`reel_A_barre);                                                                         \
                                        /* Conjugues de la partie reelle generalisee de l'Argument 'A'.                              */ \
                         DEFV(sous_corps,prefixe`imaginaire_A_inverse);                                                                 \
                                        /* Partie imaginaire generalisee de l'Argument 'A', mais inversee (en ce qui concerne les    */ \
                                        /* signes).                                                                                  */ \
                                                                                                                                        \
                         conjugaison(prefixe`reel_A_barre,Preelle(A));                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  ----                                                                     */ \
                                        /*                  R(a)                                                                     */ \
                                        /*                                                                                           */ \
                         negation(prefixe`imaginaire_A_inverse,Pimaginaire(A));                                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  -I(a)                                                                    */ \
                                        /*                                                                                           */ \
                         egal(Preelle(R),prefixe`reel_A_barre);                                                                         \
                         egal(Pimaginaire(R),prefixe`imaginaire_A_inverse);                                                             \
                                        /* Decomposition-recomposition du resultat :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                                 ----                                                      */ \
                                        /*                  {R(r),I(r)} = {R(a),-I(a)}                                               */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                                        /* Definition generale de la conjugaison d'un vecteur bidimensionnel defini dans un          */ \
                                        /* corps tel que celui des Complexes ou celui des Quaternions...                             */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

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

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FGsomme_difference(prefixe,corps,sous_corps,R,A1,A2,Preelle,Pimaginaire,somme)                                           \
                                        /* Definitions des arguments :                                                               */ \
                                        /*                                                                                           */ \
                                        /* prefixe        : permet l'appel recursif de cette procedure, en prefixant le variables    */ \
                                        /*                  locales qui y sont definies (mais ATTENTION, 'prefixe' et 'corps'        */ \
                                        /*                  doivent etre places cote a cote pour garantir le bon fonctionnement      */ \
                                        /*                  de l'operateur '`' de concatenation...),                                 */ \
                                        /* corps          : nom du corps dans lequel on definit la somme-difference (par exemple, le */ \
                                        /*                  corps des Quaternions),                                                  */ \
                                        /* sous_corps     : nom du sous-corps grace auquel la somme-difference va etre definie (par  */ \
                                        /*                  exemple, le corps des Complexes),                                        */ \
                                        /* R              : nom de l'element Resultat du produit (R = A1 + A2, ou R = A1 - A2),      */ \
                                        /* A1             : nom du premier Argument,                                                 */ \
                                        /* A2             : nom du deuxieme Argument,                                                */ \
                                        /* Preelle        : definition de la fonction d'acces a la partie reelle generalisee d'un    */ \
                                        /*                  element du corps (par exemple 'dHReelle(...)'),                          */ \
                                        /* Pimaginaire    : definition de la fonction d'acces a la partie imaginaire generalisee     */ \
                                        /*                  d'un element du corps (par exemple 'dHImaginaire(...)'),                 */ \
                                        /* somme          : definition de la fonction de somme-difference dans le sous-corps (par    */ \
                                        /*                  exemple 'Csomme(...)').                                                  */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'ici 'prefixe', 'corps' et 'sous_corps' sont inutiles dans cette procedure,   */ \
                                        /* mais conserves afin d'ameliorer la lisibilite, tout en garantissant la symetrie avec les  */ \
                                        /* procedures qui les utilisent...                                                           */ \
                         Bblock                                                                                                         \
                         somme(Preelle(R),Preelle(A1),Preelle(A2));                                                                     \
                         somme(Pimaginaire(R),Pimaginaire(A1),Pimaginaire(A2));                                                         \
                                        /* Calcul de la somme par decomposition, puis recomposition :                                */ \
                                        /*                                                                                           */ \
                                        /*                  {R(r),I(r)} = {R(a1)+R(a2),I(a1)+I(a2)}                                  */ \
                                        /*                                                                                           */ \
                                        /*                  {R(r),I(r)} = {R(a1)-R(a2),I(a1)-I(a2)}                                  */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                                        /* Definition generale de la somme de deux vecteurs bidimensionnels definis dans un corps    */ \
                                        /* tel que celui des Complexes ou celui des Quaternions...                                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

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

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FGinterpolation(prefixe,corps,sous_corps,R,alpha,A1,beta,A2,Preelle,Pimaginaire,interpolation)                           \
                                        /* Definitions des arguments :                                                               */ \
                                        /*                                                                                           */ \
                                        /* prefixe        : permet l'appel recursif de cette procedure, en prefixant le variables    */ \
                                        /*                  locales qui y sont definies (mais ATTENTION, 'prefixe' et 'corps'        */ \
                                        /*                  doivent etre places cote a cote pour garantir le bon fonctionnement      */ \
                                        /*                  de l'operateur '`' de concatenation...),                                 */ \
                                        /* corps          : nom du corps dans lequel on definit l'interpolation (par exemple, le     */ \
                                        /*                  corps des Quaternions),                                                  */ \
                                        /* sous_corps     : nom du sous-corps grace auquel l'interpolation va etre definie (par      */ \
                                        /*                  exemple, le corps des Complexes),                                        */ \
                                        /* R              : nom de l'element Resultat de l'interpolation (R = alpha.A1 + beta.A2),   */ \
                                        /* alpha          : nom du premier coefficient,                                              */ \
                                        /* A1             : nom du premier Argument,                                                 */ \
                                        /* beta           : nom du deuxieme coefficient,                                             */ \
                                        /* A2             : nom du deuxieme Argument,                                                */ \
                                        /* Preelle        : definition de la fonction d'acces a la partie reelle generalisee d'un    */ \
                                        /*                  element du corps (par exemple 'dHReelle(...)'),                          */ \
                                        /* Pimaginaire    : definition de la fonction d'acces a la partie imaginaire generalisee     */ \
                                        /*                  d'un element du corps (par exemple 'dHImaginaire(...)'),                 */ \
                                        /* interpolation  : definition de la fonction d'interpolation dans le sous-corps (par        */ \
                                        /*                  exemple 'Cinterpolation(...)').                                          */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'ici 'prefixe', 'corps' et 'sous_corps' sont inutiles dans cette procedure,   */ \
                                        /* mais conserves afin d'ameliorer la lisibilite, tout en garantissant la symetrie avec les  */ \
                                        /* procedures qui les utilisent...                                                           */ \
                         Bblock                                                                                                         \
                         interpolation(Preelle(R),alpha,Preelle(A1),beta,Preelle(A2));                                                  \
                         interpolation(Pimaginaire(R),alpha,Pimaginaire(A1),beta,Pimaginaire(A2));                                      \
                                        /* Calcul de l'interpolation par decomposition, puis recomposition :                         */ \
                                        /*                                                                                           */ \
                                        /*                  {R(r),I(r)} = {[A.R(a1)]+[B.R(a2)],[A.I(a1)]+[B.I(a2)]}                  */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                                        /* Definition generale de l'interpolation de deux vecteurs bidimensionnels definis dans un   */ \
                                        /* corps tel que celui des Complexes ou celui des Quaternions...                             */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

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

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FGproduit(prefixe,corps,sous_corps,R,A1,A2,Preelle,Pimaginaire,egal,conjugaison,somme,difference,produit)                \
                                        /* Definitions des arguments :                                                               */ \
                                        /*                                                                                           */ \
                                        /* prefixe        : permet l'appel recursif de cette procedure, en prefixant le variables    */ \
                                        /*                  locales qui y sont definies (mais ATTENTION, 'prefixe' et 'corps'        */ \
                                        /*                  doivent etre places cote a cote pour garantir le bon fonctionnement      */ \
                                        /*                  de l'operateur '`' de concatenation...),                                 */ \
                                        /* corps          : nom du corps dans lequel on definit la multiplication (par exemple, le   */ \
                                        /*                  corps des Quaternions),                                                  */ \
                                        /* sous_corps     : nom du sous-corps grace auquel la multiplication va etre definie (par    */ \
                                        /*                  exemple, le corps des Complexes),                                        */ \
                                        /* R              : nom de l'element Resultat du produit (R = A1.A2),                        */ \
                                        /* A1             : nom du premier Argument,                                                 */ \
                                        /* A2             : nom du deuxieme Argument,                                                */ \
                                        /* Preelle        : definition de la fonction d'acces a la partie reelle generalisee d'un    */ \
                                        /*                  element du corps (par exemple 'dHReelle(...)'),                          */ \
                                        /* Pimaginaire    : definition de la fonction d'acces a la partie imaginaire generalisee     */ \
                                        /*                  d'un element du corps (par exemple 'dHImaginaire(...)'),                 */ \
                                        /* egal           : definition de la fonction d'affectation dans le sous-corps (par exemple  */ \
                                        /*                  'Cegal(...)'),                                                           */ \
                                        /* conjugaison    : definition de la fonction de conjugaison d'un element du sous-corps      */ \
                                        /*                  (par exemple 'Cconjugaison(...)'),                                       */ \
                                        /* somme          : definition de la fonction de somme dans le sous-corps (par exemple       */ \
                                        /*                  'Csomme(...)'),                                                          */ \
                                        /* difference     : definition de la fonction de difference dans le sous-corps (par exemple  */ \
                                        /*                  'Cdifference(...)'),                                                     */ \
                                        /* produit        : definition de la fonction de produit dans le sous-corps (par exemple     */ \
                                        /*                  'Cproduit(...)').                                                        */ \
                                        /*                                                                                           */ \
                         Bblock                                                                                                         \
                         DEFV(sous_corps,prefixe`reel_A1);                                                                              \
                         DEFV(sous_corps,prefixe`imaginaire_A1);                                                                        \
                                        /* Parties reelle et imaginaire generalisees de l'Argument 'A1'.                             */ \
                         DEFV(sous_corps,prefixe`reel_A2);                                                                              \
                         DEFV(sous_corps,prefixe`imaginaire_A2);                                                                        \
                                        /* Parties reelle et imaginaire generalisees de l'Argument 'A2'.                             */ \
                                                                                                                                        \
                         DEFV(sous_corps,prefixe`reel_A2_barre);                                                                        \
                         DEFV(sous_corps,prefixe`imaginaire_A2_barre);                                                                  \
                                        /* Conjugues de 'reel_A2' et de 'imaginaire_A2'.                                             */ \
                                                                                                                                        \
                         DEFV(sous_corps,prefixe`produit_1);                                                                            \
                         DEFV(sous_corps,prefixe`produit_2);                                                                            \
                         DEFV(sous_corps,prefixe`produit_3);                                                                            \
                         DEFV(sous_corps,prefixe`produit_4);                                                                            \
                                        /* Definition de quatre produits intermediaires.                                             */ \
                                                                                                                                        \
                         DEFV(sous_corps,prefixe`somme_1);                                                                              \
                         DEFV(sous_corps,prefixe`somme_2);                                                                              \
                                        /* Definition de deux sommes intermediaires.                                                 */ \
                                                                                                                                        \
                         DEFV(corps,prefixe`R_intermediaire);                                                                           \
                                        /* Definition du Resultat final, mais temporaire au cas ou 'A1' et/ou 'A2' serait            */ \
                                        /* "confondu(s)" avec 'R' (introduit le 20181201164339...).                                  */ \
                                        /*                                                                                           */ \
                                        /* Ceci a donc ete introduit tres tardivement et ce suite a des problemes rencontres avec    */ \
                                        /* 'v $xrc/Cfract_4D.11$K' (mais qui venaient d'ailleurs semble-t-il ; voir les commentaires */ \
                                        /* du 20181203111509 ci-dessous)...                                                          */ \
                                        /*                                                                                           */ \
                                        /* En fait, je note le 20181203111509 que cette precaution est tres certainement inutile     */ \
                                        /* car, en effet, 'FGproduit(...)' lorsqu'il sera reference pour definir :                   */ \
                                        /*                                                                                           */ \
                                        /*                  FgHCproduit_theorique(...)                                               */ \
                                        /*                  FgHHCproduit_theorique(...)                                              */ \
                                        /*                                                                                           */ \
                                        /* fera appel in fine a :                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  FgCproduit(...)                                                          */ \
                                        /*                                                                                           */ \
                                        /* qui utilise une structure 'z_intermediaire'...                                            */ \
                                                                                                                                        \
                         egal(prefixe`reel_A1,Preelle(A1));                                                                             \
                         egal(prefixe`imaginaire_A1,Pimaginaire(A1));                                                                   \
                                        /* Decomposition de l'argument 'A1' en ses parties reelle et imaginaire generalisees :       */ \
                                        /*                                                                                           */ \
                                        /*                  R(a1)                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  I(a1)                                                                    */ \
                                        /*                                                                                           */ \
                         egal(prefixe`reel_A2,Preelle(A2));                                                                             \
                         egal(prefixe`imaginaire_A2,Pimaginaire(A2));                                                                   \
                                        /* Decomposition de l'argument 'A2' en ses parties reelle et imaginaire generalisees :       */ \
                                        /*                                                                                           */ \
                                        /*                  R(a2)                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  I(a2)                                                                    */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         conjugaison(prefixe`reel_A2_barre,prefixe`reel_A2);                                                            \
                         conjugaison(prefixe`imaginaire_A2_barre,prefixe`imaginaire_A2);                                                \
                                        /* Conjugaison de 'reel_A2' et de 'imaginaire_A2' :                                          */ \
                                        /*                                                                                           */ \
                                        /*                  -----                                                                    */ \
                                        /*                  R(a2)                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  -----                                                                    */ \
                                        /*                  I(a2)                                                                    */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         produit(prefixe`produit_1,prefixe`reel_A1,prefixe`reel_A2);                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  R(a1).R(a2)                                                              */ \
                                        /*                                                                                           */ \
                         produit(prefixe`produit_2,prefixe`imaginaire_A2_barre,prefixe`imaginaire_A1);                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  -----                                                                    */ \
                                        /*                  I(a2).I(a1)                                                              */ \
                                        /*                                                                                           */ \
                         produit(prefixe`produit_3,prefixe`imaginaire_A2,prefixe`reel_A1);                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  I(a2).R(a1)                                                              */ \
                                        /*                                                                                           */ \
                         produit(prefixe`produit_4,prefixe`imaginaire_A1,prefixe`reel_A2_barre);                                        \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        -----                                                              */ \
                                        /*                  I(a1).R(a2)                                                              */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         difference(prefixe`somme_1,prefixe`produit_1,prefixe`produit_2);                                               \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                   -----                                                   */ \
                                        /*                  [R(a1).R(a2)] - [I(a2).I(a1)]                                            */ \
                                        /*                                                                                           */ \
                         somme(prefixe`somme_2,prefixe`produit_3,prefixe`produit_4);                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                         -----                                             */ \
                                        /*                  [I(a2).R(a1)] + [I(a1).R(a2)]                                            */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         egal(Preelle(prefixe`R_intermediaire),prefixe`somme_1);                                                        \
                         egal(Pimaginaire(prefixe`R_intermediaire),prefixe`somme_2);                                                    \
                                        /* Et recomposition du resultat :                                                            */ \
                                        /*                                                                                           */ \
                                        /*                                        -----                               -----          */ \
                                        /*        {R(r),I(r)} = {[R(a1).R(a2)] - [I(a2).I(a1)],[I(a2).R(a1)] + [I(a1).R(a2)]}        */ \
                                        /*                                                                                           */ \
                         egal(Preelle(R),Preelle(prefixe`R_intermediaire));                                                             \
                         egal(Pimaginaire(R),Pimaginaire(prefixe`R_intermediaire));                                                     \
                                        /* Et enfin : Resultat final (introduit le 20181201164339...).                               */ \
                         Eblock                                                                                                         \
                                        /* Definition generale du produit de deux vecteurs bidimensionnels definis dans un corps     */ \
                                        /* tel que celui des Complexes ou celui des Quaternions...                                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

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

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FGmodule2(prefixe,corps,sous_corps,A,Preelle,Pimaginaire,norme)                                                          \
                                        /* Definitions des arguments :                                                               */ \
                                        /*                                                                                           */ \
                                        /* prefixe        : permet l'appel recursif de cette procedure, en prefixant le variables    */ \
                                        /*                  locales qui y sont definies (mais ATTENTION, 'prefixe' et 'corps'        */ \
                                        /*                  doivent etre places cote a cote pour garantir le bon fonctionnement      */ \
                                        /*                  de l'operateur '`' de concatenation...),                                 */ \
                                        /* corps          : nom du corps dans lequel on definit la norme (par exemple, le            */ \
                                        /*                  corps des Quaternions),                                                  */ \
                                        /* sous_corps     : nom du sous-corps grace auquel la norme va etre definie (par             */ \
                                        /*                  exemple, le corps des Complexes),                                        */ \
                                        /* A              : nom de l'Argument,                                                       */ \
                                        /* Preelle        : definition de la fonction d'acces a la partie reelle generalisee d'un    */ \
                                        /*                  element du corps (par exemple 'dHReelle(...)'),                          */ \
                                        /* Pimaginaire    : definition de la fonction d'acces a la partie imaginaire generalisee     */ \
                                        /*                  d'un element du corps (par exemple 'dHImaginaire(...)'),                 */ \
                                        /* norme          : definition de la fonction de norme dans le sous-corps (par exemple       */ \
                                        /*                  'Cmodule2(...)').                                                        */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'ici 'prefixe', 'corps' et 'sous_corps' sont inutiles dans cette procedure,   */ \
                                        /* mais conserves afin d'ameliorer la lisibilite, tout en garantissant la symetrie avec les  */ \
                                        /* procedures qui les utilisent...                                                           */ \
                         ADD2(norme(Preelle(A)),norme(Pimaginaire(A)))                                                                  \
                                        /* Calcul de la norme par decomposition, puis recomposition :                                */ \
                                        /*                                                                                           */ \
                                        /*                     2                2         2                                          */ \
                                        /*                  |a|         = |R(a)|  + |I(a)|                                           */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                                        /* Definition generale de la norme d'un vecteur bidimensionnel defini dans un corps          */ \
                                        /* tel que celui des Complexes ou celui des Quaternions...                                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   G E N E R A L E   D E S   C O S I N U S   E T   S I N U S                                            */
/*        D E S   T R I G O N O M E T R I E   C I R C U L A I R E   E T   H Y P E R B O L I Q U E  :                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   GENERER_UN_COSINUS                                                                                                            \
                    VRAI
#define   GENERER_UN_SINUS__                                                                                                            \
                    NOTL(GENERER_UN_COSINUS)
                                        /* Indicateur de choix entre 'cos(...)' et 'sin(...)' :                                      */
                                        /*                                                                                           */
                                        /*                  VRAI ==>  cos(...)                                                       */
                                        /*                  FAUX ==>  sin(...)                                                       */
                                        /*                                                                                           */
                                        /* (parametre 'Cosinus' ci-apres).                                                           */
#define   TRIGONOMETRIE_CIRCULAIRE__                                                                                                    \
                    NEGA(FU)
#define   TRIGONOMETRIE_HYPERBOLIQUE                                                                                                    \
                    NEUT(FU)
                                        /* Indicateur de choix entre la Trigonometrie Circulaire et la Trigonometrie Hyperbolique :  */
                                        /*                                                                                           */
                                        /*                  -1   ==>  Circulaire          (le signe est en bascule positif/negatif)  */
                                        /*                  +1   ==>  Hyperbolique        (le signe reste positif)                   */
                                        /*                                                                                           */
                                        /* (parametre 'Trigonometrie' ci-apres).                                                     */
#define   INDICE_MINIMAL_D_UNE_SERIE_TRIGONOMETRIQUE                                                                                    \
                    ZERO
#define   INDICE_MAXIMAL_D_UNE_SERIE_TRIGONOMETRIQUE                                                                                    \
                    CALCUL_TERME_COURANT_SERIE_TRIGONOMETRIQUE_____indice_maximal_d_une_serie_trigonometrique

#define   CALCUL_TERME_COURANT_SERIE_TRIGONOMETRIQUE(serie,il_faut_calculer_terme_courant,Trigonometrie,type,egal,axpb,add2,puix,expos) \
                                        /* Introduit le 20210211113827 pour simplifier 'GENERATION_SERIE_TRIGONOMETRIQUE(...)'...    */ \
                                        /*                                                                                           */ \
                                        /* Le 20210217162119 furent introduits les arguments 'puix' et 'expos' afin de pouvoir       */ \
                                        /* se "rapprocher" de 'v $ximcf/iterations$FON aHHCpuissance.point_manoeuvre.suite_point'... */ \
                    Bblock                                                                                                              \
                    Test(il_faut_calculer_terme_courant)                                                                                \
                         Bblock                                                                                                         \
                         DEFV(type,terme_courant_de_la_serie);                                                                          \
                         DEFV(type,puissance_du_numerateur);                                                                            \
                                                                                                                                        \
                         Test(IFET(IFEQ(expos,FU)                                                                                       \
                                  ,EST_VRAI(CALCUL_TERME_COURANT_SERIE_TRIGONOMETRIQUE_____une_puissance_unite_est_neutre)              \
                                   )                                                                                                    \
                              )                                                                                                         \
                              Bblock                                                                                                    \
                              egal(puissance_du_numerateur,numerateur);                                                                 \
                                        /* Lorsque l'exposant 'expos' est egal a 1, on ne peut pas utiliser 'puix(...)' a cause des  */ \
                                        /* cas ou c'est le "produit non theorique" qui est utilise, auquel cas l'elevation a la      */ \
                                        /* puissance unite ne serait plus la fonction neutre...                                      */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              puix(puissance_du_numerateur,numerateur,expos);                                                           \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         axpb(terme_courant_de_la_serie,MUL2(signe,INVE(denominateur)),puissance_du_numerateur,FZERO);                  \
                         add2(serie,serie,terme_courant_de_la_serie);                                                                   \
                         EGAL(signe,MUL2(Trigonometrie,signe));                                                                         \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   GENERATION_SERIE_TRIGONOMETRIQUE(serie,angle,Cosinus,Trigonometrie,type,egal,axpb,add2,puix,expos,produit,zero,un)            \
                                        /* Introduit le 20210208142631...                                                            */ \
                    Bblock                                                                                                              \
                    DEFV(Int,INIT(indice_de_la_serie,UNDEF));                                                                           \
                    DEFV(type,numerateur);                                                                                              \
                    DEFV(Float,INIT(denominateur,FU));                                                                                  \
                    DEFV(Int,INIT(signe,UN));                                                                                           \
                                                                                                                                        \
                    egal(serie,zero);                                                                                                   \
                    egal(numerateur,un);                                                                                                \
                                                                                                                                        \
                    DoIn(indice_de_la_serie,INDICE_MINIMAL_D_UNE_SERIE_TRIGONOMETRIQUE,INDICE_MAXIMAL_D_UNE_SERIE_TRIGONOMETRIQUE,I)    \
                                        /* ATTENTION : la valeur minimale de l'indice doit etre nulle...                             */ \
                         Bblock                                                                                                         \
                         Test(EST_IMPAIR(indice_de_la_serie))                                                                           \
                                        /* On notera que 'sin(...)' n'a que des puissances (et donc des indices) impaires...         */ \
                              Bblock                                                                                                    \
                              CALCUL_TERME_COURANT_SERIE_TRIGONOMETRIQUE(serie                                                          \
                                                                        ,EST_FAUX(Cosinus)                                              \
                                                                        ,Trigonometrie                                                  \
                                                                        ,type                                                           \
                                                                        ,egal                                                           \
                                                                        ,axpb                                                           \
                                                                        ,add2                                                           \
                                                                        ,puix                                                           \
                                                                        ,expos                                                          \
                                                                         );                                                             \
                                        /* Cas du 'sin(...)' :                                                                       */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                                        /* On notera que 'cos(...)' n'a que des puissances (et donc des indices) paires...           */ \
                              Bblock                                                                                                    \
                              CALCUL_TERME_COURANT_SERIE_TRIGONOMETRIQUE(serie                                                          \
                                                                        ,EST_VRAI(Cosinus)                                              \
                                                                        ,Trigonometrie                                                  \
                                                                        ,type                                                           \
                                                                        ,egal                                                           \
                                                                        ,axpb                                                           \
                                                                        ,add2                                                           \
                                                                        ,puix                                                           \
                                                                        ,expos                                                          \
                                                                         );                                                             \
                                        /* Cas du 'cos(...)' :                                                                       */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         produit(numerateur,numerateur,angle);                                                                          \
                                        /* Calcul iteratif de toutes les premieres puissances de 'angle' sachant qu'evidemment une   */ \
                                        /* sur deux est utilisee (les paires pour 'cos(...)' et les impaires pour 'sin(...)').       */ \
                         EGAL(denominateur,MUL2(SUCC(indice_de_la_serie),denominateur));                                                \
                                        /* Calcul iteratif des factorielles...                                                       */ \
                         Eblock                                                                                                         \
                    EDoI                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N T R O L E   D E   L ' A R I T H M E T I Q U E   E T E N D U E                                                        */
/*        L O R S   D E   C A L C U L S   S U R   L E S   N O M B R E S   C O M P L E X E S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Ceci a ete introduit le 20070129115950...                                                 */

#ifdef    FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES
#    define    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_C(faire_de_l_arithmetique_etendue,sequence)                          \
                         Bblock                                                                                                         \
                         USs_GooF______CONDITIONNEL                                                                                     \
                             (IFET(IL_FAUT(faire_de_l_arithmetique_etendue)                                                             \
                                  ,EST_VRAI(C_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base)                  \
                                   )                                                                                                    \
                             ,sequence                                                                                                  \
                              );                                                                                                        \
                                        /* Execution de la sequence argument avec l'arithmetique etendue si elle est disponible...   */ \
                         Eblock
#Aifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES
#    define    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_C(faire_de_l_arithmetique_etendue,sequence)                          \
                         Bblock                                                                                                         \
                         BLOC(sequence);                                                                                                \
                                        /* Execution de la sequence argument avec l'arithmetique de base...                          */ \
                         Eblock
#Eifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES

#define   FCsomme_____utiliser_l_arithmetique_etendue                                                                                   \
                    FCsomme_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_C
#define   FCdifference_____utiliser_l_arithmetique_etendue                                                                              \
                    FCdifference_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_C
#define   FCproduit_____utiliser_l_arithmetique_etendue                                                                                 \
                    FCproduit_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_C
#define   FCquotient_____utiliser_l_arithmetique_etendue                                                                                \
                    FCquotient_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_C
                                        /* Definitions introduites le 20070130100534 pour raccourcir certaines lignes suivantes...   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E D I T I O N   D ' U N   N O M B R E   C O M P L E X E  :                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PRINT_DANS_C(titre,z)                                                                                                         \
                    Bblock                                                                                                              \
                    CAL3(Prme3("%s={%+.^^^,%+.^^^}\n",titre,Reelle(z),Imaginaire(z)));                                                  \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   Z = ( R E E L L E , I M A G I N A I R E )   D ' U N   N O M B R E   C O M P L E X E  :       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cinitialisation(z,partie_reelle,partie_imaginaire)                                                                            \
                    Bblock                                                                                                              \
                    FCinitialisation(z,partie_reelle,partie_imaginaire);                                                                \
                    Eblock
#define   FCinitialisation(z,partie_reelle,partie_imaginaire)                                                                           \
                    Bblock                                                                                                              \
                    FgCinitialisation(z,partie_reelle,partie_imaginaire);                                                               \
                    Eblock
#define   bFgCinitialisation(z,partie_reelle,partie_imaginaire)                                                                         \
                    Bblock                                                                                                              \
                    EGAL(Reelle(z)                                                                                                      \
                        ,partie_reelle                                                                                                  \
                         );                                                                                                             \
                    EGAL(Imaginaire(z)                                                                                                  \
                        ,partie_imaginaire                                                                                              \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Introduit le 20121102215336 pour simplifier 'FgCinitialisation(...)'.                     */
#define   FgCinitialisation(z,partie_reelle,partie_imaginaire)                                                                          \
                    Bblock                                                                                                              \
                    DEFV(complexe,z_intermediaire_initialisation);                                                                      \
                                        /* Au cas ou il y aurait une dependance entre les Arguments et le Resultat (introduit        */ \
                                        /* le 20121102172614)...                                                                     */ \
                                                                                                                                        \
                    bFgCinitialisation(z_intermediaire_initialisation                                                                   \
                                      ,partie_reelle                                                                                    \
                                      ,partie_imaginaire                                                                                \
                                       );                                                                                               \
                                                                                                                                        \
                    bFgCinitialisation(z                                                                                                \
                                      ,Reelle(z_intermediaire_initialisation)                                                           \
                                      ,Imaginaire(z_intermediaire_initialisation)                                                       \
                                       );                                                                                               \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   Z = ( M O D U L E , A R G U M E N T )   D ' U N   N O M B R E   C O M P L E X E  :           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cinitialisation_polaire(z,module,argument)                                                                                    \
                    Bblock                                                                                                              \
                    FCinitialisation_polaire(z,module,argument);                                                                        \
                    Eblock
#define   FCinitialisation_polaire(z,module,argument)                                                                                   \
                    Bblock                                                                                                              \
                    FgCinitialisation_polaire(z,module,argument);                                                                       \
                    Eblock
#define   FgCinitialisation_polaire(z,module,argument)                                                                                  \
                    Bblock                                                                                                              \
                    DEFV(complexe,z_module);                                                                                            \
                    DEFV(complexe,z_argument);                                                                                          \
                    DEFV(complexe,z_exponentielle);                                                                                     \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    FCinitialisation(z_module,module,I0_Complexe);                                                                      \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  zm = m + i.0                                                             */ \
                                        /*                                                                                           */ \
                    FCinitialisation(z_argument,R0_Complexe,argument);                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  za = 0 + i.a                                                             */ \
                                        /*                                                                                           */ \
                    FCexponentielle(z_exponentielle,EN,z_argument);                                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        i.a                                                                */ \
                                        /*                  ze = e                                                                   */ \
                                        /*                                                                                           */ \
                    FCproduit(z,z_module,z_exponentielle);                                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          i.a                                                              */ \
                                        /*                  z  = m.e                                                                 */ \
                                        /*                                                                                           */ \
                    Eblock
                                        /* Introduit le 20040401095015 pour 'v $xrs/Mobius3D.11$I Cinitialisation_polaire'.          */

#define   Cinitialisation_trigonometrique(z,module,argument)                                                                            \
                    Bblock                                                                                                              \
                    FCinitialisation_trigonometrique(z,module,argument);                                                                \
                    Eblock
#define   FCinitialisation_trigonometrique(z,module,argument)                                                                           \
                    Bblock                                                                                                              \
                    FgCinitialisation_trigonometrique(z,module,argument);                                                               \
                    Eblock
#define   FgCinitialisation_trigonometrique(z,module,argument)                                                                          \
                    Bblock                                                                                                              \
                    FCinitialisation(z                                                                                                  \
                                    ,FCcomposanteR(module,argument)                                                                     \
                                    ,FCcomposanteI(module,argument)                                                                     \
                                     );                                                                                                 \
                    Eblock
                                        /* Introduit le 20111229161914. Evidemment cela devrait donner le meme resultat que          */
                                        /* 'FgCinitialisation_polaire(...)' et l'on peut donc se demander alors ce qui a justifie    */
                                        /* la definition de ce dernier operateur via 'FCexponentielle(...)'...                       */

#define   Cdefinition_trigonometrique(z,module,argument)                                                                                \
                    Bblock                                                                                                              \
                    FCdefinition_trigonometrique(z,module,argument);                                                                    \
                    Eblock
#define   FCdefinition_trigonometrique(z,module,argument)                                                                               \
                    Bblock                                                                                                              \
                    FgCdefinition_trigonometrique(z,module,argument);                                                                   \
                    Eblock
#define   FgCdefinition_trigonometrique(z,module,argument)                                                                              \
                    Bblock                                                                                                              \
                    DEFV(Float,INIT(unitaire,Cmodule(C_____nombre_complexe__0_p1)));                                                    \
                                        /* Inutile mais, par "symetrie" avec les hyper-complexes et les hyper-hyper-complexes...     */ \
                    DEFV(Float,INIT(cosinus,NEUT(MUL2(module,COSX(argument)))));                                                        \
                    DEFV(Float,INIT(sinus__,FLOT__UNDEF));                                                                              \
                                                                                                                                        \
                    EGAL(sinus__,DIVI(MUL2(module,SINX(argument)),unitaire));                                                           \
                                                                                                                                        \
                    FCinitialisation(z                                                                                                  \
                                    ,cosinus                                                                                            \
                                    ,sinus__                                                                                            \
                                     );                                                                                                 \
                    Eblock
                                        /* Introduit le 20230320123152 afin de se debarasser de l'usage de l'exponentielle en        */
                                        /* particulier pour les hyper-complexes et les hyper-hyper-complexes...                      */

#define   Cextension_directe(z_etendu,z)                                                                                                \
                    Bblock                                                                                                              \
                    FCextension_directe(z_etendu,z);                                                                                    \
                    Eblock
#define   FCextension_directe(z_etendu,z)                                                                                               \
                    Bblock                                                                                                              \
                    FgCextension_directe(z_etendu,z);                                                                                   \
                    Eblock
#define   FgCextension_directe(z_etendu,z)                                                                                              \
                    Bblock                                                                                                              \
                    EGAL(CP_Rho(z_etendu),Cmodule(z));                                                                                  \
                    EGAL(CP_Theta(z_etendu),Cargument_2PI(z));                                                                          \
                    Eblock
                                        /* Introduit le 20111230081620.                                                              */

#define   Cextension_inverse(z,z_etendu)                                                                                                \
                    Bblock                                                                                                              \
                    FCextension_inverse(z,z_etendu);                                                                                    \
                    Eblock
#define   FCextension_inverse(z,z_etendu)                                                                                               \
                    Bblock                                                                                                              \
                    FgCextension_inverse(z,z_etendu);                                                                                   \
                    Eblock
#define   FgCextension_inverse(z,z_etendu)                                                                                              \
                    Bblock                                                                                                              \
                    FCinitialisation_trigonometrique(z                                                                                  \
                                                    ,CP_Rho(z_etendu)                                                                   \
                                                    ,CP_Theta(z_etendu)                                                                 \
                                                     );                                                                                 \
                    Eblock
                                        /* Introduit le 20111230081620.                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X T R A C T I O N   D E S   P A R T I E S   R E E L L E   E T   I M A G I N A I R E                                      */
/*        D E   2   N O M B R E S   C O M P L E X E S  :                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CpartieReelle(z,z1)                                                                                                           \
                    Bblock                                                                                                              \
                    FCpartieReelle(z,z1);                                                                                               \
                    Eblock
#define   FCpartieReelle(z,z1)                                                                                                          \
                    Bblock                                                                                                              \
                    FgCpartieReelle(z,z1);                                                                                              \
                    Eblock
#define   FgCpartieReelle(z,z1)                                                                                                         \
                    Bblock                                                                                                              \
                    DEFV(complexe,z1_conjugue);                                                                                         \
                    DEFV(complexe,z_somme);                                                                                             \
                                                                                                                                        \
                    FCconjugaison(z1_conjugue,z1);                                                                                      \
                    FCsomme(z_somme,z1,z1_conjugue);                                                                                    \
                    FCforme_lineaire(z                                                                                                  \
                                    ,INVE(CONSTANTE_DE_MOYENNE)                                                                         \
                                    ,z_somme                                                                                            \
                                    ,FZERO                                                                                              \
                                     );                                                                                                 \
                                        /* La partie reelle 'PR' est definie par :                                                   */ \
                                        /*                               _                                                           */ \
                                        /*                           z + z                                                           */ \
                                        /*                  PR(z) = -------                                                          */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                    Eblock                                                                                                              \
                                        /* Extraction de la partie reelle d'un nombre complexe sous la forme d'un autre nombre       */ \
                                        /* complexe (introduit le 20230204075556)...                                                 */

#define   CpartieImaginaire(z,z1)                                                                                                       \
                    Bblock                                                                                                              \
                    FCpartieImaginaire(z,z1);                                                                                           \
                    Eblock
#define   FCpartieImaginaire(z,z1)                                                                                                      \
                    Bblock                                                                                                              \
                    FgCpartieImaginaire(z,z1);                                                                                          \
                    Eblock
#define   FgCpartieImaginaire(z,z1)                                                                                                     \
                    Bblock                                                                                                              \
                    DEFV(complexe,z1_conjugue);                                                                                         \
                    DEFV(complexe,z_difference);                                                                                        \
                                                                                                                                        \
                    FCconjugaison(z1_conjugue,z1);                                                                                      \
                    FCdifference(z_difference,z1,z1_conjugue);                                                                          \
                    FCforme_lineaire(z                                                                                                  \
                                    ,INVE(CONSTANTE_DE_MOYENNE)                                                                         \
                                    ,z_difference                                                                                       \
                                    ,FZERO                                                                                              \
                                     );                                                                                                 \
                                        /* La partie imaginaire 'PI' est definie par :                                               */ \
                                        /*                               _                                                           */ \
                                        /*                           z - z                                                           */ \
                                        /*                  PI(z) = -------                                                          */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                    Eblock                                                                                                              \
                                        /* Extraction de la partie imaginaire d'un nombre complexe sous la forme d'un autre nombre   */ \
                                        /* complexe (introduit le 20230204075556)...                                                 */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E G A L I T E   Z = Z1   D E   2   N O M B R E S   C O M P L E X E S  :                                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cegal(z,z1)                                                                                                                   \
                    Bblock                                                                                                              \
                    FCegal(z,z1);                                                                                                       \
                    Eblock
#define   FCegal(z,z1)                                                                                                                  \
                    Bblock                                                                                                              \
                    FgCegal(z,z1);                                                                                                      \
                    Eblock
#define   FgCegal(z,z1)                                                                                                                 \
                    Bblock                                                                                                              \
                    FCinitialisation(z                                                                                                  \
                                    ,Reelle(z1)                                                                                         \
                                    ,Imaginaire(z1)                                                                                     \
                                     );                                                                                                 \
                    Eblock                                                                                                              \
                                        /* ATTENTION, cette facon de proceder (qui est la seule ?) a un defaut comme cela s'est vu   */ \
                                        /* dans 'v $xtKg/zeta.11$K fFCzeta_sommation_Euler_MacLaurin' lorsque ce programme est       */ \
                                        /* execute avec l'option "editer=VRAI". En effet, l'edition est systematiquement faite en    */ \
                                        /* double, ce qui vient du fait que la fonction 'fFCzeta_sommation_Euler_MacLaurin(...)' est */ \
                                        /* appelee deux fois de suite : d'abord pour 'Reelle(...)', puis pour Imaginaire(...)'.      */

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne definit pas :                                            */
                                        /*                                                                                           */
                                        /*                  #    define    FCegal(z,z1)                                           \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGegal(VIDE                                  \  */
                                        /*                                                 ,complexe                              \  */
                                        /*                                                 ,PRECISION_DES_NOMBRES_COMPLEXES       \  */
                                        /*                                                 ,z                                     \  */
                                        /*                                                 ,z1                                    \  */
                                        /*                                                 ,dReelle,dImaginaire                   \  */
                                        /*                                                 ,EGAL                                  \  */
                                        /*                                                  );                                    \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* pour des raisons de performance, la version de 'FCegal(...)' figurant ci-dessus,          */
                                        /* etant optimale...                                                                         */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   2   N O M B R E S   C O M P L E X E S  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CTestIFEQ(z1,z2)                                                                                                              \
                    FCTestIFEQ(z1,z2)
#define   FCTestIFEQ(z1,z2)                                                                                                             \
                    IFET(IFEQ(Reelle(z1),Reelle(z2)),IFEQ(Imaginaire(z1),Imaginaire(z2)))
                                        /* Test de l'egalite de 'z1' et 'z2'.                                                        */

#define   CTestIFEQ_a_peu_pres_absolu(z1,z2,epsilon)                                                                                    \
                    FCTestIFEQ_a_peu_pres_absolu(z1,z2,epsilon)
#define   FCTestIFEQ_a_peu_pres_absolu(z1,z2,epsilon)                                                                                   \
                    IFET(IFEQ_a_peu_pres_absolu(Reelle(z1),Reelle(z2),epsilon)                                                          \
                        ,IFEQ_a_peu_pres_absolu(Imaginaire(z1),Imaginaire(z2),epsilon)                                                  \
                         )
                                        /* Test de l'egalite de 'z1' et 'z2' a "epsilon pres absolu".                                */

#define   CTestIFEQ_a_peu_pres_relatif(z1,z2,pourcentage)                                                                               \
                    FCTestIFEQ_a_peu_pres_relatif(z1,z2,pourcentage)
#define   FCTestIFEQ_a_peu_pres_relatif(z1,z2,pourcentage)                                                                              \
                    IFET(IFEQ_a_peu_pres_relatif(Reelle(z1),Reelle(z2),pourcentage)                                                     \
                        ,IFEQ_a_peu_pres_relatif(Imaginaire(z1),Imaginaire(z2),pourcentage)                                             \
                         )
                                        /* Test de l'egalite de 'z1' et 'z2' a "epsilon pres relatif".                               */

#define   CTestIFNE(z1,z2)                                                                                                              \
                    FCTestIFNE(z1,z2)
#define   FCTestIFNE(z1,z2)                                                                                                             \
                    IFOU(IFNE(Reelle(z1),Reelle(z2)),IFNE(Imaginaire(z1),Imaginaire(z2)))
                                        /* Test de la non egalite de 'z1' et 'z2'.                                                   */

#define   CTestIFNE_a_peu_pres_absolu(z1,z2,epsilon)                                                                                    \
                    FCTestIFNE_a_peu_pres_absolu(z1,z2,epsilon)
#define   FCTestIFNE_a_peu_pres_absolu(z1,z2,epsilon)                                                                                   \
                    IFOU(IFNE_a_peu_pres_absolu(Reelle(z1),Reelle(z2),epsilon)                                                          \
                        ,IFNE_a_peu_pres_absolu(Imaginaire(z1),Imaginaire(z2),epsilon)                                                  \
                         )
                                        /* Test de la non egalite de 'z1' et 'z2' a "epsilon pres absolu".                           */

#define   CTestIFNE_a_peu_pres_relatif(z1,z2,pourcentage)                                                                               \
                    FCTestIFNE_a_peu_pres_relatif(z1,z2,pourcentage)
#define   FCTestIFNE_a_peu_pres_relatif(z1,z2,pourcentage)                                                                              \
                    IFOU(IFNE_a_peu_pres_relatif(Reelle(z1),Reelle(z2),pourcentage)                                                     \
                        ,IFNE_a_peu_pres_relatif(Imaginaire(z1),Imaginaire(z2),pourcentage)                                             \
                         )
                                        /* Test de la non egalite de 'z1' et 'z2' a "epsilon pres relatif".                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N E G A T I O N   Z = - Z1   D ' U N   N O M B R E   C O M P L E X E  :                                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cnegation(z,z1)                                                                                                               \
                    Bblock                                                                                                              \
                    FCnegation(z,z1);                                                                                                   \
                    Eblock
#define   FCnegation(z,z1)                                                                                                              \
                    Bblock                                                                                                              \
                    FgCnegation(z,z1);                                                                                                  \
                    Eblock
#define   FgCnegation(z,z1)                                                                                                             \
                    Bblock                                                                                                              \
                    FCforme_lineaire(z                                                                                                  \
                                    ,NEGA(FU)                                                                                           \
                                    ,z1                                                                                                 \
                                    ,FZERO                                                                                              \
                                     );                                                                                                 \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne definit pas :                                            */
                                        /*                                                                                           */
                                        /*                  #    define    FCnegation(z,z1)                                       \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGnegation                                   \  */
                                        /*                                                     (VIDE                              \  */
                                        /*                                                     ,complexe                          \  */
                                        /*                                                     ,PRECISION_DES_NOMBRES_COMPLEXES   \  */
                                        /*                                                     ,z                                 \  */
                                        /*                                                     ,z1                                \  */
                                        /*                                                     ,dReelle,dImaginaire               \  */
                                        /*                                                     ,EGAL                              \  */
                                        /*                                                     ,...                               \  */
                                        /*                                                     ,...                               \  */
                                        /*                                                      );                                \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* pour des raisons de performance, la version de 'FCegal(...)' figurant ci-dessus,          */
                                        /* etant optimale...                                                                         */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                    --                                                                                             */
/*        C O N J U G A I S O N   Z = Z1   D ' U N   N O M B R E   C O M P L E X E  :                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cconjugaison(z,z1)                                                                                                            \
                    Bblock                                                                                                              \
                    FCconjugaison(z,z1);                                                                                                \
                    Eblock
#define   FCconjugaison(z,z1)                                                                                                           \
                    Bblock                                                                                                              \
                    FgCconjugaison(z,z1);                                                                                               \
                    Eblock
#define   FgCconjugaison(z,z1)                                                                                                          \
                    Bblock                                                                                                              \
                    FCinitialisation(z                                                                                                  \
                                    ,CReelle(z1)                                                                                        \
                                    ,CImaginaire(z1)                                                                                    \
                                     );                                                                                                 \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne definit pas :                                            */
                                        /*                                                                                           */
                                        /*                  #    define    FCconjugaison(z,z1)                                    \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGconjugaison                                \  */
                                        /*                                                     (VIDE                              \  */
                                        /*                                                     ,complexe                          \  */
                                        /*                                                     ,PRECISION_DES_NOMBRES_COMPLEXES   \  */
                                        /*                                                     ,z                                 \  */
                                        /*                                                     ,z1                                \  */
                                        /*                                                     ,dReelle,dImaginaire               \  */
                                        /*                                                     ,EGAL                              \  */
                                        /*                                                     ,...                               \  */
                                        /*                                                     ,...                               \  */
                                        /*                                                      );                                \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* pour des raisons de performance, la version de 'FCegal(...)' figurant ci-dessus,          */
                                        /* etant optimale...                                                                         */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V A L E U R   M O D U L O   D ' U N   N O M B R E   C O M P L E X E  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cmodulo(z,z1,Rorg,Rext,Iorg,Iext)                                                                                             \
                    Bblock                                                                                                              \
                    FCmodulo(z,z1,Rorg,Rext,Iorg,Iext);                                                                                 \
                    Eblock
#define   FCmodulo(z,z1,Rorg,Rext,Iorg,Iext)                                                                                            \
                    Bblock                                                                                                              \
                    FgCmodulo(z,z1,Rorg,Rext,Iorg,Iext);                                                                                \
                    Eblock
#define   FgCmodulo(z,z1,Rorg,Rext,Iorg,Iext)                                                                                           \
                    Bblock                                                                                                              \
                    FCinitialisation(z                                                                                                  \
                                    ,MODF(Reelle(z1),Rorg,Rext)                                                                         \
                                    ,MODF(Imaginaire(z1),Iorg,Iext)                                                                     \
                                     );                                                                                                 \
                    Eblock
                                        /* Procedures introduites le 20121102174217...                                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O R M E   L I N E A I R E   Z = A*Z1 + B   D ' U N   N O M B R E   C O M P L E X E                                       */
/*        L E S   N O M B R E S    { A , B }   E T A N T   R E E L S  :                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cforme_lineaire(z,alpha,z1,beta)                                                                                              \
                    Bblock                                                                                                              \
                    FCforme_lineaire(z,alpha,z1,beta);                                                                                  \
                    Eblock
#define   FCforme_lineaire(z,alpha,z1,beta)                                                                                             \
                    Bblock                                                                                                              \
                    FgCforme_lineaire(z,alpha,z1,beta);                                                                                 \
                    Eblock
#define   FgCforme_lineaire(z,alpha,z1,beta)                                                                                            \
                    Bblock                                                                                                              \
                    FCinitialisation(z                                                                                                  \
                                    ,LIN1(alpha,Reelle(z1),beta)                                                                        \
                                    ,LIZ1(alpha,Imaginaire(z1))                                                                         \
                                     );                                                                                                 \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2                                                                  */
/*        D E   2   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S    { A , B }   E T A N T   R E E L S  :                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_2(z,a,z1,b,z2)                                                                                          \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_2(z,a,z1,b,z2);                                                                              \
                    Eblock
#define   FCcombinaison_lineaire_2(z,a,z1,b,z2)                                                                                         \
                    Bblock                                                                                                              \
                    FgCcombinaison_lineaire_2(z,a,z1,b,z2);                                                                             \
                    Eblock
#define   FgCcombinaison_lineaire_2(z,a,z1,b,z2)                                                                                        \
                    Bblock                                                                                                              \
                    Test(IL_NE_FAUT_PAS(FgCsomme_FgCproduit_____autoriser_l_arithmetique_folklorique_dans_C))                           \
                                        /* Test introduit le 20181212120506 pour le plaisir des yeux...                              */ \
                         Bblock                                                                                                         \
                         FCinitialisation(z                                                                                             \
                                         ,LIZ2(a,Reelle(z1),b,Reelle(z2))                                                               \
                                         ,LIZ2(a,Imaginaire(z1),b,Imaginaire(z2))                                                       \
                                          );                                                                                            \
                                        /* On notera le 20181212115436 que ceci est identique a 'FgCinterpolation(...)'...           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(complexe,z1_intermediaire);                                                                               \
                         DEFV(complexe,z2_intermediaire);                                                                               \
                                                                                                                                        \
                         FCforme_lineaire(z1_intermediaire,a,z1,FZERO);                                                                 \
                         FCforme_lineaire(z2_intermediaire,b,z2,FZERO);                                                                 \
                                                                                                                                        \
                         FCsomme(z,z1_intermediaire,z2_intermediaire);                                                                  \
                                        /* Ainsi, la combinaison lineaire est ramenee a une somme "simple"...                        */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock
                                        /* Introduit le 20040508121316 pour 'v $ximcf/iterations$FON 20040508115225'.                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2 + C*Z3                                                           */
/*        D E   3   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S   { A , B , C }   E T A N T   R E E L S  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_3(z,a,z1,b,z2,c,z3)                                                                                     \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_3(z,a,z1,b,z2,c,z3);                                                                         \
                    Eblock
#define   FCcombinaison_lineaire_3(z,a,z1,b,z2,c,z3)                                                                                    \
                    Bblock                                                                                                              \
                    DEFV(complexe,tz3);                                                                                                 \
                    FCcombinaison_lineaire_2(tz3,b,z2,c,z3);                                                                            \
                    FCcombinaison_lineaire_2(z,a,z1,FU,tz3);                                                                            \
                    Eblock
                                        /* Introduit le 20220608175938...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2 + C*Z3 + D*Z4                                                    */
/*        D E   4   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S   { A , B , C , D }   E T A N T   R E E L S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_4(z,a,z1,b,z2,c,z3,d,z4)                                                                                \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_4(z,a,z1,b,z2,c,z3,d,z4);                                                                    \
                    Eblock
#define   FCcombinaison_lineaire_4(z,a,z1,b,z2,c,z3,d,z4)                                                                               \
                    Bblock                                                                                                              \
                    DEFV(complexe,tz4);                                                                                                 \
                    FCcombinaison_lineaire_3(tz4,b,z2,c,z3,d,z4);                                                                       \
                    FCcombinaison_lineaire_2(z,a,z1,FU,tz4);                                                                            \
                    Eblock
                                        /* Introduit le 20220608175938...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2 + C*Z3 + D*Z4 + E*Z5                                             */
/*        D E   5   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S   { A , B , C , D , E }   E T A N T   R E E L S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_5(z,a,z1,b,z2,c,z3,d,z4,e,z5)                                                                           \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_5(z,a,z1,b,z2,c,z3,d,z4,e,z5);                                                               \
                    Eblock
#define   FCcombinaison_lineaire_5(z,a,z1,b,z2,c,z3,d,z4,e,z5)                                                                          \
                    Bblock                                                                                                              \
                    DEFV(complexe,tz5);                                                                                                 \
                    FCcombinaison_lineaire_4(tz5,b,z2,c,z3,d,z4,e,z5);                                                                  \
                    FCcombinaison_lineaire_2(z,a,z1,FU,tz5);                                                                            \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2 + C*Z3 + D*Z4 + E*Z5 + F*Z6                                      */
/*        D E   6   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S   { A , B , C , D , E , F }   E T A N T   R E E L S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_6(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6)                                                                      \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_6(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6);                                                          \
                    Eblock
#define   FCcombinaison_lineaire_6(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6)                                                                     \
                    Bblock                                                                                                              \
                    DEFV(complexe,tz6);                                                                                                 \
                    FCcombinaison_lineaire_5(tz6,b,z2,c,z3,d,z4,e,z5,f,z6);                                                             \
                    FCcombinaison_lineaire_2(z,a,z1,FU,tz6);                                                                            \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2 + C*Z3 + D*Z4 + E*Z5 + F*Z6 + G*Z7                               */
/*        D E   7   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G }   E T A N T   R E E L S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_7(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7)                                                                 \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_7(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7);                                                     \
                    Eblock
#define   FCcombinaison_lineaire_7(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7)                                                                \
                    Bblock                                                                                                              \
                    DEFV(complexe,tz7);                                                                                                 \
                    FCcombinaison_lineaire_6(tz7,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7);                                                        \
                    FCcombinaison_lineaire_2(z,a,z1,FU,tz7);                                                                            \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2 + C*Z3 + D*Z4 + E*Z5 + F*Z6 + G*Z7 + H*Z8                        */
/*        D E   8   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G , H }   E T A N T   R E E L S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_8(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8)                                                            \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_8(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8);                                                \
                    Eblock
#define   FCcombinaison_lineaire_8(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8)                                                           \
                    Bblock                                                                                                              \
                    DEFV(complexe,tz8);                                                                                                 \
                    FCcombinaison_lineaire_7(tz8,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8);                                                   \
                    FCcombinaison_lineaire_2(z,a,z1,FU,tz8);                                                                            \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Z = A*Z1 + B*Z2 + C*Z3 + D*Z4 + E*Z5 + F*Z6 + G*Z7 + H*Z8 + I*Z9                 */
/*        D E   9   N O M B R E S   C O M P L E X E S                                                                                */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G , H , I }   E T A N T   R E E L S  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ccombinaison_lineaire_9(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9)                                                       \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_9(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9);                                           \
                    Eblock
#define   FCcombinaison_lineaire_9(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9)                                                      \
                    Bblock                                                                                                              \
                    DEFV(complexe,tz9);                                                                                                 \
                    FCcombinaison_lineaire_8(tz9,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9);                                              \
                    FCcombinaison_lineaire_2(z,a,z1,FU,tz9);                                                                            \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S O M M E   Z = Z1 + Z2   D E   2   N O M B R E S   C O M P L E X E S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Csomme(z,z1,z2)                                                                                                               \
                    Bblock                                                                                                              \
                    FCsomme(z,z1,z2);                                                                                                   \
                    Eblock
#define   FCsomme(z,z1,z2)                                                                                                              \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_C(FCsomme_____utiliser_l_arithmetique_etendue                   \
                                                                         ,BLOC(FgCsomme(z,z1,z2);)                                      \
                                                                          );                                                            \
                    Eblock
#define   FgCsomme(z,z1,z2)                                                                                                             \
                    Bblock                                                                                                              \
                    Test(IL_NE_FAUT_PAS(FgCsomme_FgCproduit_____autoriser_l_arithmetique_folklorique_dans_C))                           \
                                        /* Test introduit le 20181210160907 pour le plaisir des yeux...                              */ \
                         Bblock                                                                                                         \
                         FCinitialisation(z                                                                                             \
                                         ,ADD2(Reelle(z1),Reelle(z2))                                                                   \
                                         ,ADD2(Imaginaire(z1),Imaginaire(z2))                                                           \
                                          );                                                                                            \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FCinitialisation(z                                                                                             \
                                         ,FgCsomme____Reelle______folklorique(Reelle(z1),Imaginaire(z1),Reelle(z2),Imaginaire(z2))      \
                                         ,FgCsomme____Imaginaire__folklorique(Reelle(z1),Imaginaire(z1),Reelle(z2),Imaginaire(z2))      \
                                          );                                                                                            \
                                        /* Jusqu'au 20220823135212, il y avait ci-dessus :                                           */ \
                                        /*                                                                                           */ \
                                        /*                  (Reelle(z1),Reelle(z2),Imaginaire(z1),Imaginaire(z2))                    */ \
                                        /*                                                                                           */ \
                                        /* or 'v $ximcf/outils$FON .R1.I1.R2.I2.' utilise un ordre plus logique. C'est cette erreur  */ \
                                        /* qui explique la presence de l'anomalie 'v $ximcf/common$DEF 20220822112834' (corrigee a   */ \
                                        /* cette date) puisqu'elle impliquait la permutation de 'R2' et 'I1'...                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne peut pas definir :                                       */
                                        /*                                                                                           */
                                        /*                  #    define    FCsomme(z,z1,z2)                                       \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGsomme(VIDE                                 \  */
                                        /*                                                  ,complexe                             \  */
                                        /*                                                  ,PRECISION_DES_NOMBRES_COMPLEXES      \  */
                                        /*                                                  ,z                                    \  */
                                        /*                                                  ,z1,z2                                \  */
                                        /*                                                  ,dReelle,dImaginaire                  \  */
                                        /*                                                  ,ADD2                                 \  */
                                        /*                                                   );                                   \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* car la fonction 'ADD2(...)' n'effectue pas l'affectation des valeurs...                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I F F E R E N C E   Z = Z1 - Z2   D E   2   N O M B R E S   C O M P L E X E S  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cdifference(z,z1,z2)                                                                                                          \
                    Bblock                                                                                                              \
                    FCdifference(z,z1,z2);                                                                                              \
                    Eblock
#define   FCdifference(z,z1,z2)                                                                                                         \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_C(FCdifference_____utiliser_l_arithmetique_etendue              \
                                                                         ,BLOC(FgCdifference(z,z1,z2);)                                 \
                                                                          );                                                            \
                    Eblock
#define   FgCdifference(z,z1,z2)                                                                                                        \
                    Bblock                                                                                                              \
                    Test(IL_NE_FAUT_PAS(FgCsomme_FgCproduit_____autoriser_l_arithmetique_folklorique_dans_C))                           \
                                        /* Test introduit le 20181212120506 pour le plaisir des yeux...                              */ \
                         Bblock                                                                                                         \
                         FCinitialisation(z                                                                                             \
                                         ,SOUS(Reelle(z1),Reelle(z2))                                                                   \
                                         ,SOUS(Imaginaire(z1),Imaginaire(z2))                                                           \
                                          );                                                                                            \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(complexe,z_intermediaire_difference);                                                                     \
                                                                                                                                        \
                         FCforme_lineaire(z_intermediaire_difference,NEGA(FU),z2,FZERO);                                                \
                                                                                                                                        \
                         FCsomme(z,z1,z_intermediaire_difference);                                                                      \
                                        /* Ainsi, la difference est ramenee a une somme...                                           */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne peut pas definir :                                       */
                                        /*                                                                                           */
                                        /*                  #    define    FCdifference(z,z1,z2)                                  \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGdifference(VIDE                            \  */
                                        /*                                                       ,complexe                        \  */
                                        /*                                                       ,PRECISION_DES_NOMBRES_COMPLEXES \  */
                                        /*                                                       ,z                               \  */
                                        /*                                                       ,z1,z2                           \  */
                                        /*                                                       ,dReelle,dImaginaire             \  */
                                        /*                                                       ,SOUS                            \  */
                                        /*                                                        );                              \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* car la fonction 'SOUS(...)' n'effectue pas l'affectation des valeurs...                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R P O L A T I O N   Z = A*Z1 + B*Z2   E N T R E   2   N O M B R E S   C O M P L E X E S                            */
/*        L E S   N O M B R E S    { A , B }   E T A N T   R E E L S  :                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cinterpolation(z,alpha,z1,beta,z2)                                                                                            \
                    Bblock                                                                                                              \
                    FCinterpolation(z,alpha,z1,beta,z2);                                                                                \
                    Eblock
#define   FCinterpolation(z,alpha,z1,beta,z2)                                                                                           \
                    Bblock                                                                                                              \
                    FgCinterpolation(z,alpha,z1,beta,z2);                                                                               \
                    Eblock
#define   FgCinterpolation(z,alpha,z1,beta,z2)                                                                                          \
                    Bblock                                                                                                              \
                    FCcombinaison_lineaire_2(z,alpha,z1,beta,z2);                                                                       \
                                        /* On notera le 20181212115436 que ceci est identique a 'FgCcombinaison_lineaire_2(...)',    */ \
                                        /* d'ou l'intrduction de l'usage de cette derniere le 20181212120117...                      */ \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne peut pas definir :                                       */
                                        /*                                                                                           */
                                        /*                  #    define    FCinterpolation(z,alpha,z1,beta,z2)                    \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGinterpolation                              \  */
                                        /*                                                     (VIDE                              \  */
                                        /*                                                     ,complexe                          \  */
                                        /*                                                     ,PRECISION_DES_NOMBRES_COMPLEXES   \  */
                                        /*                                                     ,z                                 \  */
                                        /*                                                     ,z1,z2                             \  */
                                        /*                                                     ,dReelle,dImaginaire               \  */
                                        /*                                                     ,LIN2                              \  */
                                        /*                                                      );                                \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* car la fonction 'LIN2(...)' n'effectue pas l'affectation des valeurs...                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C H O I X   D ' U N   N O M B R E   C O M P L E X E   P A R M I   D E U X  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CHOI1_C(z1,z2)                                                                                                                \
                    z1
#define   CHOI2_C(z1,z2)                                                                                                                \
                    z2
                                        /* Introduit le 20230323135750 par symetrie avec ce qui a ete defini pour les                */
                                        /* hyper-complexes et les hyper-hyper-complexes...                                           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   Z = Z1 * Z2   D E   2   N O M B R E S   C O M P L E X E S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cproduit(z,z1,z2)                                                                                                             \
                    Bblock                                                                                                              \
                    FCproduit(z,z1,z2);                                                                                                 \
                    Eblock
#define   FCproduit(z,z1,z2)                                                                                                            \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_C(FCproduit_____utiliser_l_arithmetique_etendue                 \
                                                                         ,BLOC(FgCproduit(z,z1,z2);)                                    \
                                                                          );                                                            \
                    Eblock
#define   FgCproduit(z,z1,z2)                                                                                                           \
                    Bblock                                                                                                              \
                    DEFV(complexe,z_intermediaire_produit);                                                                             \
                                        /* Ce nombre complexe intermediaire est destine a traiter les cas ou par malheur le nombre   */ \
                                        /* complexe resultat 'z' serait identique a l'un des deux arguments ('z1' ou 'z2')...        */ \
                                                                                                                                        \
                    Test(IL_NE_FAUT_PAS(FgCsomme_FgCproduit_____autoriser_l_arithmetique_folklorique_dans_C))                           \
                                        /* Test introduit le 20181210160907 pour le plaisir des yeux...                              */ \
                         Bblock                                                                                                         \
                         FCinitialisation(z_intermediaire_produit                                                                       \
                                         ,SOUS(MUL2(Reelle(z1),Reelle(z2))                                                              \
                                              ,MUL2(Imaginaire(z1),Imaginaire(z2))                                                      \
                                               )                                                                                        \
                                         ,ADD2(MUL2(Reelle(z1),Imaginaire(z2))                                                          \
                                              ,MUL2(Imaginaire(z1),Reelle(z2))                                                          \
                                               )                                                                                        \
                                          );                                                                                            \
                                        /* Calcul du produit a destination du nombre complexe intermediaire...                       */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FCinitialisation(z_intermediaire_produit                                                                       \
                                         ,FgCproduit__Reelle______folklorique(Reelle(z1),Imaginaire(z1),Reelle(z2),Imaginaire(z2))      \
                                         ,FgCproduit__Imaginaire__folklorique(Reelle(z1),Imaginaire(z1),Reelle(z2),Imaginaire(z2))      \
                                          );                                                                                            \
                                        /* Calcul du produit a destination du nombre complexe intermediaire...                       */ \
                                        /*                                                                                           */ \
                                        /* Jusqu'au 20220823135212, il y avait ci-dessus :                                           */ \
                                        /*                                                                                           */ \
                                        /*                  (Reelle(z1),Reelle(z2),Imaginaire(z1),Imaginaire(z2))                    */ \
                                        /*                                                                                           */ \
                                        /* or 'v $ximcf/outils$FON .R1.I1.R2.I2.' utilise un ordre plus logique. C'est cette erreur  */ \
                                        /* qui explique la presence de l'anomalie 'v $ximcf/common$DEF 20220822112834' (corrigee a   */ \
                                        /* cette date) puisqu'elle impliquait la permutation de 'R2' et 'I1'...                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    FCegal(z,z_intermediaire_produit);                                                                                  \
                                        /* Mise a jour du nombre complexe resultat...                                                */ \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne peut pas definir :                                       */
                                        /*                                                                                           */
                                        /*                  #    define    FCproduit(z,z1,z2)                                     \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGproduit(VIDE                               \  */
                                        /*                                                    ,complexe                           \  */
                                        /*                                                    ,PRECISION_DES_NOMBRES_COMPLEXES    \  */
                                        /*                                                    ,z                                  \  */
                                        /*                                                    ,z1,z2                              \  */
                                        /*                                                    ,dReelle,dImaginaire                \  */
                                        /*                                                    ,EGAL                               \  */
                                        /*                                                    ,NEUT                               \  */
                                        /*                                                    ,ADD2                               \  */
                                        /*                                                    ,SOUS                               \  */
                                        /*                                                    ,MUL2                               \  */
                                        /*                                                     );                                 \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* car les fonctions 'ADD2(...)', 'SOUS(...)' et 'MUL2(...)' n'effectuent pas l'affectation  */
                                        /* des valeurs...                                                                            */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                N                                                                                  */
/*        P U I S S A N C E   N - I E M E   Z = Z1    ( P O S I T I V E   O U   N E G A T I V E )                                    */
/*        D ' U N   N O M B R E   C O M P L E X E  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cpuissance(z,z1,exposant)                                                                                                     \
                    Bblock                                                                                                              \
                    FCpuissance(z,z1,exposant);                                                                                         \
                    Eblock
#define   FCpuissance(z,z1,exposant)                                                                                                    \
                    Bblock                                                                                                              \
                    FgCpuissance(z,z1,exposant);                                                                                        \
                    Eblock
#define   FgCpuissance(z,z1,exposant)                                                                                                   \
                                        /* Definition introduite le 20091118105839...                                                */ \
                    Bblock                                                                                                              \
                    Test(EST_ENTIER(exposant))                                                                                          \
                                        /* Test introduit le 20100608133537 pour plus de generalite...                               */ \
                         Bblock                                                                                                         \
                         DEFV(complexe,z_cumul_multiplicatif);                                                                          \
                         FCegal(z_cumul_multiplicatif,C_____nombre_complexe_p1__0);                                                     \
                                        /* Nombre complexe intermediaire donnant le "cumul multiplicatif" courant. Il est            */ \
                                        /* initialise ici a {1,0} et c'est cette valeur qui est renvoyee en cas d'erreur...          */ \
                                        /*                                                                                           */ \
                                        /* On notera le 20091223094639 qu'il n'est pas possible d'optimiser cette sequence en        */ \
                                        /* faisant une iteration de moins via l'initialisation :                                     */ \
                                        /*                                                                                           */ \
                                        /*                  FCegal(z_cumul_multiplicatif,z1);                                        */ \
                                        /*                                                                                           */ \
                                        /* puis :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  Repe(TRMU(exposant))                                                     */ \
                                        /*                                                                                           */ \
                                        /* a cause du cas de l'exposant nul pour lequel le resultat est {1,0}...                     */ \
                                                                                                                                        \
                         Test(IFGE(exposant,ZERO))                                                                                      \
                              Bblock                                                                                                    \
                              Repe(NEUT(exposant))                                                                                      \
                                   Bblock                                                                                               \
                                   FCproduit(z_cumul_multiplicatif,z_cumul_multiplicatif,z1);                                           \
                                   Eblock                                                                                               \
                              ERep                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Repe(NEGA(exposant))                                                                                      \
                                   Bblock                                                                                               \
                                   FCquotient(z_cumul_multiplicatif,z_cumul_multiplicatif,z1);                                          \
                                        /* La possibilite de calculer des puissances negatives a ete introduite le 20100316171635.   */ \
                                   Eblock                                                                                               \
                              ERep                                                                                                      \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         FCegal(z,z_cumul_multiplicatif);                                                                               \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(complexe,z_exposant);                                                                                     \
                                        /* Exposant complexe.                                                                        */ \
                                                                                                                                        \
                         FCinitialisation(z_exposant                                                                                    \
                                         ,exposant                                                                                      \
                                         ,I0_Complexe                                                                                   \
                                          );                                                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  exposant + i.0                                                           */ \
                                        /*                                                                                           */ \
                         FCexponentielle_complexe(z                                                                                     \
                                                 ,z1                                                                                    \
                                                 ,z_exposant                                                                            \
                                                  );                                                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                    exposant + i.0                                                         */ \
                                        /*                  z1                                                                       */ \
                                        /*                                                                                           */ \
                                        /* (introduit le 20100608133537 pour plus de generalite qu'un exposant entier).              */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                     A.Z1 + B                                                                      */
/*        F O R M E   H O M O G R A P H I Q U E   Z = ----------   D E   2   N O M B R E S   C O M P L E X E S                       */
/*                                                     C.Z2 + D                                                                      */
/*                                                                                                                                   */
/*        L E S   N O M B R E S   ' A ' , ' B ' , ' C '   E T   ' D '   E T A N T   R E E L S  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cforme_homographique(z,alpha,z1,beta,gamma,z2,delta)                                                                          \
                    Bblock                                                                                                              \
                    FCforme_homographique(z,alpha,z1,beta,gamma,z2,delta);                                                              \
                    Eblock
#define   FCforme_homographique(z,alpha,z1,beta,gamma,z2,delta)                                                                         \
                    Bblock                                                                                                              \
                    FgCforme_homographique(z,alpha,z1,beta,gamma,z2,delta);                                                             \
                    Eblock
#define   FgCforme_homographique(z,alpha,z1,beta,gamma,z2,delta)                                                                        \
                                        /* Definition introduite le 20091021150516...                                                */ \
                    Bblock                                                                                                              \
                    DEFV(complexe,z___numerateur);                                                                                      \
                    DEFV(complexe,z_denominateur);                                                                                      \
                                        /* Numerateur et denominateur de la forme homographique.                                     */ \
                                                                                                                                        \
                    FCforme_lineaire(z___numerateur,alpha,z1,beta);                                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  A.z1 + B                                                                 */ \
                                        /*                                                                                           */ \
                    FCforme_lineaire(z_denominateur,gamma,z2,delta);                                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  C.z2 + D                                                                 */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                    FCquotient(z,z___numerateur,z_denominateur);                                                                        \
                                        /* Mise a jour du nombre complexe resultat :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                   A.z1 + B                                                                */ \
                                        /*                  ----------                                                               */ \
                                        /*                   C.z2 + D                                                                */ \
                                        /*                                                                                           */ \
                                        /* en notant qu'en general les deux nombres 'z1' et 'z2' sont identiques...                  */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                         --                                                                                        */
/*                               Z1     Z1.Z2                                                                                        */
/*        Q U O T I E N T   Z = ---- = -------   D E   2   N O M B R E S   C O M P L E X E S  :                                      */
/*                               Z2         2                                                                                        */
/*                                      |Z2|                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cquotient(z,z1,z2)                                                                                                            \
                    Bblock                                                                                                              \
                    FCquotient(z,z1,z2);                                                                                                \
                    Eblock
#define   FCquotient(z,z1,z2)                                                                                                           \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_C(FCquotient_____utiliser_l_arithmetique_etendue                \
                                                                         ,BLOC(FgCquotient(z,z1,z2);)                                   \
                                                                          );                                                            \
                    Eblock
#define   FgCquotient(z,z1,z2)                                                                                                          \
                                        /* ATTENTION, pendant longtemps j'ai ecrit :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  Bblock                                                                   */ \
                                        /*                  DEFV(complexe,z_intermediaire);                                          */ \
                                        /*                  FCinitialisation(z_intermediaire                                         */ \
                                        /*                                  ,DIVZ(SOUS(MUL2(Reelle(z1),CReelle(z2))                  */ \
                                        /*                                            ,MUL2(Imaginaire(z1),CImaginaire(z2))          */ \
                                        /*                                             )                                             */ \
                                        /*                                       ,FCmodule2(z2)                                      */ \
                                        /*                                        )                                                  */ \
                                        /*                                  ,DIVZ(ADD2(MUL2(Reelle(z1),CImaginaire(z2))              */ \
                                        /*                                            ,MUL2(Imaginaire(z1),CReelle(z2))              */ \
                                        /*                                             )                                             */ \
                                        /*                                       ,FCmodule2(z2)                                      */ \
                                        /*                                        )                                                  */ \
                                        /*                                   );                                                      */ \
                                        /*                  FCegal(z,z_intermediaire);                                               */ \
                                        /*                  Eblock                                                                   */ \
                                        /*                                                                                           */ \
                                        /* mais cela n'etait pas tres elegant...                                                     */ \
                    Bblock                                                                                                              \
                    DEFV(complexe,z2_barre);                                                                                            \
                                        /* Ce nombre complexe est le conjugue du nombre complexe argument 'z2'.                      */ \
                    DEFV(complexe,z_intermediaire_quotient_1);                                                                          \
                    DEFV(complexe,z_intermediaire_quotient_2);                                                                          \
                                        /* Ces deux nombres complexes intermediaires sont destines a traiter les cas ou par malheur  */ \
                                        /* le nombre complexe resultat 'z' serait identique a l'un des deux arguments 'z1' ou 'z2'.  */ \
                                                                                                                                        \
                    FCconjugaison(z2_barre,z2);                                                                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  --                                                                       */ \
                                        /*                  z2                                                                       */ \
                                        /*                                                                                           */ \
                    FCproduit(z_intermediaire_quotient_1,z1,z2_barre);                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                     --                                                                    */ \
                                        /*                  z1.z2                                                                    */ \
                                        /*                                                                                           */ \
                    FCforme_lineaire(z_intermediaire_quotient_2,fINVZ(FCmodule2(z2)),z_intermediaire_quotient_1,FZERO);                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                      --                                                                   */ \
                                        /*                   z1.z2                                                                   */ \
                                        /*                  -------                                                                  */ \
                                        /*                       2                                                                   */ \
                                        /*                   |z2|                                                                    */ \
                                        /*                                                                                           */ \
                                        /* Le 20071201105511 'INVZ(...)' fut remplace tardivement par 'fINVZ(...)'...                */ \
                    FCegal(z,z_intermediaire_quotient_2);                                                                               \
                                        /* Mise a jour du nombre complexe resultat...                                                */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                             1                                                                                                     */
/*        I N V E R S E   Z = ----   D ' U N   N O M B R E   C O M P L E X E  :                                                      */
/*                             Z1                                                                                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cinverse(z,z1)                                                                                                                \
                    Bblock                                                                                                              \
                    FCinverse(z,z1);                                                                                                    \
                    Eblock
#define   FCinverse(z,z1)                                                                                                               \
                    Bblock                                                                                                              \
                    FgCinverse(z,z1);                                                                                                   \
                    Eblock
#define   FgCinverse(z,z1)                                                                                                              \
                                        /* Ces definitions furent introduites le 20060425154232...                                   */ \
                    Bblock                                                                                                              \
                    FCquotient(z,C_____nombre_complexe_p1__0,z1);                                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   1                                                                       */ \
                                        /*                  ----                                                                     */ \
                                        /*                   z1                                                                      */ \
                                        /*                                                                                           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                               2                                                                   */
/*        N O R M E   O U   M O D U L E   A U   C A R R E   | Z |    D ' U N   N O M B R E   C O M P L E X E  :                      */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cmodule2(z)                                                                                                                   \
                    FCmodule2(z)
#define   FCmodule2(z)                                                                                                                  \
                    CRho_2D(Reelle(z),Imaginaire(z))
                                        /* ATTENTION, on notera que l'on ne peut pas definir la norme par :                          */
                                        /*                                                                                           */
                                        /*                           -                                                               */
                                        /*                  N(z) = z.z                                                               */
                                        /*                                                                                           */
                                        /* car en effet le produit 'FCproduit(...)' fait intervenir des variables intermediaires     */
                                        /* qui sont incompatibles avec l'utilisation de 'FCmodule2(...)' en tant que scalaire        */
                                        /* dans des expressions...                                                                   */

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
                                        /* ATTENTION, voir le commentaire ci-dessous...                                              */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
                                        /* ATTENTION, on notera que l'on ne definit pas :                                            */
                                        /*                                                                                           */
                                        /*                  #    define    FCmodule2(z)                                           \  */
                                        /*                                           Bblock                                       \  */
                                        /*                                           FGproduit(VIDE                               \  */
                                        /*                                                    ,complexe                           \  */
                                        /*                                                    ,PRECISION_DES_NOMBRES_COMPLEXES    \  */
                                        /*                                                    ,z                                  \  */
                                        /*                                                    ,dReelle,dImaginaire                \  */
                                        /*                                                    ,EXP2                               \  */
                                        /*                                                     );                                 \  */
                                        /*                                           Eblock                                          */
                                        /*                                                                                           */
                                        /* pour des raisons de performance, la version de 'FCmodule2(...)' figurant ci-dessus,       */
                                        /* etant optimale...                                                                         */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M O D U L E   | Z |   D ' U N   N O M B R E   C O M P L E X E  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   C_MODULE_UNITAIRE                                                                                                             \
                    FU

#define   Cmodule(z)                                                                                                                    \
                    FCmodule(z)
#define   FCmodule(z)                                                                                                                   \
                    RACX(FCmodule2(z))

#define   LogCmodule(z)                                                                                                                 \
                    LOGX(Cmodule(z))                                                                                                    \
                                        /* Introduit le 20180927085818 pour son utilite en geometrie "tropicale" (anciennement       */ \
                                        /* appelee "MAX-PLUS"...).                                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        " R E D U C T I O N "   D E S   C O M P O S A N T E S   D ' U N   N O M B R E   C O M P L E X E  :                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    On appelera "reduction" des composantes                                                                        */
/*                  d'un nombre complexe 'z', le nombre                                                                              */
/*                  reel suivant :                                                                                                   */
/*                                                                                                                                   */
/*                                      cR.R(z)+cI.I(z)                                                                              */
/*                                                                                                                                   */
/*                  ou 'R(z)', par exemple, designe la partie Reelle                                                                 */
/*                  de 'z'.                                                                                                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Creduction(z,coefficientR,coefficientI)                                                                                       \
                    FCreduction(z,coefficientR,coefficientI)
#define   FCreduction(z,coefficientR,coefficientI)                                                                                      \
                    LIZ2(coefficientR,Reelle(z)                                                                                         \
                        ,coefficientI,Imaginaire(z)                                                                                     \
                         )

                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */
                                        /*                                                                                           */
                                        /*                  #    define    FGreduction(prefixe,corps,sous_corps,...)              \  */
                                        /*                  (...)                                                                    */
                                        /*                                                                                           */
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FC...(...)' qui sont   */
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                             --                                                                                                    */
/*        T R A C E   Z = Z1 + Z1   D ' U N   N O M B R E   C O M P L E X E  :                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Rappel :                                                                                                                   */
/*                                                                                                                                   */
/*                    Si N(z) et T(z) designent respectivement                                                                       */
/*                  la norme et la trace du nombre complexe 'z',                                                                     */
/*                  on a :                                                                                                           */
/*                                                                                                                                   */
/*                                       2                                                                                           */
/*                                      z  - T(z).z + N(z) = 0                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Ctrace(z,z1)                                                                                                                  \
                    Bblock                                                                                                              \
                    FCtrace(z,z1);                                                                                                      \
                    Eblock
#define   FCtrace(z,z1)                                                                                                                 \
                    Bblock                                                                                                              \
                    FgCtrace(z,z1);                                                                                                     \
                    Eblock
#define   FgCtrace(z,z1)                                                                                                                \
                    Bblock                                                                                                              \
                    DEFV(complexe,z1_barre);                                                                                            \
                                        /* Ce nombre complexe est le conjugue du nombre complexe argument 'z1'.                      */ \
                                                                                                                                        \
                    FCconjugaison(z1_barre,z1);                                                                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  --                                                                       */ \
                                        /*                  z1                                                                       */ \
                                        /*                                                                                           */ \
                    FCsomme(z,z1,z1_barre);                                                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                       --                                                                  */ \
                                        /*                  z1 + z1                                                                  */ \
                                        /*                                                                                           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R O T A T I O N   E T   H O M O T H E T I E   D ' U N   N O M B R E   C O M P L E X E  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Crotation_et_homothetie(z,z1,rapport,angle)                                                                                   \
                    Bblock                                                                                                              \
                    FCrotation_et_homothetie(z,z1,rapport,angle);                                                                       \
                    Eblock
#define   FCrotation_et_homothetie(z,z1,rapport,angle)                                                                                  \
                    Bblock                                                                                                              \
                    FgCrotation_et_homothetie(z,z1,rapport,angle);                                                                      \
                    Eblock
#define   FgCrotation_et_homothetie(z,z1,rapport,angle)                                                                                 \
                    Bblock                                                                                                              \
                    DEFV(complexe,z_definition_de_la_rotation_et_homothetie);                                                           \
                                        /* Ce nombre complexe contient la definition de la rotation et de l'homothetie.              */ \
                                                                                                                                        \
                    FCinitialisation(z_definition_de_la_rotation_et_homothetie                                                          \
                                    ,Xcartesienne_2D(rapport,angle)                                                                     \
                                    ,Ycartesienne_2D(rapport,angle)                                                                     \
                                     );                                                                                                 \
                                        /* Definition de la rotation et de l'homothetie.                                             */ \
                    FCproduit(z,z1,z_definition_de_la_rotation_et_homothetie);                                                          \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                              i.angle                                                      */ \
                                        /*                  z1.rapport.e                                                             */ \
                                        /*                                                                                           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R O T A T I O N   D ' U N   N O M B R E   C O M P L E X E  :                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Crotation(z,z1,angle)                                                                                                         \
                    Bblock                                                                                                              \
                    FCrotation(z,z1,angle);                                                                                             \
                    Eblock
#define   FCrotation(z,z1,angle)                                                                                                        \
                    Bblock                                                                                                              \
                    FgCrotation(z,z1,angle);                                                                                            \
                    Eblock
#define   FgCrotation(z,z1,angle)                                                                                                       \
                    Bblock                                                                                                              \
                    FCrotation_et_homothetie(z,z1,FU,angle);                                                                            \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        H O M O T H E T I E   D ' U N   N O M B R E   C O M P L E X E  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Chomothetie(z,z1,rapport)                                                                                                     \
                    Bblock                                                                                                              \
                    FChomothetie(z,z1,rapport);                                                                                         \
                    Eblock
#define   FChomothetie(z,z1,rapport)                                                                                                    \
                    Bblock                                                                                                              \
                    FgChomothetie(z,z1,rapport);                                                                                        \
                    Eblock
#define   FgChomothetie(z,z1,rapport)                                                                                                   \
                    Bblock                                                                                                              \
                    FCrotation_et_homothetie(z,z1,rapport,FZERO);                                                                       \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A R G U M E N T   D E   Z   D A N S   [ - P I , + P I ]   D ' U N   N O M B R E   C O M P L E X E  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cargument_PI(z)                                                                                                               \
                    FCargument_PI(z)
#define   FCargument_PI(z)                                                                                                              \
                    gTheta_2D(ARTG                                                                                                      \
                             ,R0_Complexe,I0_Complexe                                                                                   \
                             ,Reelle(z),Imaginaire(z)                                                                                   \
                              )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A R G U M E N T   D E   Z   D A N S   [ 0 , 2 . P I ]   D ' U N   N O M B R E   C O M P L E X E  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cargument_2PI(z)                                                                                                              \
                    FCargument_2PI(z)
#define   FCargument_2PI(z)                                                                                                             \
                    gTheta_2D(ATAN                                                                                                      \
                             ,R0_Complexe,I0_Complexe                                                                                   \
                             ,Reelle(z),Imaginaire(z)                                                                                   \
                              )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M P O S A N T E S   C A R T E S I E N N E S   D ' U N   N O M B R E   C O M P L E X E  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Les procedures suivantes furent introduites le 20061209094527...                          */

#define   CcomposanteR(rho,theta)                                                                                                       \
                    FCcomposanteR(rho,theta)
#define   FCcomposanteR(rho,theta)                                                                                                      \
                    Xcartesienne_2D(rho,theta)

#define   CcomposanteI(rho,theta)                                                                                                       \
                    FCcomposanteI(rho,theta)
#define   FCcomposanteI(rho,theta)                                                                                                      \
                    Ycartesienne_2D(rho,theta)

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E   F O N C T I O N S   C O M P L E X E S   U S U E L L E S  :                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    On retrouvera toutes ces definitions dans                                                                      */
/*                  le livre "L'Outil Mathematique" de Roger                                                                         */
/*                  Petit (couverture rouge), publie chez Masson,                                                                    */
/*                  a partir de la page 176.                                                                                         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I A T I O N   C O M P L E X E   A   B A S E   R E E L L E  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cexponentielle(z,base,z1)                                                                                                     \
                    Bblock                                                                                                              \
                    FCexponentielle(z,base,z1);                                                                                         \
                    Eblock
#define   FCexponentielle(z,base,z1)                                                                                                    \
                    Bblock                                                                                                              \
                    FgCexponentielle(z,base,z1);                                                                                        \
                    Eblock
#define   FgCexponentielle(z,base,z1)                                                                                                   \
                    Bblock                                                                                                              \
                    DEFV(complexe,zA);                                                                                                  \
                    DEFV(complexe,zB);                                                                                                  \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    FCforme_lineaire(zA                                                                                                 \
                                    ,LOGX(base)                                                                                         \
                                    ,z1                                                                                                 \
                                    ,FZERO                                                                                              \
                                     );                                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  z  = (x1 + i.y1).Log(base)                                               */ \
                                        /*                   A                                                                       */ \
                                        /*                                                                                           */ \
                                        /* ou {x1,y1} designe respectivement {Reelle(z1),Imaginaire(z1)}.                            */ \
                    FCinitialisation(zB                                                                                                 \
                                    ,FCcomposanteR(Rho1_Complexe,Imaginaire(zA))                                                        \
                                    ,FCcomposanteI(Rho1_Complexe,Imaginaire(zA))                                                        \
                                     );                                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  z  = cos(y1.Log(base)) + i.sin(y1.Log(base))                             */ \
                                        /*                   B                                                                       */ \
                                        /*                                                                                           */ \
                    FCforme_lineaire(z                                                                                                  \
                                    ,EXPB(Reelle(zA))                                                                                   \
                                    ,zB                                                                                                 \
                                    ,FZERO                                                                                              \
                                     );                                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                       x1.Log(base)                                                        */ \
                                        /*                  z = e            .[cos(y1.Log(base)) + i.sin(y1.Log(base))]              */ \
                                        /*                                                                                           */ \
                                        /* On notera que l'on utilise 'EXPB(...)' et non pas 'EXPX(...)' a cause du bug              */ \
                                        /* 'BUG_SYSTEME_SG_C_exp'...                                                                 */ \
                                        /*                                                                                           */ \
                                        /* Ce calcul repose sur les relations suivantes :                                            */ \
                                        /*                                                                                           */ \
                                        /*                      z1       x1 + i.y1                                                   */ \
                                        /*                  base   = base                                                            */ \
                                        /*                                                                                           */ \
                                        /*                               x1     i.y1                                                 */ \
                                        /*                         = base  .base                                                     */ \
                                        /*                                                                                           */ \
                                        /*                            x1.log(base)  i.[y1.log(base)]                                 */ \
                                        /*                         = e            .e                                                 */ \
                                        /*                                                                                           */ \
                                        /*                            x1.log(base)                                                   */ \
                                        /*                         = e            .{cos[y1.log(base)] + i.sin[y1.log(base)]}         */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /* evidemment...                                                                             */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, jusqu'au 20240626111544 il y avait ici par erreur :                            */ \
                                        /*                                                                                           */ \
                                        /*                  EXba(base,Reelle(zA))                                                    */ \
                                        /*                                                                                           */ \
                                        /* ce qui s'est vu lors de la mise au point de l'image 'v $xiirc/ZETA.21$m.IdM'...           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I A T I O N   C O M P L E X E   A   B A S E   C O M P L E X E  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cexponentielle_complexe(z,base,z1)                                                                                            \
                    Bblock                                                                                                              \
                    FCexponentielle_complexe(z,base,z1);                                                                                \
                    Eblock
#define   FCexponentielle_complexe(z,base,z1)                                                                                           \
                    Bblock                                                                                                              \
                    FgCexponentielle_complexe(z,base,z1);                                                                               \
                    Eblock
#define   FgCexponentielle_complexe(z,base,z1)                                                                                          \
                    Bblock                                                                                                              \
                    Test(FCTestIFEQ(base,C_____nombre_complexe__0__0))                                                                  \
                         Bblock                                                                                                         \
                         FCegal(z,C_____nombre_complexe__0__0);                                                                         \
                                        /* Valeur arbitraire introduite le 20210218120647...                                         */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(complexe,logarithme_base);                                                                                \
                         DEFV(complexe,z_produit);                                                                                      \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                         FClogarithme(logarithme_base,base);                                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  log(base)                                                                */ \
                                        /*                                                                                           */ \
                         FCproduit(z_produit,z1,logarithme_base);                                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  z1.log(base)                                                             */ \
                                        /*                                                                                           */ \
                         FCexponentielle(z,EN,z_produit);                                                                               \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   z1.log(base)                                                            */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L O G A R I T H M E   C O M P L E X E  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Clogarithme(z,z1)                                                                                                             \
                    Bblock                                                                                                              \
                    FClogarithme(z,z1);                                                                                                 \
                    Eblock
#define   FClogarithme(z,z1)                                                                                                            \
                    Bblock                                                                                                              \
                    FgClogarithme(z,z1);                                                                                                \
                    Eblock
#define   FgClogarithme(z,z1)                                                                                                           \
                    Bblock                                                                                                              \
                    DEFV(Float,INIT(module_z1,FCmodule(z1)));                                                                           \
                    DEFV(Float,INIT(argument_z1,FCargument_PI(z1)));                                                                    \
                                        /* Module et argument du nombre 'z1'. ATTENTION, jusqu'au 19990623142749, j'utilisai         */ \
                                        /* ici 'FCargument_2PI(...)'. Mais l'utilisation de 'FClogarithme(...)' dans la fonction     */ \
                                        /* 'v $ximcf/fonction$FON fFCfamma_sommation_Euler_MacLaurin' a montre qu'il fallait         */ \
                                        /* utiliser 'FCargument_PI(...)' afin d'eviter une discontinuite sur l'axe reel...           */ \
                                                                                                                                        \
                    FCinitialisation(z                                                                                                  \
                                    ,COND(IZEQ_a_peu_pres(module_z1,GRAND_EPSILON),F_MOINS_LE_PETIT_INFINI,LOGX(module_z1))             \
                                    ,argument_z1                                                                                        \
                                     );                                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  z = log(module(z1)) + i.argument(z1)                                     */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'en toute generalite, c'est la nullite "parfaite" du module qui devrait       */ \
                                        /* etre testee, mais en faisant ainsi, on risquerait des debordements ulterieurs, d'ou       */ \
                                        /* ce dispositif "a epsilon pres" introduit le 19990701124949.                               */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   T R I G O N O M E T R I Q U E S   C O M P L E X E S                                                          */
/*        C I R C U L A I R E S   E T   H Y P E R B O L I Q U E S   D E   T Y P E   2  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FCcosinus_sinus_circulaires_et_hyperboliques__type_2(z,z1,f11,f12,signe,f21,f22)                                              \
                                        /* Procedure introduite le 20230206170001...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(complexe,z1_partieReelle);                                                                                     \
                    DEFV(Float,INIT(module_de_z1_partieReelle,FLOT__UNDEF));                                                            \
                                                                                                                                        \
                    DEFV(complexe,z1_partieImaginaire);                                                                                 \
                    DEFV(Float,INIT(module_de_z1_partieImaginaire,FLOT__UNDEF));                                                        \
                                                                                                                                        \
                    DEFV(Float,INIT(f11_de_module_de_z1_partieReelle,FLOT__UNDEF));                                                     \
                    DEFV(Float,INIT(f12_de_module_de_z1_partieImaginaire,FLOT__UNDEF));                                                 \
                    DEFV(Float,INIT(f21_de_module_de_z1_partieReelle,FLOT__UNDEF));                                                     \
                    DEFV(Float,INIT(f22_de_module_de_z1_partieImaginaire,FLOT__UNDEF));                                                 \
                                                                                                                                        \
                    FCpartieReelle(z1_partieReelle,z1);                                                                                 \
                    FCpartieImaginaire(z1_partieImaginaire,z1);                                                                         \
                                                                                                                                        \
                    EGAL(module_de_z1_partieReelle,FCmodule(z1_partieReelle));                                                          \
                    EGAL(module_de_z1_partieImaginaire,FCmodule(z1_partieImaginaire));                                                  \
                                                                                                                                        \
                    EGAL(f11_de_module_de_z1_partieReelle,f11(module_de_z1_partieReelle));                                              \
                    EGAL(f21_de_module_de_z1_partieReelle,f21(module_de_z1_partieReelle));                                              \
                                                                                                                                        \
                    EGAL(f12_de_module_de_z1_partieImaginaire,f12(module_de_z1_partieImaginaire));                                      \
                    EGAL(f22_de_module_de_z1_partieImaginaire,f22(module_de_z1_partieImaginaire));                                      \
                                                                                                                                        \
                    FCinitialisation(z                                                                                                  \
                                    ,MUL2(f11_de_module_de_z1_partieReelle                                                              \
                                         ,f12_de_module_de_z1_partieImaginaire                                                          \
                                          )                                                                                             \
                                    ,MUL4(FLOT(signe)                                                                                   \
                                         ,f21_de_module_de_z1_partieReelle                                                              \
                                         ,f22_de_module_de_z1_partieImaginaire                                                          \
                                         ,Imaginaire(z1_partieImaginaire)                                                               \
                                          )                                                                                             \
                                     );                                                                                                 \
                    Eblock                                                                                                              \
                                        /* Le 20230206110454, il semblerait que la bonne definition des lignes trigonometriques      */ \
                                        /* circulaires et hyperboliques d'un nombre complexe soit :                                  */ \
                                        /*                                                                                           */ \
                                        /*        :Debut_listMN_DEFINITION_LIGNES_TRIGONOMETRIQUES_NOMBRES_COMPLEXES:                */ \
                                        /*                                                                                           */ \
                                        /*                  cos(z) = [cos(R(z)).ch(|I(z)|)]  - [sin(R(z)).shc(|I(z)|).I(z)]          */ \
                                        /*                  sin(z) = [sin(R(z)).ch(|I(z)|)]  + [cos(R(z)).shc(|I(z)|).I(z)]          */ \
                                        /*                                                                                           */ \
                                        /*                  ch(z)  = [ch(R(z)).cos(|I(z)|)]  + [sh(R(z)).sinc(|I(z)|).I(z)]          */ \
                                        /*                  sh(z)  = [sh(R(z)).cos(|I(z)|)]  + [ch(R(z)).sinc(|I(z)|).I(z)]          */ \
                                        /*                                                                                           */ \
                                        /* en faisant les hypotheses audacieuses suivantes :                                         */ \
                                        /*                                                                                           */ \
                                        /*                  z  = R(z) + I(z)                                                         */ \
                                        /*                  z  = a    + b.i                                                          */ \
                                        /*                                                                                           */ \
                                        /*                  I  =        b.i                                             [I = I(z)]   */ \
                                        /*                                                                              [m = |I|]    */ \
                                        /*                                                                                           */ \
                                        /*                  z  = a + I                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                          f11    f12      f21    f22                       */ \
                                        /*                                                                                           */ \
                                        /*                  cos(z) = cos(a+I)   = [cos(a).cos(I) - sin(a).sin(I)]                    */ \
                                        /*                  sin(z) = cos(a+I)   = [sin(a).cos(I) + cos(a).sin(I)]                    */ \
                                        /*                                                                                           */ \
                                        /*                  ch(z)  = ch(a+I)    = [ch(a).ch(I)   + sh(a).sh(I)]                      */ \
                                        /*                  sh(z)  = sh(a+I)    = [sh(a).ch(I)   + ch(a).sh(I)]                      */ \
                                        /*                                                                                           */ \
                                        /* En effet, par des developpements en series tel celui de 'FgHCexponentielle(...)', on      */ \
                                        /* montre facilement que :                                                                   */ \
                                        /*                                                                                           */ \
                                        /*                  cos(I) = ch(m)                                                           */ \
                                        /*                                                                                           */ \
                                        /*                            sh(m)                                                          */ \
                                        /*                  sin(I) = -------.I  = shc(m).I                                           */ \
                                        /*                              m                                                            */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  ch(I)  = cos(m)                                                          */ \
                                        /*                                                                                           */ \
                                        /*                            sin(m)                                                         */ \
                                        /*                  sh(I)  = --------.I = sinc(m).I                                          */ \
                                        /*                              m                                                            */ \
                                        /*                                                                                           */ \
                                        /* d'ou :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                                          f11    f12      f21    f22                       */ \
                                        /*                                                                                           */ \
                                        /*                  cos(z) = cos(a+I)   = [cos(a).ch(m)  - sin(a).shc(m).I]                  */ \
                                        /*                  sin(z) = cos(a+I)   = [sin(a).ch(m)  + cos(a).shc(m).I]                  */ \
                                        /*                                                                                           */ \
                                        /*                  ch(z)  = ch(a+I)    = [ch(a).cos(m)  + sh(a).sinc(m).I]                  */ \
                                        /*                  sh(z)  = sh(a+I)    = [sh(a).cos(m)  + ch(a).sinc(m).I]                  */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /* On verifie aisement que :                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                     2         2        2         2     2                                  */ \
                                        /*                  cos (z) + sin (z) = ch (m) + shc (m).I                                   */ \
                                        /*                                                                                           */ \
                                        /*                                                  2                                        */ \
                                        /*                                        2       sh (m)   2            2      2             */ \
                                        /*                                    = ch (m) + --------.I           [I  = -(m )]           */ \
                                        /*                                                   2                                       */ \
                                        /*                                                  m                                        */ \
                                        /*                                                                                           */ \
                                        /*                                        2        2                                         */ \
                                        /*                                    = ch (m) - sh (m)                                      */ \
                                        /*                                                                    ['m' etant un Reel...] */ \
                                        /*                                    = 1                                                    */ \
                                        /*                                                                                           */ \
                                        /* et de meme :                                                                              */ \
                                        /*                                                                                           */ \
                                        /*                    2        2                                                             */ \
                                        /*                  ch (z) - sh (z)   = 1                                                    */ \
                                        /*                                                                                           */ \
                                        /*        :Fin_listMN_DEFINITION_LIGNES_TRIGONOMETRIQUES_NOMBRES_COMPLEXES:                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   T R I G O N O M E T R I Q U E S   C O M P L E X E S                                                          */
/*        C I R C U L A I R E S   E T   H Y P E R B O L I Q U E S   D E   T Y P E   1  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FCcosinus_sinus_circulaires_et_hyperboliques__type_1(z,z1,facteur_des_exposants,FCplus_ou_moins,diviseur)                     \
                    Bblock                                                                                                              \
                    DEFV(complexe,plus_z1);                                                                                             \
                    DEFV(complexe,moins_z1);                                                                                            \
                    DEFV(complexe,zF1);                                                                                                 \
                    DEFV(complexe,zF2);                                                                                                 \
                    DEFV(complexe,zE1);                                                                                                 \
                    DEFV(complexe,zE2);                                                                                                 \
                    DEFV(complexe,zN);                                                                                                  \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    FCegal(plus_z1,z1);                                                                                                 \
                    FCnegation(moins_z1,z1);                                                                                            \
                                                                                                                                        \
                    FCproduit(zF1,facteur_des_exposants,plus_z1);                                                                       \
                    FCproduit(zF2,facteur_des_exposants,moins_z1);                                                                      \
                                        /* Definition des nombres '+f.z1' et '-f.z1'.                                                */ \
                                                                                                                                        \
                    FCexponentielle(zE1,EN,zF1);                                                                                        \
                    FCexponentielle(zE2,EN,zF2);                                                                                        \
                                                                                                                                        \
                    FCplus_ou_moins(zN,zE1,zE2);                                                                                        \
                                                                                                                                        \
                    FCquotient(z,zN,diviseur);                                                                                          \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +f.z1    -f.z1                                                     */ \
                                        /*                       e      & e                                                          */ \
                                        /*                  z = -----------------                                                    */ \
                                        /*                             d                                                             */ \
                                        /*                                                                                           */ \
                                        /* ou '&' et 'd' valent {+,-} et {2,2i} pour le cosinus et le sinus respectivement, et       */ \
                                        /* ou 'f' vaut {i,1} pour les lignes circulaires et hyperboliques respectivement.            */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   T R I G O N O M E T R I Q U E S   C O M P L E X E S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FCcosinus_sinus(z,z1,FCplus_ou_moins,diviseur)                                                                                \
                    Bblock                                                                                                              \
                    FCcosinus_sinus_circulaires_et_hyperboliques__type_1(z                                                              \
                                                                        ,z1                                                             \
                                                                        ,C_____nombre_complexe__0_p1                                    \
                                                                        ,FCplus_ou_moins                                                \
                                                                        ,diviseur                                                       \
                                                                         );                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.z1    -i.z1                                                     */ \
                                        /*                       e      & e                                                          */ \
                                        /*                  z = -----------------                                                    */ \
                                        /*                             d                                                             */ \
                                        /*                                                                                           */ \
                                        /* ou '&' et 'd' valent {+,-} et {2,2.i} pour le cosinus et le sinus respectivement.         */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O S I N U S   C O M P L E X E  :                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cserie_cosinus(z,z1)                                                                                                          \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FCserie_cosinus(z,z1);                                                                                              \
                    Eblock
#define   FCserie_cosinus(z,z1)                                                                                                         \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgCserie_cosinus(z,z1);                                                                                             \
                    Eblock
#define   FgCserie_cosinus(z,z1)                                                                                                        \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(z,z1                                                                               \
                                                    ,GENERER_UN_COSINUS,TRIGONOMETRIE_CIRCULAIRE__                                      \
                                                    ,complexe                                                                           \
                                                    ,FCegal                                                                             \
                                                    ,FCforme_lineaire                                                                   \
                                                    ,FCsomme                                                                            \
                                                    ,aCpuissance                                                                        \
                                                    ,FgCserie_cosinus_____C_____exposant                                                \
                                                    ,FCproduit                                                                          \
                                                    ,FgCserie_cosinus_____C_____nombre_complexe__0__0                                   \
                                                    ,C_____nombre_complexe_p1__0                                                        \
                                                     );                                                                                 \
                    Eblock

#define   Ccosinus(z,z1)                                                                                                                \
                    Bblock                                                                                                              \
                    FCcosinus(z,z1);                                                                                                    \
                    Eblock
#define   FCcosinus(z,z1)                                                                                                               \
                    Bblock                                                                                                              \
                    FgCcosinus(z,z1);                                                                                                   \
                    Eblock
#define   FgCcosinus(z,z1)                                                                                                              \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FCcosinus_____compatibilite_20230206))                                                                 \
                                        /* Test introduit le 20230206170001...                                                       */ \
                         Bblock                                                                                                         \
                         FCcosinus_sinus(z,z1,FCsomme,C_____nombre_complexe_p2__0);                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.z1    -i.z1                                                     */ \
                                        /*                       e      + e                                                          */ \
                                        /*                  z = -----------------                                                    */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FCcosinus_____compatibilite_20230321))                                                            \
                                        /* Test introduit le 20230321184556...                                                       */ \
                              Bblock                                                                                                    \
                              FCcosinus_sinus_circulaires_et_hyperboliques__type_2(z,z1,COSX,COHX,SIGNE_MOINS,SINX,SIHC);               \
                                        /* Introduit le 20230206170001...                                                            */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              DEFV(complexe,exponentielle_z1);                                                                          \
                                                                                                                                        \
                              FCexponentielle(exponentielle_z1,EN,z1);                                                                  \
                              FCpartieReelle(z,exponentielle_z1);                                                                       \
                                        /* Mis sous cette forme le 20230321184556...                                                 */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S I N U S   C O M P L E X E  :                                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cserie_sinus(z,z1)                                                                                                            \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FCserie_sinus(z,z1);                                                                                                \
                    Eblock
#define   FCserie_sinus(z,z1)                                                                                                           \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgCserie_sinus(z,z1);                                                                                               \
                    Eblock
#define   FgCserie_sinus(z,z1)                                                                                                          \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(z,z1                                                                               \
                                                    ,GENERER_UN_SINUS__,TRIGONOMETRIE_CIRCULAIRE__                                      \
                                                    ,complexe                                                                           \
                                                    ,FCegal                                                                             \
                                                    ,FCforme_lineaire                                                                   \
                                                    ,FCsomme                                                                            \
                                                    ,aCpuissance                                                                        \
                                                    ,FgCserie_sinus_____C_____exposant                                                  \
                                                    ,FCproduit                                                                          \
                                                    ,FgCserie_sinus_____C_____nombre_complexe__0__0                                     \
                                                    ,C_____nombre_complexe_p1__0                                                        \
                                                     );                                                                                 \
                    Eblock

#define   Csinus(z,z1)                                                                                                                  \
                    Bblock                                                                                                              \
                    FCsinus(z,z1);                                                                                                      \
                    Eblock
#define   FCsinus(z,z1)                                                                                                                 \
                    Bblock                                                                                                              \
                    FgCsinus(z,z1);                                                                                                     \
                    Eblock
#define   FgCsinus(z,z1)                                                                                                                \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FCsinus_____compatibilite_20230206))                                                                   \
                                        /* Test introduit le 20230206170001...                                                       */ \
                         Bblock                                                                                                         \
                         FCcosinus_sinus(z,z1,FCdifference,C_____nombre_complexe__0_p2);                                                \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.z1    -i.z1                                                     */ \
                                        /*                       e      - e                                                          */ \
                                        /*                  z = -----------------                                                    */ \
                                        /*                            2.i                                                            */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FCsinus_____compatibilite_20230321))                                                              \
                                        /* Test introduit le 20230321184556...                                                       */ \
                              Bblock                                                                                                    \
                              FCcosinus_sinus_circulaires_et_hyperboliques__type_2(z,z1,SINX,COHX,SIGNE_PLUS,COSX,SIHC);                \
                                        /* Procedure introduite le 20230206170001...                                                 */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              DEFV(complexe,exponentielle_z1);                                                                          \
                                                                                                                                        \
                              FCexponentielle(exponentielle_z1,EN,z1);                                                                  \
                              FCpartieImaginaire(z,exponentielle_z1);                                                                   \
                                        /* Mis sous cette forme le 20230321184556...                                                 */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A N G E N T E   C O M P L E X E  :                                                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FgCtangente_quotient(z,z1,fonction_cosinus,fonction_sinus__)                                                                  \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(complexe,cosinus_z1);                                                                                          \
                    DEFV(complexe,sinus_z1);                                                                                            \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    fonction_cosinus(cosinus_z1,z1);                                                                                    \
                    fonction_sinus__(sinus_z1,z1);                                                                                      \
                                        /* Calcul du sinus et du cosinus de 'z1'.                                                    */ \
                                                                                                                                        \
                    Test(IZNE(FCmodule(cosinus_z1)))                                                                                    \
                         Bblock                                                                                                         \
                         FCquotient(z,sinus_z1,cosinus_z1);                                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                        sinus(z1)                                                          */ \
                                        /*                  z = -------------                                                        */ \
                                        /*                       cosinus(z1)                                                         */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FCinitialisation(z                                                                                             \
                                         ,MEME_SIGNE_QUE(Reelle(sinus_z1),F_INFINI)                                                     \
                                         ,MEME_SIGNE_QUE(Imaginaire(sinus_z1),F_INFINI)                                                 \
                                          );                                                                                            \
                                        /* Lorsque le module du cosinus est nul, la valeur de la tangente est fixee de facon tout    */ \
                                        /* a fait arbitraire...                                                                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   Cserie_tangente(z,z1)                                                                                                         \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FCserie_tangente(z,z1);                                                                                             \
                    Eblock
#define   FCserie_tangente(z,z1)                                                                                                        \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FgCserie_tangente(z,z1);                                                                                            \
                    Eblock
#define   FgCserie_tangente(z,z1)                                                                                                       \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FgCtangente_quotient(z,z1,FCserie_cosinus,FCserie_sinus);                                                           \
                    Eblock

#define   Ctangente(z,z1)                                                                                                               \
                    Bblock                                                                                                              \
                    FCtangente(z,z1);                                                                                                   \
                    Eblock
#define   FCtangente(z,z1)                                                                                                              \
                    Bblock                                                                                                              \
                    FgCtangente(z,z1);                                                                                                  \
                    Eblock
#define   FgCtangente(z,z1)                                                                                                             \
                    Bblock                                                                                                              \
                    FgCtangente_quotient(z,z1,FCcosinus,FCsinus);                                                                       \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   H Y P E R B O L I Q U E S   C O M P L E X E S  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FCcosinus_sinus_hyperbolique(z,z1,FCplus_ou_moins)                                                                            \
                    Bblock                                                                                                              \
                    FCcosinus_sinus_circulaires_et_hyperboliques__type_1(z                                                              \
                                                                        ,z1                                                             \
                                                                        ,C_____nombre_complexe_p1__0                                    \
                                                                        ,FCplus_ou_moins                                                \
                                                                        ,C_____nombre_complexe_p2__0                                    \
                                                                         );                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +z1    -z1                                                         */ \
                                        /*                       e    & e                                                            */ \
                                        /*                  z = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                                        /* ou '&' vaut {+,-} pour le cosinus et le sinus respectivement.                             */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O S I N U S   H Y P E R B O L I Q U E   C O M P L E X E  :                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cserie_cosinus_hyperbolique(z,z1)                                                                                             \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FCserie_cosinus_hyperbolique(z,z1);                                                                                 \
                    Eblock
#define   FCserie_cosinus_hyperbolique(z,z1)                                                                                            \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgCserie_cosinus_hyperbolique(z,z1);                                                                                \
                    Eblock
#define   FgCserie_cosinus_hyperbolique(z,z1)                                                                                           \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(z,z1                                                                               \
                                                    ,GENERER_UN_COSINUS,TRIGONOMETRIE_HYPERBOLIQUE                                      \
                                                    ,complexe                                                                           \
                                                    ,FCegal                                                                             \
                                                    ,FCforme_lineaire                                                                   \
                                                    ,FCsomme                                                                            \
                                                    ,aCpuissance                                                                        \
                                                    ,FgCserie_cosinus_hyperbolique_____C_____exposant                                   \
                                                    ,FCproduit                                                                          \
                                                    ,FgCserie_cosinus_hyperbolique_____C_____nombre_complexe__0__0                      \
                                                    ,C_____nombre_complexe_p1__0                                                        \
                                                     );                                                                                 \
                    Eblock

#define   Ccosinus_hyperbolique(z,z1)                                                                                                   \
                    Bblock                                                                                                              \
                    FCcosinus_hyperbolique(z,z1);                                                                                       \
                    Eblock
#define   FCcosinus_hyperbolique(z,z1)                                                                                                  \
                    Bblock                                                                                                              \
                    FgCcosinus_hyperbolique(z,z1);                                                                                      \
                    Eblock
#define   FgCcosinus_hyperbolique(z,z1)                                                                                                 \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FCcosinus_hyperbolique_____compatibilite_20230206))                                                    \
                                        /* Test introduit le 20230206170001...                                                       */ \
                         Bblock                                                                                                         \
                         FCcosinus_sinus_hyperbolique(z,z1,FCsomme);                                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +z1    -z1                                                         */ \
                                        /*                       e    + e                                                            */ \
                                        /*                  z = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FCcosinus_sinus_circulaires_et_hyperboliques__type_2(z,z1,COHX,COSX,SIGNE_PLUS,SIHX,SINC);                     \
                                        /* Procedure introduite le 20230206170001...                                                 */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S I N U S   H Y P E R B O L I Q U E   C O M P L E X E  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Cserie_sinus_hyperbolique(z,z1)                                                                                               \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FCserie_sinus_hyperbolique(z,z1);                                                                                   \
                    Eblock
#define   FCserie_sinus_hyperbolique(z,z1)                                                                                              \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgCserie_sinus_hyperbolique(z,z1);                                                                                  \
                    Eblock
#define   FgCserie_sinus_hyperbolique(z,z1)                                                                                             \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(z,z1                                                                               \
                                                    ,GENERER_UN_SINUS__,TRIGONOMETRIE_HYPERBOLIQUE                                      \
                                                    ,complexe                                                                           \
                                                    ,FCegal                                                                             \
                                                    ,FCforme_lineaire                                                                   \
                                                    ,FCsomme                                                                            \
                                                    ,aCpuissance                                                                        \
                                                    ,FgCserie_sinus_hyperbolique_____C_____exposant                                     \
                                                    ,FCproduit                                                                          \
                                                    ,FgCserie_sinus_hyperbolique_____C_____nombre_complexe__0__0                        \
                                                    ,C_____nombre_complexe_p1__0                                                        \
                                                     );                                                                                 \
                    Eblock

#define   Csinus_hyperbolique(z,z1)                                                                                                     \
                    Bblock                                                                                                              \
                    FCsinus_hyperbolique(z,z1);                                                                                         \
                    Eblock
#define   FCsinus_hyperbolique(z,z1)                                                                                                    \
                    Bblock                                                                                                              \
                    FgCsinus_hyperbolique(z,z1);                                                                                        \
                    Eblock
#define   FgCsinus_hyperbolique(z,z1)                                                                                                   \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FCsinus_hyperbolique_____compatibilite_20230206))                                                      \
                                        /* Test introduit le 20230206170001...                                                       */ \
                         Bblock                                                                                                         \
                         FCcosinus_sinus_hyperbolique(z,z1,FCdifference);                                                               \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +z1    -z1                                                         */ \
                                        /*                       e    - e                                                            */ \
                                        /*                  z = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FCcosinus_sinus_circulaires_et_hyperboliques__type_2(z,z1,SIHX,COSX,SIGNE_PLUS,COHX,SINC);                     \
                                        /* Procedure introduite le 20230206170001...                                                 */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A N G E N T E   H Y P E R B O L I Q U E   C O M P L E X E  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FgCtangente_hyperbolique_quotient(z,z1,fonction_cosinus_hyperbolique,fonction_sinus___hyperbolique)                           \
                    Bblock                                                                                                              \
                    DEFV(complexe,cosinus_hyperbolique_z1);                                                                             \
                    DEFV(complexe,sinus_hyperbolique_z1);                                                                               \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    fonction_cosinus_hyperbolique(cosinus_hyperbolique_z1,z1);                                                          \
                    fonction_sinus___hyperbolique(sinus_hyperbolique_z1,z1);                                                            \
                                        /* Calcul du sinus et du cosinus de 'z1'.                                                    */ \
                                                                                                                                        \
                    Test(IZNE(FCmodule(cosinus_hyperbolique_z1)))                                                                       \
                         Bblock                                                                                                         \
                         FCquotient(z,sinus_hyperbolique_z1,cosinus_hyperbolique_z1);                                                   \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                        sinus_hyperbolique(z1)                                             */ \
                                        /*                  z = --------------------------                                           */ \
                                        /*                       cosinus_hyperbolique(z1)                                            */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FCinitialisation(z                                                                                             \
                                         ,MEME_SIGNE_QUE(Reelle(sinus_hyperbolique_z1),F_INFINI)                                        \
                                         ,MEME_SIGNE_QUE(Imaginaire(sinus_hyperbolique_z1),F_INFINI)                                    \
                                          );                                                                                            \
                                        /* Lorsque le module du cosinus est nul, la valeur de la tangente est fixee de facon tout    */ \
                                        /* a fait arbitraire...                                                                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   Cserie_tangente_hyperbolique(z,z1)                                                                                            \
                    Bblock                                                                                                              \
                    FCserie_tangente_hyperbolique(z,z1);                                                                                \
                    Eblock
#define   FCserie_tangente_hyperbolique(z,z1)                                                                                           \
                    Bblock                                                                                                              \
                    FgCserie_tangente_hyperbolique(z,z1);                                                                               \
                    Eblock
#define   FgCserie_tangente_hyperbolique(z,z1)                                                                                          \
                    Bblock                                                                                                              \
                    FgCtangente_hyperbolique_quotient(z,z1,FCserie_cosinus_hyperbolique,FCserie_sinus_hyperbolique);                    \
                    Eblock

#define   Ctangente_hyperbolique(z,z1)                                                                                                  \
                    Bblock                                                                                                              \
                    FCtangente_hyperbolique(z,z1);                                                                                      \
                    Eblock
#define   FCtangente_hyperbolique(z,z1)                                                                                                 \
                    Bblock                                                                                                              \
                    FgCtangente_hyperbolique(z,z1);                                                                                     \
                    Eblock
#define   FgCtangente_hyperbolique(z,z1)                                                                                                \
                    Bblock                                                                                                              \
                    FgCtangente_hyperbolique_quotient(z,z1,FCcosinus_hyperbolique,FCsinus_hyperbolique);                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R   " S Y M E T R I E "   A V E C   C E   Q U I   E S T   F A I T   P O U R   L E S   E S P A C E S                    */
/*        H Y P E R - C O M P L E X E   E T   H Y P E R - H Y P E R - C O M P L E X E  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* Introduit le 20121103091821 par "symetrie", mais sans implementer d'Accelerateur car      */
                                        /* cela ne se justifie pas...                                                                */

#ifdef    NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_COMPLEXES
#    define    aCconjugaison(z,z1)                                                                                                      \
                         Bblock                                                                                                         \
                         Cconjugaison(z,z1);                                                                                            \
                         Eblock
#    define    aCmodulo(z,z1,Rorg,Rext,Iorg,Iext)                                                                                       \
                         Bblock                                                                                                         \
                         Cmodulo(z,z1,Rorg,Rext,Iorg,Iext);                                                                             \
                         Eblock
#    define    aCproduit(z,z1,z2)                                                                                                       \
                         Bblock                                                                                                         \
                         Cproduit(z,z1,z2);                                                                                             \
                         Eblock
#    define    aCpuissance(z,z1,exposant)                                                                                               \
                         Bblock                                                                                                         \
                         Cpuissance(z,z1,exposant);                                                                                     \
                         Eblock
#    define    aCquotient(z,z1,z2)                                                                                                      \
                         Bblock                                                                                                         \
                         Cquotient(z,z1,z2);                                                                                            \
                         Eblock
#    define    aCsomme(z,z1,z2)                                                                                                         \
                         Bblock                                                                                                         \
                         Csomme(z,z1,z2);                                                                                               \
                         Eblock
#    define    aCdifference(z,z1,z2)                                                                                                    \
                         Bblock                                                                                                         \
                         Cdifference(z,z1,z2);                                                                                          \
                         Eblock
#    define    aCforme_lineaire(z,alpha,z1,beta)                                                                                        \
                         Bblock                                                                                                         \
                         Cforme_lineaire(z,alpha,z1,beta);                                                                              \
                         Eblock
#    define    aCcombinaison_lineaire_2(z,a,z1,b,z2)                                                                                    \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_2(z,a,z1,b,z2);                                                                          \
                         Eblock
#    define    aCcombinaison_lineaire_3(z,a,z1,b,z2,c,z3)                                                                               \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_3(z,a,z1,b,z2,c,z3);                                                                     \
                         Eblock
#    define    aCcombinaison_lineaire_4(z,a,z1,b,z2,c,z3,d,z4)                                                                          \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_4(z,a,z1,b,z2,c,z3,d,z4);                                                                \
                         Eblock
#    define    aCcombinaison_lineaire_5(z,a,z1,b,z2,c,z3,d,z4,e,z5)                                                                     \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_5(z,a,z1,b,z2,c,z3,d,z4,e,z5);                                                           \
                         Eblock
#    define    aCcombinaison_lineaire_6(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6)                                                                \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_6(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6);                                                      \
                         Eblock
#    define    aCcombinaison_lineaire_7(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7)                                                           \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_7(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7);                                                 \
                         Eblock
#    define    aCcombinaison_lineaire_8(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8)                                                      \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_8(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8);                                            \
                         Eblock
#    define    aCcombinaison_lineaire_9(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9)                                                 \
                         Bblock                                                                                                         \
                         Ccombinaison_lineaire_9(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9);                                       \
                         Eblock
#    define    aCexponentielle(z,base,z1)                                                                                               \
                         Bblock                                                                                                         \
                         Cexponentielle(z,base,z1);                                                                                     \
                         Eblock
#    nodefine  aClogarithme(z,z1)                                                                                                       \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         Clogarithme(z,z1);                                                                                             \
                         Eblock
#    nodefine  aCcosinus(z,z1)                                                                                                          \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         Ccosinus(z,z1);                                                                                                \
                         Eblock
#    nodefine  aCsinus(z,z1)                                                                                                            \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         Csinus(z,z1);                                                                                                  \
                         Eblock
#    nodefine  aCtangente(z,z1)                                                                                                         \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         Ctangente(z,z1);                                                                                               \
                         Eblock
#    nodefine  aCcosinus_hyperbolique(z,z1)                                                                                             \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         Ccosinus_hyperbolique(z,z1);                                                                                   \
                         Eblock
#    nodefine  aCsinus_hyperbolique(z,z1)                                                                                               \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         Csinus_hyperbolique(z,z1);                                                                                     \
                         Eblock
#    nodefine  aCtangente_hyperbolique(z,z1)                                                                                            \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         Ctangente_hyperbolique(z,z1);                                                                                  \
                         Eblock
#Aifdef   NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_COMPLEXES
#    define    aCconjugaison(z,z1)                                                                                                      \
                         Bblock                                                                                                         \
                         EGAL(z,fFCconjugaison(z1));                                                                                    \
                         Eblock
#    define    aCmodulo(z,z1,Rorg,Rext,Iorg,Iext)                                                                                       \
                         Bblock                                                                                                         \
                         EGAL(z,fFCmodulo(z1,Rorg,Rext,Iorg,Iext));                                                                     \
                         Eblock
#    define    aCproduit(z,z1,z2)                                                                                                       \
                         Bblock                                                                                                         \
                         EGAL(z,fFCproduit(z1,z2));                                                                                     \
                         Eblock
#    define    aCpuissance(z,z1,exposant)                                                                                               \
                         Bblock                                                                                                         \
                         EGAL(z,fFCpuissance(z1,exposant));                                                                             \
                         Eblock
#    define    aCquotient(z,z1,z2)                                                                                                      \
                         Bblock                                                                                                         \
                         EGAL(z,fFCquotient(z1,z2));                                                                                    \
                         Eblock
#    define    aCsomme(z,z1,z2)                                                                                                         \
                         Bblock                                                                                                         \
                         EGAL(z,fFCsomme(z1,z2));                                                                                       \
                         Eblock
#    define    aCdifference(z,z1,z2)                                                                                                    \
                         Bblock                                                                                                         \
                         EGAL(z,fFCdifference(z1,z2));                                                                                  \
                         Eblock
#    define    aCforme_lineaire(z,alpha,z1,beta)                                                                                        \
                         Bblock                                                                                                         \
                         EGAL(z,fFCforme_lineaire(alpha,z1,beta));                                                                      \
                         Eblock
#    define    aCcombinaison_lineaire_2(z,a,z1,b,z2)                                                                                    \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_2(a,z1,b,z2));                                                                  \
                         Eblock
#    define    aCcombinaison_lineaire_3(z,a,z1,b,z2,c,z3)                                                                               \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_3(a,z1,b,z2,c,z3));                                                             \
                         Eblock
#    define    aCcombinaison_lineaire_4(z,a,z1,b,z2,c,z3,d,z4)                                                                          \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_4(a,z1,b,z2,c,z3,d,z4));                                                        \
                         Eblock
#    define    aCcombinaison_lineaire_5(z,a,z1,b,z2,c,z3,d,z4,e,z5)                                                                     \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_5(z,a,z1,b,z2,c,z3,d,z4,e,z5));                                                 \
                         Eblock
#    define    aCcombinaison_lineaire_6(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6)                                                                \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_6(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6));                                            \
                         Eblock
#    define    aCcombinaison_lineaire_7(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7)                                                           \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_7(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7));                                       \
                         Eblock
#    define    aCcombinaison_lineaire_8(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8)                                                      \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_8(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8));                                  \
                         Eblock
#    define    aCcombinaison_lineaire_9(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9)                                                 \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcombinaison_lineaire_9(z,a,z1,b,z2,c,z3,d,z4,e,z5,f,z6,g,z7,h,z8,i,z9));                             \
                         Eblock
#    define    aCexponentielle(z,base,z1)                                                                                               \
                         Bblock                                                                                                         \
                         EGAL(z,fFCexponentielle(base,z1));                                                                             \
                         Eblock
#    nodefine  aClogarithme(z,z1)                                                                                                       \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(z,faFClogarithme(z1));                                                                                    \
                                        /* On notera le 'faFC...' a cause de 'v $ximcf/fonction$FON fFClogarithme'...                */ \
                         Eblock
#    nodefine  aCcosinus(z,z1)                                                                                                          \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(z,fFCcosinus(z1));                                                                                        \
                         Eblock
#    nodefine  aCsinus(z,z1)                                                                                                            \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(z,fFCsinus(z1));                                                                                          \
                         Eblock
#    nodefine  aCtangente(z,z1)                                                                                                         \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(z,fFCtangente(z1));                                                                                       \
                         Eblock
#    nodefine  aCcosinus_hyperbolique(z,z1)                                                                                             \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(z,faFCcosinus_hyperbolique(z1));                                                                          \
                                        /* On notera le 'faFC...' a cause de 'v $ximcf/fonction$FON fFCcosinus_hyperbolique'...      */ \
                         Eblock
#    nodefine  aCsinus_hyperbolique(z,z1)                                                                                               \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(z,faFCsinus_hyperbolique(z1));                                                                            \
                                        /* On notera le 'faFC...' a cause de 'v $ximcf/fonction$FON fFCsinus_hyperbolique'...        */ \
                         Eblock
#    nodefine  aCtangente_hyperbolique(z,z1)                                                                                            \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(z,faFCtangente_hyperbolique(z1));                                                                         \
                                        /* On notera le 'faFC...' a cause de 'v $ximcf/fonction$FON fFCtangente_hyperbolique'...     */ \
                         Eblock
#Eifdef   NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_COMPLEXES

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N T R O L E   D E   L ' A R I T H M E T I Q U E   E T E N D U E                                                        */
/*        L O R S   D E   C A L C U L S   S U R   L E S   N O M B R E S   H Y P E R - C O M P L E X E S  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Ceci a ete introduit le 20070129115950...                                                 */

#ifdef    FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES
#    define    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(faire_de_l_arithmetique_etendue,sequence)                         \
                         Bblock                                                                                                         \
                         USs_GooF______CONDITIONNEL                                                                                     \
                             (IFET(IL_FAUT(faire_de_l_arithmetique_etendue)                                                             \
                                  ,EST_VRAI(HC_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base)                 \
                                   )                                                                                                    \
                             ,sequence                                                                                                  \
                              );                                                                                                        \
                                        /* Execution de la sequence argument avec l'arithmetique etendue si elle est disponible...   */ \
                         Eblock
#Aifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES
#    define    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(faire_de_l_arithmetique_etendue,sequence)                         \
                         Bblock                                                                                                         \
                         BLOC(sequence);                                                                                                \
                                        /* Execution de la sequence argument avec l'arithmetique de base...                          */ \
                         Eblock
#Eifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES

#define   FHCinitialisation_____utiliser_l_arithmetique_etendue                                                                         \
                    FHCinitialisation_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HC
#define   FHCsomme_____utiliser_l_arithmetique_etendue                                                                                  \
                    FHCsomme_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HC
#define   FHCdifference_____utiliser_l_arithmetique_etendue                                                                             \
                    FHCdifference_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HC
#define   FHCproduit_____utiliser_l_arithmetique_etendue                                                                                \
                    FHCproduit_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HC
#define   FHCproduit_____utiliser_l_arithmetique_etendue_dans_CxC                                                                       \
                    FHCproduit_____si_GooF_activable_et_si_arithmetique_etendue_aller_dans_CxC_au_lieu_de_HC
#define   FHCquotient_____utiliser_l_arithmetique_etendue                                                                               \
                    FHCquotient_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HC
                                        /* Definitions introduites le 20070130100534 pour raccourcir certaines lignes suivantes...   */
                                        /*                                                                                           */
                                        /* Ces definitions furent completees le 20120918142202 pour ce qui concerne CxC...           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E D I T I O N   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PRINT_DANS_HC(titre,q)                                                                                                        \
                    Bblock                                                                                                              \
                    CAL3(Prme5("%s={%+.^^^,%+.^^^,%+.^^^,%+.^^^}\n",titre,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)));    \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   Q = ( R E E L L E , I M A G I N A I R E , J M A G I N A I R E , K M A G I N A I R E )        */
/*        D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCinitialisation(q,partie_reelle,partie_imaginaire,partie_jmaginaire,partie_kmaginaire)                                       \
                    Bblock                                                                                                              \
                    FHCinitialisation(q,partie_reelle,partie_imaginaire,partie_jmaginaire,partie_kmaginaire);                           \
                    Eblock
#define   FHCinitialisation(q,partie_reelle,partie_imaginaire,partie_jmaginaire,partie_kmaginaire)                                      \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(FHCinitialisation_____utiliser_l_arithmetique_etendue        \
                                                                          ,BLOC(FgHCinitialisation(q                                    \
                                                                                                  ,partie_reelle                        \
                                                                                                  ,partie_imaginaire                    \
                                                                                                  ,partie_jmaginaire                    \
                                                                                                  ,partie_kmaginaire                    \
                                                                                                   );                                   \
                                                                                )                                                       \
                                                                           );                                                           \
                    Eblock                                                                                                              \
                                        /* Le 20100521140238, 'UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(...)' fut      */ \
                                        /* introduit pour 'v $ximcf/iterations$FON F_ITERATION_DANS_HC_____transformer__suite_point' */ \
                                        /* en particulier...                                                                         */
#define   bFgHCinitialisation(q,partie_reelle,partie_imaginaire,partie_jmaginaire,partie_kmaginaire)                                    \
                    Bblock                                                                                                              \
                    EGAL(HReelle(q)                                                                                                     \
                        ,partie_reelle                                                                                                  \
                         );                                                                                                             \
                    EGAL(HImaginaire(q)                                                                                                 \
                        ,partie_imaginaire                                                                                              \
                         );                                                                                                             \
                    EGAL(HJmaginaire(q)                                                                                                 \
                        ,partie_jmaginaire                                                                                              \
                         );                                                                                                             \
                    EGAL(HKmaginaire(q)                                                                                                 \
                        ,partie_kmaginaire                                                                                              \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Introduit le 20121102215336 pour simplifier 'FgHCinitialisation(...)'.                    */
#define   FgHCinitialisation(q,partie_reelle,partie_imaginaire,partie_jmaginaire,partie_kmaginaire)                                     \
                                        /* ATTENTION, on ne peut utiliser ici une definition du type :                               */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGinitialisation(prefixe,corps,sous_corps,...)         \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* car en effet, les Arguments sont des nombres Reels, et non pas des elements du sous-corps */ \
                                        /* ce qui fait que le nombre d'arguments de la procedure n'est pas independant de la         */ \
                                        /* dimension du corps...                                                                     */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q_intermediaire_initialisation);                                                                \
                                        /* Au cas ou il y aurait une dependance entre les Arguments et le Resultat (introduit        */ \
                                        /* le 20121102172614)...                                                                     */ \
                                                                                                                                        \
                    bFgHCinitialisation(q_intermediaire_initialisation                                                                  \
                                       ,partie_reelle                                                                                   \
                                       ,partie_imaginaire                                                                               \
                                       ,partie_jmaginaire                                                                               \
                                       ,partie_kmaginaire                                                                               \
                                        );                                                                                              \
                                                                                                                                        \
                    bFgHCinitialisation(q                                                                                               \
                                       ,HReelle(q_intermediaire_initialisation)                                                         \
                                       ,HImaginaire(q_intermediaire_initialisation)                                                     \
                                       ,HJmaginaire(q_intermediaire_initialisation)                                                     \
                                       ,HKmaginaire(q_intermediaire_initialisation)                                                     \
                                        );                                                                                              \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   Q = ( R H O , T E T A , P H I , A L P H A )                                                  */
/*        D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCinitialisation_trigonometrique(q,rho,theta,phi,alpha)                                                                       \
                    Bblock                                                                                                              \
                    FHCinitialisation_trigonometrique(q,rho,theta,phi,alpha);                                                           \
                    Eblock
#define   FHCinitialisation_trigonometrique(q,rho,theta,phi,alpha)                                                                      \
                    Bblock                                                                                                              \
                    FgHCinitialisation_trigonometrique(q,rho,theta,phi,alpha);                                                          \
                    Eblock
#define   FgHCinitialisation_trigonometrique(q,rho,theta,phi,alpha)                                                                     \
                    Bblock                                                                                                              \
                    FHCinitialisation(q                                                                                                 \
                                     ,FHCcomposanteR(rho,theta,phi,alpha)                                                               \
                                     ,FHCcomposanteI(rho,theta,phi,alpha)                                                               \
                                     ,FHCcomposanteJ(rho,theta,phi,alpha)                                                               \
                                     ,FHCcomposanteK(rho,theta,phi,alpha)                                                               \
                                      );                                                                                                \
                    Eblock
                                        /* Introduit le 20111229161914.                                                              */

#define   HCdefinition_trigonometrique(q,module,argument)                                                                               \
                    Bblock                                                                                                              \
                    FHCdefinition_trigonometrique(q,module,argument);                                                                   \
                    Eblock
#define   FHCdefinition_trigonometrique(q,module,argument)                                                                              \
                    Bblock                                                                                                              \
                    FgHCdefinition_trigonometrique(q,module,argument);                                                                  \
                    Eblock
#define   FgHCdefinition_trigonometrique(q,module,argument)                                                                             \
                    Bblock                                                                                                              \
                    DEFV(Float,INIT(unitaire                                                                                            \
                                   ,HCmodule(COND(IL_FAUT(FHCdefinition_trigonometrique_____compatibilite_20230320)                     \
                                                 ,HC_____quaternion__0_p1__0__0                                                         \
                                                 ,HC_____quaternion__0_p1_p1_p1                                                         \
                                                  )                                                                                     \
                                             )                                                                                          \
                                    )                                                                                                   \
                         );                                                                                                             \
                                        /* Inutile mais, par "symetrie" avec les hyper-complexes et les hyper-hyper-complexes...     */ \
                    DEFV(Float,INIT(cosinus,NEUT(MUL2(module,COSX(argument)))));                                                        \
                    DEFV(Float,INIT(sinus,FLOT__UNDEF));                                                                                \
                    DEFV(Float,INIT(sinus_de_compatibilite,FLOT__UNDEF));                                                               \
                                                                                                                                        \
                    EGAL(sinus,DIVI(MUL2(module,SINX(argument)),unitaire));                                                             \
                    EGAL(sinus_de_compatibilite,COND(IL_FAUT(FHCdefinition_trigonometrique_____compatibilite_20230320),FZERO,sinus));   \
                                                                                                                                        \
                    FHCinitialisation(q                                                                                                 \
                                     ,cosinus                                                                                           \
                                     ,sinus                                                                                             \
                                     ,sinus_de_compatibilite                                                                            \
                                     ,sinus_de_compatibilite                                                                            \
                                      );                                                                                                \
                    Eblock
                                        /* Introduit le 20230320123152 afin de se debarasser de l'usage de l'exponentielle en        */
                                        /* particulier pour les hyper-complexes et les hyper-hyper-complexes...                      */

#define   HCextension_directe(q_etendu,q)                                                                                               \
                    Bblock                                                                                                              \
                    FHCextension_directe(q_etendu,q);                                                                                   \
                    Eblock
#define   FHCextension_directe(q_etendu,q)                                                                                              \
                    Bblock                                                                                                              \
                    FgHCextension_directe(q_etendu,q);                                                                                  \
                    Eblock
#define   FgHCextension_directe(q_etendu,q)                                                                                             \
                    Bblock                                                                                                              \
                    EGAL(HCHS_Rho(q_etendu),HCmodule(q));                                                                               \
                    EGAL(HCHS_Theta(q_etendu),HCargumentT_2PI(q));                                                                      \
                    EGAL(HCHS_Phi(q_etendu),HCargumentP_2PI(q));                                                                        \
                    EGAL(HCHS_Alpha(q_etendu),HCargumentA_2PI(q));                                                                      \
                    Eblock
                                        /* Introduit le 20111230081620.                                                              */

#define   HCextension_inverse(q,q_etendu)                                                                                               \
                    Bblock                                                                                                              \
                    FHCextension_inverse(q,q_etendu);                                                                                   \
                    Eblock
#define   FHCextension_inverse(q,q_etendu)                                                                                              \
                    Bblock                                                                                                              \
                    FgHCextension_inverse(q,q_etendu);                                                                                  \
                    Eblock
#define   FgHCextension_inverse(q,q_etendu)                                                                                             \
                    Bblock                                                                                                              \
                    FHCinitialisation_trigonometrique(q                                                                                 \
                                                     ,HCHS_Rho(q_etendu)                                                                \
                                                     ,HCHS_Theta(q_etendu)                                                              \
                                                     ,HCHS_Phi(q_etendu)                                                                \
                                                     ,HCHS_Alpha(q_etendu)                                                              \
                                                      );                                                                                \
                    Eblock
                                        /* Introduit le 20111230081620.                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X T R A C T I O N   D E S   P A R T I E S   R E E L L E   E T   I M A G I N A I R E                                      */
/*        D E   2   N O M B R E S   H Y P E R - C O M P L E X E S  :                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCpartieReelle(q,q1)                                                                                                          \
                    Bblock                                                                                                              \
                    FHCpartieReelle(q,q1);                                                                                              \
                    Eblock
#define   FHCpartieReelle(q,q1)                                                                                                         \
                    Bblock                                                                                                              \
                    FgHCpartieReelle(q,q1);                                                                                             \
                    Eblock
#define   FgHCpartieReelle(q,q1)                                                                                                        \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q1_conjugue);                                                                                   \
                    DEFV(hyper_complexe,q_somme);                                                                                       \
                                                                                                                                        \
                    FHCconjugaison(q1_conjugue,q1);                                                                                     \
                    FHCsomme(q_somme,q1,q1_conjugue);                                                                                   \
                    FHCforme_lineaire(q                                                                                                 \
                                     ,INVE(CONSTANTE_DE_MOYENNE)                                                                        \
                                     ,q_somme                                                                                           \
                                     ,FZERO                                                                                             \
                                      );                                                                                                \
                                        /* La partie reelle 'PR' est definie par :                                                   */ \
                                        /*                               _                                                           */ \
                                        /*                           q + q                                                           */ \
                                        /*                  PR(q) = -------                                                          */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                    Eblock                                                                                                              \
                                        /* Extraction de la partie reelle d'un nombre hyper-complexe sous la forme d'un autre        */ \
                                        /* nombre hyper-complexe (introduit le 20230204075556)...                                    */

#define   HCpartieIJKmaginaire(q,q1)                                                                                                    \
                    Bblock                                                                                                              \
                    FHCpartieIJKmaginaire(q,q1);                                                                                        \
                    Eblock
#define   FHCpartieIJKmaginaire(q,q1)                                                                                                   \
                    Bblock                                                                                                              \
                    FgHCpartieIJKmaginaire(q,q1);                                                                                       \
                    Eblock
#define   FgHCpartieIJKmaginaire(q,q1)                                                                                                  \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q1_conjugue);                                                                                   \
                    DEFV(hyper_complexe,q_difference);                                                                                  \
                                                                                                                                        \
                    FHCconjugaison(q1_conjugue,q1);                                                                                     \
                    FHCdifference(q_difference,q1,q1_conjugue);                                                                         \
                    FHCforme_lineaire(q                                                                                                 \
                                     ,INVE(CONSTANTE_DE_MOYENNE)                                                                        \
                                     ,q_difference                                                                                      \
                                     ,FZERO                                                                                             \
                                      );                                                                                                \
                                        /* La partie imaginaire 'PI' est definie par :                                               */ \
                                        /*                               _                                                           */ \
                                        /*                           q - q                                                           */ \
                                        /*                  PI(q) = -------                                                          */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                    Eblock                                                                                                              \
                                        /* Extraction de la partie imaginaire d'un nombre hyper-complexe sous la forme d'un autre    */ \
                                        /* nombre hyper-complexe (introduit le 20230204075556)...                                    */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E G A L I T E   Q = Q1   D E   2   N O M B R E S   H Y P E R - C O M P L E X E S  :                                        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCegal(q,q1)                                                                                                                  \
                    Bblock                                                                                                              \
                    FHCegal(q,q1);                                                                                                      \
                    Eblock
#define   FHCegal(q,q1)                                                                                                                 \
                    Bblock                                                                                                              \
                    FgHCegal(q,q1);                                                                                                     \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHCegal(q,q1)                                                                                                           \
                         Bblock                                                                                                         \
                         FHCinitialisation(q                                                                                            \
                                          ,HReelle(q1)                                                                                  \
                                          ,HImaginaire(q1)                                                                              \
                                          ,HJmaginaire(q1)                                                                              \
                                          ,HKmaginaire(q1)                                                                              \
                                           );                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHCegal(q,q1)                                                                                                           \
                         Bblock                                                                                                         \
                         FGegal(H,hyper_complexe,complexe                                                                               \
                               ,q                                                                                                       \
                               ,q1                                                                                                      \
                               ,dHReelle,dHImaginaire                                                                                   \
                               ,FgCegal                                                                                                 \
                                );                                                                                                      \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   2   N O M B R E S   H Y P E R - C O M P L E X E S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* Les definitions suivantes ont ete introduites le 20210218101725...                        */

#define   HCTestIFEQ(q1,q2)                                                                                                             \
                    FHCTestIFEQ(q1,q2)
#define   FHCTestIFEQ(q1,q2)                                                                                                            \
                    I4ET(IFEQ(HReelle(q1),HReelle(q2))                                                                                  \
                        ,IFEQ(HImaginaire(q1),HImaginaire(q2))                                                                          \
                        ,IFEQ(HJmaginaire(q1),HJmaginaire(q2))                                                                          \
                        ,IFEQ(HKmaginaire(q1),HKmaginaire(q2))                                                                          \
                         )
                                        /* Test de l'egalite de 'q1' et 'q2'.                                                        */

#define   HCTestIFEQ_a_peu_pres_absolu(q1,q2,epsilon)                                                                                   \
                    FHCTestIFEQ_a_peu_pres_absolu(q1,q2,epsilon)
#define   FHCTestIFEQ_a_peu_pres_absolu(q1,q2,epsilon)                                                                                  \
                    I4ET(IFEQ_a_peu_pres_absolu(HReelle(q1),HReelle(q2),epsilon)                                                        \
                        ,IFEQ_a_peu_pres_absolu(HImaginaire(q1),HImaginaire(q2),epsilon)                                                \
                        ,IFEQ_a_peu_pres_absolu(HJmaginaire(q1),HJmaginaire(q2),epsilon)                                                \
                        ,IFEQ_a_peu_pres_absolu(HKmaginaire(q1),HKmaginaire(q2),epsilon)                                                \
                         )
                                        /* Test de l'egalite de 'q1' et 'q2' a "epsilon pres absolu".                                */

#define   HCTestIFEQ_a_peu_pres_relatif(q1,q2,pourcentage)                                                                              \
                    FHCTestIFEQ_a_peu_pres_relatif(q1,q2,pourcentage)
#define   FHCTestIFEQ_a_peu_pres_relatif(q1,q2,pourcentage)                                                                             \
                    I4ET(IFEQ_a_peu_pres_relatif(HReelle(q1),HReelle(q2),pourcentage)                                                   \
                        ,IFEQ_a_peu_pres_relatif(HImaginaire(q1),HImaginaire(q2),pourcentage)                                           \
                        ,IFEQ_a_peu_pres_relatif(HJmaginaire(q1),HJmaginaire(q2),pourcentage)                                           \
                        ,IFEQ_a_peu_pres_relatif(HKmaginaire(q1),HKmaginaire(q2),pourcentage)                                           \
                         )
                                        /* Test de l'egalite de 'q1' et 'q2' a "epsilon pres relatif".                               */

#define   HCTestIFNE(q1,q2)                                                                                                             \
                    FHCTestIFNE(q1,q2)
#define   FHCTestIFNE(q1,q2)                                                                                                            \
                    I4OU(IFNE(HReelle(q1),HReelle(q2))                                                                                  \
                        ,IFNE(HImaginaire(q1),HImaginaire(q2))                                                                          \
                        ,IFNE(HJmaginaire(q1),HJmaginaire(q2))                                                                          \
                        ,IFNE(HKmaginaire(q1),HKmaginaire(q2))                                                                          \
                         )
                                        /* Test de la non egalite de 'q1' et 'q2'.                                                   */

#define   HCTestIFNE_a_peu_pres_absolu(q1,q2,epsilon)                                                                                   \
                    FHCTestIFNE_a_peu_pres_absolu(q1,q2,epsilon)
#define   FHCTestIFNE_a_peu_pres_absolu(q1,q2,epsilon)                                                                                  \
                    I4OU(IFNE_a_peu_pres_absolu(HReelle(q1),HReelle(q2),epsilon)                                                        \
                        ,IFNE_a_peu_pres_absolu(HImaginaire(q1),HImaginaire(q2),epsilon)                                                \
                        ,IFNE_a_peu_pres_absolu(HJmaginaire(q1),HJmaginaire(q2),epsilon)                                                \
                        ,IFNE_a_peu_pres_absolu(HKmaginaire(q1),HKmaginaire(q2),epsilon)                                                \
                         )
                                        /* Test de la non egalite de 'q1' et 'q2' a "epsilon pres absolu".                           */

#define   HCTestIFNE_a_peu_pres_relatif(q1,q2,pourcentage)                                                                              \
                    FHCTestIFNE_a_peu_pres_relatif(q1,q2,pourcentage)
#define   FHCTestIFNE_a_peu_pres_relatif(q1,q2,pourcentage)                                                                             \
                    I4OU(IFNE_a_peu_pres_relatif(HReelle(q1),HReelle(q2),pourcentage)                                                   \
                        ,IFNE_a_peu_pres_relatif(HImaginaire(q1),HImaginaire(q2),pourcentage)                                           \
                        ,IFNE_a_peu_pres_relatif(HJmaginaire(q1),HJmaginaire(q2),pourcentage)                                           \
                        ,IFNE_a_peu_pres_relatif(HKmaginaire(q1),HKmaginaire(q2),pourcentage)                                           \
                         )
                                        /* Test de la non egalite de 'q1' et 'q2' a "epsilon pres relatif".                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N E G A T I O N   Q = - Q1   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCnegation(q,q1)                                                                                                              \
                    Bblock                                                                                                              \
                    FHCnegation(q,q1);                                                                                                  \
                    Eblock
#define   FHCnegation(q,q1)                                                                                                             \
                    Bblock                                                                                                              \
                    FgHCnegation(q,q1);                                                                                                 \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHCnegation(q,q1)                                                                                                       \
                         Bblock                                                                                                         \
                         FHCforme_lineaire(q                                                                                            \
                                          ,NEGA(FU)                                                                                     \
                                          ,q1                                                                                           \
                                          ,FZERO                                                                                        \
                                           );                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHCnegation(q,q1)                                                                                                       \
                         Bblock                                                                                                         \
                         FGnegation(H,hyper_complexe,complexe                                                                           \
                                   ,q                                                                                                   \
                                   ,q1                                                                                                  \
                                   ,dHReelle,dHImaginaire                                                                               \
                                   ,FgCegal                                                                                             \
                                   ,FgCnegation                                                                                         \
                                    );                                                                                                  \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                    --                                                                                             */
/*        C O N J U G A I S O N   Q = Q1   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCconjugaison(q,q1)                                                                                                           \
                    Bblock                                                                                                              \
                    FHCconjugaison(q,q1);                                                                                               \
                    Eblock
#define   FHCconjugaison(q,q1)                                                                                                          \
                    Bblock                                                                                                              \
                    FgHCconjugaison(q,q1);                                                                                              \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHCconjugaison(q,q1)                                                                                                    \
                         Bblock                                                                                                         \
                         FHCinitialisation(q                                                                                            \
                                          ,CHReelle(q1)                                                                                 \
                                          ,CHImaginaire(q1)                                                                             \
                                          ,CHJmaginaire(q1)                                                                             \
                                          ,CHKmaginaire(q1)                                                                             \
                                           );                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHCconjugaison(q,q1)                                                                                                    \
                         Bblock                                                                                                         \
                         FGconjugaison(H,hyper_complexe,complexe                                                                        \
                                      ,q                                                                                                \
                                      ,q1                                                                                               \
                                      ,dHReelle,dHImaginaire                                                                            \
                                      ,FgCegal                                                                                          \
                                      ,FgCconjugaison                                                                                   \
                                      ,FgCnegation                                                                                      \
                                       );                                                                                               \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V A L E U R   M O D U L O   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext)                                                                        \
                    Bblock                                                                                                              \
                    FHCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext);                                                            \
                    Eblock
#define   FHCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext)                                                                       \
                    Bblock                                                                                                              \
                    FgHCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext);                                                           \
                    Eblock
#define   FgHCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext)                                                                      \
                                        /* ATTENTION, on ne peut utiliser ici une definition du type :                               */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGmodulo(prefixe,corps,sous_corps,...)                 \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* a cause de la fonction 'MODF(...)' et de ses arguments...                                 */ \
                    Bblock                                                                                                              \
                    FHCinitialisation(q                                                                                                 \
                                     ,MODF(HReelle(q1),Rorg,Rext)                                                                       \
                                     ,MODF(HImaginaire(q1),Iorg,Iext)                                                                   \
                                     ,MODF(HJmaginaire(q1),Jorg,Jext)                                                                   \
                                     ,MODF(HKmaginaire(q1),Korg,Kext)                                                                   \
                                      );                                                                                                \
                    Eblock
                                        /* Procedures introduites le 20121102174217...                                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O R M E   L I N E A I R E   Q = A*Q1 + B   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCforme_lineaire(q,alpha,q1,beta)                                                                                             \
                    Bblock                                                                                                              \
                    FHCforme_lineaire(q,alpha,q1,beta);                                                                                 \
                    Eblock
#define   FHCforme_lineaire(q,alpha,q1,beta)                                                                                            \
                    Bblock                                                                                                              \
                    FgHCforme_lineaire(q,alpha,q1,beta);                                                                                \
                    Eblock
#define   FgHCforme_lineaire(q,alpha,q1,beta)                                                                                           \
                                        /* ATTENTION, on ne peut utiliser ici une definition du type :                               */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGforme_lineaire(prefixe,corps,sous_corps,...)         \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* car en effet, la decomposition recursive appliquee ailleurs ne fonctionne pas ici,        */ \
                                        /* le premier nombre Reel jouant un role tres different des autres, puisqu'il est le seul    */ \
                                        /* a etre translate de 'beta'...                                                             */ \
                    Bblock                                                                                                              \
                    FHCinitialisation(q                                                                                                 \
                                     ,LIN1(alpha,HReelle(q1),beta)                                                                      \
                                     ,LIZ1(alpha,HImaginaire(q1))                                                                       \
                                     ,LIZ1(alpha,HJmaginaire(q1))                                                                       \
                                     ,LIZ1(alpha,HKmaginaire(q1))                                                                       \
                                      );                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2                                                                  */
/*        D E   2   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S    { A , B }   E T A N T   R E E L S  :                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_2(q,a,q1,b,q2)                                                                                         \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_2(q,a,q1,b,q2);                                                                             \
                    Eblock
#define   FHCcombinaison_lineaire_2(q,a,q1,b,q2)                                                                                        \
                    Bblock                                                                                                              \
                    FgHCcombinaison_lineaire_2(q,a,q1,b,q2);                                                                            \
                    Eblock
#define   FgHCcombinaison_lineaire_2(q,a,q1,b,q2)                                                                                       \
                    Bblock                                                                                                              \
                    FHCinitialisation(q                                                                                                 \
                                     ,LIZ2(a,HReelle(q1),b,HReelle(q2))                                                                 \
                                     ,LIZ2(a,HImaginaire(q1),b,HImaginaire(q2))                                                         \
                                     ,LIZ2(a,HJmaginaire(q1),b,HJmaginaire(q2))                                                         \
                                     ,LIZ2(a,HKmaginaire(q1),b,HKmaginaire(q2))                                                         \
                                      );                                                                                                \
                    Eblock
                                        /* Introduit le 20040508121316...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2 + C*Q3                                                           */
/*        D E   3   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S   { A , B , C }   E T A N T   R E E L S  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_3(q,a,q1,b,q2,c,q3)                                                                                    \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_3(q,a,q1,b,q2,c,q3);                                                                        \
                    Eblock
#define   FHCcombinaison_lineaire_3(q,a,q1,b,q2,c,q3)                                                                                   \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,tq3);                                                                                           \
                    FHCcombinaison_lineaire_2(tq3,b,q2,c,q3);                                                                           \
                    FHCcombinaison_lineaire_2(q,a,q1,FU,tq3);                                                                           \
                    Eblock
                                        /* Introduit le 20220608142417...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2 + C*Q3 + D*Q4                                                    */
/*        D E   4   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S   { A , B , C , D }   E T A N T   R E E L S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_4(q,a,q1,b,q2,c,q3,d,q4)                                                                               \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_4(q,a,q1,b,q2,c,q3,d,q4);                                                                   \
                    Eblock
#define   FHCcombinaison_lineaire_4(q,a,q1,b,q2,c,q3,d,q4)                                                                              \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,tq4);                                                                                           \
                    FHCcombinaison_lineaire_3(tq4,b,q2,c,q3,d,q4);                                                                      \
                    FHCcombinaison_lineaire_2(q,a,q1,FU,tq4);                                                                           \
                    Eblock
                                        /* Introduit le 20220608142417...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2 + C*Q3 + D*Q4 + E*Q5                                             */
/*        D E   5   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S   { A , B , C , D , E }   E T A N T   R E E L S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_5(q,a,q1,b,q2,c,q3,d,q4,e,q5)                                                                          \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_5(q,a,q1,b,q2,c,q3,d,q4,e,q5);                                                              \
                    Eblock
#define   FHCcombinaison_lineaire_5(q,a,q1,b,q2,c,q3,d,q4,e,q5)                                                                         \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,tq5);                                                                                           \
                    FHCcombinaison_lineaire_4(tq5,b,q2,c,q3,d,q4,e,q5);                                                                 \
                    FHCcombinaison_lineaire_2(q,a,q1,FU,tq5);                                                                           \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2 + C*Q3 + D*Q4 + E*Q5 + F*Q6                                      */
/*        D E   6   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S   { A , B , C , D , E , F }   E T A N T   R E E L S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_6(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6)                                                                     \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_6(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6);                                                         \
                    Eblock
#define   FHCcombinaison_lineaire_6(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6)                                                                    \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,tq6);                                                                                           \
                    FHCcombinaison_lineaire_5(tq6,b,q2,c,q3,d,q4,e,q5,f,q6);                                                            \
                    FHCcombinaison_lineaire_2(q,a,q1,FU,tq6);                                                                           \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2 + C*Q3 + D*Q4 + E*Q5 + F*Q6 + G*Q7                               */
/*        D E   7   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G }   E T A N T   R E E L S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_7(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7)                                                                \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_7(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7);                                                    \
                    Eblock
#define   FHCcombinaison_lineaire_7(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7)                                                               \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,tq7);                                                                                           \
                    FHCcombinaison_lineaire_6(tq7,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7);                                                       \
                    FHCcombinaison_lineaire_2(q,a,q1,FU,tq7);                                                                           \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2 + C*Q3 + D*Q4 + E*Q5 + F*Q6 + G*Q7 + H*Q8                        */
/*        D E   8   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G , H }   E T A N T   R E E L S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_8(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8)                                                           \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_8(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8);                                               \
                    Eblock
#define   FHCcombinaison_lineaire_8(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8)                                                          \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,tq8);                                                                                           \
                    FHCcombinaison_lineaire_7(tq8,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8);                                                  \
                    FHCcombinaison_lineaire_2(q,a,q1,FU,tq8);                                                                           \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   Q = A*Q1 + B*Q2 + C*Q3 + D*Q4 + E*Q5 + F*Q6 + G*Q7 + H*Q8 + I*Q9                 */
/*        D E   9   N O M B R E S   H Y P E R - C O M P L E X E S                                                                    */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G , H , I }   E T A N T   R E E L S  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCcombinaison_lineaire_9(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9)                                                      \
                    Bblock                                                                                                              \
                    FHCcombinaison_lineaire_9(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9);                                          \
                    Eblock
#define   FHCcombinaison_lineaire_9(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9)                                                     \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,tq9);                                                                                           \
                    FHCcombinaison_lineaire_8(tq9,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9);                                             \
                    FHCcombinaison_lineaire_2(q,a,q1,FU,tq9);                                                                           \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S O M M E   Q = Q1 + Q2   D E   2   N O M B R E S   H Y P E R - C O M P L E X E S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCsomme(q,q1,q2)                                                                                                              \
                    Bblock                                                                                                              \
                    FHCsomme(q,q1,q2);                                                                                                  \
                    Eblock
#define   FHCsomme(q,q1,q2)                                                                                                             \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(FHCsomme_____utiliser_l_arithmetique_etendue                 \
                                                                          ,BLOC(FgHCsomme(q,q1,q2);)                                    \
                                                                           );                                                           \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHCsomme(q,q1,q2)                                                                                                       \
                         Bblock                                                                                                         \
                         FHCinitialisation(q                                                                                            \
                                          ,ADD2(HReelle(q1),HReelle(q2))                                                                \
                                          ,ADD2(HImaginaire(q1),HImaginaire(q2))                                                        \
                                          ,ADD2(HJmaginaire(q1),HJmaginaire(q2))                                                        \
                                          ,ADD2(HKmaginaire(q1),HKmaginaire(q2))                                                        \
                                           );                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHCsomme(q,q1,q2)                                                                                                       \
                         Bblock                                                                                                         \
                         FGsomme_difference(H,hyper_complexe,complexe                                                                   \
                                           ,q                                                                                           \
                                           ,q1,q2                                                                                       \
                                           ,dHReelle,dHImaginaire                                                                       \
                                           ,FgCsomme                                                                                    \
                                            );                                                                                          \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I F F E R E N C E   Q = Q1 - Q2   D E   2   N O M B R E S   H Y P E R - C O M P L E X E S  :                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCdifference(q,q1,q2)                                                                                                         \
                    Bblock                                                                                                              \
                    FHCdifference(q,q1,q2);                                                                                             \
                    Eblock
#define   FHCdifference(q,q1,q2)                                                                                                        \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(FHCdifference_____utiliser_l_arithmetique_etendue            \
                                                                          ,BLOC(FgHCdifference(q,q1,q2);)                               \
                                                                           );                                                           \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHCdifference(q,q1,q2)                                                                                                  \
                         Bblock                                                                                                         \
                         FHCinitialisation(q                                                                                            \
                                          ,SOUS(HReelle(q1),HReelle(q2))                                                                \
                                          ,SOUS(HImaginaire(q1),HImaginaire(q2))                                                        \
                                          ,SOUS(HJmaginaire(q1),HJmaginaire(q2))                                                        \
                                          ,SOUS(HKmaginaire(q1),HKmaginaire(q2))                                                        \
                                           );                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHCdifference(q,q1,q2)                                                                                                  \
                         Bblock                                                                                                         \
                         FGsomme_difference(H,hyper_complexe,complexe                                                                   \
                                           ,q                                                                                           \
                                           ,q1,q2                                                                                       \
                                           ,dHReelle,dHImaginaire                                                                       \
                                           ,FgCdifference                                                                               \
                                            );                                                                                          \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R P O L A T I O N   Q = A*Q1 + B*Q2   E N T R E   2   N O M B R E S   H Y P E R - C O M P L E X E S                */
/*        L E S   N O M B R E S    { A , B }   E T A N T   R E E L S  :                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCinterpolation(q,alpha,q1,beta,q2)                                                                                           \
                    Bblock                                                                                                              \
                    FHCinterpolation(q,alpha,q1,beta,q2);                                                                               \
                    Eblock
#define   FHCinterpolation(q,alpha,q1,beta,q2)                                                                                          \
                    Bblock                                                                                                              \
                    FgHCinterpolation(q,alpha,q1,beta,q2);                                                                              \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHCinterpolation(q,alpha,q1,beta,q2)                                                                                    \
                         Bblock                                                                                                         \
                         FHCinitialisation(q                                                                                            \
                                          ,LIZ2(alpha,HReelle(q1),beta,HReelle(q2))                                                     \
                                          ,LIZ2(alpha,HImaginaire(q1),beta,HImaginaire(q2))                                             \
                                          ,LIZ2(alpha,HJmaginaire(q1),beta,HJmaginaire(q2))                                             \
                                          ,LIZ2(alpha,HKmaginaire(q1),beta,HKmaginaire(q2))                                             \
                                           );                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHCinterpolation(q,alpha,q1,beta,q2)                                                                                    \
                         Bblock                                                                                                         \
                         FGinterpolation(H,hyper_complexe,complexe                                                                      \
                                        ,q                                                                                              \
                                        ,alpha,q1,beta,q2                                                                               \
                                        ,dHReelle,dHImaginaire                                                                          \
                                        ,FgCinterpolation                                                                               \
                                         );                                                                                             \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   Q = Q1 * Q2   D E   2   N O M B R E S   H Y P E R - C O M P L E X E S  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CHOI1_HC(q1,q2)                                                                                                               \
                    q1
#define   CHOI2_HC(q1,q2)                                                                                                               \
                    q2
                                        /* Introduit le 20230323135750 lors de la mise au point de 'v $xiirs/CAYA.W4' image correcte */
                                        /* alors que 'v $xrs/CalabiYau.31.1$I valider_la_qualite_du_calcul_de_q1_et_de_q2' donnait   */
                                        /* une erreur peut-etre liee au fait que la multiplication n'est pas commutative dans        */
                                        /* les hyper-complexes...                                                                    */

#define   HCproduit(q,q1,q2)                                                                                                            \
                                        /* ATTENTION, il convient de ne pas oublier que :                                            */ \
                                        /*                                                                                           */ \
                                        /*                  q1.q2 # q2.q1                                                            */ \
                                        /*                                                                                           */ \
                                        /* c'est-a-dire que le produit des quaternions n'est pas commutatif...                       */ \
                    Bblock                                                                                                              \
                    FHCproduit(q,q1,q2);                                                                                                \
                    Eblock
#define   FHCproduit(q,q1,q2)                                                                                                           \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(FHCproduit_____utiliser_l_arithmetique_etendue               \
                                                                          ,BLOC(FgHCproduit(q,q1,q2);)                                  \
                                                                           );                                                           \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHCproduit(q,q1,q2)                                                                                                     \
                                        /* ATTENTION, il convient de ne pas oublier que :                                            */ \
                                        /*                                                                                           */ \
                                        /*                  q1.q2 # q2.q1                                                            */ \
                                        /*                                                                                           */ \
                                        /* c'est-a-dire que le produit des quaternions n'est pas commutatif...                       */ \
                         Bblock                                                                                                         \
                         DEFV(hyper_complexe,q_intermediaire_produit);                                                                  \
                                        /* Ce nombre hyper-complexe intermediaire est destine a traiter les cas ou par malheur le    */ \
                                        /* nombre hyper-complexe resultat 'q' serait identique a l'un des deux arguments ('q' ou     */ \
                                        /* 'q2')...                                                                                  */ \
                                                                                                                                        \
                         FHCinitialisation(q_intermediaire_produit                                                                      \
                                          ,SOUS(DET2(NEUT(HReelle(q1)),NEUT(HImaginaire(q1))                                            \
                                                    ,NEUT(HImaginaire(q2)),NEUT(HReelle(q2))                                            \
                                                     )                                                                                  \
                                               ,DET2(NEUT(HJmaginaire(q1)),NEGA(HKmaginaire(q1))                                        \
                                                    ,NEUT(HKmaginaire(q2)),NEUT(HJmaginaire(q2))                                        \
                                                     )                                                                                  \
                                                )                                                                                       \
                                          ,ADD2(DET2(NEUT(HReelle(q1)),NEGA(HImaginaire(q1))                                            \
                                                    ,NEUT(HReelle(q2)),NEUT(HImaginaire(q2))                                            \
                                                     )                                                                                  \
                                               ,DET2(NEUT(HJmaginaire(q1)),NEUT(HKmaginaire(q1))                                        \
                                                    ,NEUT(HJmaginaire(q2)),NEUT(HKmaginaire(q2))                                        \
                                                     )                                                                                  \
                                                )                                                                                       \
                                          ,ADD2(DET2(NEUT(HReelle(q1)),NEGA(HJmaginaire(q1))                                            \
                                                    ,NEUT(HReelle(q2)),NEUT(HJmaginaire(q2))                                            \
                                                     )                                                                                  \
                                               ,DET2(NEUT(HKmaginaire(q1)),NEUT(HImaginaire(q1))                                        \
                                                    ,NEUT(HKmaginaire(q2)),NEUT(HImaginaire(q2))                                        \
                                                     )                                                                                  \
                                                )                                                                                       \
                                          ,ADD2(DET2(NEUT(HReelle(q1)),NEGA(HKmaginaire(q1))                                            \
                                                    ,NEUT(HReelle(q2)),NEUT(HKmaginaire(q2))                                            \
                                                     )                                                                                  \
                                               ,DET2(NEUT(HImaginaire(q1)),NEUT(HJmaginaire(q1))                                        \
                                                    ,NEUT(HImaginaire(q2)),NEUT(HJmaginaire(q2))                                        \
                                                     )                                                                                  \
                                                )                                                                                       \
                                           );                                                                                           \
                                        /* Calcul du produit a destination du nombre hyper-complexe intermediaire. Rappelons que     */ \
                                        /* celui-ci n'est pas commutatif...                                                          */ \
                         FHCegal(q,q_intermediaire_produit);                                                                            \
                                        /* Mise a jour du nombre hyper-complexe resultat...                                          */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    HCproduit_theorique(q,q1,q2)                                                                                             \
                                        /* Introduit le 20100329123733...                                                            */ \
                         Bblock                                                                                                         \
                         FHCproduit_theorique(q,q1,q2);                                                                                 \
                         Eblock
#    define    FHCproduit_theorique(q,q1,q2)                                                                                            \
                                        /* Introduit le 20100329123733...                                                            */ \
                         Bblock                                                                                                         \
                         UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(FHCproduit_____utiliser_l_arithmetique_etendue          \
                                                                               ,BLOC(FgHCproduit_theorique(q,q1,q2);)                   \
                                                                                );                                                      \
                         Eblock
#    define    FgHCproduit_theorique(q,q1,q2)                                                                                           \
                                        /* Introduit le 20100329123733 pour resoudre le probleme de 'v $xtKg/octonions$K' qui        */ \
                                        /* provoquait la sortie du message :                                                         */ \
                                        /*                                                                                           */ \
                                        /*                  internal compiler error: in add_stack_var_conflict, at cfgexpand.c:264   */ \
                                        /*                                                                                           */ \
                                        /* sur '$LACT18' du tres certainement au code correspondant au produit non theorique, ce     */ \
                                        /* qui devait donner un code "monstrueux"...                                                 */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, il convient de ne pas oublier que :                                            */ \
                                        /*                                                                                           */ \
                                        /*                  q1.q2 # q2.q1                                                            */ \
                                        /*                                                                                           */ \
                                        /* c'est-a-dire que le produit des quaternions n'est pas commutatif...                       */ \
                         Bblock                                                                                                         \
                         begin_nouveau_block                                                                                            \
                                        /* Ceci afin de conserver la tabulation anterieure au 20100329123733 et ainsi valider plus   */ \
                                        /* facilement l'introduction de cette procedure...                                           */ \
                              Bblock                                                                                                    \
                              FGproduit(H,hyper_complexe,complexe                                                                       \
                                       ,q                                                                                               \
                                       ,q1,q2                                                                                           \
                                       ,dHReelle,dHImaginaire                                                                           \
                                       ,FgCegal                                                                                         \
                                       ,FgCconjugaison                                                                                  \
                                       ,FgCsomme                                                                                        \
                                       ,FgCdifference                                                                                   \
                                       ,FgCproduit                                                                                      \
                                        );                                                                                              \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                              Eblock                                                                                                    \
                         end_nouveau_block                                                                                              \
                         Eblock
#    define    FgHCproduit(q,q1,q2)                                                                                                     \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FHCproduit_____utiliser_la_definition_theorique_du_produit))                                      \
                                        /* Test introduit le 20091119084209...                                                       */ \
                              Bblock                                                                                                    \
                              FHCproduit_theorique(q,q1,q2);                                                                            \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                                        /* Sequence introduite le 20091119084209...                                                  */ \
                              UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC                                                    \
                                  (FHCproduit_____utiliser_l_arithmetique_etendue                                                       \
                                        /* L'arithmetique etendue a ete introduite pour le "faux" produit le 20091127072846...       */ \
                                  ,BLOC(                                                                                                \
                                        Bblock                                                                                          \
                                        Test(IL_FAUT(FHCproduit_____utiliser_l_arithmetique_etendue_dans_CxC))                          \
                                        /* Test introduit le 20120918142202...                                                       */ \
                                             Bblock                                                                                     \
                                             FCproduit(dHReelle(q)                                                                      \
                                                      ,dHReelle(q1)                                                                     \
                                                      ,dHReelle(q2)                                                                     \
                                                       );                                                                               \
                                             FCproduit(dHImaginaire(q)                                                                  \
                                                      ,dHImaginaire(q1)                                                                 \
                                                      ,dHImaginaire(q2)                                                                 \
                                                       );                                                                               \
                                        /* Produit dans CxC...                                                                       */ \
                                        /*                                                                                           */ \
                                        /* Mais le 20120918163456 je note que ce n'est certainement pas comme cela que l'on fait le  */ \
                                        /* produit dans CxC car il y a independance entre les deux plans C et donc lors de calculs   */ \
                                        /* de fractales on retombera sur des choses tres classiques (l'ensemble de Mandelbrot dans   */ \
                                        /* C par exemple...).                                                                        */ \
                                             Eblock                                                                                     \
                                        ATes                                                                                            \
                                             Bblock                                                                                     \
                                             DEFV(hyper_complexe_etendu,q1_etendu);                                                     \
                                             DEFV(hyper_complexe_etendu,q2_etendu);                                                     \
                                        /* Nombres hyper-complexes arguments du "faux" produit introduits le 20091130103950 dans     */ \
                                        /* l'idee d'introduire des combinaisons plus compliquees et par exemple des polynomes.       */ \
                                        /* L'introduction de 'HORNER_2_02(...)' a eu lieu le 20091130111700...                       */ \
                                             DEFV(hyper_complexe_etendu,q_etendu_1);                                                    \
                                             DEFV(hyper_complexe_etendu,q_etendu_2);                                                    \
                                        /* Nombre hyper-complexe resultat du "faux" produit avant (1) et apres (2) combinaisons      */ \
                                        /* lineaires (introduites le 20091127081738)...                                              */ \
                                                                                                                                        \
                                             FHCextension_directe(q1_etendu,q1);                                                        \
                                             FHCextension_directe(q2_etendu,q2);                                                        \
                                        /* Introduit sous cette forme le 20111230092602...                                           */ \
                                                                                                                                        \
                                        /* On notera le 20111007122014 que lors du calcul de produits du type :                      */ \
                                        /*                                                                                           */ \
                                        /*                  1*q                                                                      */ \
                                        /*                                                                                           */ \
                                        /* ('v $xiirc/POLY.B2.2$R16'), les monomes de 'HORNER_2_02(...)' qui referencent les deux    */ \
                                        /* angles (soit {22,21,12,11}) sont nuls a cause donc du quaternion "1" (dont les trois      */ \
                                        /* arguments -angles- sont nuls) dans le produit "1*q". Seuls sont donc alors interessants   */ \
                                        /* les monomes {20,10,02,01,00}...                                                           */ \
                                                                                                                                        \
                                             EGAL(HCHS_Rho(q_etendu_1)                                                                  \
                                                 ,HORNER_2_02(HCHS_Rho(q1_etendu)                                                       \
                                                             ,HCHS_Rho(q2_etendu)                                                       \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R2R2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R2R1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R2R0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R1R2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R1R1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R1R0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R0R2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R0R1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_R0R0                 \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HCHS_Theta(q_etendu_1)                                                                \
                                                 ,HORNER_2_02(HCHS_Theta(q1_etendu)                                                     \
                                                             ,HCHS_Theta(q2_etendu)                                                     \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T2T2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T2T1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T2T0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T1T2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T1T1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T1T0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T0T2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T0T1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_T0T0                 \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HCHS_Phi(q_etendu_1)                                                                  \
                                                 ,HORNER_2_02(HCHS_Phi(q1_etendu)                                                       \
                                                             ,HCHS_Phi(q2_etendu)                                                       \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P2P2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P2P1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P2P0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P1P2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P1P1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P1P0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P0P2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P0P1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_P0P0                 \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HCHS_Alpha(q_etendu_1)                                                                \
                                                 ,HORNER_2_02(HCHS_Alpha(q1_etendu)                                                     \
                                                             ,HCHS_Alpha(q2_etendu)                                                     \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A2A2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A2A1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A2A0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A1A2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A1A1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A1A0                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A0A2                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A0A1                 \
                                                             ,FHCproduit_____avec_le_produit_non_theorique__Horner_A0A0                 \
                                                              )                                                                         \
                                                  );                                                                                    \
                                        /* Calcul des quatre composantes etendues de 'q'...                                          */ \
                                        /*                                                                                           */ \
                                        /* Evidemment ce calcul est faux mathematiquement parlant, mais il s'agit d'une analogie     */ \
                                        /* et d'une extension avec ce qu'il se passe dans les complexes. En effet, soit alors deux   */ \
                                        /* complexes definis en coordonnees polaires {rho1,theta1} et {rho2,theta2}. Leur produit    */ \
                                        /* est defini par :                                                                          */ \
                                        /*                                                                                           */ \
                                        /*                  {rho1,theta1}.{rho2,theta2} = {rho1.rho2,theta1+theta2}                  */ \
                                        /*                                                                                           */ \
                                        /* c'est-a-dire que les modules sont multiplies et les arguments additionnes. Il va donc     */ \
                                        /* en etre de meme avec les hyper-complexes : les modules seront multiplies et les trois     */ \
                                        /* angles differents (soit {theta,phi,alpha}) seront additionnes...                          */ \
                                        /*                                                                                           */ \
                                        /* Cette methode fut introduite le 20091119084209...                                         */ \
                                        /*                                                                                           */ \
                                        /* Les {ponderation,translation} ont ete introduites le 20091120112630...                    */ \
                                                                                                                                        \
                                             EGAL(HCHS_Rho(q_etendu_2)                                                                  \
                                                 ,PUIX(AXPB(FHCproduit_____avec_le_produit_non_theorique__ponder1_Rho__                 \
                                                           ,HCHS_Rho(q_etendu_1)                                                        \
                                                           ,FHCproduit_____avec_le_produit_non_theorique__transl1_Rho__                 \
                                                            )                                                                           \
                                                      ,FHCproduit_____avec_le_produit_non_theorique__exposa1_Rho__                      \
                                                       )                                                                                \
                                                  );                                                                                    \
                                        /* Le 20100112154849 fut introduit 'exposa1_Rho__'. L'idee etant de pouvoir simuler une      */ \
                                        /* exponentiation dans 'FgHCpuissance(...)' meme avec 'exposant=1'. Ainsi, dans le plan      */ \
                                        /* Complexe (pour simplifier), on fera :                                                     */ \
                                        /*                                                                                           */ \
                                        /*                  exposant       = 1                                                       */ \
                                        /*                  exposa1_Rho__  = 2                                                       */ \
                                        /*                  ponder1_Theta_ = 2                                                       */ \
                                        /*                                                                                           */ \
                                        /* et ainsi, on calculera le carre du module et le double de l'argument. En particulier en   */ \
                                        /* utilisant alors le polynome :                                                             */ \
                                        /*                                                                                           */ \
                                        /*                  1*q + constante                                                          */ \
                                        /*                                                                                           */ \
                                        /* on pourra calculer un ensemble du type Mandelbrot (ou Julia)...                           */ \
                                        /*                                                                                           */ \
                                        /* On notera au passage la "symetrie" entre le calcul de 'Rho' a partir de 'exposa1_Rho__'   */ \
                                        /* et de {Theta,Phi,Alpha} a partir de {ponder1_Theta_,ponder1_Phi__,ponder1_Alpha} le       */ \
                                        /* premier etant multiplicatif via 'PUIX(...)' :                                             */ \
                                        /*                                                                                           */ \
                                        /*                  PUIX(Rho,N)     = Rho * Rho * ... * Rho                     (N fois)     */ \
                                        /*                                                                                           */ \
                                        /* et le second additif via 'AXPB(...)' :                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  AXPB(N,Angle,0) = Angle + Angle + ... + Angle               (N fois)     */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                                             EGAL(HCHS_Theta(q_etendu_2)                                                                \
                                                 ,OPC1(IL_FAUT(FHCproduit_____avec_le_produit_non_theorique__modulo_Theta_)             \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHCproduit_____avec_le_produit_non_theorique__ponder1_Theta_                \
                                                           ,LIN3(FHCproduit_____avec_le_produit_non_theorique__ponder2_Theta_Theta_     \
                                                                ,HCHS_Theta(q_etendu_1)                                                 \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__ponder2_Theta_Phi__      \
                                                                ,HCHS_Phi(q_etendu_1)                                                   \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__ponder2_Theta_Alpha      \
                                                                ,HCHS_Alpha(q_etendu_1)                                                 \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__transl2_Theta_           \
                                                                 )                                                                      \
                                                           ,FHCproduit_____avec_le_produit_non_theorique__transl1_Theta_                \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HCHS_Phi(q_etendu_2)                                                                  \
                                                 ,OPC1(IL_FAUT(FHCproduit_____avec_le_produit_non_theorique__modulo_Theta_)             \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHCproduit_____avec_le_produit_non_theorique__ponder1_Phi__                 \
                                                           ,LIN3(FHCproduit_____avec_le_produit_non_theorique__ponder2_Phi__Theta_      \
                                                                ,HCHS_Theta(q_etendu_1)                                                 \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__ponder2_Phi__Phi__       \
                                                                ,HCHS_Phi(q_etendu_1)                                                   \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__ponder2_Phi__Alpha       \
                                                                ,HCHS_Alpha(q_etendu_1)                                                 \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__transl2_Phi__            \
                                                                 )                                                                      \
                                                           ,FHCproduit_____avec_le_produit_non_theorique__transl1_Phi__                 \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HCHS_Alpha(q_etendu_2)                                                                \
                                                 ,OPC1(IL_FAUT(FHCproduit_____avec_le_produit_non_theorique__modulo_Theta_)             \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHCproduit_____avec_le_produit_non_theorique__ponder1_Alpha                 \
                                                           ,LIN3(FHCproduit_____avec_le_produit_non_theorique__ponder2_AlphaTheta_      \
                                                                ,HCHS_Theta(q_etendu_1)                                                 \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__ponder2_AlphaPhi__       \
                                                                ,HCHS_Phi(q_etendu_1)                                                   \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__ponder2_AlphaAlpha       \
                                                                ,HCHS_Alpha(q_etendu_1)                                                 \
                                                                ,FHCproduit_____avec_le_produit_non_theorique__transl2_Alpha            \
                                                                 )                                                                      \
                                                           ,FHCproduit_____avec_le_produit_non_theorique__transl1_Alpha                 \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                        /* Le 20100210170625 fut introduit la possibilite de gerer modulo 2.pi {Theta_,Phi__,Alpha}, */ \
                                        /* ceci etant inhibe par defaut pour des raisons de compatibilite anterieure. Au passage, le */ \
                                        /* je ne suis pas sur que l'utilisation de cette option change quelque chose.                */ \
                                        /*                                                                                           */ \
                                        /* Le 20100210182653, je note que l'utilisation de ponderations non entieres pour les        */ \
                                        /* angles conduit a des discontinuites. Ainsi, par exemple, une ponderation non entiere      */ \
                                        /* de 'Theta' donne une discontinuite au passage de l'axe reel positif. Cela se voit, par    */ \
                                        /* exemple avec :                                                                            */ \
                                        /*                                                                                           */ \
                                        /*                  $xrc/mandel.41$X    images=1                                          \  */ \
                                        /*                                      iterations=10                                     \  */ \
                                        /*                                      produit_non_theorique=VRAI                        \  */ \
                                        /*                                      exposant=1 eRHo=2 pTheta=2                        \  */ \
                                        /*                                      (...)                                                */ \
                                        /*                                                                                           */ \
                                        /* qui donne l'ensemble de Mandelbrot. Changer 2 en 1.7 (valeur arbitraire non entiere)      */ \
                                        /* en ce qui concerne "pTheta=" fait apparaitre violemment cette discontinuite...            */ \
                                                                                                                                        \
                                             FHCextension_inverse(q,q_etendu_2);                                                        \
                                        /* Afin de comprendre 'v http://www.skytopia.com/project/fractal/mandelbulb.html', le        */ \
                                        /* 20091127073622, j'ai explicite les calculs effectivement effectues. Les deux quaternions  */ \
                                        /* Arguments {q1,q2} sont convertits en coordonnees hyper-spheriques suivant :               */ \
                                        /*                                                                                           */ \
                                        /*                             __________________                                            */ \
                                        /*                            / 2    2    2    2                                             */ \
                                        /*                  rho   = \/ x  + y  + z  + t                                              */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                                 y                                                         */ \
                                        /*                  theta = ArcTg(---)                                                       */ \
                                        /*                                 x                                                         */ \
                                        /*                                                                                           */ \
                                        /*                                    ________                                               */ \
                                        /*                                   / 2    2                                                */ \
                                        /*                                 \/ x  + y        pi                                       */ \
                                        /*                  phi   = ArcTg(-------------) - ----                                      */ \
                                        /*                                       z          2                                        */ \
                                        /*                                                                                           */ \
                                        /*                                    _____________                                          */ \
                                        /*                                   / 2    2    2                                           */ \
                                        /*                                 \/ x  + y  + z        pi                                  */ \
                                        /*                  alpha = ArcTg(------------------) - ----                                 */ \
                                        /*                                         t             2                                   */ \
                                        /*                                                                                           */ \
                                        /* puis :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                                              pi              pi                           */ \
                                        /*                  X = rho*cos(theta)*sin(phi+----)*sin(alpha+----)                         */ \
                                        /*                                              2               2                            */ \
                                        /*                                                                                           */ \
                                        /*                                              pi              pi                           */ \
                                        /*                  Y = rho*sin(theta)*sin(phi+----)*sin(alpha+----)                         */ \
                                        /*                                              2               2                            */ \
                                        /*                                                                                           */ \
                                        /*                                   pi              pi                                      */ \
                                        /*                  Z = rho*cos(phi+----)*sin(alpha+----)                                    */ \
                                        /*                                   2               2                                       */ \
                                        /*                                                                                           */ \
                                        /*                                     pi                                                    */ \
                                        /*                  T = rho*cos(alpha+----)                                                  */ \
                                        /*                                     2                                                     */ \
                                        /*                                                                                           */ \
                                        /* (en notant donc bien que les -pi/2 et +pi/2 se compensent et peuvent donc etre ignores)   */ \
                                        /* alors que sur 'v http://www.skytopia.com/project/fractal/mandelbulb.html', les            */ \
                                        /* definitions sont les suivantes :                                                          */ \
                                        /*                                                                                           */ \
                                        /*                             __________________                                            */ \
                                        /*                            / 2    2    2    2                                             */ \
                                        /*                  rho   = \/ x  + y  + z  + t                                              */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                                 y                                                         */ \
                                        /*                  PHI   = ArcTg(---)                                                       */ \
                                        /*                                 x                                                         */ \
                                        /*                                                                                           */ \
                                        /*                                    ________                                               */ \
                                        /*                                   / 2    2                                                */ \
                                        /*                                 \/ x  + y                                                 */ \
                                        /*                  THETA = ArcTg(-------------)                                             */ \
                                        /*                                       z                                                   */ \
                                        /*                                                                                           */ \
                                        /* d'apres le source original '$c' suivant :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  r     = sqrt(x*x + y*y + z*z);                                           */ \
                                        /*                  theta = atan2(sqrt(x*x + y*y),z);                                        */ \
                                        /*                  phi   = atan2(y,x);                                                      */ \
                                        /*                                                                                           */ \
                                        /*                  newx = r^n * cos(phi*n) * sin(theta*n);                                  */ \
                                        /*                  newy = r^n * sin(phi*n) * sin(theta*n);                                  */ \
                                        /*                  newz = r^n * cos(theta*n);                                               */ \
                                        /*                                                                                           */ \
                                        /* puis :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  X = rho*cos(PHI)*sin(THETA)                                              */ \
                                        /*                                                                                           */ \
                                        /*                  Y = rho*sin(PHI)*sin(THETA)                                              */ \
                                        /*                                                                                           */ \
                                        /*                  Z = rho*cos(THETA)                                                       */ \
                                        /*                                                                                           */ \
                                        /* d'ou les correspondances :                                                                */ \
                                        /*                                                                                           */ \
                                        /*                  theta <--> PHI                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  phi   <--> THETA                                                         */ \
                                        /*                                                                                           */ \
                                        /*                  alpha <--> 0                                                             */ \
                                        /*                                                                                           */ \
                                        /* d'ou les combinaisons lineaires introduites le 20091127081738...                          */ \
                                        /*                                                                                           */ \
                                        /* Introduit sous cette forme le 20111230092602...                                           */ \
                                             Eblock                                                                                     \
                                        ETes                                                                                            \
                                        Eblock                                                                                          \
                                        )                                                                                               \
                                   );                                                                                                   \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                N                                                                                  */
/*        P U I S S A N C E   N - I E M E   Q = Q1    ( P O S I T I V E   O U   N E G A T I V E )                                    */
/*        D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCpuissance(q,q1,exposant)                                                                                                    \
                    Bblock                                                                                                              \
                    FHCpuissance(q,q1,exposant);                                                                                        \
                    Eblock
#define   FHCpuissance(q,q1,exposant)                                                                                                   \
                    Bblock                                                                                                              \
                    FgHCpuissance(q,q1,exposant);                                                                                       \
                    Eblock
#define   FgHCpuissance(q,q1,exposant)                                                                                                  \
                                        /* Definition introduite le 20091118105839...                                                */ \
                    Bblock                                                                                                              \
                    Test(EST_ENTIER(exposant))                                                                                          \
                                        /* Test introduit le 20100608133537 pour plus de generalite...                               */ \
                         Bblock                                                                                                         \
                         DEFV(hyper_complexe,q_cumul_multiplicatif);                                                                    \
                         FHCegal(q_cumul_multiplicatif,HC_____quaternion_p1__0__0__0);                                                  \
                                        /* Nombre complexe intermediaire donnant le "cumul multiplicatif" courant. Il est            */ \
                                        /* initialise ici a {1,0,0,0} et c'est cette valeur qui est renvoyee en cas d'erreur...      */ \
                                        /*                                                                                           */ \
                                        /* On notera le 20091223094639 qu'il n'est pas possible d'optimiser cette sequence en        */ \
                                        /* faisant une iteration de moins via l'initialisation :                                     */ \
                                        /*                                                                                           */ \
                                        /*                  FHCegal(q_cumul_multiplicatif,q1);                                       */ \
                                        /*                                                                                           */ \
                                        /* puis :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  Repe(TRMU(exposant))                                                     */ \
                                        /*                                                                                           */ \
                                        /* a cause du cas de l'exposant nul pour lequel le resultat est {1,0,0,0}. D'autre part      */ \
                                        /* dans le cas 'IL_NE_FAUT_PAS(FHCproduit_____utiliser_la_definition_theorique_du_produit)'  */ \
                                        /* les deux methodes ne donneraient pas le meme resultat sauf cas particuliers...            */ \
                                        /*                                                                                           */ \
                                        /* Dans le cas 'IL_NE_FAUT_PAS(FHCproduit_____utiliser_la_definition_theorique_du_produit)'  */ \
                                        /* je note le 20100104120855 qu'en baptisant 'E' la fonction 'FHCpuissance(...)' (pour       */ \
                                        /* "Exponentielle") et 'P' la fonction 'FHCproduit(...)' (pour "Produit"), on a par          */ \
                                        /* definition :                                                                              */ \
                                        /*                                                                                           */ \
                                        /*                  P(x,y) = a*(x+y) + b                                                     */ \
                                        /*                                                                                           */ \
                                        /*                  E(t,n) = P(E(t,n-1),t)                                                   */ \
                                        /*                                                                                           */ \
                                        /* puis ("I" etant qualifie par ailleurs de "Element Neutre") :                              */ \
                                        /*                                                                                           */ \
                                        /*                  E(t,0) = I                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  E(t,1) = P(E(t,0),t)                                                     */ \
                                        /*                         = a*(E(t,0) + t) + b                                              */ \
                                        /*                         = a*E(t,0) + a*t + b                                              */ \
                                        /*                         = a*I + a*t + b                                                   */ \
                                        /*                                                                                           */ \
                                        /*                  E(t,2) = P(E(t,1),t)                                                     */ \
                                        /*                         = a*(E(t,1) + t) + b                                              */ \
                                        /*                         = a*E(t,1) + a*t + b                                              */ \
                                        /*                         = a*(a*I + a*t + b) + a*t + b                                     */ \
                                        /*                         = a*a*I + a*a*t + a*b + a*t + b                                   */ \
                                        /*                         = a*a*I + a*a*t + a*t + a*b + b                                   */ \
                                        /*                         = a*a*I + a*(a*t + t) + a*b + b                                   */ \
                                        /*                         = a*a*I + a*(a + 1)*t + (a + 1)*b                                 */ \
                                        /*                                      =====       =====                                    */ \
                                        /*                                                                                           */ \
                                        /*                  E(t,3) = P(E(t,2),t)                                                     */ \
                                        /*                         = a*(E(t,2) + t) + b                                              */ \
                                        /*                         = a*E(t,2) + a*t + b                                              */ \
                                        /*                         = a*(a*a*I + a*a*t + a*t + a*b + b) + a*t + b                     */ \
                                        /*                         = a*a*a*I + a*a*a*t + a*a*t + a*a*b + a*b + a*t + b               */ \
                                        /*                         = a*a*a*I + a*a*a*t + a*a*t + a*t + a*a*b + a*b + b               */ \
                                        /*                         = a*a*a*I + a*(a*a*t + a*t + t) + a*a*b + a*b + b                 */ \
                                        /*                         = a*a*a*I + a*(a*a + a + 1)*t + (a*a + a + 1)*b                   */ \
                                        /*                                        ===========       ===========                      */ \
                                        /*                                                                                           */ \
                                        /* d'ou en posant :                                                                          */ \
                                        /*                                                                                           */ \
                                        /*                                                                n                          */ \
                                        /*                             n-1   n-2          2    1    0    a  - 1                      */ \
                                        /*                  S(a,n) =  a   + a    + ... + a  + a  + a  = --------                     */ \
                                        /*                                                                 a-1                       */ \
                                        /*                                                                                           */ \
                                        /* la formule generale :                                                                     */ \
                                        /*                                                                                           */ \
                                        /*                                                    n                                      */ \
                                        /*                  E(t,n) = a*S(a,n)*t + S(a,n)*b + a *I                                    */ \
                                        /*                                                                                           */ \
                                        /*                  E(t,n) = A*n*t + B                                                       */ \
                                        /*                                                                                           */ \
                                        /* avec :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                       1                                                                   */ \
                                        /*                  A = ---*a*S(a,n)                                                         */ \
                                        /*                       n                                                                   */ \
                                        /*                                                                                           */ \
                                        /*                                  n                                                        */ \
                                        /*                  B = S(a,n)*b + a *I                                                      */ \
                                        /*                                                                                           */ \
                                        /* d'ou l'on pourra esperer calculer les valeurs de 'a' et de 'b' pour 'A' et 'B' donnes     */ \
                                        /* ('v $xcg/EquaPnThQ.01$K')...                                                              */ \
                                        /*                                                                                           */ \
                                        /* Mais ATTENTION : je note le 20100109100459 que cela ne marche pas tres bien car, en       */ \
                                        /* effet, dans le cas ou 'a' est un angle, il est "modulo" dans [0,2.pi] ce que ne prennent  */ \
                                        /* pas en compte les formules precedentes !                                                  */ \
                                                                                                                                        \
                         Test(IFGE(exposant,ZERO))                                                                                      \
                              Bblock                                                                                                    \
                              Repe(NEUT(exposant))                                                                                      \
                                   Bblock                                                                                               \
                                   FHCproduit(q_cumul_multiplicatif,q_cumul_multiplicatif,q1);                                          \
                                        /* On notera le 20230324100530 la question problematique suivante. En effet, pour les        */ \
                                        /* hyper-hyper-complexes, la multiplication n'est pas commutative :                          */ \
                                        /*                                                                                           */ \
                                        /*                  q1.q2 # q2.q1                           (en general...)                  */ \
                                        /*                                                                                           */ \
                                        /* En ce qui concerne la puissance, on a par exemple pour un exposant egal a 3 :             */ \
                                        /*                                                                                           */ \
                                        /*                  q1^3 = q1.q1.q1                                                          */ \
                                        /*                                                                                           */ \
                                        /* Or lors du calcul iteratif precedent, l'ordre entre 'q_cumul_multiplicatif' et 'q1' est   */ \
                                        /* en fait arbitraire. Doit-on utiliser :                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  q1.q1.q1 = q1.(q1.q1)                                                    */ \
                                        /*                                                                                           */ \
                                        /* ou bien :                                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  q1.q1.q1 = (q1.q1).q1                                                    */ \
                                        /*                                                                                           */ \
                                        /* Or, en toute generalite, on a cause de la non commutativite :                             */ \
                                        /*                                                                                           */ \
                                        /*                  q1.(q1.q1) # (q1.q1).q1                                                  */ \
                                        /*                      \___/     \___/                                                      */ \
                                        /*                       q2        q2                                                        */ \
                                        /*                                                                                           */ \
                                        /* Alors que faire ? Au passage, cette interrogation peut etre etendue a toutes les          */ \
                                        /* fonctions et a tous les operateurs un peu "compliques" definis par ailleurs comme,        */ \
                                        /* par exemple, les lignes trigonometriques, l'exponentielle, le logarithme,...              */ \
                                   Eblock                                                                                               \
                              ERep                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Repe(NEGA(exposant))                                                                                      \
                                   Bblock                                                                                               \
                                   FHCquotient(q_cumul_multiplicatif,q_cumul_multiplicatif,q1);                                         \
                                        /* La possibilite de calculer des puissances negatives a ete introduite le 20100316171635.   */ \
                                   Eblock                                                                                               \
                              ERep                                                                                                      \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         FHCegal(q,q_cumul_multiplicatif);                                                                              \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(hyper_complexe,q_exposant);                                                                               \
                                        /* Exposant hyper-complexe.                                                                  */ \
                                                                                                                                        \
                         FHCinitialisation(q_exposant                                                                                   \
                                          ,exposant                                                                                     \
                                          ,I0_Quaternion                                                                                \
                                          ,J0_Quaternion                                                                                \
                                          ,K0_Quaternion                                                                                \
                                           );                                                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  exposant + i.0 + j.0 + k.0                                               */ \
                                        /*                                                                                           */ \
                         FHCexponentielle_quaternionique(q                                                                              \
                                                        ,q1                                                                             \
                                                        ,q_exposant                                                                     \
                                                         );                                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                    exposant + i.0 + j.0 + k.0                                             */ \
                                        /*                  q1                                                                       */ \
                                        /*                                                                                           */ \
                                        /* (introduit le 20100608133537 pour plus de generalite qu'un exposant entier).              */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                                                                                                                                        \
                    Test(IL_FAUT(FHCpuissance_____editer_Argument_et_resultat))                                                         \
                         Bblock                                                                                                         \
                         CAL3(Prme8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}={%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                       \
                                   ,HReelle(q1),HImaginaire(q1),HJmaginaire(q1),HKmaginaire(q1)                                         \
                                   ,HCmodule(q1),HCargumentT_2PI(q1),HCargumentP_2PI(q1),HCargumentA_2PI(q1)                            \
                                    )                                                                                                   \
                              );                                                                                                        \
                         CAL3(Prme2("%s%+.^^^","^",exposant));                                                                          \
                                        /* Introduit le 20230321150810 pour "expertiser" 'v $xrs/$xrs/CalabiYau.42$K' lors de        */ \
                                        /* la generation de 'v $xiirs/CAYA.W4'...                                                    */ \
                                        /*                                                                                           */ \
                                        /* On notera que l'on ne peut ecrire :                                                       */ \
                                        /*                                                                                           */ \
                                        /*                  CAL3(Prme1("^%+.^^^",exposant));                                         */ \
                                        /*                                                                                           */ \
                                        /* qui edite un "0" a la place du premier "^"...                                             */ \
                         CALS(FPrme0(" --> "));                                                                                         \
                         CAL3(Prme8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^}={%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                       \
                                   ,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)                                             \
                                   ,HCmodule(q),HCargumentT_2PI(q),HCargumentP_2PI(q),HCargumentA_2PI(q)                                \
                                    )                                                                                                   \
                              );                                                                                                        \
                         CALS(Fsauts_de_lignes(UN));                                                                                    \
                                        /* Introduit le 20100108213922 afin de pouvoir "expertiser" 'v $xcg/EquaPnThQ.01$K'...       */ \
                                        /*                                                                                           */ \
                                        /* Le 20100111152430, je note une petite difficulte. Supposons que 'exposant' ait la         */ \
                                        /* valeur 1 (donc une seule iteration de 'FHCproduit(...)' ci-dessus) ; supposons de         */ \
                                        /* plus que toutes les 'FHCproduit_____avec_le_produit_non_theorique__ponder2'               */ \
                                        /* soient nulles sauf :                                                                      */ \
                                        /*                                                                                           */ \
                                        /*                  ponder2_Theta_Theta_ = 8                                                 */ \
                                        /*                  ponder2_Phi__Phi__   = 8                                                 */ \
                                        /*                  ponder2_AlphaAlpha   = 8                                                 */ \
                                        /*                                                                                           */ \
                                        /* (8 etant une valeur arbitraire superieure a 1). On pouvait donc s'attendre a trouver      */ \
                                        /* ci-dessus :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  HCargumentT_2PI(q) = 8*HCargumentT_2PI(q1)                               */ \
                                        /*                  HCargumentP_2PI(q) = 8*HCargumentP_2PI(q1)                               */ \
                                        /*                  HCargumentA_2PI(q) = 8*HCargumentA_2PI(q1)                               */ \
                                        /*                                                                                           */ \
                                        /* or, dans le cas general, il n'en est rien. Cela vient du fait que les quaternions         */ \
                                        /* sont ecrits en coordonnees cartesiennes ; le passage en coordonnees hyper-spheriques      */ \
                                        /* est temporaire. Et donc la relation de proportionnalite (a 8) ci-dessus n'est verifiee    */ \
                                        /* que tant que l'on est et que l'on reste en coordonnees hyper-spheriques, c'est-a-dire a   */ \
                                        /* l'interieur de la procedure 'FgHCproduit(...)', lors du calcul du faux produit et avant   */ \
                                        /* le retour aux coordonnees cartesiennes. Apres celui-ci, il est trop tard et c'est le cas  */ \
                                        /* ci-dessus lors de l'utilisation de 'HCargumentT_2PI(...)', 'HCargumentP_2PI(...)' et      */ \
                                        /* 'HCargumentA_2PI(...)' ou les trois angles {Theta,Phi,Alpha} ont ete remis dans [0,2.pi]. */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                     A.Q1 + B                                                                      */
/*        F O R M E   H O M O G R A P H I Q U E   Q = ----------   D E   2   N O M B R E S   H Y P E R - C O M P L E X E S           */
/*                                                     C.Q2 + D                                                                      */
/*                                                                                                                                   */
/*        L E S   N O M B R E S   ' A ' , ' B ' , ' C '   E T   ' D '   E T A N T   R E E L S  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCforme_homographique(q,alpha,q1,beta,gamma,q2,delta)                                                                         \
                    Bblock                                                                                                              \
                    FHCforme_homographique(q,alpha,q1,beta,gamma,q2,delta);                                                             \
                    Eblock
#define   FHCforme_homographique(q,alpha,q1,beta,gamma,q2,delta)                                                                        \
                    Bblock                                                                                                              \
                    FgHCforme_homographique(q,alpha,q1,beta,gamma,q2,delta);                                                            \
                    Eblock
#define   FgHCforme_homographique(q,alpha,q1,beta,gamma,q2,delta)                                                                       \
                                        /* Definition introduite le 20091021150516...                                                */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q___numerateur);                                                                                \
                    DEFV(hyper_complexe,q_denominateur);                                                                                \
                                        /* Numerateur et denominateur de la forme homographique.                                     */ \
                                                                                                                                        \
                    FHCforme_lineaire(q___numerateur,alpha,q1,beta);                                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  A.q1 + B                                                                 */ \
                                        /*                                                                                           */ \
                    FHCforme_lineaire(q_denominateur,gamma,q2,delta);                                                                   \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  C.q2 + D                                                                 */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                    FHCquotient(q,q___numerateur,q_denominateur);                                                                       \
                                        /* Mise a jour du nombre complexe resultat :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                   A.q1 + B                                                                */ \
                                        /*                  ----------                                                               */ \
                                        /*                   C.q2 + D                                                                */ \
                                        /*                                                                                           */ \
                                        /* en notant qu'en general les deux nombres 'q1' et 'q2' sont identiques...                  */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                         --                                                                                        */
/*                               Q1     Q1.Q2                                                                                        */
/*        Q U O T I E N T   Q = ---- = -------   D E   2   N O M B R E S   H Y P E R - C O M P L E X E S  :                          */
/*                               Q2         2                                                                                        */
/*                                      |Q2|                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCquotient(q,q1,q2)                                                                                                           \
                    Bblock                                                                                                              \
                    FHCquotient(q,q1,q2);                                                                                               \
                    Eblock
#define   FHCquotient(q,q1,q2)                                                                                                          \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HC(FHCquotient_____utiliser_l_arithmetique_etendue              \
                                                                          ,BLOC(FgHCquotient(q,q1,q2);)                                 \
                                                                           );                                                           \
                    Eblock
#define   FgHCquotient(q,q1,q2)                                                                                                         \
                                        /* ATTENTION, pendant longtemps j'ai ecrit :                                                 */ \
                                        /*                                                                                           */ \
                                        /*        Bblock                                                                             */ \
                                        /*        DEFV(hyper_complexe,q_intermediaire);                                              */ \
                                        /*        FHCinitialisation(q_intermediaire                                                  */ \
                                        /*                         ,DIVZ(SOUS(DET2(NEUT(HReelle(q1)),NEUT(HImaginaire(q1))           */ \
                                        /*                                        ,NEUT(CHImaginaire(q2)),NEUT(CHReelle(q2))         */ \
                                        /*                                         )                                                 */ \
                                        /*                                   ,DET2(NEUT(HJmaginaire(q1)),NEGA(HKmaginaire(q1))       */ \
                                        /*                                        ,NEUT(CHKmaginaire(q2)),NEUT(CHJmaginaire(q2))     */ \
                                        /*                                         )                                                 */ \
                                        /*                                    )                                                      */ \
                                        /*                              ,HCmodule2(q2)                                               */ \
                                        /*                               )                                                           */ \
                                        /*                         ,DIVZ(ADD2(DET2(NEUT(HReelle(q1)),NEGA(HImaginaire(q1))           */ \
                                        /*                                        ,NEUT(CHReelle(q2)),NEUT(CHImaginaire(q2))         */ \
                                        /*                                         )                                                 */ \
                                        /*                                   ,DET2(NEUT(HJmaginaire(q1)),NEUT(HKmaginaire(q1))       */ \
                                        /*                                        ,NEUT(CHJmaginaire(q2)),NEUT(CHKmaginaire(q2))     */ \
                                        /*                                         )                                                 */ \
                                        /*                                    )                                                      */ \
                                        /*                              ,HCmodule2(q2)                                               */ \
                                        /*                               )                                                           */ \
                                        /*                         ,DIVZ(ADD2(DET2(NEUT(HReelle(q1)),NEGA(HJmaginaire(q1))           */ \
                                        /*                                        ,NEUT(CHReelle(q2)),NEUT(CHJmaginaire(q2))         */ \
                                        /*                                         )                                                 */ \
                                        /*                                   ,DET2(NEUT(HKmaginaire(q1)),NEUT(HImaginaire(q1))       */ \
                                        /*                                        ,NEUT(CHKmaginaire(q2)),NEUT(CHImaginaire(q2))     */ \
                                        /*                                         )                                                 */ \
                                        /*                                    )                                                      */ \
                                        /*                              ,HCmodule2(q2)                                               */ \
                                        /*                               )                                                           */ \
                                        /*                         ,DIVZ(ADD2(DET2(NEUT(HReelle(q1)),NEGA(HKmaginaire(q1))           */ \
                                        /*                                        ,NEUT(CHReelle(q2)),NEUT(CHKmaginaire(q2))         */ \
                                        /*                                         )                                                 */ \
                                        /*                                   ,DET2(NEUT(HImaginaire(q1)),NEUT(HJmaginaire(q1))       */ \
                                        /*                                        ,NEUT(CHImaginaire(q2)),NEUT(CHJmaginaire(q2))     */ \
                                        /*                                         )                                                 */ \
                                        /*                                    )                                                      */ \
                                        /*                              ,HCmodule2(q2)                                               */ \
                                        /*                               )                                                           */ \
                                        /*                          );                                                               */ \
                                        /*        FHCegal(q,q_intermediaire);                                                        */ \
                                        /*        Eblock                                                                             */ \
                                        /*                                                                                           */ \
                                        /* mais cela n'etait pas tres elegant...                                                     */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGquotient(prefixe,corps,sous_corps,...)               \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FHC...(...)' qui sont  */ \
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q2_barre);                                                                                      \
                                        /* Ce nombre hyper-complexe est le conjugue du nombre hyper-complexe argument 'q2'.          */ \
                    DEFV(hyper_complexe,q_intermediaire_quotient_1);                                                                    \
                    DEFV(hyper_complexe,q_intermediaire_quotient_2);                                                                    \
                                        /* Ces deux nombres hyper-complexes intermediaires sont destines a traiter les cas ou par    */ \
                                        /* malheur le nombre hyper-complexe resultat 'q' serait identique a l'un des deux arguments  */ \
                                        /* 'q1' ou 'q2'.                                                                             */ \
                                                                                                                                        \
                    FHCconjugaison(q2_barre,q2);                                                                                        \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  --                                                                       */ \
                                        /*                  q2                                                                       */ \
                                        /*                                                                                           */ \
                    FHCproduit(q_intermediaire_quotient_1,q1,q2_barre);                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                     --                                                                    */ \
                                        /*                  q1.q2                                                                    */ \
                                        /*                                                                                           */ \
                    FHCforme_lineaire(q_intermediaire_quotient_2,fINVZ(FHCmodule2(q2)),q_intermediaire_quotient_1,FZERO);               \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                      --                                                                   */ \
                                        /*                   q1.q2                                                                   */ \
                                        /*                  -------                                                                  */ \
                                        /*                       2                                                                   */ \
                                        /*                   |q2|                                                                    */ \
                                        /*                                                                                           */ \
                                        /* Le 20071201105511 'INVZ(...)' fut remplace tardivement par 'fINVZ(...)'...                */ \
                    FHCegal(q,q_intermediaire_quotient_2);                                                                              \
                                        /* Mise a jour du nombre hyper-complexe resultat...                                          */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                             1                                                                                                     */
/*        I N V E R S E   Q = ----   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                          */
/*                             Q1                                                                                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCinverse(q,q1)                                                                                                               \
                    Bblock                                                                                                              \
                    FHCinverse(q,q1);                                                                                                   \
                    Eblock
#define   FHCinverse(q,q1)                                                                                                              \
                    Bblock                                                                                                              \
                    FgHCinverse(q,q1);                                                                                                  \
                    Eblock
#define   FgHCinverse(q,q1)                                                                                                             \
                                        /* Ces definitions furent introduites le 20060425154232...                                   */ \
                    Bblock                                                                                                              \
                    FHCquotient(q,HC_____quaternion_p1__0__0__0,q1);                                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   1                                                                       */ \
                                        /*                  ----                                                                     */ \
                                        /*                   q1                                                                      */ \
                                        /*                                                                                           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                               2                                                                   */
/*        N O R M E   O U   M O D U L E   A U   C A R R E   | Q |    D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :          */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCmodule2(q)                                                                                                                  \
                    FHCmodule2(q)

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FHCmodule2(q)                                                                                                            \
                         CRho_4D(HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q))

                                        /* ATTENTION, on notera que l'on ne peut pas definir la norme par :                          */
                                        /*                                                                                           */
                                        /*                           -                                                               */
                                        /*                  N(q) = q.q                                                               */
                                        /*                                                                                           */
                                        /* car en effet le produit 'FHCproduit(...)' fait intervenir des variables intermediaires    */
                                        /* qui sont incompatibles avec l'utilisation de 'FHCmodule2(...)' en tant que scalaire       */
                                        /* dans des expressions...                                                                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FHCmodule2(q)                                                                                                            \
                         FGmodule2(H,hyper_complexe,complexe                                                                            \
                                  ,q                                                                                                    \
                                  ,dHReelle,dHImaginaire                                                                                \
                                  ,Cmodule2                                                                                             \
                                   )                                                                                                    \
                                        /* ATTENTION, 'H' et 'hyper_complexe' doivent etre cote a cote afin de garantir une          */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M O D U L E   | Q |   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HC_MODULE_UNITAIRE                                                                                                            \
                    FU

#define   HCmodule(q)                                                                                                                   \
                    FHCmodule(q)
#define   FHCmodule(q)                                                                                                                  \
                    RACX(FHCmodule2(q))

                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */
                                        /*                                                                                           */
                                        /*                  #    define    FGmodule(prefixe,corps,sous_corps,...)                 \  */
                                        /*                  (...)                                                                    */
                                        /*                                                                                           */
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FHC...(...)' qui sont  */
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */

#define   LogHCmodule(z)                                                                                                                \
                    LOGX(HCmodule(z))                                                                                                   \
                                        /* Introduit le 20180927085818 pour son utilite en geometrie "tropicale" (anciennement       */ \
                                        /* appelee "MAX-PLUS"...).                                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        " R E D U C T I O N "   D E S   C O M P O S A N T E S   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    On appelera "reduction" des composantes                                                                        */
/*                  d'un nombre hyper-complexe 'q', le nombre                                                                        */
/*                  reel suivant :                                                                                                   */
/*                                                                                                                                   */
/*                                      cR.R(q)+cI.I(q)+cJ.J(q)+cK.K(q)                                                              */
/*                                                                                                                                   */
/*                  ou 'R(q)', par exemple, designe la partie Reelle                                                                 */
/*                  de 'q'.                                                                                                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCreduction(q,coefficientR,coefficientI,coefficientJ,coefficientK)                                                            \
                    FHCreduction(q,coefficientR,coefficientI,coefficientJ,coefficientK)
#define   FHCreduction(q,coefficientR,coefficientI,coefficientJ,coefficientK)                                                           \
                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGreduction(prefixe,corps,sous_corps,...)              \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FHC...(...)' qui sont  */ \
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */ \
                    LIZ4(coefficientR,HReelle(q)                                                                                        \
                        ,coefficientI,HImaginaire(q)                                                                                    \
                        ,coefficientJ,HJmaginaire(q)                                                                                    \
                        ,coefficientK,HKmaginaire(q)                                                                                    \
                         )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                             --                                                                                                    */
/*        T R A C E   Q = Q1 + Q1   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Rappel :                                                                                                                   */
/*                                                                                                                                   */
/*                    Si N(q) et T(q) designent respectivement                                                                       */
/*                  la norme et la trace du nombre hyper-complexe 'q',                                                               */
/*                  on a :                                                                                                           */
/*                                                                                                                                   */
/*                                       2                                                                                           */
/*                                      q  - T(q).q + N(q) = 0                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCtrace(q,q1)                                                                                                                 \
                    Bblock                                                                                                              \
                    FHCtrace(q,q1);                                                                                                     \
                    Eblock
#define   FHCtrace(q,q1)                                                                                                                \
                    Bblock                                                                                                              \
                    FgHCtrace(q,q1);                                                                                                    \
                    Eblock
#define   FgHCtrace(q,q1)                                                                                                               \
                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGtrace(prefixe,corps,sous_corps,...)                  \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FHC...(...)' qui sont  */ \
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q1_barre);                                                                                      \
                                        /* Ce nombre hyper-complexe est le conjugue du nombre hyper-complexe argument 'q1'.          */ \
                                                                                                                                        \
                    FHCconjugaison(q1_barre,q1);                                                                                        \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  --                                                                       */ \
                                        /*                  q1                                                                       */ \
                                        /*                                                                                           */ \
                    FHCsomme(q,q1,q1_barre);                                                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                       --                                                                  */ \
                                        /*                  q1 + q1                                                                  */ \
                                        /*                                                                                           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R O T A T I O N   E T   H O M O T H E T I E   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCrotation_et_homothetie(q,q1,rapport,alpha,phi,theta)                                                                        \
                    Bblock                                                                                                              \
                    FHCrotation_et_homothetie(q,q1,rapport,alpha,phi,theta);                                                            \
                    Eblock
#define   FHCrotation_et_homothetie(q,q1,rapport,alpha,phi,theta)                                                                       \
                    Bblock                                                                                                              \
                    FgHCrotation_et_homothetie(q,q1,rapport,alpha,phi,theta);                                                           \
                    Eblock
#define   FgHCrotation_et_homothetie(q,q1,rapport,alpha,phi,theta)                                                                      \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q_definition_de_la_rotation_et_homothetie);                                                     \
                                        /* Ce nombre hyper-complexe contient la definition de la rotation et de l'homothetie.        */ \
                                                                                                                                        \
                    FHCinitialisation(q_definition_de_la_rotation_et_homothetie                                                         \
                                     ,Xcartesienne_4D(rapport,alpha,phi,theta)                                                          \
                                     ,Ycartesienne_4D(rapport,alpha,phi,theta)                                                          \
                                     ,Zcartesienne_4D(rapport,alpha,phi,theta)                                                          \
                                     ,Tcartesienne_4D(rapport,alpha,phi,theta)                                                          \
                                      );                                                                                                \
                                        /* Definition de la rotation et de l'homothetie.                                             */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, jusqu'au 20061206172714, on trouvait ci-dessus :                               */ \
                                        /*                                                                                           */ \
                                        /*                  Xcartesienne_4D(...)                                                     */ \
                                        /*                  Ycartesienne_4D(...)                                                     */ \
                                        /*                  Tcartesienne_4D(...)                                                     */ \
                                        /*                  Zcartesienne_4D(...)                                                     */ \
                                        /*                                                                                           */ \
                                        /* dans cet ordre, ce qui semble incorrect et a donc ete corrige a cette date...             */ \
                    FHCproduit(q,q1,q_definition_de_la_rotation_et_homothetie);                                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                              i.angle                                                      */ \
                                        /*                  q1.rapport.e                                                             */ \
                                        /*                                                                                           */ \
                                        /* (notation tres symbolique...).                                                            */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, le quaternion 'q_definition_de_la_rotation_et_homothetie' vient de l'article   */ \
                                        /* "Visualizing Quaternion Rotation" dans 'ACM Transactions on Graphics' (volume 13,         */ \
                                        /* numero 3, du 08/1994) ; dans celui-ci on trouve la chose suivante (avec rho=1) :          */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(q)        = cos(alpha)                                           */ \
                                        /*                  HImaginaire(q)    = sin(alpha)sin(phi)cos(theta)                         */ \
                                        /*                  HJmaginaire(q)    = sin(alpha)sin(phi)sin(theta)                         */ \
                                        /*                  HKmaginaire(q)    = sin(alpha)cos(phi)                                   */ \
                                        /*                                                                                           */ \
                                        /* ce qui me parait peu symetrique. J'ai donc choisi :                                       */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(q)        = cos(alpha)                                           */ \
                                        /*                  HImaginaire(q)    = sin(alpha)cos(phi)                                   */ \
                                        /*                  HJmaginaire(q)    = sin(alpha)sin(phi)cos(theta)                         */ \
                                        /*                  HKmaginaire(q)    = sin(alpha)sin(phi)sin(theta)                         */ \
                                        /*                                                                                           */ \
                                        /* ou l'on notera qu'en tete (au-dessus) de chaque colonne de fonctions trigonometriques     */ \
                                        /* on trouve la fonction 'cos(...)', et en-dessous, uniquement la fonction 'sin(...)'.       */ \
                                        /*                                                                                           */ \
                                        /* Enfin, si l'on choisit :                                                                  */ \
                                        /*                                                                                           */ \
                                        /*                  FHCrotation_et_homothetie(q,q1,rapport,alpha,0,0)                        */ \
                                        /*                                                                                           */ \
                                        /* on trouve une rotation d'angle 'alpha' dans le plan complexe, ce qui conforte le choix    */ \
                                        /* fait...                                                                                   */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, tout cela fut remis en cause le 19970226152601 lors de l'introduction des      */ \
                                        /* fonctions 'FHCargumentT_PI(...)' et 'FHCargumentT_2PI(...)' qui malheureusement ne        */ \
                                        /* donnaient pas les bons resultats lorsque l'on etait dans le plan complexe. Cela s'est     */ \
                                        /* vu avec les programmes '$xrc/julia.01$K' et '$xrc/julia.41$K' en donnant a ce dernier     */ \
                                        /* des parametres 'K' et 'J' nuls afin d'etre dans le plan complexe, et en demandant a ces   */ \
                                        /* programmes de visualiser les arguments de sortie ('T' pour '$xrc/julia.41$K'). Il a donc  */ \
                                        /* fallu prendre les definitions suivantes :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  HJmaginaire(q)    = sin(alpha)cos(phi)                                   */ \
                                        /*                  HKmaginaire(q)    = cos(alpha)                                           */ \
                                        /*                  HReelle(q)        = sin(alpha)sin(phi)cos(theta)                         */ \
                                        /*                  HImaginaire(q)    = sin(alpha)sin(phi)sin(theta)                         */ \
                                        /*                                                                                           */ \
                                        /* soit dans l'ordre naturel des composantes de 'q' :                                        */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(q)        = sin(alpha)sin(phi)cos(theta)                         */ \
                                        /*                  HImaginaire(q)    = sin(alpha)sin(phi)sin(theta)                         */ \
                                        /*                  HJmaginaire(q)    = sin(alpha)cos(phi)                                   */ \
                                        /*                  HKmaginaire(q)    = cos(alpha)                                           */ \
                                        /*                                                                                           */ \
                                        /* faisant ainsi les associations (le 20061205161300) :                                      */ \
                                        /*                                                                                           */ \
                                        /*                  theta --> HImaginaire(q)                                                 */ \
                                        /*                  phi   --> HJmaginaire(q)                                                 */ \
                                        /*                  alpha --> HKmaginaire(q)                                                 */ \
                                        /*                                                                                           */ \
                                        /* 'q' designant un quaternion quelconque...                                                 */ \
                                        /*                                                                                           */ \
                                        /* Enfin, si l'on choisit maintenant :                                                       */ \
                                        /*                                                                                           */ \
                                        /*                  FHCrotation_et_homothetie(q,q1,rapport,pi/2,pi/2,theta)                  */ \
                                        /*                                                                                           */ \
                                        /* on trouve une rotation d'angle 'theta' dans le plan complexe, ce qui est plus logique,    */ \
                                        /* puisqu'on se place orthogonalement aux axes 'J' et 'K'...                                 */ \
                                        /*                                                                                           */ \
                                        /* Le 20181201104452, on verra a ce propos : 'v $xtKg/rotations_C_HC.01$K'...                */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        R O T A T I O N   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCrotation(q,q1,alpha,phi,theta)                                                                                              \
                    Bblock                                                                                                              \
                    FHCrotation(q,q1,alpha,phi,theta);                                                                                  \
                    Eblock
#define   FHCrotation(q,q1,alpha,phi,theta)                                                                                             \
                    Bblock                                                                                                              \
                    FgHCrotation(q,q1,alpha,phi,theta);                                                                                 \
                    Eblock
#define   FgHCrotation(q,q1,alpha,phi,theta)                                                                                            \
                    Bblock                                                                                                              \
                    FHCrotation_et_homothetie(q,q1,FU,alpha,phi,theta);                                                                 \
                                        /* On notera le 20181202131728 que la rotation neutre est donc definie par :                 */ \
                                        /*                                                                                           */ \
                                        /*        sin(alpha)sin(phi)cos(theta) = 1   ==>  sin(alpha) = sin(phi) = cos(theta) = 1     */ \
                                        /*        sin(alpha)sin(phi)sin(theta) = 0                                                   */ \
                                        /*        sin(alpha)cos(phi)           = 0                                                   */ \
                                        /*        cos(alpha)                   = 0                                                   */ \
                                        /*                                                                                           */ \
                                        /* d'ou :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  alpha  = pi/2                                                            */ \
                                        /*                  phi    = pi/2                                                            */ \
                                        /*                  theta  = 0                                                               */ \
                                        /*                                                                                           */ \
                                        /* qui verifient bien :                                                                      */ \
                                        /*                                                                                           */ \
                                        /*                  sin(alpha)sin(phi)sin(theta) = sin(alpha)cos(phi) = cos(alpha) = 0       */ \
                                        /*                                                                                           */ \
                                        /* ('v $xtKg/rotations_C_HC.01$K' et surtout 'v $xtKg/rotations_HC.02$K').                   */ \
                                        /*                                                                                           */ \
                                        /* Au passage, le programme 'v $xtKg/rotations_HC.01$K' semble montrer qu'il est impossible  */ \
                                        /* de trouver une rotation dans le plan 'C' de 'HC' (de par exemple pi/2) qui laisse le      */ \
                                        /* "reste" inchange. Cela parait finalement assez logique car on tourne autour d'un axe      */ \
                                        /* qui seul est invariant dans cette rotation...                                             */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        H O M O T H E T I E   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HChomothetie(q,q1,rapport)                                                                                                    \
                    Bblock                                                                                                              \
                    FHChomothetie(q,q1,rapport);                                                                                        \
                    Eblock
#define   FHChomothetie(q,q1,rapport)                                                                                                   \
                    Bblock                                                                                                              \
                    FgHChomothetie(q,q1,rapport);                                                                                       \
                    Eblock
#define   FgHChomothetie(q,q1,rapport)                                                                                                  \
                    Bblock                                                                                                              \
                    FHCrotation_et_homothetie(q,q1,rapport,PI_SUR_2,PI_SUR_2,FZERO);                                                    \
                                        /* Jusqu'au 20181201121241, il y avait ici :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  FHCrotation_et_homothetie(q,q1,rapport,FZERO,FZERO,FZERO);               */ \
                                        /*                                                                                           */ \
                                        /* mais en fait, voir le commentaire du 20181201104452 ci-dessus et surtout ceux qui le      */ \
                                        /* precede...                                                                                */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A R G U M E N T S   D E   Q   D A N S   [ - P I , + P I ]   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCargumentT_PI(q)                                                                                                             \
                    FHCargumentT_PI(q)
#define   FHCargumentT_PI(q)                                                                                                            \
                    gTheta_4D(ARTG                                                                                                      \
                             ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                   \
                             ,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)                                                   \
                              )

#define   HCargumentP_PI(q)                                                                                                             \
                    FHCargumentP_PI(q)
#define   FHCargumentP_PI(q)                                                                                                            \
                    gPhi_4D(ARTG                                                                                                        \
                           ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                     \
                           ,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)                                                     \
                            )

#define   HCargumentA_PI(q)                                                                                                             \
                    FHCargumentA_PI(q)
#define   FHCargumentA_PI(q)                                                                                                            \
                    gAlpha_4D(ARTG                                                                                                      \
                             ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                   \
                             ,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)                                                   \
                              )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A R G U M E N T S   D E   Q   D A N S   [ 0 , 2 . P I ]   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCargumentT_2PI(q)                                                                                                            \
                    FHCargumentT_2PI(q)
#define   FHCargumentT_2PI(q)                                                                                                           \
                    NEUT(gTheta_4D(ATAN                                                                                                 \
                                  ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                              \
                                  ,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)                                              \
                                   )                                                                                                    \
                         )

#define   HCargumentP_2PI(q)                                                                                                            \
                    FHCargumentP_2PI(q)
#define   FHCargumentP_2PI(q)                                                                                                           \
                    SOUS(gPhi_4D(ATAN                                                                                                   \
                                ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                \
                                ,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)                                                \
                                 )                                                                                                      \
                        ,PI_SUR_2                                                                                                       \
                         )

#define   HCargumentA_2PI(q)                                                                                                            \
                    FHCargumentA_2PI(q)
#define   FHCargumentA_2PI(q)                                                                                                           \
                    SOUS(gAlpha_4D(ATAN                                                                                                 \
                                  ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                              \
                                  ,HReelle(q),HImaginaire(q),HJmaginaire(q),HKmaginaire(q)                                              \
                                   )                                                                                                    \
                        ,PI_SUR_2                                                                                                       \
                         )

                                        /* En ce qui concerne la translation de '-pi/2' des angles 'alpha' et 'phi', cela a ete      */
                                        /* introduit le 20061210001852 par symetrie avec ce qui a ete fait pour les procedures       */
                                        /* {FHCcomposanteR,FHCcomposanteI,FHCcomposanteJ,FHCcomposanteK} ci-dessous lors de leur     */
                                        /* definition...                                                                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M P O S A N T E S   C A R T E S I E N N E S   D ' U N   N O M B R E   H Y P E R - C O M P L E X E  :                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Les procedures suivantes furent introduites le 20061209094527...                          */
                                        /*                                                                                           */
                                        /* ATTENTION : on notera que l'ordre des arguments {theta,phi,alpha} des procedures          */
                                        /* 'Ccomposante?(...)' est l'inverse de celui des procedures '?cartesienne_4D(...)'          */
                                        /* parce que plus logique...                                                                 */

#define   HCcomposanteR(rho,theta,phi,alpha)                                                                                            \
                    FHCcomposanteR(rho,theta,phi,alpha)
#define   FHCcomposanteR(rho,theta,phi,alpha)                                                                                           \
                    Xcartesienne_4D(rho,ADD2(alpha,PI_SUR_2),ADD2(phi,PI_SUR_2),NEUT(theta))

#define   HCcomposanteI(rho,theta,phi,alpha)                                                                                            \
                    FHCcomposanteI(rho,theta,phi,alpha)
#define   FHCcomposanteI(rho,theta,phi,alpha)                                                                                           \
                    Ycartesienne_4D(rho,ADD2(alpha,PI_SUR_2),ADD2(phi,PI_SUR_2),NEUT(theta))

#define   HCcomposanteJ(rho,theta,phi,alpha)                                                                                            \
                    FHCcomposanteJ(rho,theta,phi,alpha)
#define   FHCcomposanteJ(rho,theta,phi,alpha)                                                                                           \
                    Zcartesienne_4D(rho,ADD2(alpha,PI_SUR_2),ADD2(phi,PI_SUR_2),NEUT(theta))

#define   HCcomposanteK(rho,theta,phi,alpha)                                                                                            \
                    FHCcomposanteK(rho,theta,phi,alpha)
#define   FHCcomposanteK(rho,theta,phi,alpha)                                                                                           \
                    Tcartesienne_4D(rho,ADD2(alpha,PI_SUR_2),ADD2(phi,PI_SUR_2),NEUT(theta))

                                        /* En ce qui concerne la translation de 'pi/2' des angles 'alpha' et 'phi', voir les         */
                                        /* commentaires 'v $ximcd/operator$FON 20061206133437' qui suivent...                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I A T I O N   H Y P E R - C O M P L E X E   A   B A S E   R E E L L E  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCexponentielle(q,base,q1)                                                                                                    \
                                        /* Introduit le 20061205160911...                                                            */ \
                    Bblock                                                                                                              \
                    FHCexponentielle(q,base,q1);                                                                                        \
                    Eblock
#define   FHCexponentielle(q,base,q1)                                                                                                   \
                    Bblock                                                                                                              \
                    FgHCexponentielle(q,base,q1);                                                                                       \
                    Eblock

#define   FHCexponentielle_RI(composante)                                                                                               \
                    NEUT(composante)
#define   FHCexponentielle_JK(composante)                                                                                               \
                    COND(IL_FAUT(FHCexponentielle_____compatibilite_20061206)                                                           \
                        ,NEGA(composante)                                                                                               \
                        ,NEUT(composante)                                                                                               \
                         )
                                        /* Permet de "controler" l'exponentielle hyper-complexe (introduit le 20061206224938)...     */
#define   FgHCexponentielle(q,base,q1)                                                                                                  \
                                        /* Introduit le 20061205160911...                                                            */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHCexponentielle_____compatibilite_20230204))                                                          \
                                        /* Test introduit le 20230204085911...                                                       */ \
                         Bblock                                                                                                         \
                         DEFV(hyper_complexe,qA);                                                                                       \
                         DEFV(hyper_complexe,qB);                                                                                       \
                                        /* Quaternions de manoeuvre...                                                               */ \
                                                                                                                                        \
                         FHCforme_lineaire(qA                                                                                           \
                                          ,LOGX(base)                                                                                   \
                                          ,q1                                                                                           \
                                          ,FZERO                                                                                        \
                                           );                                                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  q  = (q11 + i.q1i + j.q1j + k.q1k).Log(base)                             */ \
                                        /*                   A                                                                       */ \
                                        /*                                                                                           */ \
                                        /* ou {q11,q1i,q1j,q1k} designent respectivement les quatre composantes de 'q1'...           */ \
                         FHCinitialisation(qB                                                                                           \
                                          ,FHCexponentielle_RI(FHCcomposanteR(Rho1_Quaternion                                           \
                                                                             ,HImaginaire(qA),HJmaginaire(qA),HKmaginaire(qA)           \
                                                                              )                                                         \
                                                               )                                                                        \
                                          ,FHCexponentielle_RI(FHCcomposanteI(Rho1_Quaternion                                           \
                                                                             ,HImaginaire(qA),HJmaginaire(qA),HKmaginaire(qA)           \
                                                                              )                                                         \
                                                               )                                                                        \
                                          ,FHCexponentielle_JK(FHCcomposanteJ(Rho1_Quaternion                                           \
                                                                             ,HImaginaire(qA),HJmaginaire(qA),HKmaginaire(qA)           \
                                                                              )                                                         \
                                                               )                                                                        \
                                          ,FHCexponentielle_JK(FHCcomposanteK(Rho1_Quaternion                                           \
                                                                             ,HImaginaire(qA),HJmaginaire(qA),HKmaginaire(qA)           \
                                                                              )                                                         \
                                                               )                                                                        \
                                           );                                                                                           \
                                        /* Ce calcul repose sur la methode utilisee dans le plan complexe (voir a ce propos          */ \
                                        /* 'v $ximcd/operator$FON 20061205161300') :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                      z1       x1 + i.y1                                                   */ \
                                        /*                  base   = base                                                            */ \
                                        /*                                                                                           */ \
                                        /*                               x1     i.y1                                                 */ \
                                        /*                         = base  .base                                                     */ \
                                        /*                                                                                           */ \
                                        /*                            x1.log(base)  i.[y1.log(base)]                                 */ \
                                        /*                         = e            .e                                                 */ \
                                        /*                                                                                           */ \
                                        /*                            x1.log(base)                                                   */ \
                                        /*                         = e            .{cos[y1.log(base)] + i.sin[y1.log(base)]}         */ \
                                        /*                                                                                           */ \
                                        /*                            x1.log(base)                                                   */ \
                                        /*                         = e            .[cos(theta) + i.sin(theta)]                       */ \
                                        /*                                                                                           */ \
                                        /* avec :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  theta --> Imaginaire(z1.log(base))                                       */ \
                                        /*                                                                                           */ \
                                        /*                  x1 = Reelle(z1)                                                          */ \
                                        /*                  y1 = Imaginaire(z1)                                                      */ \
                                        /*                                                                                           */ \
                                        /* Avec les quaternions, on procede de meme, mais avec des associations plus compliquees :   */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(qA)       = sin(alpha)sin(phi)cos(theta)            [Formules1]  */ \
                                        /*                  HImaginaire(qA)   = sin(alpha)sin(phi)sin(theta)                         */ \
                                        /*                  HJmaginaire(qA)   = sin(alpha)cos(phi)                                   */ \
                                        /*                  HKmaginaire(qA)   = cos(alpha)                                           */ \
                                        /*                                                                                           */ \
                                        /* via les definitions de {Xcartesienne_4D,Ycartesienne_4D,Zcartesienne_4D,Tcartesienne_4D}  */ \
                                        /* faisant ainsi les correspondances :                                                       */ \
                                        /*                                                                                           */ \
                                        /*                  theta --> HImaginaire(qA)                                                */ \
                                        /*                  phi   --> HJmaginaire(qA)                                                */ \
                                        /*                  alpha --> HKmaginaire(qA)                                                */ \
                                        /*                                                                                           */ \
                                        /* Malheureusement, le 20061206090308, j'ai note que dans le plan complexe, c'est-a-dire     */ \
                                        /* avec :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  theta quelconque,                                                        */ \
                                        /*                                                                                           */ \
                                        /*                  phi   = 0                                                                */ \
                                        /*                  alpha = 0                                                                */ \
                                        /*                                                                                           */ \
                                        /* cela ne fonctionnait pas car alors :                                                      */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(qA)       = 0*0*cos(theta) = 0                                   */ \
                                        /*                  HImaginaire(qA)   = 0*0*sin(theta) = 0                                   */ \
                                        /*                  HJmaginaire(qA)   = cos(alpha)*1   = cos(alpha)                          */ \
                                        /*                  HKmaginaire(qA)   = sin(alpha)*1   = sin(alpha)                          */ \
                                        /*                                                                                           */ \
                                        /* J'ai donc choisi (arbitrairement) a cette date :                                          */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(qA)       = cos(alpha)cos(phi)cos(theta)            [Formules2]  */ \
                                        /*                  HImaginaire(qA)   = cos(alpha)cos(phi)sin(theta)                         */ \
                                        /*                  HJmaginaire(qA)   = cos(alpha)sin(phi)                                   */ \
                                        /*                  HKmaginaire(qA)   = sin(alpha)                                           */ \
                                        /*                                                                                           */ \
                                        /* En fait cela vient de la remarque 'v $ximD/definit.1$DEF 20061206133437' car, en          */ \
                                        /* effet, il y a eu une petite confusion entre les angles {alpha,phi} (dans la version du    */ \
                                        /* 20061205160911 ci-dessus) et les angles {alpha,phi} (dans la version du 20061206090308)   */ \
                                        /* qui different en fait de pi/2. Sachant alors que :                                        */ \
                                        /*                                                                                           */ \
                                        /*                  sin(x+(pi/2)) = +cos(x)                                                  */ \
                                        /*                  cos(x+(pi/2)) = -sin(x)                                                  */ \
                                        /*                                                                                           */ \
                                        /* on retombe sur les formules du 20061206090308 [Formules2] a partir de celles du           */ \
                                        /* 20061205160911 [Formules1], a un signe pres, en remplacant {alpha,phi} par                */ \
                                        /* {alpha+ps2,phi+ps2} dans [Formules1] :                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(qA)       = sin(alpha+ps2)sin(phi+ps2)cos(theta)    [Formules1]  */ \
                                        /*                  HImaginaire(qA)   = sin(alpha+ps2)sin(phi+ps2)sin(theta)                 */ \
                                        /*                  HJmaginaire(qA)   = sin(alpha+ps2)cos(phi+ps2)                           */ \
                                        /*                  HKmaginaire(qA)   = cos(alpha+ps2)                                       */ \
                                        /*                                                                                           */ \
                                        /* soit :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(qA)       = +cos(alpha)cos(phi)cos(theta)           [Formules2]  */ \
                                        /*                  HImaginaire(qA)   = +cos(alpha)cos(phi)sin(theta)                        */ \
                                        /*                  HJmaginaire(qA)   = -cos(alpha)sin(phi)                                  */ \
                                        /*                  HKmaginaire(qA)   = -sin(alpha)                                          */ \
                                        /*                                                                                           */ \
                                        /* Malgre tout, par symetrie, je supprime les signes "-" :                                   */ \
                                        /*                                                                                           */ \
                                        /*                  HReelle(qA)       = +cos(alpha)cos(phi)cos(theta)           [Formules2]  */ \
                                        /*                  HImaginaire(qA)   = +cos(alpha)cos(phi)sin(theta)                        */ \
                                        /*                  HJmaginaire(qA)   = +cos(alpha)sin(phi)                                  */ \
                                        /*                  HKmaginaire(qA)   = +sin(alpha)                                          */ \
                                        /*                                                                                           */ \
                                        /* ou 'ps2' designe 'pi/2'. En fait, le 20061206224938 fut introduite la procedure           */ \
                                        /* 'FHCexponentielle_JK(...)' a cause du doute relatif a ce choix...                         */ \
                                        /*                                                                                           */ \
                                        /* Finalement grace a {FHCcomposanteR,FHCcomposanteI,FHCcomposanteJ,FHCcomposanteK}          */ \
                                        /* introduits le 20061209094300 tout est rentre dans l'ordre...                              */ \
                                        /*                                                                                           */ \
                                        /* Ce qui donne ainsi (par analogie avec les nombres complexes) :                            */ \
                                        /*                                                                                           */ \
                                        /*                      q1    q11*log(base)                                                  */ \
                                        /*                  base   = e                                                               */ \
                                        /*                           *{1*cos[q1k*log(base)]*cos[q1j*log(base)]*cos[q1i*log(base)]    */ \
                                        /*                            +i*cos[q1k*log(base)]*cos[q1j*log(base)]*sin[q1i*log(base)]    */ \
                                        /*                            +j*cos[q1k*log(base)]*sin[q1j*log(base)]                       */ \
                                        /*                            +k*sin[q1k*log(base)]}                                         */ \
                                        /*                                                                                           */ \
                                        /* ou {q11,q1i,q1j,q1k} sont les quatre composantes {1,i,j,k} du quaternion 'q1'...          */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, jusqu'au 20240626111544 il y avait ici par erreur :                            */ \
                                        /*                                                                                           */ \
                                        /*                  EXba(base,HReelle(qA))                                                   */ \
                                        /*                                                                                           */ \
                                        /* ce qui s'est vu lors de la mise au point de l'image 'v $xiirc/ZETA.21$m.IdM'...           */ \
                         FHCforme_lineaire(q                                                                                            \
                                          ,EXPB(HReelle(qA))                                                                            \
                                          ,qB                                                                                           \
                                          ,FZERO                                                                                        \
                                           );                                                                                           \
                                        /* Calcul final ('v $ximcd/operator$FON FCexponentielle').                                   */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(hyper_complexe,q1_partieReelle);                                                                          \
                         DEFV(Float,INIT(exponentielle_de_q1_partieReelle,FLOT__UNDEF));                                                \
                                                                                                                                        \
                         DEFV(hyper_complexe,q1_partieIJKmaginaire);                                                                    \
                         DEFV(Float,INIT(module_de_q1_partieIJKmaginaire,FLOT__UNDEF));                                                 \
                         DEFV(Float,INIT(cosinus_de_module_de_q1_partieIJKmaginaire,FLOT__UNDEF));                                      \
                         DEFV(Float,INIT(sinus_cardinal_de_module_de_q1_partieIJKmaginaire,FLOT__UNDEF));                               \
                                                                                                                                        \
                         DEFV(hyper_complexe,q1_partiel);                                                                               \
                                                                                                                                        \
                         FHCpartieReelle(q1_partieReelle,q1);                                                                           \
                         FHCpartieIJKmaginaire(q1_partieIJKmaginaire,q1);                                                               \
                                                                                                                                        \
                         EGAL(module_de_q1_partieIJKmaginaire,FHCmodule(q1_partieIJKmaginaire));                                        \
                         EGAL(exponentielle_de_q1_partieReelle,EXba(base,HReelle(q1_partieReelle)));                                    \
                         EGAL(cosinus_de_module_de_q1_partieIJKmaginaire,COSX(module_de_q1_partieIJKmaginaire));                        \
                         EGAL(sinus_cardinal_de_module_de_q1_partieIJKmaginaire,SINC(module_de_q1_partieIJKmaginaire));                 \
                                                                                                                                        \
                         FHCinitialisation(q1_partiel                                                                                   \
                                          ,cosinus_de_module_de_q1_partieIJKmaginaire                                                   \
                                          ,MUL2(sinus_cardinal_de_module_de_q1_partieIJKmaginaire,HImaginaire(q1_partieIJKmaginaire))   \
                                          ,MUL2(sinus_cardinal_de_module_de_q1_partieIJKmaginaire,HJmaginaire(q1_partieIJKmaginaire))   \
                                          ,MUL2(sinus_cardinal_de_module_de_q1_partieIJKmaginaire,HKmaginaire(q1_partieIJKmaginaire))   \
                                           );                                                                                           \
                         FHCforme_lineaire(q                                                                                            \
                                          ,exponentielle_de_q1_partieReelle                                                             \
                                          ,q1_partiel                                                                                   \
                                          ,FZERO                                                                                        \
                                           );                                                                                           \
                                        /* Le 20230204091013, il semblerait que la bonne definition de l'exponentielle d'un nombre   */ \
                                        /* hyper-complexe soit :                                                                     */ \
                                        /*                                                                                           */ \
                                        /*        :Debut_listMN_DEFINITION_EXPONENTIELLE_NOMBRES_HYPER_COMPLEXES:                    */ \
                                        /*                                                                                           */ \
                                        /*                   q    R(q)                                                               */ \
                                        /*                  e  = e    .[cos(|I(q)|) + sinc(|I(q)|).I(q)]                             */ \
                                        /*                                                                                           */ \
                                        /* En effet :                                                                                */ \
                                        /*                                                                                           */ \
                                        /*                  q  = R(q) + I(q)                                                         */ \
                                        /*                  q  = a    + b.i + c.j + d.k                                              */ \
                                        /*                                                                                           */ \
                                        /*                  I  =        b.i + c.j + d.k             [I = I(q)]                       */ \
                                        /*                                                                                           */ \
                                        /*                  q  = a + I                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   2     2   2   2       2     2                                           */ \
                                        /*                  I  = -b  -c  -d  = -|I|  = -m           [m = |I|]                        */ \
                                        /*                                                                                           */ \
                                        /*                   3     2                                                                 */ \
                                        /*                  I  = -m .I                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   4     4                                                                 */ \
                                        /*                  I  = +m                                                                  */ \
                                        /*                                                                                           */ \
                                        /*                   5     4                                                                 */ \
                                        /*                  I  = +m .I                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                   q    a  I                         a.i  c.j  d.k                         */ \
                                        /*                  e  = e .e           (et non pas : e   .e   .e   )                        */ \
                                        /*                                                                                           */ \
                                        /*         I        1    1    1    2    1    3    1    4    1    5                           */ \
                                        /*        e  = 1 + ----.I  + ----.I  + ----.I  + ----.I  + ----.I  + (...)                   */ \
                                        /*                  1!        2!        3!        4!        5!                               */ \
                                        /*                                                                                           */ \
                                        /*         I        1    1    1      2     1      2        1      4     1      4             */ \
                                        /*        e  = 1 + ----.I  + ----.(-m ) + ----.(-m ).I) + ----.(+m ) + ----.(+m .I) + (...)  */ \
                                        /*                  1!        2!           3!              4!           5!                   */ \
                                        /*                                                                                           */ \
                                        /*         I        1    2    1    4               1      1    2                             */ \
                                        /*        e  = 1 - ----.m  + ----.m  + (...) + I.[---- - ----.m  + (...)]                    */ \
                                        /*                  2!        4!                   1!     3!                                 */ \
                                        /*                                                                                           */ \
                                        /*         I        1    2    1    4            I    1    1   1    3                         */ \
                                        /*        e  = 1 - ----.m  + ----.m  + (...) + ---.[----.m - ----.m  + (...)]                */ \
                                        /*                  2!        4!                m    1!       3!                             */ \
                                        /*                                                                                           */ \
                                        /*         I                                    I                                            */ \
                                        /*        e  = cos(m)                        + ---.sin(m)                                    */ \
                                        /*                                              m                                            */ \
                                        /*                                                                                           */ \
                                        /*         I                                                                                 */ \
                                        /*        e  = cos(m) + sinc(m).I                                                            */ \
                                        /*                                                                                           */ \
                                        /*         q    a                                                                            */ \
                                        /*        e  = e .[cos(m) + sinc(m).I]                      [sinc(...) = sinus cardinal]     */ \
                                        /*                                                                                           */ \
                                        /*        :Fin_listMN_DEFINITION_EXPONENTIELLE_NOMBRES_HYPER_COMPLEXES:                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I A T I O N   H Y P E R - C O M P L E X E   A   B A S E   H Y P E R - C O M P L E X E  :                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCexponentielle_quaternionique(q,base,q1)                                                                                     \
                                        /* Introduit le 20061205160911...                                                            */ \
                    Bblock                                                                                                              \
                    FHCexponentielle_quaternionique(q,base,q1);                                                                         \
                    Eblock
#define   FHCexponentielle_quaternionique(q,base,q1)                                                                                    \
                    Bblock                                                                                                              \
                    FgHCexponentielle_quaternionique(q,base,q1);                                                                        \
                    Eblock
#define   FgHCexponentielle_quaternionique(q,base,q1)                                                                                   \
                                        /* Introduit le 20061205160911...                                                            */ \
                    Bblock                                                                                                              \
                    Test(FHCTestIFEQ(base,HC_____quaternion__0__0__0__0))                                                               \
                         Bblock                                                                                                         \
                         FHCegal(q,HC_____quaternion__0__0__0__0);                                                                      \
                                        /* Valeur arbitraire introduite le 20210218120647...                                         */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(hyper_complexe,logarithme_base);                                                                          \
                         DEFV(hyper_complexe,q_produit);                                                                                \
                                        /* Quaternions de manoeuvre...                                                               */ \
                                                                                                                                        \
                         FHClogarithme(logarithme_base,base);                                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  log(base)                                                                */ \
                                        /*                                                                                           */ \
                         FHCproduit(q_produit,q1,logarithme_base);                                                                      \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  q1.log(base)                                                             */ \
                                        /*                                                                                           */ \
                         FHCexponentielle(q,EN,q_produit);                                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   q1.log(base)                                                            */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L O G A R I T H M E   H Y P E R - C O M P L E X E  :                                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HClogarithme(q,q1)                                                                                                            \
                                        /* Introduit le 20061205160911...                                                            */ \
                    Bblock                                                                                                              \
                    FHClogarithme(q,q1);                                                                                                \
                    Eblock
#define   FHClogarithme(q,q1)                                                                                                           \
                    Bblock                                                                                                              \
                    FgHClogarithme(q,q1);                                                                                               \
                    Eblock
#define   FgHClogarithme(q,q1)                                                                                                          \
                                        /* Introduit le 20061205160911...                                                            */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHClogarithme_____compatibilite_20230204))                                                             \
                                        /* Test introduit le 20230204111216...                                                       */ \
                         Bblock                                                                                                         \
                         DEFV(Float,INIT(module_q1,FHCmodule(q1)));                                                                     \
                         DEFV(Float,INIT(argumentT_q1,FHCargumentT_PI(q1)));                                                            \
                         DEFV(Float,INIT(argumentP_q1,FHCargumentP_PI(q1)));                                                            \
                         DEFV(Float,INIT(argumentA_q1,FHCargumentA_PI(q1)));                                                            \
                                        /* Module et arguments du nombre 'q1'.                                                       */ \
                                                                                                                                        \
                         FHCinitialisation(q                                                                                            \
                                          ,COND(IZEQ_a_peu_pres(module_q1,GRAND_EPSILON),F_MOINS_LE_PETIT_INFINI,LOGX(module_q1))       \
                                          ,argumentT_q1                                                                                 \
                                          ,argumentP_q1                                                                                 \
                                          ,argumentA_q1                                                                                 \
                                           );                                                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  q = log(module(q1)) + i.argT(q1) + j.argP(q1) + k.argA(q1)               */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'en toute generalite, c'est la nullite "parfaite" du module qui devrait       */ \
                                        /* etre testee, mais en faisant ainsi, on risquerait des debordements ulterieurs, d'ou       */ \
                                        /* ce dispositif "a epsilon pres".                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(Float,INIT(module_de_q1,FLOT__UNDEF));                                                                    \
                         DEFV(Float,INIT(logarithme_du_module_de_q1,FLOT__UNDEF));                                                      \
                                                                                                                                        \
                         DEFV(hyper_complexe,q1_partieReelle);                                                                          \
                         DEFV(Float,INIT(module_de_q1_partieReelle,FLOT__UNDEF));                                                       \
                                                                                                                                        \
                         DEFV(hyper_complexe,q1_partieIJKmaginaire);                                                                    \
                         DEFV(Float,INIT(module_de_q1_partieIJKmaginaire,FLOT__UNDEF));                                                 \
                                                                                                                                        \
                         DEFV(Float,INIT(facteur,FLOT__UNDEF));                                                                         \
                                                                                                                                        \
                         FHCpartieReelle(q1_partieReelle,q1);                                                                           \
                         EGAL(module_de_q1_partieReelle,FHCmodule(q1_partieReelle));                                                    \
                         FHCpartieIJKmaginaire(q1_partieIJKmaginaire,q1);                                                               \
                                                                                                                                        \
                         EGAL(module_de_q1,FHCmodule(q1));                                                                              \
                         EGAL(logarithme_du_module_de_q1                                                                                \
                             ,COND(IZEQ_a_peu_pres(module_de_q1,GRAND_EPSILON),F_MOINS_LE_PETIT_INFINI,LOGX(module_de_q1))              \
                              );                                                                                                        \
                         EGAL(module_de_q1_partieIJKmaginaire,FHCmodule(q1_partieIJKmaginaire));                                        \
                         EGAL(facteur                                                                                                   \
                             ,DIV0(ACOX(DIVZ(module_de_q1_partieReelle,module_de_q1))                                                   \
                                  ,module_de_q1_partieIJKmaginaire                                                                      \
                                  ,FZERO                                                                                                \
                                  ,FZERO                                                                                                \
                                   )                                                                                                    \
                              );                                                                                                        \
                                        /* Le cas particulier de la division par 0 a ete introduit le 20230321121916 lors de la      */ \
                                        /* mise au point de l'image 'v $xiirs/CAYA.W4'...                                            */ \
                                                                                                                                        \
                         FHCinitialisation(q                                                                                            \
                                          ,logarithme_du_module_de_q1                                                                   \
                                          ,MUL2(facteur,HImaginaire(q1_partieIJKmaginaire))                                             \
                                          ,MUL2(facteur,HJmaginaire(q1_partieIJKmaginaire))                                             \
                                          ,MUL2(facteur,HKmaginaire(q1_partieIJKmaginaire))                                             \
                                           );                                                                                           \
                                        /* Le 20230204112039 il semblerait que la bonne definition du logarithme d'un nombre         */ \
                                        /* hyper-complexe soit :                                                                     */ \
                                        /*                                                                                           */ \
                                        /*        :Debut_listMN_DEFINITION_LOGARITHME_NOMBRES_HYPER_COMPLEXES:                       */ \
                                        /*                                                                                           */ \
                                        /*                                        1          |R(q)|                                  */ \
                                        /*                  log(q) = {log(|q|,--------.acos(--------).I(q)}                          */ \
                                        /*                                     |I(q)|          |q|                                   */ \
                                        /*                                                                                           */ \
                                        /*        :Fin_listMN_DEFINITION_LOGARITHME_NOMBRES_HYPER_COMPLEXES:                         */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   T R I G O N O M E T R I Q U E S   H Y P E R - C O M P L E X E S                                              */
/*        C I R C U L A I R E S   E T   H Y P E R B O L I Q U E S  :                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FHCcosinus_sinus_circulaires_et_hyperboliques__type_1(q,q1,facteur_des_exposants,FHCplus_ou_moins,diviseur)                   \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,plus_q1);                                                                                       \
                    DEFV(hyper_complexe,moins_q1);                                                                                      \
                    DEFV(hyper_complexe,qF1);                                                                                           \
                    DEFV(hyper_complexe,qF2);                                                                                           \
                    DEFV(hyper_complexe,qE1);                                                                                           \
                    DEFV(hyper_complexe,qE2);                                                                                           \
                    DEFV(hyper_complexe,qN);                                                                                            \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    FHCegal(plus_q1,q1);                                                                                                \
                    FHCnegation(moins_q1,q1);                                                                                           \
                                                                                                                                        \
                    FHCproduit(qF1,facteur_des_exposants,plus_q1);                                                                      \
                    FHCproduit(qF2,facteur_des_exposants,moins_q1);                                                                     \
                                        /* Definition des nombres '+f.q1' et '-f.q1'.                                                */ \
                                                                                                                                        \
                    FHCexponentielle(qE1,EN,qF1);                                                                                       \
                    FHCexponentielle(qE2,EN,qF2);                                                                                       \
                                                                                                                                        \
                    FHCplus_ou_moins(qN,qE1,qE2);                                                                                       \
                                                                                                                                        \
                    FHCquotient(q,qN,diviseur);                                                                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +f.q1    -f.q1                                                     */ \
                                        /*                       e      & e                                                          */ \
                                        /*                  q = -----------------                                                    */ \
                                        /*                             d                                                             */ \
                                        /*                                                                                           */ \
                                        /* ou '&' et 'd' valent {+,-} et {2,2i} pour le cosinus et le sinus respectivement, et       */ \
                                        /* ou 'f' vaut {i,1} pour les lignes circulaires et hyperboliques respectivement.            */ \
                    Eblock

#define   FHCcosinus_sinus_circulaires_et_hyperboliques__type_2(q,q1,f11,f12,signe,f21,f22)                                             \
                                        /* Procedure introduite le 20230206110454...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,q1_partieReelle);                                                                               \
                    DEFV(Float,INIT(module_de_q1_partieReelle,FLOT__UNDEF));                                                            \
                                                                                                                                        \
                    DEFV(hyper_complexe,q1_partieIJKmaginaire);                                                                         \
                    DEFV(Float,INIT(module_de_q1_partieIJKmaginaire,FLOT__UNDEF));                                                      \
                                                                                                                                        \
                    DEFV(Float,INIT(f11_de_module_de_q1_partieReelle,FLOT__UNDEF));                                                     \
                    DEFV(Float,INIT(f12_de_module_de_q1_partieIJKmaginaire,FLOT__UNDEF));                                               \
                    DEFV(Float,INIT(f21_de_module_de_q1_partieReelle,FLOT__UNDEF));                                                     \
                    DEFV(Float,INIT(f22_de_module_de_q1_partieIJKmaginaire,FLOT__UNDEF));                                               \
                                                                                                                                        \
                    FHCpartieReelle(q1_partieReelle,q1);                                                                                \
                    FHCpartieIJKmaginaire(q1_partieIJKmaginaire,q1);                                                                    \
                                                                                                                                        \
                    EGAL(module_de_q1_partieReelle,FHCmodule(q1_partieReelle));                                                         \
                    EGAL(module_de_q1_partieIJKmaginaire,FHCmodule(q1_partieIJKmaginaire));                                             \
                                                                                                                                        \
                    EGAL(f11_de_module_de_q1_partieReelle,f11(module_de_q1_partieReelle));                                              \
                    EGAL(f21_de_module_de_q1_partieReelle,f21(module_de_q1_partieReelle));                                              \
                                                                                                                                        \
                    EGAL(f12_de_module_de_q1_partieIJKmaginaire,f12(module_de_q1_partieIJKmaginaire));                                  \
                    EGAL(f22_de_module_de_q1_partieIJKmaginaire,f22(module_de_q1_partieIJKmaginaire));                                  \
                                                                                                                                        \
                    FHCinitialisation(q                                                                                                 \
                                     ,MUL2(f11_de_module_de_q1_partieReelle                                                             \
                                          ,f12_de_module_de_q1_partieIJKmaginaire                                                       \
                                           )                                                                                            \
                                     ,MUL4(FLOT(signe)                                                                                  \
                                          ,f21_de_module_de_q1_partieReelle                                                             \
                                          ,f22_de_module_de_q1_partieIJKmaginaire                                                       \
                                          ,HImaginaire(q1_partieIJKmaginaire)                                                           \
                                           )                                                                                            \
                                     ,MUL4(FLOT(signe)                                                                                  \
                                          ,f21_de_module_de_q1_partieReelle                                                             \
                                          ,f22_de_module_de_q1_partieIJKmaginaire                                                       \
                                          ,HJmaginaire(q1_partieIJKmaginaire)                                                           \
                                           )                                                                                            \
                                     ,MUL4(FLOT(signe)                                                                                  \
                                          ,f21_de_module_de_q1_partieReelle                                                             \
                                          ,f22_de_module_de_q1_partieIJKmaginaire                                                       \
                                          ,HKmaginaire(q1_partieIJKmaginaire)                                                           \
                                           )                                                                                            \
                                      );                                                                                                \
                    Eblock                                                                                                              \
                                        /* Le 20230206110454, il semblerait que la bonne definition des lignes trigonometriques      */ \
                                        /* circulaires et hyperboliques d'un nombre hyper-complexe soit :                            */ \
                                        /*                                                                                           */ \
                                        /*        :Debut_listMN_DEFINITION_LIGNES_TRIGONOMETRIQUES_NOMBRES_HYPER_COMPLEXES:          */ \
                                        /*                                                                                           */ \
                                        /*                  cos(q) = [cos(R(q)).ch(|I(q)|)]  - [sin(R(q)).shc(|I(q)|).I(q)]          */ \
                                        /*                  sin(q) = [sin(R(q)).ch(|I(q)|)]  + [cos(R(q)).shc(|I(q)|).I(q)]          */ \
                                        /*                                                                                           */ \
                                        /*                  ch(q)  = [ch(R(q)).cos(|I(q)|)]  + [sh(R(q)).sinc(|I(q)|).I(q)]          */ \
                                        /*                  sh(q)  = [sh(R(q)).cos(|I(q)|)]  + [ch(R(q)).sinc(|I(q)|).I(q)]          */ \
                                        /*                                                                                           */ \
                                        /* en faisant les hypotheses audacieuses suivantes :                                         */ \
                                        /*                                                                                           */ \
                                        /*                  q  = R(q) + I(q)                                                         */ \
                                        /*                  q  = a    + b.i + c.j + d.k                                              */ \
                                        /*                                                                                           */ \
                                        /*                  I  =        b.i + c.j + d.k                                 [I = I(q)]   */ \
                                        /*                                                                              [m = |I|]    */ \
                                        /*                                                                                           */ \
                                        /*                  q  = a + I                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                          f11    f12      f21    f22                       */ \
                                        /*                                                                                           */ \
                                        /*                  cos(q) = cos(a+I)   = [cos(a).cos(I) - sin(a).sin(I)]                    */ \
                                        /*                  sin(q) = cos(a+I)   = [sin(a).cos(I) + cos(a).sin(I)]                    */ \
                                        /*                                                                                           */ \
                                        /*                  ch(q)  = ch(a+I)    = [ch(a).ch(I)   + sh(a).sh(I)]                      */ \
                                        /*                  sh(q)  = sh(a+I)    = [sh(a).ch(I)   + ch(a).sh(I)]                      */ \
                                        /*                                                                                           */ \
                                        /* En effet, par des developpements en series tel celui de 'FgHCexponentielle(...)', on      */ \
                                        /* montre facilement que :                                                                   */ \
                                        /*                                                                                           */ \
                                        /*                  cos(I) = ch(m)                                                           */ \
                                        /*                                                                                           */ \
                                        /*                            sh(m)                                                          */ \
                                        /*                  sin(I) = -------.I  = shc(m).I                                           */ \
                                        /*                              m                                                            */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  ch(I)  = cos(m)                                                          */ \
                                        /*                                                                                           */ \
                                        /*                            sin(m)                                                         */ \
                                        /*                  sh(I)  = --------.I = sinc(m).I                                          */ \
                                        /*                              m                                                            */ \
                                        /*                                                                                           */ \
                                        /* d'ou :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                                          f11    f12      f21    f22                       */ \
                                        /*                                                                                           */ \
                                        /*                  cos(q) = cos(a+I)   = [cos(a).ch(m)  - sin(a).shc(m).I]                  */ \
                                        /*                  sin(q) = cos(a+I)   = [sin(a).ch(m)  + cos(a).shc(m).I]                  */ \
                                        /*                                                                                           */ \
                                        /*                  ch(q)  = ch(a+I)    = [ch(a).cos(m)  + sh(a).sinc(m).I]                  */ \
                                        /*                  sh(q)  = sh(a+I)    = [sh(a).cos(m)  + ch(a).sinc(m).I]                  */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /* On verifie aisement que :                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                     2         2        2         2     2                                  */ \
                                        /*                  cos (q) + sin (q) = ch (m) + shc (m).I                                   */ \
                                        /*                                                                                           */ \
                                        /*                                                  2                                        */ \
                                        /*                                        2       sh (m)   2            2      2             */ \
                                        /*                                    = ch (m) + --------.I           [I  = -(m )]           */ \
                                        /*                                                   2                                       */ \
                                        /*                                                  m                                        */ \
                                        /*                                                                                           */ \
                                        /*                                        2        2                                         */ \
                                        /*                                    = ch (m) - sh (m)                                      */ \
                                        /*                                                                    ['m' etant un Reel...] */ \
                                        /*                                    = 1                                                    */ \
                                        /*                                                                                           */ \
                                        /* de meme :                                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                    2        2                                                             */ \
                                        /*                  ch (q) - sh (q)   = 1                                                    */ \
                                        /*                                                                                           */ \
                                        /*        :Fin_listMN_DEFINITION_LIGNES_TRIGONOMETRIQUES_NOMBRES_HYPER_COMPLEXES:            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   T R I G O N O M E T R I Q U E S   H Y P E R - C O M P L E X E S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FHCcosinus_sinus(q,q1,FHCplus_ou_moins,diviseur)                                                                              \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCcosinus_sinus_circulaires_et_hyperboliques__type_1(q                                                             \
                                                                         ,q1                                                            \
                                                                         ,HC_____quaternion__0_p1__0__0                                 \
                                                                         ,FHCplus_ou_moins                                              \
                                                                         ,diviseur                                                      \
                                                                          );                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.q1    -i.q1                                                     */ \
                                        /*                       e      & e                                                          */ \
                                        /*                  q = -----------------                                                    */ \
                                        /*                             d                                                             */ \
                                        /*                                                                                           */ \
                                        /* ou '&' et 'd' valent {+,-} et {2,2.i} pour le cosinus et le sinus respectivement.         */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O S I N U S   H Y P E R - C O M P L E X E  :                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCserie_cosinus(q,q1)                                                                                                         \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHCserie_cosinus(q,q1);                                                                                             \
                    Eblock
#define   FHCserie_cosinus(q,q1)                                                                                                        \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCserie_cosinus(q,q1);                                                                                            \
                    Eblock
#define   FgHCserie_cosinus(q,q1)                                                                                                       \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(q,q1                                                                               \
                                                    ,GENERER_UN_COSINUS,TRIGONOMETRIE_CIRCULAIRE__                                      \
                                                    ,hyper_complexe                                                                     \
                                                    ,FHCegal                                                                            \
                                                    ,FHCforme_lineaire                                                                  \
                                                    ,FHCsomme                                                                           \
                                                    ,aHCpuissance                                                                       \
                                                    ,FgHCserie_cosinus_____HC_____exposant                                              \
                                                    ,FHCproduit                                                                         \
                                                    ,FgHCserie_cosinus_____HC_____quaternion__0__0__0__0                                \
                                                    ,HC_____quaternion_p1__0__0__0                                                      \
                                                     );                                                                                 \
                    Eblock

#define   HCcosinus(q,q1)                                                                                                               \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCcosinus(q,q1);                                                                                                   \
                    Eblock
#define   FHCcosinus(q,q1)                                                                                                              \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCcosinus(q,q1);                                                                                                  \
                    Eblock
#define   FgHCcosinus(q,q1)                                                                                                             \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHCcosinus_____compatibilite_20230206))                                                                \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHCcosinus_sinus(q,q1,FHCsomme,HC_____quaternion_p2__0__0__0);                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.q1    -i.q1                                                     */ \
                                        /*                       e      + e                                                          */ \
                                        /*                  q = -----------------                                                    */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FHCcosinus_____compatibilite_20230321))                                                           \
                                        /* Test introduit le 20230321184556...                                                       */ \
                              Bblock                                                                                                    \
                              FHCcosinus_sinus_circulaires_et_hyperboliques__type_2(q,q1,COSX,COHX,SIGNE_MOINS,SINX,SIHC);              \
                                        /* Introduit le 20230206110454...                                                            */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              DEFV(hyper_complexe,exponentielle_q1);                                                                    \
                                                                                                                                        \
                              FHCexponentielle(exponentielle_q1,EN,q1);                                                                 \
                              FHCpartieReelle(q,exponentielle_q1);                                                                      \
                                        /* Mis sous cette forme le 20230321184556...                                                 */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S I N U S   H Y P E R - C O M P L E X E  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCserie_sinus(q,q1)                                                                                                           \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHCserie_sinus(q,q1);                                                                                               \
                    Eblock
#define   FHCserie_sinus(q,q1)                                                                                                          \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCserie_sinus(q,q1);                                                                                              \
                    Eblock
#define   FgHCserie_sinus(q,q1)                                                                                                         \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(q,q1                                                                               \
                                                    ,GENERER_UN_SINUS__,TRIGONOMETRIE_CIRCULAIRE__                                      \
                                                    ,hyper_complexe                                                                     \
                                                    ,FHCegal                                                                            \
                                                    ,FHCforme_lineaire                                                                  \
                                                    ,FHCsomme                                                                           \
                                                    ,aHCpuissance                                                                       \
                                                    ,FgHCserie_sinus_____HC_____exposant                                                \
                                                    ,FHCproduit                                                                         \
                                                    ,FgHCserie_sinus_____HC_____quaternion__0__0__0__0                                  \
                                                    ,HC_____quaternion_p1__0__0__0                                                      \
                                                     );                                                                                 \
                    Eblock

#define   HCsinus(q,q1)                                                                                                                 \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCsinus(q,q1);                                                                                                     \
                    Eblock
#define   FHCsinus(q,q1)                                                                                                                \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCsinus(q,q1);                                                                                                    \
                    Eblock
#define   FgHCsinus(q,q1)                                                                                                               \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHCsinus_____compatibilite_20230206))                                                                  \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHCcosinus_sinus(q,q1,FHCdifference,HC_____quaternion__0_p2__0__0);                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.q1    -i.q1                                                     */ \
                                        /*                       e      - e                                                          */ \
                                        /*                  q = -----------------                                                    */ \
                                        /*                            2.i                                                            */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FHCsinus_____compatibilite_20230321))                                                             \
                                        /* Test introduit le 20230321184556...                                                       */ \
                              Bblock                                                                                                    \
                              FHCcosinus_sinus_circulaires_et_hyperboliques__type_2(q,q1,SINX,COHX,SIGNE_PLUS,COSX,SIHC);               \
                                        /* Procedure introduite le 20230206092813...                                                 */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              DEFV(hyper_complexe,exponentielle_q1);                                                                    \
                                                                                                                                        \
                              FHCexponentielle(exponentielle_q1,EN,q1);                                                                 \
                              FHCpartieIJKmaginaire(q,exponentielle_q1);                                                                \
                                        /* Mis sous cette forme le 20230321184556...                                                 */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A N G E N T E   H Y P E R - C O M P L E X E  :                                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FgHCtangente_quotient(q,q1,fonction_cosinus,fonction_sinus__)                                                                 \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,cosinus_q1);                                                                                    \
                    DEFV(hyper_complexe,sinus_q1);                                                                                      \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    fonction_cosinus(cosinus_q1,q1);                                                                                    \
                    fonction_sinus__(sinus_q1,q1);                                                                                      \
                                        /* Calcul du sinus et du cosinus de 'q1'.                                                    */ \
                                                                                                                                        \
                    Test(IZNE(FHCmodule(cosinus_q1)))                                                                                   \
                         Bblock                                                                                                         \
                         FHCquotient(q,sinus_q1,cosinus_q1);                                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                        sinus(q1)                                                          */ \
                                        /*                  q = -------------                                                        */ \
                                        /*                       cosinus(q1)                                                         */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHCinitialisation(q                                                                                            \
                                          ,MEME_SIGNE_QUE(HReelle(sinus_q1),F_INFINI)                                                   \
                                          ,MEME_SIGNE_QUE(HImaginaire(sinus_q1),F_INFINI)                                               \
                                          ,MEME_SIGNE_QUE(HJmaginaire(sinus_q1),F_INFINI)                                               \
                                          ,MEME_SIGNE_QUE(HKmaginaire(sinus_q1),F_INFINI)                                               \
                                           );                                                                                           \
                                        /* Lorsque le module du cosinus est nul, la valeur de la tangente est fixee de facon tout    */ \
                                        /* a fait arbitraire...                                                                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   HCserie_tangente(q,q1)                                                                                                        \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FHCserie_tangente(q,q1);                                                                                            \
                    Eblock
#define   FHCserie_tangente(q,q1)                                                                                                       \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCserie_tangente(q,q1);                                                                                           \
                    Eblock
#define   FgHCserie_tangente(q,q1)                                                                                                      \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCtangente_quotient(q,q1,FHCserie_cosinus,FHCserie_sinus);                                                        \
                    Eblock

#define   HCtangente(q,q1)                                                                                                              \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCtangente(q,q1);                                                                                                  \
                    Eblock
#define   FHCtangente(q,q1)                                                                                                             \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCtangente(q,q1);                                                                                                 \
                    Eblock
#define   FgHCtangente(q,q1)                                                                                                            \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCtangente_quotient(q,q1,FHCcosinus,FHCsinus);                                                                    \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   H Y P E R B O L I Q U E S   H Y P E R - C O M P L E X E S  :                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FHCcosinus_sinus_hyperbolique(q,q1,FHCplus_ou_moins)                                                                          \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCcosinus_sinus_circulaires_et_hyperboliques__type_1(q                                                             \
                                                                         ,q1                                                            \
                                                                         ,HC_____quaternion_p1__0__0__0                                 \
                                                                         ,FHCplus_ou_moins                                              \
                                                                         ,HC_____quaternion_p2__0__0__0                                 \
                                                                          );                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +q1    -q1                                                         */ \
                                        /*                       e    & e                                                            */ \
                                        /*                  q = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                                        /* ou '&' vaut {+,-} pour le cosinus et le sinus respectivement.                             */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O S I N U S   H Y P E R B O L I Q U E   H Y P E R - C O M P L E X E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCserie_cosinus_hyperbolique(q,q1)                                                                                            \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHCserie_cosinus_hyperbolique(q,q1);                                                                                \
                    Eblock
#define   FHCserie_cosinus_hyperbolique(q,q1)                                                                                           \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCserie_cosinus_hyperbolique(q,q1);                                                                               \
                    Eblock
#define   FgHCserie_cosinus_hyperbolique(q,q1)                                                                                          \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(q,q1                                                                               \
                                                    ,GENERER_UN_COSINUS,TRIGONOMETRIE_HYPERBOLIQUE                                      \
                                                    ,hyper_complexe                                                                     \
                                                    ,FHCegal                                                                            \
                                                    ,FHCforme_lineaire                                                                  \
                                                    ,FHCsomme                                                                           \
                                                    ,aHCpuissance                                                                       \
                                                    ,FgHCserie_cosinus_hyperbolique_____HC_____exposant                                 \
                                                    ,FHCproduit                                                                         \
                                                    ,FgHCserie_cosinus_hyperbolique_____HC_____quaternion__0__0__0__0                   \
                                                    ,HC_____quaternion_p1__0__0__0                                                      \
                                                     );                                                                                 \
                    Eblock

#define   HCcosinus_hyperbolique(q,q1)                                                                                                  \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCcosinus_hyperbolique(q,q1);                                                                                      \
                    Eblock
#define   FHCcosinus_hyperbolique(q,q1)                                                                                                 \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCcosinus_hyperbolique(q,q1);                                                                                     \
                    Eblock
#define   FgHCcosinus_hyperbolique(q,q1)                                                                                                \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHCcosinus_hyperbolique_____compatibilite_20230206))                                                   \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHCcosinus_sinus_hyperbolique(q,q1,FHCsomme);                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +q1    -q1                                                         */ \
                                        /*                       e    + e                                                            */ \
                                        /*                  q = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHCcosinus_sinus_circulaires_et_hyperboliques__type_2(q,q1,COHX,COSX,SIGNE_PLUS,SIHX,SINC);                    \
                                        /* Procedure introduite le 20230206092813...                                                 */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S I N U S   H Y P E R B O L I Q U E   H Y P E R - C O M P L E X E  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HCserie_sinus_hyperbolique(q,q1)                                                                                              \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHCserie_sinus_hyperbolique(q,q1);                                                                                  \
                    Eblock
#define   FHCserie_sinus_hyperbolique(q,q1)                                                                                             \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCserie_sinus_hyperbolique(q,q1);                                                                                 \
                    Eblock
#define   FgHCserie_sinus_hyperbolique(q,q1)                                                                                            \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(q,q1                                                                               \
                                                    ,GENERER_UN_SINUS__,TRIGONOMETRIE_HYPERBOLIQUE                                      \
                                                    ,hyper_complexe                                                                     \
                                                    ,FHCegal                                                                            \
                                                    ,FHCforme_lineaire                                                                  \
                                                    ,FHCsomme                                                                           \
                                                    ,aHCpuissance                                                                       \
                                                    ,FgHCserie_sinus_hyperbolique_____HC_____exposant                                   \
                                                    ,FHCproduit                                                                         \
                                                    ,FgHCserie_sinus_hyperbolique_____HC_____quaternion__0__0__0__0                     \
                                                    ,HC_____quaternion_p1__0__0__0                                                      \
                                                     );                                                                                 \
                    Eblock

#define   HCsinus_hyperbolique(q,q1)                                                                                                    \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCsinus_hyperbolique(q,q1);                                                                                        \
                    Eblock
#define   FHCsinus_hyperbolique(q,q1)                                                                                                   \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCsinus_hyperbolique(q,q1);                                                                                       \
                    Eblock
#define   FgHCsinus_hyperbolique(q,q1)                                                                                                  \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHCsinus_hyperbolique_____compatibilite_20230206))                                                     \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHCcosinus_sinus_hyperbolique(q,q1,FHCdifference);                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +q1    -q1                                                         */ \
                                        /*                       e    - e                                                            */ \
                                        /*                  q = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHCcosinus_sinus_circulaires_et_hyperboliques__type_2(q,q1,SIHX,COSX,SIGNE_PLUS,COHX,SINC);                    \
                                        /* Procedure introduite le 20230206092813...                                                 */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A N G E N T E   H Y P E R B O L I Q U E   H Y P E R - C O M P L E X E  :                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FgHCtangente_hyperbolique_quotient(q,q1,fonction_cosinus_hyperbolique,fonction_sinus___hyperbolique)                          \
                    Bblock                                                                                                              \
                    DEFV(hyper_complexe,cosinus_hyperbolique_q1);                                                                       \
                    DEFV(hyper_complexe,sinus_hyperbolique_q1);                                                                         \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    fonction_cosinus_hyperbolique(cosinus_hyperbolique_q1,q1);                                                          \
                    fonction_sinus___hyperbolique(sinus_hyperbolique_q1,q1);                                                            \
                                        /* Calcul du sinus et du cosinus de 'q1'.                                                    */ \
                                                                                                                                        \
                    Test(IZNE(FHCmodule(cosinus_hyperbolique_q1)))                                                                      \
                         Bblock                                                                                                         \
                         FHCquotient(q,sinus_hyperbolique_q1,cosinus_hyperbolique_q1);                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                        sinus_hyperbolique(q1)                                             */ \
                                        /*                  q = --------------------------                                           */ \
                                        /*                       cosinus_hyperbolique(q1)                                            */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHCinitialisation(q                                                                                            \
                                          ,MEME_SIGNE_QUE(HReelle(sinus_hyperbolique_q1),F_INFINI)                                      \
                                          ,MEME_SIGNE_QUE(HImaginaire(sinus_hyperbolique_q1),F_INFINI)                                  \
                                          ,MEME_SIGNE_QUE(HJmaginaire(sinus_hyperbolique_q1),F_INFINI)                                  \
                                          ,MEME_SIGNE_QUE(HKmaginaire(sinus_hyperbolique_q1),F_INFINI)                                  \
                                           );                                                                                           \
                                        /* Lorsque le module du cosinus est nul, la valeur de la tangente est fixee de facon tout    */ \
                                        /* a fait arbitraire...                                                                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   HCserie_tangente_hyperbolique(q,q1)                                                                                           \
                    Bblock                                                                                                              \
                    FHCserie_tangente_hyperbolique(q,q1);                                                                               \
                    Eblock
#define   FHCserie_tangente_hyperbolique(q,q1)                                                                                          \
                    Bblock                                                                                                              \
                    FgHCserie_tangente_hyperbolique(q,q1);                                                                              \
                    Eblock
#define   FgHCserie_tangente_hyperbolique(q,q1)                                                                                         \
                    Bblock                                                                                                              \
                    FgHCtangente_hyperbolique_quotient(q,q1,FHCserie_cosinus_hyperbolique,FHCserie_sinus_hyperbolique);                 \
                    Eblock

#define   HCtangente_hyperbolique(q,q1)                                                                                                 \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FHCtangente_hyperbolique(q,q1);                                                                                     \
                    Eblock
#define   FHCtangente_hyperbolique(q,q1)                                                                                                \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCtangente_hyperbolique(q,q1);                                                                                    \
                    Eblock
#define   FgHCtangente_hyperbolique(q,q1)                                                                                               \
                                        /* Procedure introduite le 20210205174724...                                                 */ \
                    Bblock                                                                                                              \
                    FgHCtangente_hyperbolique_quotient(q,q1,FHCcosinus_hyperbolique,FHCsinus_hyperbolique);                             \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A C C E L E R A T I O N   E V E N T U E L L E   D E S   C O M P I L A T I O N S                                            */
/*        D E S   I T E R A T I O N S   D A N S   L ' E S P A C E   H Y P E R - C O M P L E X E  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* Le dispositif suivant a ete mis en place ici le 20111204113520 afin de pouvoir etre       */
                                        /* utilise a la fois dans 'v $ximcf/conformes$FOn' et 'v $ximcf/iterations$FON', alors       */
                                        /* qu'avant cette date il etait situe dans 'v $ximcf/iterations$FON' en en limitant ainsi    */
                                        /* la portee...                                                                              */

#ifdef    NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_HYPER_COMPLEXES
#    define    aHCconjugaison(q,q1)                                                                                                     \
                         Bblock                                                                                                         \
                         HCconjugaison(q,q1);                                                                                           \
                         Eblock
#    define    aHCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext)                                                                  \
                         Bblock                                                                                                         \
                         HCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext);                                                        \
                         Eblock
#    define    aHCproduit(q,q1,q2)                                                                                                      \
                         Bblock                                                                                                         \
                         HCproduit(q,q1,q2);                                                                                            \
                         Eblock
#    define    aHCpuissance(q,q1,exposant)                                                                                              \
                         Bblock                                                                                                         \
                         HCpuissance(q,q1,exposant);                                                                                    \
                         Eblock
#    define    aHCquotient(q,q1,q2)                                                                                                     \
                         Bblock                                                                                                         \
                         HCquotient(q,q1,q2);                                                                                           \
                         Eblock
#    define    aHCsomme(q,q1,q2)                                                                                                        \
                         Bblock                                                                                                         \
                         HCsomme(q,q1,q2);                                                                                              \
                         Eblock
#    define    aHCdifference(q,q1,q2)                                                                                                   \
                         Bblock                                                                                                         \
                         HCdifference(q,q1,q2);                                                                                         \
                         Eblock
#    define    aHCforme_lineaire(q,alpha,q1,beta)                                                                                       \
                         Bblock                                                                                                         \
                         HCforme_lineaire(q,alpha,q1,beta);                                                                             \
                         Eblock
#    define    aHCcombinaison_lineaire_2(q,a,q1,b,q2)                                                                                   \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_2(q,a,q1,b,q2);                                                                         \
                         Eblock
#    define    aHCcombinaison_lineaire_3(q,a,q1,b,q2,c,q3)                                                                              \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_3(q,a,q1,b,q2,c,q3);                                                                    \
                         Eblock
#    define    aHCcombinaison_lineaire_4(q,a,q1,b,q2,c,q3,d,q4)                                                                         \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_4(q,a,q1,b,q2,c,q3,d,q4);                                                               \
                         Eblock
#    define    aHCcombinaison_lineaire_5(q,a,q1,b,q2,c,q3,d,q4,e,q5)                                                                    \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_5(q,a,q1,b,q2,c,q3,d,q4,e,q5);                                                          \
                         Eblock
#    define    aHCcombinaison_lineaire_6(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6)                                                               \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_6(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6);                                                     \
                         Eblock
#    define    aHCcombinaison_lineaire_7(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7)                                                          \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_7(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7);                                                \
                         Eblock
#    define    aHCcombinaison_lineaire_8(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8)                                                     \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_8(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8);                                           \
                         Eblock
#    define    aHCcombinaison_lineaire_9(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9)                                                \
                         Bblock                                                                                                         \
                         HCcombinaison_lineaire_9(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9);                                      \
                         Eblock
#    define    aHCexponentielle_quaternionique(q,base,q1)                                                                               \
                         Bblock                                                                                                         \
                         HCexponentielle_quaternionique(q,base,q1);                                                                     \
                         Eblock
#    nodefine  aHClogarithme(q,q1)                                                                                                      \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HClogarithme(q,q1);                                                                                            \
                         Eblock
#    nodefine  aHCcosinus(q,q1)                                                                                                         \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HCcosinus(q,q1);                                                                                               \
                         Eblock
#    nodefine  aHCsinus(q,q1)                                                                                                           \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HCsinus(q,q1);                                                                                                 \
                         Eblock
#    nodefine  aHCtangente(q,q1)                                                                                                        \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HCtangente(q,q1);                                                                                              \
                         Eblock
#    nodefine  aHCcosinus_hyperbolique(q,q1)                                                                                            \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HCcosinus_hyperbolique(q,q1);                                                                                  \
                         Eblock
#    nodefine  aHCsinus_hyperbolique(q,q1)                                                                                              \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HCsinus_hyperbolique(q,q1);                                                                                    \
                         Eblock
#    nodefine  aHCtangente_hyperbolique(q,q1)                                                                                           \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HCtangente_hyperbolique(q,q1);                                                                                 \
                         Eblock
#Aifdef   NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_HYPER_COMPLEXES
                                        /* Possibilite introduite le 20111201134708...                                               */
#    define    aHCconjugaison(q,q1)                                                                                                     \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCconjugaison(q1));                                                                                   \
                         Eblock
#    define    aHCmodulo(q,q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext)                                                                  \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCmodulo(q1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext));                                                \
                         Eblock
#    define    aHCproduit(q,q1,q2)                                                                                                      \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCproduit(q1,q2));                                                                                    \
                         Eblock
#    define    aHCpuissance(q,q1,exposant)                                                                                              \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCpuissance(q1,exposant));                                                                            \
                         Eblock
#    define    aHCquotient(q,q1,q2)                                                                                                     \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCquotient(q1,q2));                                                                                   \
                         Eblock
#    define    aHCsomme(q,q1,q2)                                                                                                        \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCsomme(q1,q2));                                                                                      \
                         Eblock
#    define    aHCdifference(q,q1,q2)                                                                                                   \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCdifference(q1,q2));                                                                                 \
                         Eblock
#    define    aHCforme_lineaire(q,alpha,q1,beta)                                                                                       \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCforme_lineaire(alpha,q1,beta));                                                                     \
                         Eblock
#    define    aHCcombinaison_lineaire_2(q,a,q1,b,q2)                                                                                   \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_2(a,q1,b,q2));                                                                 \
                         Eblock
#    define    aHCcombinaison_lineaire_3(q,a,q1,b,q2,c,q3)                                                                              \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_3(a,q1,b,q2,c,q3));                                                            \
                         Eblock
#    define    aHCcombinaison_lineaire_4(q,a,q1,b,q2,c,q3,d,q4)                                                                         \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_4(a,q1,b,q2,c,q3,d,q4));                                                       \
                         Eblock
#    define    aHCcombinaison_lineaire_5(q,a,q1,b,q2,c,q3,d,q4,e,q5)                                                                    \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_5(q,a,q1,b,q2,c,q3,d,q4,e,q5));                                                \
                         Eblock
#    define    aHCcombinaison_lineaire_6(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6)                                                               \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_6(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6));                                           \
                         Eblock
#    define    aHCcombinaison_lineaire_7(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7)                                                          \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_7(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7));                                      \
                         Eblock
#    define    aHCcombinaison_lineaire_8(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8)                                                     \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_8(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8));                                 \
                         Eblock
#    define    aHCcombinaison_lineaire_9(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9)                                                \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcombinaison_lineaire_9(q,a,q1,b,q2,c,q3,d,q4,e,q5,f,q6,g,q7,h,q8,i,q9));                            \
                         Eblock
#    define    aHCexponentielle_quaternionique(q,base,q1)                                                                               \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCexponentielle_quaternionique(base,q1));                                                             \
                         Eblock
#    nodefine  aHClogarithme(q,q1)                                                                                                      \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(q,faFHClogarithme(o1));                                                                                   \
                                        /* On notera le 'faFHC...' a cause de 'v $ximcf/fonction$FON fFHClogarithme'...              */ \
                         Eblock
#    nodefine  aHCcosinus(q,q1)                                                                                                         \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCcosinus(o1));                                                                                       \
                         Eblock
#    nodefine  aHCsinus(q,q1)                                                                                                           \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCsinus(o1));                                                                                         \
                         Eblock
#    nodefine  aHCtangente(q,q1)                                                                                                        \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(q,fFHCtangente(o1));                                                                                      \
                         Eblock
#    nodefine  aHCcosinus_hyperbolique(q,q1)                                                                                            \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(q,faFHCcosinus_hyperbolique(o1));                                                                         \
                                        /* On notera le 'faFHC...' a cause de 'v $ximcf/fonction$FON fFHCcosinus_hyperbolique'...    */ \
                         Eblock
#    nodefine  aHCsinus_hyperbolique(q,q1)                                                                                              \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(q,faFHCsinus_hyperbolique(o1));                                                                           \
                                        /* On notera le 'faFHC...' a cause de 'v $ximcf/fonction$FON fFHCsinus_hyperbolique'...      */ \
                         Eblock
#    nodefine  aHCtangente_hyperbolique(q,q1)                                                                                           \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(q,faFHCtangente_hyperbolique(o1));                                                                        \
                                        /* On notera le 'faFHC...' a cause de 'v $ximcf/fonction$FON fFHCtangente_hyperbolique'...   */ \
                         Eblock
#Eifdef   NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_HYPER_COMPLEXES

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N T R O L E   D E   L ' A R I T H M E T I Q U E   E T E N D U E                                                        */
/*        L O R S   D E   C A L C U L S   S U R   L E S   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Ceci a ete introduit le 20070129115950...                                                 */

#ifdef    FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES
#    define    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(faire_de_l_arithmetique_etendue,sequence)                        \
                         Bblock                                                                                                         \
                         USs_GooF______CONDITIONNEL                                                                                     \
                             (IFET(IL_FAUT(faire_de_l_arithmetique_etendue)                                                             \
                                  ,EST_VRAI(HHC_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base)                \
                                   )                                                                                                    \
                             ,sequence                                                                                                  \
                              );                                                                                                        \
                                        /* Execution de la sequence argument avec l'arithmetique etendue si elle est disponible...   */ \
                         Eblock
#Aifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES
#    define    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(faire_de_l_arithmetique_etendue,sequence)                        \
                         Bblock                                                                                                         \
                         BLOC(sequence);                                                                                                \
                                        /* Execution de la sequence argument avec l'arithmetique de base...                          */ \
                         Eblock
#Eifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES

#define   FHHCinitialisation_____utiliser_l_arithmetique_etendue                                                                        \
                    FHHCinitialisation_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HHC
#define   FHHCsomme_____utiliser_l_arithmetique_etendue                                                                                 \
                    FHHCsomme_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HHC
#define   FHHCdifference_____utiliser_l_arithmetique_etendue                                                                            \
                    FHHCdifference_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HHC
#define   FHHCproduit_____utiliser_l_arithmetique_etendue                                                                               \
                    FHHCproduit_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HHC
#define   FHHCproduit_____utiliser_l_arithmetique_etendue_dans_CxCxCxC                                                                  \
                    FHHCproduit_____si_GooF_activable_et_si_arithmetique_etendue_aller_dans_CxCxCxC_au_lieu_de_HHC
#define   FHHCquotient_____utiliser_l_arithmetique_etendue                                                                              \
                    FHHCquotient_____si_GooF_activable_arithmetique_etendue_au_lieu_arithmetique_de_base_dans_HHC
                                        /* Definitions destinees a raccourcir certaines lignes suivantes...                          */
                                        /*                                                                                           */
                                        /* Ces definitions furent completees le 20120918142202 pour ce qui concerne CxCxCxC...       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E D I T I O N   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   PRINT_DANS_HHC(titre,o)                                                                                                       \
                    Bblock                                                                                                              \
                    CAL3(Prme9("%s={%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^}\n"                                         \
                              ,titre                                                                                                    \
                              ,HHReelle(o)                                                                                              \
                              ,HHImaginaire(o)                                                                                          \
                              ,HHJmaginaire(o)                                                                                          \
                              ,HHKmaginaire(o)                                                                                          \
                              ,HHSmaginaire(o)                                                                                          \
                              ,HHTmaginaire(o)                                                                                          \
                              ,HHUmaginaire(o)                                                                                          \
                              ,HHVmaginaire(o)                                                                                          \
                               )                                                                                                        \
                         );                                                                                                             \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   O = ( R , I , J , K , S , T , U , V )                                                        */
/*        D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCinitialisation(o,p_reelle,p_imaginaire,p_jmaginaire,p_kmaginaire,p_smaginaire,p_tmaginaire,p_umaginaire,p_vmaginaire)      \
                    Bblock                                                                                                              \
                    FHHCinitialisation(o                                                                                                \
                                      ,p_reelle                                                                                         \
                                      ,p_imaginaire                                                                                     \
                                      ,p_jmaginaire                                                                                     \
                                      ,p_kmaginaire                                                                                     \
                                      ,p_smaginaire                                                                                     \
                                      ,p_tmaginaire                                                                                     \
                                      ,p_umaginaire                                                                                     \
                                      ,p_vmaginaire                                                                                     \
                                       );                                                                                               \
                    Eblock

#define   FHHCinitialisation(o,p_reelle,p_imaginaire,p_jmaginaire,p_kmaginaire,p_smaginaire,p_tmaginaire,p_umaginaire,p_vmaginaire)     \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(FHHCinitialisation_____utiliser_l_arithmetique_etendue      \
                                                                           ,BLOC(FgHHCinitialisation(o                                  \
                                                                                                    ,p_reelle                           \
                                                                                                    ,p_imaginaire                       \
                                                                                                    ,p_jmaginaire                       \
                                                                                                    ,p_kmaginaire                       \
                                                                                                    ,p_smaginaire                       \
                                                                                                    ,p_tmaginaire                       \
                                                                                                    ,p_umaginaire                       \
                                                                                                    ,p_vmaginaire                       \
                                                                                                     );                                 \
                                                                                 )                                                      \
                                                                            );                                                          \
                                        /* L'arithmetique etendue fut introduite ici le 20110811153401...                            */ \
                    Eblock

#define   bFgHHCinitialisation(o,p_reelle,p_imaginaire,p_jmaginaire,p_kmaginaire,p_smaginaire,p_tmaginaire,p_umaginaire,p_vmaginaire)   \
                    Bblock                                                                                                              \
                    EGAL(HHReelle(o)                                                                                                    \
                        ,p_reelle                                                                                                       \
                         );                                                                                                             \
                    EGAL(HHImaginaire(o)                                                                                                \
                        ,p_imaginaire                                                                                                   \
                         );                                                                                                             \
                    EGAL(HHJmaginaire(o)                                                                                                \
                        ,p_jmaginaire                                                                                                   \
                         );                                                                                                             \
                    EGAL(HHKmaginaire(o)                                                                                                \
                        ,p_kmaginaire                                                                                                   \
                         );                                                                                                             \
                    EGAL(HHSmaginaire(o)                                                                                                \
                        ,p_smaginaire                                                                                                   \
                         );                                                                                                             \
                    EGAL(HHTmaginaire(o)                                                                                                \
                        ,p_tmaginaire                                                                                                   \
                         );                                                                                                             \
                    EGAL(HHUmaginaire(o)                                                                                                \
                        ,p_umaginaire                                                                                                   \
                         );                                                                                                             \
                    EGAL(HHVmaginaire(o)                                                                                                \
                        ,p_vmaginaire                                                                                                   \
                         );                                                                                                             \
                    Eblock                                                                                                              \
                                        /* Introduit le 20121102215336 pour simplifier 'FgHHCinitialisation(...)'.                   */
#define   FgHHCinitialisation(o,p_reelle,p_imaginaire,p_jmaginaire,p_kmaginaire,p_smaginaire,p_tmaginaire,p_umaginaire,p_vmaginaire)    \
                                        /* ATTENTION, on ne peut utiliser ici une definition du type :                               */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGinitialisation(prefixe,corps,sous_corps,...)         \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* car en effet, les Arguments sont des nombres Reels, et non pas des elements du sous-corps */ \
                                        /* ce qui fait que le nombre d'arguments de la procedure n'est pas independant de la         */ \
                                        /* dimension du corps...                                                                     */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o_intermediaire_initialisation);                                                          \
                                        /* Au cas ou il y aurait une dependance entre les Arguments et le Resultat (introduit        */ \
                                        /* le 20121102172614)...                                                                     */ \
                                                                                                                                        \
                    bFgHHCinitialisation(o_intermediaire_initialisation                                                                 \
                                        ,p_reelle                                                                                       \
                                        ,p_imaginaire                                                                                   \
                                        ,p_jmaginaire                                                                                   \
                                        ,p_kmaginaire                                                                                   \
                                        ,p_smaginaire                                                                                   \
                                        ,p_tmaginaire                                                                                   \
                                        ,p_umaginaire                                                                                   \
                                        ,p_vmaginaire                                                                                   \
                                         );                                                                                             \
                                                                                                                                        \
                    bFgHHCinitialisation(o                                                                                              \
                                        ,HHReelle(o_intermediaire_initialisation)                                                       \
                                        ,HHImaginaire(o_intermediaire_initialisation)                                                   \
                                        ,HHJmaginaire(o_intermediaire_initialisation)                                                   \
                                        ,HHKmaginaire(o_intermediaire_initialisation)                                                   \
                                        ,HHSmaginaire(o_intermediaire_initialisation)                                                   \
                                        ,HHTmaginaire(o_intermediaire_initialisation)                                                   \
                                        ,HHUmaginaire(o_intermediaire_initialisation)                                                   \
                                        ,HHVmaginaire(o_intermediaire_initialisation)                                                   \
                                         );                                                                                             \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N   O = ( R H O , A 1 , A 2 , A 3 , A 4 , A 5 , A 6 , A 7 )                                      */
/*        D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCinitialisation_trigonometrique(o,rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                     \
                    Bblock                                                                                                              \
                    FHHCinitialisation_trigonometrique(o,rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7);                         \
                    Eblock
#define   FHHCinitialisation_trigonometrique(o,rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                    \
                    Bblock                                                                                                              \
                    FgHHCinitialisation_trigonometrique(o,rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7);                        \
                    Eblock
#define   FgHHCinitialisation_trigonometrique(o,rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                   \
                    Bblock                                                                                                              \
                    FHHCinitialisation(o                                                                                                \
                                      ,FHHCcomposanteR(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                      ,FHHCcomposanteI(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                      ,FHHCcomposanteJ(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                      ,FHHCcomposanteK(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                      ,FHHCcomposanteS(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                      ,FHHCcomposanteT(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                      ,FHHCcomposanteU(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                      ,FHHCcomposanteV(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                            \
                                       );                                                                                               \
                    Eblock
                                        /* Introduit le 20111229161914.                                                              */

#define   HHCdefinition_trigonometrique(o,module,argument)                                                                              \
                    Bblock                                                                                                              \
                    FHHCdefinition_trigonometrique(o,module,argument);                                                                  \
                    Eblock
#define   FHHCdefinition_trigonometrique(o,module,argument)                                                                             \
                    Bblock                                                                                                              \
                    FgHHCdefinition_trigonometrique(o,module,argument);                                                                 \
                    Eblock
#define   FgHHCdefinition_trigonometrique(o,module,argument)                                                                            \
                    Bblock                                                                                                              \
                    DEFV(Float,INIT(unitaire                                                                                            \
                                   ,HHCmodule(COND(IL_FAUT(FHHCdefinition_trigonometrique_____compatibilite_20230320)                   \
                                                  ,HHC_____octonion__0_p1__0__0__0__0__0__0                                             \
                                                  ,HHC_____octonion__0_p1_p1_p1_p1_p1_p1_p1                                             \
                                                   )                                                                                    \
                                              )                                                                                         \
                                    )                                                                                                   \
                         );                                                                                                             \
                                        /* Inutile mais, par "symetrie" avec les hyper-complexes et les hyper-hyper-complexes...     */ \
                    DEFV(Float,INIT(cosinus,NEUT(MUL2(module,COSX(argument)))));                                                        \
                    DEFV(Float,INIT(sinus,FLOT__UNDEF));                                                                                \
                    DEFV(Float,INIT(sinus_de_compatibilite,FLOT__UNDEF));                                                               \
                                                                                                                                        \
                    EGAL(sinus,DIVI(MUL2(module,SINX(argument)),unitaire));                                                             \
                    EGAL(sinus_de_compatibilite,COND(IL_FAUT(FHCdefinition_trigonometrique_____compatibilite_20230320),FZERO,sinus));   \
                                                                                                                                        \
                    FHHCinitialisation(o                                                                                                \
                                      ,cosinus                                                                                          \
                                      ,sinus                                                                                            \
                                      ,sinus_de_compatibilite                                                                           \
                                      ,sinus_de_compatibilite                                                                           \
                                      ,sinus_de_compatibilite                                                                           \
                                      ,sinus_de_compatibilite                                                                           \
                                      ,sinus_de_compatibilite                                                                           \
                                      ,sinus_de_compatibilite                                                                           \
                                       );                                                                                               \
                    Eblock
                                        /* Introduit le 20230320123152 afin de se debarasser de l'usage de l'exponentielle en        */
                                        /* particulier pour les hyper-complexes et les hyper-hyper-complexes...                      */

#define   HHCextension_directe(o_etendu,o)                                                                                              \
                    Bblock                                                                                                              \
                    FHHCextension_directe(o_etendu,o);                                                                                  \
                    Eblock
#define   FHHCextension_directe(o_etendu,o)                                                                                             \
                    Bblock                                                                                                              \
                    FgHHCextension_directe(o_etendu,o);                                                                                 \
                    Eblock
#define   FgHHCextension_directe(o_etendu,o)                                                                                            \
                    Bblock                                                                                                              \
                    EGAL(HHCHHS_Rho(o_etendu),HHCmodule(o));                                                                            \
                    EGAL(HHCHHS_Angle1(o_etendu),HHCargumentA1_2PI(o));                                                                 \
                    EGAL(HHCHHS_Angle2(o_etendu),HHCargumentA2_2PI(o));                                                                 \
                    EGAL(HHCHHS_Angle3(o_etendu),HHCargumentA3_2PI(o));                                                                 \
                    EGAL(HHCHHS_Angle4(o_etendu),HHCargumentA4_2PI(o));                                                                 \
                    EGAL(HHCHHS_Angle5(o_etendu),HHCargumentA5_2PI(o));                                                                 \
                    EGAL(HHCHHS_Angle6(o_etendu),HHCargumentA6_2PI(o));                                                                 \
                    EGAL(HHCHHS_Angle7(o_etendu),HHCargumentA7_2PI(o));                                                                 \
                    Eblock
                                        /* Introduit le 20111230081620.                                                              */

#define   HHCextension_inverse(o,o_etendu)                                                                                              \
                    Bblock                                                                                                              \
                    FHHCextension_inverse(o,o_etendu);                                                                                  \
                    Eblock
#define   FHHCextension_inverse(o,o_etendu)                                                                                             \
                    Bblock                                                                                                              \
                    FgHHCextension_inverse(o,o_etendu);                                                                                 \
                    Eblock
#define   FgHHCextension_inverse(o,o_etendu)                                                                                            \
                    Bblock                                                                                                              \
                    FHHCinitialisation_trigonometrique(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
                                        /* Introduit le 20111230081620.                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X T R A C T I O N   D E S   P A R T I E S   R E E L L E   E T   I M A G I N A I R E                                      */
/*        D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCpartieReelle(o,o1)                                                                                                         \
                    Bblock                                                                                                              \
                    FHHCpartieReelle(o,o1);                                                                                             \
                    Eblock
#define   FHHCpartieReelle(o,o1)                                                                                                        \
                    Bblock                                                                                                              \
                    FgHHCpartieReelle(o,o1);                                                                                            \
                    Eblock
#define   FgHHCpartieReelle(o,o1)                                                                                                       \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o1_conjugue);                                                                             \
                    DEFV(hyper_hyper_complexe,o_somme);                                                                                 \
                                                                                                                                        \
                    FHHCconjugaison(o1_conjugue,o1);                                                                                    \
                    FHHCsomme(o_somme,o1,o1_conjugue);                                                                                  \
                    FHHCforme_lineaire(o                                                                                                \
                                      ,INVE(CONSTANTE_DE_MOYENNE)                                                                       \
                                      ,o_somme                                                                                          \
                                      ,FZERO                                                                                            \
                                       );                                                                                               \
                                        /* La partie reelle 'PR' est definie par :                                                   */ \
                                        /*                               _                                                           */ \
                                        /*                           o + o                                                           */ \
                                        /*                  PR(o) = -------                                                          */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                    Eblock                                                                                                              \
                                        /* Extraction de la partie reelle d'un nombre hyper-hyper-complexe sous la forme d'un        */ \
                                        /* autre nombre hyper-hyper-complexe (introduit le 20230204075556)...                        */

#define   HHCpartieIJKSTUVmaginaire(o,o1)                                                                                               \
                    Bblock                                                                                                              \
                    FHHCpartieIJKSTUVmaginaire(o,o1);                                                                                   \
                    Eblock
#define   FHHCpartieIJKSTUVmaginaire(o,o1)                                                                                              \
                    Bblock                                                                                                              \
                    FgHHCpartieIJKSTUVmaginaire(o,o1);                                                                                  \
                    Eblock
#define   FgHHCpartieIJKSTUVmaginaire(o,o1)                                                                                             \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o1_conjugue);                                                                             \
                    DEFV(hyper_hyper_complexe,o_difference);                                                                            \
                                                                                                                                        \
                    FHHCconjugaison(o1_conjugue,o1);                                                                                    \
                    FHHCdifference(o_difference,o1,o1_conjugue);                                                                        \
                    FHHCforme_lineaire(o                                                                                                \
                                      ,INVE(CONSTANTE_DE_MOYENNE)                                                                       \
                                      ,o_difference                                                                                     \
                                      ,FZERO                                                                                            \
                                       );                                                                                               \
                                        /* La partie imaginaire 'PI' est definie par :                                               */ \
                                        /*                               _                                                           */ \
                                        /*                           o - o                                                           */ \
                                        /*                  PI(o) = -------                                                          */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                    Eblock                                                                                                              \
                                        /* Extraction de la partie imaginaire d'un nombre hyper-hyper-complexe sous la forme d'un    */ \
                                        /* autre nombre hyper-hyper-complexe (introduit le 20230204075556)...                        */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E G A L I T E   O = O1   D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :                            */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCegal(o,o1)                                                                                                                 \
                    Bblock                                                                                                              \
                    FHHCegal(o,o1);                                                                                                     \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FHHCegal(o,o1)                                                                                                           \
                         Bblock                                                                                                         \
                         FHHCinitialisation(o                                                                                           \
                                           ,HHReelle(o1)                                                                                \
                                           ,HHImaginaire(o1)                                                                            \
                                           ,HHJmaginaire(o1)                                                                            \
                                           ,HHKmaginaire(o1)                                                                            \
                                           ,HHSmaginaire(o1)                                                                            \
                                           ,HHTmaginaire(o1)                                                                            \
                                           ,HHUmaginaire(o1)                                                                            \
                                           ,HHVmaginaire(o1)                                                                            \
                                            );                                                                                          \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FHHCegal(o,o1)                                                                                                           \
                         Bblock                                                                                                         \
                         FGegal(HH,hyper_hyper_complexe,hyper_complexe                                                                  \
                               ,o                                                                                                       \
                               ,o1                                                                                                      \
                               ,dHHReelle,dHHImaginaire                                                                                 \
                               ,HCegal                                                                                                  \
                                );                                                                                                      \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T E S T   D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* Les definitions suivantes ont ete introduites le 20210218101725...                        */

#define   HHCTestIFEQ(o1,o2)                                                                                                            \
                    FHHCTestIFEQ(o1,o2)
#define   FHHCTestIFEQ(o1,o2)                                                                                                           \
                    I8ET(IFEQ(HHReelle(o1),HHReelle(o2))                                                                                \
                        ,IFEQ(HHImaginaire(o1),HHImaginaire(o2))                                                                        \
                        ,IFEQ(HHJmaginaire(o1),HHJmaginaire(o2))                                                                        \
                        ,IFEQ(HHKmaginaire(o1),HHKmaginaire(o2))                                                                        \
                        ,IFEQ(HHSmaginaire(o1),HHSmaginaire(o2))                                                                        \
                        ,IFEQ(HHTmaginaire(o1),HHTmaginaire(o2))                                                                        \
                        ,IFEQ(HHUmaginaire(o1),HHUmaginaire(o2))                                                                        \
                        ,IFEQ(HHVmaginaire(o1),HHVmaginaire(o2))                                                                        \
                         )
                                        /* Test de l'egalite de 'o1' et 'o2'.                                                        */

#define   HHCTestIFEQ_a_peu_pres_absolu(o1,o2,epsilon)                                                                                  \
                    FHHCTestIFEQ_a_peu_pres_absolu(o1,o2,epsilon)
#define   FHHCTestIFEQ_a_peu_pres_absolu(o1,o2,epsilon)                                                                                 \
                    I8ET(IFEQ_a_peu_pres_absolu(HHReelle(o1),HHReelle(o2),epsilon)                                                      \
                        ,IFEQ_a_peu_pres_absolu(HHImaginaire(o1),HHImaginaire(o2),epsilon)                                              \
                        ,IFEQ_a_peu_pres_absolu(HHJmaginaire(o1),HHJmaginaire(o2),epsilon)                                              \
                        ,IFEQ_a_peu_pres_absolu(HHKmaginaire(o1),HHKmaginaire(o2),epsilon)                                              \
                        ,IFEQ_a_peu_pres_absolu(HHSmaginaire(o1),HHSmaginaire(o2),epsilon)                                              \
                        ,IFEQ_a_peu_pres_absolu(HHTmaginaire(o1),HHTmaginaire(o2),epsilon)                                              \
                        ,IFEQ_a_peu_pres_absolu(HHUmaginaire(o1),HHUmaginaire(o2),epsilon)                                              \
                        ,IFEQ_a_peu_pres_absolu(HHVmaginaire(o1),HHVmaginaire(o2),epsilon)                                              \
                         )
                                        /* Test de l'egalite de 'o1' et 'o2' a "epsilon pres absolu".                                */

#define   HHCTestIFEQ_a_peu_pres_relatif(o1,o2,pourcentage)                                                                             \
                    FHHCTestIFEQ_a_peu_pres_relatif(o1,o2,pourcentage)
#define   FHHCTestIFEQ_a_peu_pres_relatif(o1,o2,pourcentage)                                                                            \
                    I8ET(IFEQ_a_peu_pres_relatif(HHReelle(o1),HHReelle(o2),pourcentage)                                                 \
                        ,IFEQ_a_peu_pres_relatif(HHImaginaire(o1),HHImaginaire(o2),pourcentage)                                         \
                        ,IFEQ_a_peu_pres_relatif(HHJmaginaire(o1),HHJmaginaire(o2),pourcentage)                                         \
                        ,IFEQ_a_peu_pres_relatif(HHKmaginaire(o1),HHKmaginaire(o2),pourcentage)                                         \
                        ,IFEQ_a_peu_pres_relatif(HHSmaginaire(o1),HHSmaginaire(o2),pourcentage)                                         \
                        ,IFEQ_a_peu_pres_relatif(HHTmaginaire(o1),HHTmaginaire(o2),pourcentage)                                         \
                        ,IFEQ_a_peu_pres_relatif(HHUmaginaire(o1),HHUmaginaire(o2),pourcentage)                                         \
                        ,IFEQ_a_peu_pres_relatif(HHVmaginaire(o1),HHVmaginaire(o2),pourcentage)                                         \
                         )
                                        /* Test de l'egalite de 'o1' et 'o2' a "epsilon pres relatif".                               */

#define   HHCTestIFNE(o1,o2)                                                                                                            \
                    FHHCTestIFNE(o1,o2)
#define   FHHCTestIFNE(o1,o2)                                                                                                           \
                    I8OU(IFNE(HHReelle(o1),HHReelle(o2))                                                                                \
                        ,IFNE(HHImaginaire(o1),HHImaginaire(o2))                                                                        \
                        ,IFNE(HHJmaginaire(o1),HHJmaginaire(o2))                                                                        \
                        ,IFNE(HHKmaginaire(o1),HHKmaginaire(o2))                                                                        \
                        ,IFNE(HHSmaginaire(o1),HHSmaginaire(o2))                                                                        \
                        ,IFNE(HHTmaginaire(o1),HHTmaginaire(o2))                                                                        \
                        ,IFNE(HHUmaginaire(o1),HHUmaginaire(o2))                                                                        \
                        ,IFNE(HHVmaginaire(o1),HHVmaginaire(o2))                                                                        \
                         )
                                        /* Test de la non egalite de 'o1' et 'o2'.                                                   */

#define   HHCTestIFNE_a_peu_pres_absolu(o1,o2,epsilon)                                                                                  \
                    FHHCTestIFNE_a_peu_pres_absolu(o1,o2,epsilon)
#define   FHHCTestIFNE_a_peu_pres_absolu(o1,o2,epsilon)                                                                                 \
                    I8OU(IFNE_a_peu_pres_absolu(HHReelle(o1),HHReelle(o2),epsilon)                                                      \
                        ,IFNE_a_peu_pres_absolu(HHImaginaire(o1),HHImaginaire(o2),epsilon)                                              \
                        ,IFNE_a_peu_pres_absolu(HHJmaginaire(o1),HHJmaginaire(o2),epsilon)                                              \
                        ,IFNE_a_peu_pres_absolu(HHKmaginaire(o1),HHKmaginaire(o2),epsilon)                                              \
                        ,IFNE_a_peu_pres_absolu(HHSmaginaire(o1),HHSmaginaire(o2),epsilon)                                              \
                        ,IFNE_a_peu_pres_absolu(HHTmaginaire(o1),HHTmaginaire(o2),epsilon)                                              \
                        ,IFNE_a_peu_pres_absolu(HHUmaginaire(o1),HHUmaginaire(o2),epsilon)                                              \
                        ,IFNE_a_peu_pres_absolu(HHVmaginaire(o1),HHVmaginaire(o2),epsilon)                                              \
                         )
                                        /* Test de la non egalite de 'o1' et 'o2' a "epsilon pres absolu".                           */

#define   HHCTestIFNE_a_peu_pres_relatif(o1,o2,pourcentage)                                                                             \
                    FHHCTestIFNE_a_peu_pres_relatif(o1,o2,pourcentage)
#define   FHHCTestIFNE_a_peu_pres_relatif(o1,o2,pourcentage)                                                                            \
                    I8OU(IFNE_a_peu_pres_relatif(HHReelle(o1),HHReelle(o2),pourcentage)                                                 \
                        ,IFNE_a_peu_pres_relatif(HHImaginaire(o1),HHImaginaire(o2),pourcentage)                                         \
                        ,IFNE_a_peu_pres_relatif(HHJmaginaire(o1),HHJmaginaire(o2),pourcentage)                                         \
                        ,IFNE_a_peu_pres_relatif(HHKmaginaire(o1),HHKmaginaire(o2),pourcentage)                                         \
                        ,IFNE_a_peu_pres_relatif(HHSmaginaire(o1),HHSmaginaire(o2),pourcentage)                                         \
                        ,IFNE_a_peu_pres_relatif(HHTmaginaire(o1),HHTmaginaire(o2),pourcentage)                                         \
                        ,IFNE_a_peu_pres_relatif(HHUmaginaire(o1),HHUmaginaire(o2),pourcentage)                                         \
                        ,IFNE_a_peu_pres_relatif(HHVmaginaire(o1),HHVmaginaire(o2),pourcentage)                                         \
                         )
                                        /* Test de la non egalite de 'o1' et 'o2' a "epsilon pres relatif".                          */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        N E G A T I O N   O = - O1   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                            */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCnegation(o,o1)                                                                                                             \
                    Bblock                                                                                                              \
                    FHHCnegation(o,o1);                                                                                                 \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define   FHHCnegation(o,o1)                                                                                                        \
                        Bblock                                                                                                          \
                        FHHCforme_lineaire(o                                                                                            \
                                          ,NEGA(FU)                                                                                     \
                                          ,o1                                                                                           \
                                          ,FZERO                                                                                        \
                                           );                                                                                           \
                        Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FHHCnegation(o,o1)                                                                                                       \
                         Bblock                                                                                                         \
                         FGnegation(HH,hyper_hyper_complexe,hyper_complexe                                                              \
                                   ,o                                                                                                   \
                                   ,o1                                                                                                  \
                                   ,dHHReelle,dHHImaginaire                                                                             \
                                   ,HCegal                                                                                              \
                                   ,HCnegation                                                                                          \
                                    );                                                                                                  \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                    --                                                                                             */
/*        C O N J U G A I S O N   O = O1   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCconjugaison(o,o1)                                                                                                          \
                    Bblock                                                                                                              \
                    FHHCconjugaison(o,o1);                                                                                              \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define   FHHCconjugaison(o,o1)                                                                                                     \
                        Bblock                                                                                                          \
                        FHHCinitialisation(o                                                                                            \
                                          ,CHHReelle(o1)                                                                                \
                                          ,CHHImaginaire(o1)                                                                            \
                                          ,CHHJmaginaire(o1)                                                                            \
                                          ,CHHKmaginaire(o1)                                                                            \
                                          ,CHHSmaginaire(o1)                                                                            \
                                          ,CHHTmaginaire(o1)                                                                            \
                                          ,CHHUmaginaire(o1)                                                                            \
                                          ,CHHVmaginaire(o1)                                                                            \
                                           );                                                                                           \
                        Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FHHCconjugaison(o,o1)                                                                                                    \
                         Bblock                                                                                                         \
                         FGconjugaison(HH,hyper_hyper_complexe,hyper_complexe                                                           \
                                      ,o                                                                                                \
                                      ,o1                                                                                               \
                                      ,dHHReelle,dHHImaginaire                                                                          \
                                      ,FgHCegal                                                                                         \
                                      ,FgHCconjugaison                                                                                  \
                                      ,FgHCnegation                                                                                     \
                                       );                                                                                               \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V A L E U R   M O D U L O   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCmodulo(o,o1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext,Sorg,Sext,Torg,Text,Uorg,Uext,Vorg,Vext)                               \
                    Bblock                                                                                                              \
                    FHHCmodulo(o,o1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext,Sorg,Sext,Torg,Text,Uorg,Uext,Vorg,Vext);                   \
                    Eblock
#define   FHHCmodulo(o,o1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext,Sorg,Sext,Torg,Text,Uorg,Uext,Vorg,Vext)                              \
                                        /* ATTENTION, on ne peut utiliser ici une definition du type :                               */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGmodulo(prefixe,corps,sous_corps,...)                 \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* a cause de la fonction 'MODF(...)' et de ses arguments...                                 */ \
                    Bblock                                                                                                              \
                    FHHCinitialisation(o                                                                                                \
                                      ,MODF(HHReelle(o1),Rorg,Rext)                                                                     \
                                      ,MODF(HHImaginaire(o1),Iorg,Iext)                                                                 \
                                      ,MODF(HHJmaginaire(o1),Jorg,Jext)                                                                 \
                                      ,MODF(HHKmaginaire(o1),Korg,Kext)                                                                 \
                                      ,MODF(HHSmaginaire(o1),Sorg,Sext)                                                                 \
                                      ,MODF(HHTmaginaire(o1),Torg,Text)                                                                 \
                                      ,MODF(HHUmaginaire(o1),Uorg,Uext)                                                                 \
                                      ,MODF(HHVmaginaire(o1),Vorg,Vext)                                                                 \
                                       );                                                                                               \
                    Eblock
                                        /* Procedures introduites le 20121102174217...                                               */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O R M E   L I N E A I R E   O = A*O1 + B   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :            */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCforme_lineaire(o,alpha,o1,beta)                                                                                            \
                    Bblock                                                                                                              \
                    FHHCforme_lineaire(o,alpha,o1,beta);                                                                                \
                    Eblock
#define   FHHCforme_lineaire(o,alpha,o1,beta)                                                                                           \
                                        /* ATTENTION, on ne peut utiliser ici une definition du type :                               */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGforme_lineaire(prefixe,corps,sous_corps,...)         \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* car en effet, la decomposition recursive appliquee ailleurs ne fonctionne pas ici,        */ \
                                        /* le premier nombre Reel jouant un role tres different des autres, puisqu'il est le seul    */ \
                                        /* a etre translate de 'beta'...                                                             */ \
                    Bblock                                                                                                              \
                    FHHCinitialisation(o                                                                                                \
                                      ,LIN1(alpha,HHReelle(o1),beta)                                                                    \
                                      ,LIZ1(alpha,HHImaginaire(o1))                                                                     \
                                      ,LIZ1(alpha,HHJmaginaire(o1))                                                                     \
                                      ,LIZ1(alpha,HHKmaginaire(o1))                                                                     \
                                      ,LIZ1(alpha,HHSmaginaire(o1))                                                                     \
                                      ,LIZ1(alpha,HHTmaginaire(o1))                                                                     \
                                      ,LIZ1(alpha,HHUmaginaire(o1))                                                                     \
                                      ,LIZ1(alpha,HHVmaginaire(o1))                                                                     \
                                       );                                                                                               \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2                                                                  */
/*        D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S    { A , B }   E T A N T   R E E L S  :                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_2(o,a,o1,b,o2)                                                                                        \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_2(o,a,o1,b,o2);                                                                            \
                    Eblock
#define   FHHCcombinaison_lineaire_2(o,a,o1,b,o2)                                                                                       \
                    Bblock                                                                                                              \
                    FHHCinitialisation(o                                                                                                \
                                      ,LIZ2(a,HHReelle(o1),b,HHReelle(o2))                                                              \
                                      ,LIZ2(a,HHImaginaire(o1),b,HHImaginaire(o2))                                                      \
                                      ,LIZ2(a,HHJmaginaire(o1),b,HHJmaginaire(o2))                                                      \
                                      ,LIZ2(a,HHKmaginaire(o1),b,HHKmaginaire(o2))                                                      \
                                      ,LIZ2(a,HHSmaginaire(o1),b,HHSmaginaire(o2))                                                      \
                                      ,LIZ2(a,HHTmaginaire(o1),b,HHTmaginaire(o2))                                                      \
                                      ,LIZ2(a,HHUmaginaire(o1),b,HHUmaginaire(o2))                                                      \
                                      ,LIZ2(a,HHVmaginaire(o1),b,HHVmaginaire(o2))                                                      \
                                       );                                                                                               \
                    Eblock
                                        /* Introduit le 20040508121316...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2 + C*O3                                                           */
/*        D E   3   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   { A , B , C }   E T A N T   R E E L S  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_3(o,a,o1,b,o2,c,o3)                                                                                   \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_3(o,a,o1,b,o2,c,o3);                                                                       \
                    Eblock
#define   FHHCcombinaison_lineaire_3(o,a,o1,b,o2,c,o3)                                                                                  \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,to3);                                                                                     \
                    FHHCcombinaison_lineaire_2(to3,b,o2,c,o3);                                                                          \
                    FHHCcombinaison_lineaire_2(o,a,o1,FU,to3);                                                                          \
                    Eblock
                                        /* Introduit le 20220608142417...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2 + C*O3 + D*O4                                                    */
/*        D E   4   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   { A , B , C , D }   E T A N T   R E E L S  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_4(o,a,o1,b,o2,c,o3,d,o4)                                                                              \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_4(o,a,o1,b,o2,c,o3,d,o4);                                                                  \
                    Eblock
#define   FHHCcombinaison_lineaire_4(o,a,o1,b,o2,c,o3,d,o4)                                                                             \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,to4);                                                                                     \
                    FHHCcombinaison_lineaire_3(to4,b,o2,c,o3,d,o4);                                                                     \
                    FHHCcombinaison_lineaire_2(o,a,o1,FU,to4);                                                                          \
                    Eblock
                                        /* Introduit le 20220608142417...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2 + C*O3 + D*O4 + E*O5                                             */
/*        D E   5   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   { A , B , C , D , E }   E T A N T   R E E L S  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_5(o,a,o1,b,o2,c,o3,d,o4,e,o5)                                                                         \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_5(o,a,o1,b,o2,c,o3,d,o4,e,o5);                                                             \
                    Eblock
#define   FHHCcombinaison_lineaire_5(o,a,o1,b,o2,c,o3,d,o4,e,o5)                                                                        \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,to5);                                                                                     \
                    FHHCcombinaison_lineaire_4(to5,b,o2,c,o3,d,o4,e,o5);                                                                \
                    FHHCcombinaison_lineaire_2(o,a,o1,FU,to5);                                                                          \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2 + C*O3 + D*O4 + E*O5 + F*O6                                      */
/*        D E   6   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   { A , B , C , D , E , F }   E T A N T   R E E L S  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_6(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6)                                                                    \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_6(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6);                                                        \
                    Eblock
#define   FHHCcombinaison_lineaire_6(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6)                                                                   \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,to6);                                                                                     \
                    FHHCcombinaison_lineaire_5(to6,b,o2,c,o3,d,o4,e,o5,f,o6);                                                           \
                    FHHCcombinaison_lineaire_2(o,a,o1,FU,to6);                                                                          \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2 + C*O3 + D*O4 + E*O5 + F*O6 + G*O7                               */
/*        D E   7   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G }   E T A N T   R E E L S  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_7(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7)                                                               \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_7(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7);                                                   \
                    Eblock
#define   FHHCcombinaison_lineaire_7(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7)                                                              \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,to7);                                                                                     \
                    FHHCcombinaison_lineaire_6(to7,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7);                                                      \
                    FHHCcombinaison_lineaire_2(o,a,o1,FU,to7);                                                                          \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2 + C*O3 + D*O4 + E*O5 + F*O6 + G*O7 + H*O8                        */
/*        D E   8   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G , H }   E T A N T   R E E L S  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_8(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8)                                                          \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_8(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8);                                              \
                    Eblock
#define   FHHCcombinaison_lineaire_8(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8)                                                         \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,to8);                                                                                     \
                    FHHCcombinaison_lineaire_7(to8,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8);                                                 \
                    FHHCcombinaison_lineaire_2(o,a,o1,FU,to8);                                                                          \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M B I N A I S O N   L I N E A I R E   O = A*O1 + B*O2 + C*O3 + D*O4 + E*O5 + F*O6 + G*O7 + H*O8 + I*O9                 */
/*        D E   9   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   { A , B , C , D , E , F , G , H , I }   E T A N T   R E E L S  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCcombinaison_lineaire_9(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9)                                                     \
                    Bblock                                                                                                              \
                    FHHCcombinaison_lineaire_9(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9);                                         \
                    Eblock
#define   FHHCcombinaison_lineaire_9(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9)                                                    \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,to9);                                                                                     \
                    FHHCcombinaison_lineaire_8(to9,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9);                                            \
                    FHHCcombinaison_lineaire_2(o,a,o1,FU,to9);                                                                          \
                    Eblock
                                        /* Introduit le 20220609083129...                                                            */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S O M M E   O = O1 + O2   D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCsomme(o,o1,o2)                                                                                                             \
                    Bblock                                                                                                              \
                    FHHCsomme(o,o1,o2);                                                                                                 \
                    Eblock

#define   FHHCsomme(o,o1,o2)                                                                                                            \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(FHHCsomme_____utiliser_l_arithmetique_etendue               \
                                                                           ,BLOC(FgHHCsomme(o,o1,o2);)                                  \
                                                                            );                                                          \
                                        /* L'arithmetique etendue fut introduite ici le 20110811153401...                            */ \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHHCsomme(o,o1,o2)                                                                                                      \
                         Bblock                                                                                                         \
                         FHHCinitialisation(o                                                                                           \
                                           ,ADD2(HHReelle(o1),HHReelle(o2))                                                             \
                                           ,ADD2(HHImaginaire(o1),HHImaginaire(o2))                                                     \
                                           ,ADD2(HHJmaginaire(o1),HHJmaginaire(o2))                                                     \
                                           ,ADD2(HHKmaginaire(o1),HHKmaginaire(o2))                                                     \
                                           ,ADD2(HHSmaginaire(o1),HHSmaginaire(o2))                                                     \
                                           ,ADD2(HHTmaginaire(o1),HHTmaginaire(o2))                                                     \
                                           ,ADD2(HHUmaginaire(o1),HHUmaginaire(o2))                                                     \
                                           ,ADD2(HHVmaginaire(o1),HHVmaginaire(o2))                                                     \
                                            );                                                                                          \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHHCsomme(o,o1,o2)                                                                                                      \
                         Bblock                                                                                                         \
                         FGsomme_difference(HH,hyper_hyper_complexe,hyper_complexe                                                      \
                                           ,o                                                                                           \
                                           ,o1,o2                                                                                       \
                                           ,dHHReelle,dHHImaginaire                                                                     \
                                           ,FgHCsomme                                                                                   \
                                            );                                                                                          \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I F F E R E N C E   O = O1 - O2   D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCdifference(o,o1,o2)                                                                                                        \
                    Bblock                                                                                                              \
                    FHHCdifference(o,o1,o2);                                                                                            \
                    Eblock

#define   FHHCdifference(o,o1,o2)                                                                                                       \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(FHHCdifference_____utiliser_l_arithmetique_etendue          \
                                                                           ,BLOC(FgHHCdifference(o,o1,o2);)                             \
                                                                            );                                                          \
                                        /* L'arithmetique etendue fut introduite ici le 20110811153401...                            */ \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHHCdifference(o,o1,o2)                                                                                                 \
                         Bblock                                                                                                         \
                         FHHCinitialisation(o                                                                                           \
                                           ,SOUS(HHReelle(o1),HHReelle(o2))                                                             \
                                           ,SOUS(HHImaginaire(o1),HHImaginaire(o2))                                                     \
                                           ,SOUS(HHJmaginaire(o1),HHJmaginaire(o2))                                                     \
                                           ,SOUS(HHKmaginaire(o1),HHKmaginaire(o2))                                                     \
                                           ,SOUS(HHSmaginaire(o1),HHSmaginaire(o2))                                                     \
                                           ,SOUS(HHTmaginaire(o1),HHTmaginaire(o2))                                                     \
                                           ,SOUS(HHUmaginaire(o1),HHUmaginaire(o2))                                                     \
                                           ,SOUS(HHVmaginaire(o1),HHVmaginaire(o2))                                                     \
                                            );                                                                                          \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FgHHCdifference(o,o1,o2)                                                                                                 \
                         Bblock                                                                                                         \
                         FGsomme_difference(HH,hyper_hyper_complexe,hyper_complexe                                                      \
                                           ,o                                                                                           \
                                           ,o1,o2                                                                                       \
                                           ,dHHReelle,dHHImaginaire                                                                     \
                                           ,FgHCdifference                                                                              \
                                            );                                                                                          \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R P O L A T I O N   O = A*O1 + B*O2   E N T R E   2   N O M B R E S                                                */
/*        H Y P E R - H Y P E R - C O M P L E X E S ,   L E S   N O M B R E S   { A , B }   E T A N T   R E E L S  :                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCinterpolation(o,alpha,o1,beta,o2)                                                                                          \
                    Bblock                                                                                                              \
                    FHHCinterpolation(o,alpha,o1,beta,o2);                                                                              \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FHHCinterpolation(o,alpha,o1,beta,o2)                                                                                    \
                         Bblock                                                                                                         \
                         FHHCinitialisation(o                                                                                           \
                                           ,LIZ2(alpha,HHReelle(o1),beta,HHReelle(o2))                                                  \
                                           ,LIZ2(alpha,HHImaginaire(o1),beta,HHImaginaire(o2))                                          \
                                           ,LIZ2(alpha,HHJmaginaire(o1),beta,HHJmaginaire(o2))                                          \
                                           ,LIZ2(alpha,HHKmaginaire(o1),beta,HHKmaginaire(o2))                                          \
                                           ,LIZ2(alpha,HHSmaginaire(o1),beta,HHSmaginaire(o2))                                          \
                                           ,LIZ2(alpha,HHTmaginaire(o1),beta,HHTmaginaire(o2))                                          \
                                           ,LIZ2(alpha,HHUmaginaire(o1),beta,HHUmaginaire(o2))                                          \
                                           ,LIZ2(alpha,HHVmaginaire(o1),beta,HHVmaginaire(o2))                                          \
                                            );                                                                                          \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FHHCinterpolation(o,alpha,o1,beta,o2)                                                                                    \
                         Bblock                                                                                                         \
                         FGinterpolation(HH,hyper_hyper_complexe,hyper_complexe                                                         \
                                        ,o                                                                                              \
                                        ,alpha,o1,beta,o2                                                                               \
                                        ,dHHReelle,dHHImaginaire                                                                        \
                                        ,FgHCinterpolation                                                                              \
                                         );                                                                                             \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P R O D U I T   O = O1 * O2   D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   CHOI1_HHC(o1,o2)                                                                                                              \
                    o1
#define   CHOI2_HHC(o1,o2)                                                                                                              \
                    o2
                                        /* Introduit le 20230323135750 lors de la mise au point de 'v $xiirs/CAYA.W8' image correcte */
                                        /* alors que 'v $xrs/CalabiYau.81$I valider_la_qualite_du_calcul_de_o1_et_de_o2' donnait     */
                                        /* une erreur peut-etre liee au fait que la multiplication n'est ni commutative, ni          */
                                        /* associative dans les hyper-hyper-complexes...                                             */

#define   HHCproduit(o,o1,o2)                                                                                                           \
                                        /* ATTENTION, il convient de ne pas oublier que :                                            */ \
                                        /*                                                                                           */ \
                                        /*                  o1.o2 # o2.o1                                                            */ \
                                        /*                  (o1.o2).o3 # o1.(o2.o3)                                                  */ \
                                        /*                                                                                           */ \
                                        /* c'est-a-dire que le produit des octonions n'est ni commutatif, ni associatif...           */ \
                    Bblock                                                                                                              \
                    FHHCproduit(o,o1,o2);                                                                                               \
                    Eblock
#define   FHHCproduit(o,o1,o2)                                                                                                          \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(FHHCproduit_____utiliser_l_arithmetique_etendue             \
                                                                           ,BLOC(FgHHCproduit(o,o1,o2);)                                \
                                                                            );                                                          \
                    Eblock

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FgHHCproduit(o,o1,o2)                                                                                                    \
                                        /* ATTENTION, il convient de ne pas oublier que :                                            */ \
                                        /*                                                                                           */ \
                                        /*                  o1.o2 # o2.o1                                                            */ \
                                        /*                  (o1.o2).o3 # o1.(o2.o3)                                                  */ \
                                        /*                                                                                           */ \
                                        /* c'est-a-dire que le produit des octonions n'est ni commutatif, ni associatif...           */ \
                         Bblock                                                                                                         \
                         SEQUENCE_INCOMPLETE("la procedure 'FHHCproduit(...)' est trop compliquee a definir explicitement...");         \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    HHCproduit_theorique(o,o1,o2)                                                                                            \
                         Bblock                                                                                                         \
                         FHHCproduit_theorique(o,o1,o2);                                                                                \
                         Eblock
#    define    FHHCproduit_theorique(o,o1,o2)                                                                                           \
                         Bblock                                                                                                         \
                         UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(FHHCproduit_____utiliser_l_arithmetique_etendue        \
                                                                                ,BLOC(FgHHCproduit_theorique(o,o1,o2);)                 \
                                                                                 );                                                     \
                         Eblock
#    define    FgHHCproduit_theorique(o,o1,o2)                                                                                          \
                         Bblock                                                                                                         \
                         FGproduit(HH,hyper_hyper_complexe,hyper_complexe                                                               \
                                  ,o                                                                                                    \
                                  ,o1,o2                                                                                                \
                                  ,dHHReelle,dHHImaginaire                                                                              \
                                  ,FgHCegal                                                                                             \
                                  ,FgHCconjugaison                                                                                      \
                                  ,FgHCsomme                                                                                            \
                                  ,FgHCdifference                                                                                       \
                                  ,FgHCproduit_theorique                                                                                \
                                   );                                                                                                   \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                         Eblock
#    define    FgHHCproduit(o,o1,o2)                                                                                                    \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FHHCproduit_____utiliser_la_definition_theorique_du_produit))                                     \
                              Bblock                                                                                                    \
                              FHHCproduit_theorique(o,o1,o2);                                                                           \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                                        /* La possibilite du produit non theorique a ete introduite le 20110811135821...             */ \
                              UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC                                                   \
                                  (FHHCproduit_____utiliser_l_arithmetique_etendue                                                      \
                                  ,BLOC(                                                                                                \
                                        Bblock                                                                                          \
                                        Test(IL_FAUT(FHHCproduit_____utiliser_l_arithmetique_etendue_dans_CxCxCxC))                     \
                                        /* Test introduit le 20120918142202...                                                       */ \
                                             Bblock                                                                                     \
                                             FCproduit(dHReelle(dHHReelle(o))                                                           \
                                                      ,dHReelle(dHHReelle(o1))                                                          \
                                                      ,dHReelle(dHHReelle(o2))                                                          \
                                                       );                                                                               \
                                             FCproduit(dHImaginaire(dHHReelle(o))                                                       \
                                                      ,dHImaginaire(dHHReelle(o1))                                                      \
                                                      ,dHImaginaire(dHHReelle(o2))                                                      \
                                                       );                                                                               \
                                             FCproduit(dHReelle(dHHImaginaire(o))                                                       \
                                                      ,dHReelle(dHHImaginaire(o1))                                                      \
                                                      ,dHReelle(dHHImaginaire(o2))                                                      \
                                                       );                                                                               \
                                             FCproduit(dHImaginaire(dHHImaginaire(o))                                                   \
                                                      ,dHImaginaire(dHHImaginaire(o1))                                                  \
                                                      ,dHImaginaire(dHHImaginaire(o2))                                                  \
                                                       );                                                                               \
                                        /* Produit dans CxCxCxC...                                                                   */ \
                                        /*                                                                                           */ \
                                        /* Mais le 20120918163456 je note que ce n'est certainement pas comme cela que l'on fait     */ \
                                        /* le produit dans CxCxCxC car il independance entre les quatre plans C et donc lors de      */ \
                                        /* calculs de fractales on retombera sur des choses tres classiques (l'ensemble de           */ \
                                        /* Mandelbrot dans C par exemple...).                                                        */ \
                                             Eblock                                                                                     \
                                        ATes                                                                                            \
                                             Bblock                                                                                     \
                                             DEFV(hyper_hyper_complexe_etendu,o1_etendu);                                               \
                                             DEFV(hyper_hyper_complexe_etendu,o2_etendu);                                               \
                                             DEFV(hyper_hyper_complexe_etendu,o_etendu_1);                                              \
                                             DEFV(hyper_hyper_complexe_etendu,o_etendu_2);                                              \
                                        /* Nombre hyper-hyper-complexe resultat du "faux" produit avant (1) et apres (2)             */ \
                                        /* combinaisons lineaires.                                                                   */ \
                                                                                                                                        \
                                             FHHCextension_directe(o1_etendu,o1);                                                       \
                                             FHHCextension_directe(o2_etendu,o2);                                                       \
                                        /* Introduit sous cette forme le 20111230092602...                                           */ \
                                                                                                                                        \
                                        /* On notera le 20111007122014 que lors du calcul de produits du type :                      */ \
                                        /*                                                                                           */ \
                                        /*                  1*o                                                                      */ \
                                        /*                                                                                           */ \
                                        /* ('v $xiirc/JULJ.C4'), les monomes de 'HORNER_2_02(...)' qui referencent les deux          */ \
                                        /* angles (soit {22,21,12,11}) sont nuls a cause donc de l'octonion "1" (dont les sept       */ \
                                        /* arguments -angles- sont nuls) dans le produit "1*o". Seuls sont donc alors interessants   */ \
                                        /* les monomes {20,10,02,01,00}...                                                           */ \
                                                                                                                                        \
                                             EGAL(HHCHHS_Rho(o_etendu_1)                                                                \
                                                 ,HORNER_2_02(HHCHHS_Rho(o1_etendu)                                                     \
                                                             ,HHCHHS_Rho(o2_etendu)                                                     \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R2R2                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R2R1                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R2R0                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R1R2                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R1R1                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R1R0                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R0R2                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R0R1                \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_R0R0                \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle1(o_etendu_1)                                                             \
                                                 ,HORNER_2_02(HHCHHS_Angle1(o1_etendu)                                                  \
                                                             ,HHCHHS_Angle1(o2_etendu)                                                  \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A12A12              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A12A11              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A12A10              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A11A12              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A11A11              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A11A10              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A10A12              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A10A11              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A10A10              \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle2(o_etendu_1)                                                             \
                                                 ,HORNER_2_02(HHCHHS_Angle2(o1_etendu)                                                  \
                                                             ,HHCHHS_Angle2(o2_etendu)                                                  \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A22A22              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A22A21              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A22A20              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A21A22              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A21A21              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A21A20              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A20A22              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A20A21              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A20A20              \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle3(o_etendu_1)                                                             \
                                                 ,HORNER_2_02(HHCHHS_Angle3(o1_etendu)                                                  \
                                                             ,HHCHHS_Angle3(o2_etendu)                                                  \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A32A32              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A32A31              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A32A30              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A31A32              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A31A31              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A31A30              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A30A32              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A30A31              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A30A30              \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle4(o_etendu_1)                                                             \
                                                 ,HORNER_2_02(HHCHHS_Angle4(o1_etendu)                                                  \
                                                             ,HHCHHS_Angle4(o2_etendu)                                                  \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A42A42              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A42A41              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A42A40              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A41A42              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A41A41              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A41A40              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A40A42              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A40A41              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A40A40              \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle5(o_etendu_1)                                                             \
                                                 ,HORNER_2_02(HHCHHS_Angle5(o1_etendu)                                                  \
                                                             ,HHCHHS_Angle5(o2_etendu)                                                  \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A52A52              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A52A51              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A52A50              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A51A52              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A51A51              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A51A50              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A50A52              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A50A51              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A50A50              \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle6(o_etendu_1)                                                             \
                                                 ,HORNER_2_02(HHCHHS_Angle6(o1_etendu)                                                  \
                                                             ,HHCHHS_Angle6(o2_etendu)                                                  \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A62A62              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A62A61              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A62A60              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A61A62              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A61A61              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A61A60              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A60A62              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A60A61              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A60A60              \
                                                              )                                                                         \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle7(o_etendu_1)                                                             \
                                                 ,HORNER_2_02(HHCHHS_Angle7(o1_etendu)                                                  \
                                                             ,HHCHHS_Angle7(o2_etendu)                                                  \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A72A72              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A72A71              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A72A70              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A71A72              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A71A71              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A71A70              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A70A72              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A70A71              \
                                                             ,FHHCproduit_____avec_le_produit_non_theorique__Horner_A70A70              \
                                                              )                                                                         \
                                                  );                                                                                    \
                                        /* Calcul des huit composantes etendues de 'o'...                                            */ \
                                                                                                                                        \
                                             EGAL(HHCHHS_Rho(o_etendu_2)                                                                \
                                                 ,PUIX(AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Rho                  \
                                                           ,HHCHHS_Rho(o_etendu_1)                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Rho                  \
                                                            )                                                                           \
                                                      ,FHHCproduit_____avec_le_produit_non_theorique__exposa1_Rho                       \
                                                       )                                                                                \
                                                  );                                                                                    \
                                                                                                                                        \
                                             EGAL(HHCHHS_Angle1(o_etendu_2)                                                             \
                                                 ,OPC1(IL_FAUT(FHHCproduit_____avec_le_produit_non_theorique__modulo_Angle1)            \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Angle1               \
                                                           ,LIN7(FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle1Angle1    \
                                                                ,HHCHHS_Angle1(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle1Angle2    \
                                                                ,HHCHHS_Angle2(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle1Angle3    \
                                                                ,HHCHHS_Angle3(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle1Angle4    \
                                                                ,HHCHHS_Angle4(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle1Angle5    \
                                                                ,HHCHHS_Angle5(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle1Angle6    \
                                                                ,HHCHHS_Angle6(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle1Angle7    \
                                                                ,HHCHHS_Angle7(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__transl2_Angle1          \
                                                                 )                                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Angle1               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle2(o_etendu_2)                                                             \
                                                 ,OPC1(IL_FAUT(FHHCproduit_____avec_le_produit_non_theorique__modulo_Angle1)            \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Angle2               \
                                                           ,LIN7(FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle2Angle1    \
                                                                ,HHCHHS_Angle1(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle2Angle2    \
                                                                ,HHCHHS_Angle2(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle2Angle3    \
                                                                ,HHCHHS_Angle3(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle2Angle4    \
                                                                ,HHCHHS_Angle4(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle2Angle5    \
                                                                ,HHCHHS_Angle5(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle2Angle6    \
                                                                ,HHCHHS_Angle6(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle2Angle7    \
                                                                ,HHCHHS_Angle7(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__transl2_Angle2          \
                                                                 )                                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Angle2               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle3(o_etendu_2)                                                             \
                                                 ,OPC1(IL_FAUT(FHHCproduit_____avec_le_produit_non_theorique__modulo_Angle1)            \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Angle3               \
                                                           ,LIN7(FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle3Angle1    \
                                                                ,HHCHHS_Angle1(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle3Angle2    \
                                                                ,HHCHHS_Angle2(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle3Angle3    \
                                                                ,HHCHHS_Angle3(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle3Angle4    \
                                                                ,HHCHHS_Angle4(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle3Angle5    \
                                                                ,HHCHHS_Angle5(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle3Angle6    \
                                                                ,HHCHHS_Angle6(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle3Angle7    \
                                                                ,HHCHHS_Angle7(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__transl2_Angle3          \
                                                                 )                                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Angle3               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle4(o_etendu_2)                                                             \
                                                 ,OPC1(IL_FAUT(FHHCproduit_____avec_le_produit_non_theorique__modulo_Angle1)            \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Angle4               \
                                                           ,LIN7(FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle4Angle1    \
                                                                ,HHCHHS_Angle1(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle4Angle2    \
                                                                ,HHCHHS_Angle2(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle4Angle3    \
                                                                ,HHCHHS_Angle3(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle4Angle4    \
                                                                ,HHCHHS_Angle4(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle4Angle5    \
                                                                ,HHCHHS_Angle5(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle4Angle6    \
                                                                ,HHCHHS_Angle6(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle4Angle7    \
                                                                ,HHCHHS_Angle7(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__transl2_Angle4          \
                                                                 )                                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Angle4               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle5(o_etendu_2)                                                             \
                                                 ,OPC1(IL_FAUT(FHHCproduit_____avec_le_produit_non_theorique__modulo_Angle1)            \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Angle5               \
                                                           ,LIN7(FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle5Angle1    \
                                                                ,HHCHHS_Angle1(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle5Angle2    \
                                                                ,HHCHHS_Angle2(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle5Angle3    \
                                                                ,HHCHHS_Angle3(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle5Angle4    \
                                                                ,HHCHHS_Angle4(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle5Angle5    \
                                                                ,HHCHHS_Angle5(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle5Angle6    \
                                                                ,HHCHHS_Angle6(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle5Angle7    \
                                                                ,HHCHHS_Angle7(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__transl2_Angle5          \
                                                                 )                                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Angle5               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle6(o_etendu_2)                                                             \
                                                 ,OPC1(IL_FAUT(FHHCproduit_____avec_le_produit_non_theorique__modulo_Angle1)            \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Angle6               \
                                                           ,LIN7(FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle6Angle1    \
                                                                ,HHCHHS_Angle1(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle6Angle2    \
                                                                ,HHCHHS_Angle2(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle6Angle3    \
                                                                ,HHCHHS_Angle3(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle6Angle4    \
                                                                ,HHCHHS_Angle4(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle6Angle5    \
                                                                ,HHCHHS_Angle5(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle6Angle6    \
                                                                ,HHCHHS_Angle6(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle6Angle7    \
                                                                ,HHCHHS_Angle7(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__transl2_Angle6          \
                                                                 )                                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Angle6               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                             EGAL(HHCHHS_Angle7(o_etendu_2)                                                             \
                                                 ,OPC1(IL_FAUT(FHHCproduit_____avec_le_produit_non_theorique__modulo_Angle1)            \
                                                      ,CERC                                                                             \
                                                      ,NEUT                                                                             \
                                                      ,AXPB(FHHCproduit_____avec_le_produit_non_theorique__ponder1_Angle7               \
                                                           ,LIN7(FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle7Angle1    \
                                                                ,HHCHHS_Angle1(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle7Angle2    \
                                                                ,HHCHHS_Angle2(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle7Angle3    \
                                                                ,HHCHHS_Angle3(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle7Angle4    \
                                                                ,HHCHHS_Angle4(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle7Angle5    \
                                                                ,HHCHHS_Angle5(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle7Angle6    \
                                                                ,HHCHHS_Angle6(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__ponder2_Angle7Angle7    \
                                                                ,HHCHHS_Angle7(o_etendu_1)                                              \
                                                                ,FHHCproduit_____avec_le_produit_non_theorique__transl2_Angle7          \
                                                                 )                                                                      \
                                                           ,FHHCproduit_____avec_le_produit_non_theorique__transl1_Angle7               \
                                                            )                                                                           \
                                                       )                                                                                \
                                                  );                                                                                    \
                                                                                                                                        \
                                             FHHCextension_inverse(o,o_etendu_2);                                                       \
                                        /* Introduit sous cette forme le 20111230092602...                                           */ \
                                             Eblock                                                                                     \
                                        ETes                                                                                            \
                                        Eblock                                                                                          \
                                        )                                                                                               \
                                   );                                                                                                   \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                N                                                                                  */
/*        P U I S S A N C E   N - I E M E   O = O1    ( P O S I T I V E   O U   N E G A T I V E )                                    */
/*        D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCpuissance(o,o1,exposant)                                                                                                   \
                    Bblock                                                                                                              \
                    FHHCpuissance(o,o1,exposant);                                                                                       \
                    Eblock
#define   FHHCpuissance(o,o1,exposant)                                                                                                  \
                    Bblock                                                                                                              \
                    FgHHCpuissance(o,o1,exposant);                                                                                      \
                    Eblock
#define   FgHHCpuissance(o,o1,exposant)                                                                                                 \
                                        /* Definition introduite le 20110824071133...                                                */ \
                    Bblock                                                                                                              \
                    Test(EST_ENTIER(exposant))                                                                                          \
                                        /* Test introduit le 20110829140721 pour plus de generalite...                               */ \
                         Bblock                                                                                                         \
                         DEFV(hyper_hyper_complexe,o_cumul_multiplicatif);                                                              \
                         FHHCegal(o_cumul_multiplicatif,HHC_____octonion_p1__0__0__0__0__0__0__0);                                      \
                                        /* Nombre complexe intermediaire donnant le "cumul multiplicatif" courant. Il est            */ \
                                        /* initialise ici a {1,0,0,0,0,0,0,0,0} et c'est cette valeur qui est renvoyee en cas        */ \
                                        /* d'erreur...                                                                               */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'il n'est pas possible d'optimiser cette sequence en faisant une              */ \
                                        /* iteration de moins via l'initialisation :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  FHHCegal(o_cumul_multiplicatif,o1);                                      */ \
                                        /*                                                                                           */ \
                                        /* puis :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  Repe(TRMU(exposant))                                                     */ \
                                        /*                                                                                           */ \
                                        /* a cause du cas de l'exposant nul pour lequel le resultat est {1,0,0,0,0,0,0,0,0}. D'autre */ \
                                        /* part si 'IL_NE_FAUT_PAS(FHHCproduit_____utiliser_la_definition_theorique_du_produit)'     */ \
                                        /* les deux methodes ne donneraient pas le meme resultat sauf cas particuliers...            */ \
                                                                                                                                        \
                         Test(IFGE(exposant,ZERO))                                                                                      \
                              Bblock                                                                                                    \
                              Repe(NEUT(exposant))                                                                                      \
                                   Bblock                                                                                               \
                                   FHHCproduit(o_cumul_multiplicatif,o_cumul_multiplicatif,o1);                                         \
                                        /* On notera le 20230324100530 la question problematique suivante. En effet, pour les        */ \
                                        /* hyper-hyper-complexes, la multiplication n'est pas commutative :                          */ \
                                        /*                                                                                           */ \
                                        /*                  o1.o2 # o2.o1                           (en general...)                  */ \
                                        /*                                                                                           */ \
                                        /* En ce qui concerne la puissance, on a par exemple pour un exposant egal a 3 :             */ \
                                        /*                                                                                           */ \
                                        /*                  o1^3 = o1.o1.o1                                                          */ \
                                        /*                                                                                           */ \
                                        /* Or lors du calcul iteratif precedent, l'ordre entre 'o_cumul_multiplicatif' et 'o1' est   */ \
                                        /* en fait arbitraire. Doit-on utiliser :                                                    */ \
                                        /*                                                                                           */ \
                                        /*                  o1.o1.o1 = o1.(o1.o1)                                                    */ \
                                        /*                                                                                           */ \
                                        /* ou bien :                                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  o1.o1.o1 = (o1.o1).o1                                                    */ \
                                        /*                                                                                           */ \
                                        /* Or, en toute generalite, on a cause de la non commutativite :                             */ \
                                        /*                                                                                           */ \
                                        /*                  o1.(o1.o1) # (o1.o1).o1                                                  */ \
                                        /*                      \___/     \___/                                                      */ \
                                        /*                       o2        o2                                                        */ \
                                        /*                                                                                           */ \
                                        /* Alors que faire ? Au passage, cette interrogation peut etre etendue a toutes les          */ \
                                        /* fonctions et a tous les operateurs un peu "compliques" definis par ailleurs comme,        */ \
                                        /* par exemple, les lignes trigonometriques, l'exponentielle, le logarithme,...              */ \
                                   Eblock                                                                                               \
                              ERep                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Repe(NEGA(exposant))                                                                                      \
                                   Bblock                                                                                               \
                                   FHHCquotient(o_cumul_multiplicatif,o_cumul_multiplicatif,o1);                                        \
                                   Eblock                                                                                               \
                              ERep                                                                                                      \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                                                                                                                                        \
                         FHHCegal(o,o_cumul_multiplicatif);                                                                             \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(hyper_hyper_complexe,o_exposant);                                                                         \
                                        /* Exposant hyper-hyper-complexe.                                                            */ \
                                                                                                                                        \
                         FHHCinitialisation(o_exposant                                                                                  \
                                           ,exposant                                                                                    \
                                           ,I0_Octonion                                                                                 \
                                           ,J0_Octonion                                                                                 \
                                           ,K0_Octonion                                                                                 \
                                           ,S0_Octonion                                                                                 \
                                           ,T0_Octonion                                                                                 \
                                           ,U0_Octonion                                                                                 \
                                           ,V0_Octonion                                                                                 \
                                            );                                                                                          \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  exposant + i.0 + j.0 + k.0 + s.0 + t.0 + u.0 + v.0                       */ \
                                        /*                                                                                           */ \
                         FHHCexponentielle_octonionique(o                                                                               \
                                                       ,o1                                                                              \
                                                       ,o_exposant                                                                      \
                                                        );                                                                              \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                    exposant + i.0 + j.0 + k.0 + s.0 + t.0 + u.0 + v.0                     */ \
                                        /*                  o1                                                                       */ \
                                        /*                                                                                           */ \
                                        /* (introduit le 20110829140721 pour plus de generalite qu'un exposant entier).              */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                     A.O1 + B                                                                      */
/*        F O R M E   H O M O G R A P H I Q U E   O = ----------                                                                     */
/*                                                     C.O2 + D                                                                      */
/*                                                                                                                                   */
/*        D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S                                                        */
/*        L E S   N O M B R E S   ' A ' , ' B ' , ' C '   E T   ' D '   E T A N T   R E E L S  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCforme_homographique(o,alpha,o1,beta,gamma,o2,delta)                                                                        \
                    Bblock                                                                                                              \
                    FHHCforme_homographique(o,alpha,o1,beta,gamma,o2,delta);                                                            \
                    Eblock
#define   FHHCforme_homographique(o,alpha,o1,beta,gamma,o2,delta)                                                                       \
                    Bblock                                                                                                              \
                    FgHHCforme_homographique(o,alpha,o1,beta,gamma,o2,delta);                                                           \
                    Eblock
#define   FgHHCforme_homographique(o,alpha,o1,beta,gamma,o2,delta)                                                                      \
                                        /* Definition introduite le 20210207101344...                                                */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o___numerateur);                                                                          \
                    DEFV(hyper_hyper_complexe,o_denominateur);                                                                          \
                                        /* Numerateur et denominateur de la forme homographique.                                     */ \
                                                                                                                                        \
                    FHHCforme_lineaire(o___numerateur,alpha,o1,beta);                                                                   \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  A.o1 + B                                                                 */ \
                                        /*                                                                                           */ \
                    FHHCforme_lineaire(o_denominateur,gamma,o2,delta);                                                                  \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  C.o2 + D                                                                 */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                    FHHCquotient(o,o___numerateur,o_denominateur);                                                                      \
                                        /* Mise a jour du nombre complexe resultat :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                   A.o1 + B                                                                */ \
                                        /*                  ----------                                                               */ \
                                        /*                   C.o2 + D                                                                */ \
                                        /*                                                                                           */ \
                                        /* en notant qu'en general les deux nombres 'o1' et 'o2' sont identiques...                  */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                         --                                                                                        */
/*                               O1     O1.O2                                                                                        */
/*        Q U O T I E N T   O = ---- = -------   D E   2   N O M B R E S   H Y P E R - H Y P E R - C O M P L E X E S  :              */
/*                               O2         2                                                                                        */
/*                                      |O2|                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCquotient(o,o1,o2)                                                                                                          \
                    Bblock                                                                                                              \
                    FHHCquotient(o,o1,o2);                                                                                              \
                    Eblock

#define   FHHCquotient(o,o1,o2)                                                                                                         \
                    Bblock                                                                                                              \
                    UTILISER_EVENTUELLEMENT_L_ARITHMETIQUE_ETENDUE_DANS_HHC(FHHCquotient_____utiliser_l_arithmetique_etendue            \
                                                                           ,BLOC(FgHHCquotient(o,o1,o2);)                               \
                                                                            );                                                          \
                                        /* L'arithmetique etendue fut introduite ici le 20110811153401...                            */ \
                    Eblock

#define   FgHHCquotient(o,o1,o2)                                                                                                        \
                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGquotient(prefixe,corps,sous_corps,...)               \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FHHC...(...)' qui sont */ \
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o2_barre);                                                                                \
                                        /* Ce nombre hyper-hyper-complexe est le conjugue du nombre hyper-hyper-complexe argument    */ \
                                        /* 'o2'.                                                                                     */ \
                    DEFV(hyper_hyper_complexe,o_intermediaire_quotient_1);                                                              \
                    DEFV(hyper_hyper_complexe,o_intermediaire_quotient_2);                                                              \
                                        /* Ces deux nombres hyper-hyper-complexes intermediaires sont destines a traiter les cas     */ \
                                        /* ou par malheur le nombre hyper-hyper-complexe resultat 'o' serait identique a l'un des    */ \
                                        /* deux arguments 'o1' ou 'o2'.                                                              */ \
                                                                                                                                        \
                    FHHCconjugaison(o2_barre,o2);                                                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  --                                                                       */ \
                                        /*                  o2                                                                       */ \
                                        /*                                                                                           */ \
                    FHHCproduit(o_intermediaire_quotient_1,o1,o2_barre);                                                                \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                     --                                                                    */ \
                                        /*                  o1.o2                                                                    */ \
                                        /*                                                                                           */ \
                    FHHCforme_lineaire(o_intermediaire_quotient_2,fINVZ(FHHCmodule2(o2)),o_intermediaire_quotient_1,FZERO);             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                      --                                                                   */ \
                                        /*                   o1.o2                                                                   */ \
                                        /*                  -------                                                                  */ \
                                        /*                       2                                                                   */ \
                                        /*                   |o2|                                                                    */ \
                                        /*                                                                                           */ \
                                        /* Le 20071201105511 'INVZ(...)' fut remplace tardivement par 'fINVZ(...)'...                */ \
                    FHHCegal(o,o_intermediaire_quotient_2);                                                                             \
                                        /* Mise a jour du nombre hyper-hyper-complexe resultat...                                    */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                             1                                                                                                     */
/*        I N V E R S E   O = ----   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                              */
/*                             O1                                                                                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCinverse(o,o1)                                                                                                              \
                    Bblock                                                                                                              \
                    FHHCinverse(o,o1);                                                                                                  \
                    Eblock
#define   FHHCinverse(o,o1)                                                                                                             \
                                        /* Ces definitions furent introduites le 20060425154232...                                   */ \
                    Bblock                                                                                                              \
                    FHHCquotient(o,HHC_____octonion_p1__0__0__0__0__0__0__0,o1);                                                        \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   1                                                                       */ \
                                        /*                  ----                                                                     */ \
                                        /*                   o1                                                                      */ \
                                        /*                                                                                           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                               2                                                                   */
/*        N O R M E   O U   M O D U L E   A U   C A R R E   | O |    D ' U N                                                         */
/*        N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCmodule2(o)                                                                                                                 \
                    FHHCmodule2(o)

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#    define    FHHCmodule2(o)                                                                                                           \
                         ADD8(EXP2(HHReelle(o))                                                                                         \
                             ,EXP2(HHImaginaire(o))                                                                                     \
                             ,EXP2(HHJmaginaire(o))                                                                                     \
                             ,EXP2(HHKmaginaire(o))                                                                                     \
                             ,EXP2(HHSmaginaire(o))                                                                                     \
                             ,EXP2(HHTmaginaire(o))                                                                                     \
                             ,EXP2(HHUmaginaire(o))                                                                                     \
                             ,EXP2(HHVmaginaire(o))                                                                                     \
                              )

                                        /* ATTENTION, on notera que l'on ne peut pas definir la norme par :                          */
                                        /*                                                                                           */
                                        /*                           -                                                               */
                                        /*                  N(o) = o.o                                                               */
                                        /*                                                                                           */
                                        /* car en effet le produit 'FHHCproduit(...)' fait intervenir des variables intermediaires   */
                                        /* qui sont incompatibles avec l'utilisation de 'FHHCmodule2(...)' en tant que scalaire      */
                                        /* dans des expressions...                                                                   */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_01

#ifdef    DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#    define    FHHCmodule2(o)                                                                                                           \
                         FGmodule2(HH,hyper_hyper_complexe,hyper_complexe                                                               \
                                  ,o                                                                                                    \
                                  ,dHHReelle,dHHImaginaire                                                                              \
                                  ,HCmodule2                                                                                            \
                                   )                                                                                                    \
                                        /* ATTENTION, 'HH' et 'hyper_hyper_complexe' doivent etre cote a cote afin de garantir une   */ \
                                        /* utilisation correcte de l'operateur de concatenation '`'...                               */
#Aifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02
#Eifdef   DEFINITION_DES_CORPS_BATIS_A_PARTIR_DES_NOMBRES_REELS_VERSION_02

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M O D U L E   | O |   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHC_MODULE_UNITAIRE                                                                                                           \
                    FU

#define   HHCmodule(o)                                                                                                                  \
                    FHHCmodule(o)
#define   FHHCmodule(o)                                                                                                                 \
                    RACX(FHHCmodule2(o))

                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */
                                        /*                                                                                           */
                                        /*                  #    define    FGmodule(prefixe,corps,sous_corps,...)                 \  */
                                        /*                  (...)                                                                    */
                                        /*                                                                                           */
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FHHC...(...)' qui sont */
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */

#define   LogHHCmodule(z)                                                                                                               \
                    LOGX(HHCmodule(z))                                                                                                  \
                                        /* Introduit le 20180927085818 pour son utilite en geometrie "tropicale" (anciennement       */ \
                                        /* appelee "MAX-PLUS"...).                                                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                             --                                                                                                    */
/*        T R A C E   O = O1 + O1   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Rappel :                                                                                                                   */
/*                                                                                                                                   */
/*                    Si N(o) et T(o) designent respectivement                                                                       */
/*                  la norme et la trace du nombre hyper-hyper-complexe 'o',                                                         */
/*                  on a :                                                                                                           */
/*                                                                                                                                   */
/*                                       2                                                                                           */
/*                                      o  - T(o).o + N(o) = 0                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCtrace(o,o1)                                                                                                                \
                    Bblock                                                                                                              \
                    FHHCtrace(o,o1);                                                                                                    \
                    Eblock
#define   FHHCtrace(o,o1)                                                                                                               \
                                        /* ATTENTION, il n'est pas utile de definir quelque chose du type :                          */ \
                                        /*                                                                                           */ \
                                        /*                  #    define    FGtrace(prefixe,corps,sous_corps,...)                  \  */ \
                                        /*                  (...)                                                                    */ \
                                        /*                                                                                           */ \
                                        /* puique la definition qui suit n'utilise que des fonctions du type 'FHHC...(...)' qui sont */ \
                                        /* de haut niveau et ne font aucunes hypotheses sur les structures de base...                */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o1_barre);                                                                                \
                                        /* Ce nombre hyper-hyper-complexe est le conjugue du nombre hyper-hyper-complexe argument    */ \
                                        /* 'o1'.                                                                                     */ \
                                                                                                                                        \
                    FHHCconjugaison(o1_barre,o1);                                                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  --                                                                       */ \
                                        /*                  o1                                                                       */ \
                                        /*                                                                                           */ \
                    FHHCsomme(o,o1,o1_barre);                                                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                       --                                                                  */ \
                                        /*                  o1 + o1                                                                  */ \
                                        /*                                                                                           */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A R G U M E N T S   D E   O   D A N S   [ - P I , + P I ]   D ' U N   N O M B R E                                          */
/*        H Y P E R - H Y P E R - C O M P L E X E  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Les procedures suivantes furent introduites le 20110811140935...                          */

#define   HHCargumentA1_PI(o)                                                                                                           \
                    FHHCargumentA1_PI(o)
#define   FHHCargumentA1_PI(o)                                                                                                          \
                    gAngle1_8D(ARTG                                                                                                     \
                              ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                  \
                              ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                          \
                              ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                              \
                              ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                          \
                               )

#define   HHCargumentA2_PI(o)                                                                                                           \
                    FHHCargumentA2_PI(o)
#define   FHHCargumentA2_PI(o)                                                                                                          \
                    gAngle2_8D(ARTG                                                                                                     \
                              ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                  \
                              ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                          \
                              ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                              \
                              ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                          \
                               )

#define   HHCargumentA3_PI(o)                                                                                                           \
                    FHHCargumentA3_PI(o)
#define   FHHCargumentA3_PI(o)                                                                                                          \
                    gAngle3_8D(ARTG                                                                                                     \
                              ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                  \
                              ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                          \
                              ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                              \
                              ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                          \
                               )

#define   HHCargumentA4_PI(o)                                                                                                           \
                    FHHCargumentA4_PI(o)
#define   FHHCargumentA4_PI(o)                                                                                                          \
                    gAngle4_8D(ARTG                                                                                                     \
                              ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                  \
                              ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                          \
                              ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                              \
                              ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                          \
                               )

#define   HHCargumentA5_PI(o)                                                                                                           \
                    FHHCargumentA5_PI(o)
#define   FHHCargumentA5_PI(o)                                                                                                          \
                    gAngle5_8D(ARTG                                                                                                     \
                              ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                  \
                              ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                          \
                              ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                              \
                              ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                          \
                               )

#define   HHCargumentA6_PI(o)                                                                                                           \
                    FHHCargumentA6_PI(o)
#define   FHHCargumentA6_PI(o)                                                                                                          \
                    gAngle6_8D(ARTG                                                                                                     \
                              ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                  \
                              ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                          \
                              ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                              \
                              ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                          \
                               )

#define   HHCargumentA7_PI(o)                                                                                                           \
                    FHHCargumentA7_PI(o)
#define   FHHCargumentA7_PI(o)                                                                                                          \
                    gAngle7_8D(ARTG                                                                                                     \
                              ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                                  \
                              ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                          \
                              ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                              \
                              ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                          \
                               )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A R G U M E N T S   D E   O   D A N S   [ 0 , 2 . P I ]   D ' U N   N O M B R E                                            */
/*        H Y P E R - H Y P E R - C O M P L E X E  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Les procedures suivantes furent introduites le 20110811140935...                          */

#define   HHCargumentA1_2PI(o)                                                                                                          \
                    FHHCargumentA1_2PI(o)
#define   FHHCargumentA1_2PI(o)                                                                                                         \
                    NEUT(gAngle1_8D(ATAN                                                                                                \
                                   ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                             \
                                   ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                     \
                                   ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                         \
                                   ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                     \
                                    )                                                                                                   \
                         )

#define   HHCargumentA2_2PI(o)                                                                                                          \
                    FHHCargumentA2_2PI(o)
#define   FHHCargumentA2_2PI(o)                                                                                                         \
                    SOUS(gAngle2_8D(ATAN                                                                                                \
                                   ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                             \
                                   ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                     \
                                   ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                         \
                                   ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                     \
                                    )                                                                                                   \
                        ,PI_SUR_2                                                                                                       \
                         )

#define   HHCargumentA3_2PI(o)                                                                                                          \
                    FHHCargumentA3_2PI(o)
#define   FHHCargumentA3_2PI(o)                                                                                                         \
                    SOUS(gAngle3_8D(ATAN                                                                                                \
                                   ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                             \
                                   ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                     \
                                   ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                         \
                                   ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                     \
                                    )                                                                                                   \
                        ,PI_SUR_2                                                                                                       \
                         )

#define   HHCargumentA4_2PI(o)                                                                                                          \
                    FHHCargumentA4_2PI(o)
#define   FHHCargumentA4_2PI(o)                                                                                                         \
                    SOUS(gAngle4_8D(ATAN                                                                                                \
                                   ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                             \
                                   ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                     \
                                   ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                         \
                                   ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                     \
                                    )                                                                                                   \
                        ,PI_SUR_2                                                                                                       \
                         )

#define   HHCargumentA5_2PI(o)                                                                                                          \
                    FHHCargumentA5_2PI(o)
#define   FHHCargumentA5_2PI(o)                                                                                                         \
                    SOUS(gAngle5_8D(ATAN                                                                                                \
                                   ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                             \
                                   ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                     \
                                   ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                         \
                                   ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                     \
                                    )                                                                                                   \
                        ,PI_SUR_2                                                                                                       \
                         )

#define   HHCargumentA6_2PI(o)                                                                                                          \
                    FHHCargumentA6_2PI(o)
#define   FHHCargumentA6_2PI(o)                                                                                                         \
                    SOUS(gAngle6_8D(ATAN                                                                                                \
                                   ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                             \
                                   ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                     \
                                   ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                         \
                                   ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                     \
                                    )                                                                                                   \
                        ,PI_SUR_2                                                                                                       \
                         )

#define   HHCargumentA7_2PI(o)                                                                                                          \
                    FHHCargumentA7_2PI(o)
#define   FHHCargumentA7_2PI(o)                                                                                                         \
                    SOUS(gAngle7_8D(ATAN                                                                                                \
                                   ,R0_Quaternion,I0_Quaternion,J0_Quaternion,K0_Quaternion                                             \
                                   ,S0_Octonion,T0_Octonion,U0_Octonion,V0_Octonion                                                     \
                                   ,HHReelle(o),HHImaginaire(o),HHJmaginaire(o),HHKmaginaire(o)                                         \
                                   ,HHSmaginaire(o),HHTmaginaire(o),HHUmaginaire(o),HHVmaginaire(o)                                     \
                                    )                                                                                                   \
                        ,PI_SUR_2                                                                                                       \
                         )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M P O S A N T E S   C A R T E S I E N N E S   D ' U N   N O M B R E   H Y P E R - H Y P E R - C O M P L E X E  :       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* Les procedures suivantes furent introduites le 20110811140935...                          */

#define   HHCcomposanteR(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteR(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteR(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X2cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )
                                        /* ATTENTION : c'est bien 'X2cartesienne_8D(...)' et non pas 'X1cartesienne_8D(...)' afin    */
                                        /* de retomber sur les coordonnees polaires du plan Complexe...                              */

#define   HHCcomposanteI(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteI(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteI(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X1cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )
                                        /* ATTENTION : c'est bien 'X1cartesienne_8D(...)' et non pas 'X2cartesienne_8D(...)' afin    */
                                        /* de retomber sur les coordonnees polaires du plan Complexe...                              */

#define   HHCcomposanteJ(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteJ(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteJ(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X3cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )

#define   HHCcomposanteK(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteK(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteK(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X4cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )

#define   HHCcomposanteS(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteS(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteS(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X5cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )

#define   HHCcomposanteT(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteT(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteT(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X6cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )

#define   HHCcomposanteU(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteU(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteU(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X7cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )

#define   HHCcomposanteV(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                          \
                    FHHCcomposanteV(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)
#define   FHHCcomposanteV(rho,angle1,angle2,angle3,angle4,angle5,angle6,angle7)                                                         \
                    X8cartesienne_8D(rho                                                                                                \
                                    ,ADD2(angle7,PI_SUR_2)                                                                              \
                                    ,ADD2(angle6,PI_SUR_2)                                                                              \
                                    ,ADD2(angle5,PI_SUR_2)                                                                              \
                                    ,ADD2(angle4,PI_SUR_2)                                                                              \
                                    ,ADD2(angle3,PI_SUR_2)                                                                              \
                                    ,ADD2(angle2,PI_SUR_2)                                                                              \
                                    ,NEUT(angle1)                                                                                       \
                                     )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I A T I O N   H Y P E R - H Y P E R - C O M P L E X E   A   B A S E   R E E L L E  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCexponentielle(o,base,o1)                                                                                                   \
                    Bblock                                                                                                              \
                    FHHCexponentielle(o,base,o1);                                                                                       \
                    Eblock
#define   FHHCexponentielle(o,base,o1)                                                                                                  \
                    Bblock                                                                                                              \
                    FgHHCexponentielle(o,base,o1);                                                                                      \
                    Eblock

#define   FHHCexponentielle_RI(composante)                                                                                              \
                    NEUT(composante)
#define   FHHCexponentielle_JKSTUV(composante)                                                                                          \
                    COND(IL_FAUT(FHHCexponentielle_____compatibilite_20110829)                                                          \
                        ,NEGA(composante)                                                                                               \
                        ,NEUT(composante)                                                                                               \
                         )
                                        /* Permet de "controler" l'exponentielle hyper-hyper-complexe...                             */
#define   FgHHCexponentielle(o,base,o1)                                                                                                 \
                                        /* Introduit le 20110829140721...                                                            */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHHCexponentielle_____compatibilite_20230204))                                                         \
                                        /* Test introduit le 20230204085911...                                                       */ \
                         Bblock                                                                                                         \
                         DEFV(hyper_hyper_complexe,oA);                                                                                 \
                         DEFV(hyper_hyper_complexe,oB);                                                                                 \
                                        /* Octonions de manoeuvre...                                                                 */ \
                                                                                                                                        \
                         FHHCforme_lineaire(oA                                                                                          \
                                           ,LOGX(base)                                                                                  \
                                           ,o1                                                                                          \
                                           ,FZERO                                                                                       \
                                            );                                                                                          \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*             o  = (o11 + i.o1i + j.o1j + k.o1k + s.o1s + t.o1t + u.o1u + v.o1v).Log(base)  */ \
                                        /*              A                                                                            */ \
                                        /*                                                                                           */ \
                                        /* ou {o11,o1i,o1j,o1k,o1s,o1t,o1u,o1v} designent respectivement les huit composantes        */ \
                                        /* de 'o1'...                                                                                */ \
                         FHHCinitialisation(oB                                                                                          \
                                           ,FHHCexponentielle_RI(FHHCcomposanteR(Rho1_Octonion                                          \
                                                                                ,HHImaginaire(oA)                                       \
                                                                                ,HHJmaginaire(oA)                                       \
                                                                                ,HHKmaginaire(oA)                                       \
                                                                                ,HHSmaginaire(oA)                                       \
                                                                                ,HHTmaginaire(oA)                                       \
                                                                                ,HHUmaginaire(oA)                                       \
                                                                                ,HHVmaginaire(oA)                                       \
                                                                                 )                                                      \
                                                                 )                                                                      \
                                           ,FHHCexponentielle_RI(FHHCcomposanteI(Rho1_Octonion                                          \
                                                                                ,HHImaginaire(oA)                                       \
                                                                                ,HHJmaginaire(oA)                                       \
                                                                                ,HHKmaginaire(oA)                                       \
                                                                                ,HHSmaginaire(oA)                                       \
                                                                                ,HHTmaginaire(oA)                                       \
                                                                                ,HHUmaginaire(oA)                                       \
                                                                                ,HHVmaginaire(oA)                                       \
                                                                                 )                                                      \
                                                                 )                                                                      \
                                           ,FHHCexponentielle_JKSTUV(FHHCcomposanteJ(Rho1_Octonion                                      \
                                                                                    ,HHImaginaire(oA)                                   \
                                                                                    ,HHJmaginaire(oA)                                   \
                                                                                    ,HHKmaginaire(oA)                                   \
                                                                                    ,HHSmaginaire(oA)                                   \
                                                                                    ,HHTmaginaire(oA)                                   \
                                                                                    ,HHUmaginaire(oA)                                   \
                                                                                    ,HHVmaginaire(oA)                                   \
                                                                                     )                                                  \
                                                                     )                                                                  \
                                           ,FHHCexponentielle_JKSTUV(FHHCcomposanteK(Rho1_Octonion                                      \
                                                                                    ,HHImaginaire(oA)                                   \
                                                                                    ,HHJmaginaire(oA)                                   \
                                                                                    ,HHKmaginaire(oA)                                   \
                                                                                    ,HHSmaginaire(oA)                                   \
                                                                                    ,HHTmaginaire(oA)                                   \
                                                                                    ,HHUmaginaire(oA)                                   \
                                                                                    ,HHVmaginaire(oA)                                   \
                                                                                     )                                                  \
                                                                     )                                                                  \
                                           ,FHHCexponentielle_JKSTUV(FHHCcomposanteS(Rho1_Octonion                                      \
                                                                                    ,HHImaginaire(oA)                                   \
                                                                                    ,HHJmaginaire(oA)                                   \
                                                                                    ,HHKmaginaire(oA)                                   \
                                                                                    ,HHSmaginaire(oA)                                   \
                                                                                    ,HHTmaginaire(oA)                                   \
                                                                                    ,HHUmaginaire(oA)                                   \
                                                                                    ,HHVmaginaire(oA)                                   \
                                                                                     )                                                  \
                                                                     )                                                                  \
                                           ,FHHCexponentielle_JKSTUV(FHHCcomposanteT(Rho1_Octonion                                      \
                                                                                    ,HHImaginaire(oA)                                   \
                                                                                    ,HHJmaginaire(oA)                                   \
                                                                                    ,HHKmaginaire(oA)                                   \
                                                                                    ,HHSmaginaire(oA)                                   \
                                                                                    ,HHTmaginaire(oA)                                   \
                                                                                    ,HHUmaginaire(oA)                                   \
                                                                                    ,HHVmaginaire(oA)                                   \
                                                                                     )                                                  \
                                                                     )                                                                  \
                                           ,FHHCexponentielle_JKSTUV(FHHCcomposanteU(Rho1_Octonion                                      \
                                                                                    ,HHImaginaire(oA)                                   \
                                                                                    ,HHJmaginaire(oA)                                   \
                                                                                    ,HHKmaginaire(oA)                                   \
                                                                                    ,HHSmaginaire(oA)                                   \
                                                                                    ,HHTmaginaire(oA)                                   \
                                                                                    ,HHUmaginaire(oA)                                   \
                                                                                    ,HHVmaginaire(oA)                                   \
                                                                                     )                                                  \
                                                                     )                                                                  \
                                           ,FHHCexponentielle_JKSTUV(FHHCcomposanteV(Rho1_Octonion                                      \
                                                                                    ,HHImaginaire(oA)                                   \
                                                                                    ,HHJmaginaire(oA)                                   \
                                                                                    ,HHKmaginaire(oA)                                   \
                                                                                    ,HHSmaginaire(oA)                                   \
                                                                                    ,HHTmaginaire(oA)                                   \
                                                                                    ,HHUmaginaire(oA)                                   \
                                                                                    ,HHVmaginaire(oA)                                   \
                                                                                     )                                                  \
                                                                     )                                                                  \
                                            );                                                                                          \
                                        /* Ce calcul repose sur la methode utilisee dans le plan complexe (voir a ce propos          */ \
                                        /* 'v $ximcd/operator$FON 20061205161300')...                                                */ \
                         FHHCforme_lineaire(o                                                                                           \
                                           ,EXPB(HHReelle(oA))                                                                          \
                                           ,oB                                                                                          \
                                           ,FZERO                                                                                       \
                                            );                                                                                          \
                                        /* Calcul final ('v $ximcd/operator$FON FCexponentielle').                                   */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, jusqu'au 20240626111544 il y avait ici par erreur :                            */ \
                                        /*                                                                                           */ \
                                        /*                  EXba(base,HHReelle(oA))                                                  */ \
                                        /*                                                                                           */ \
                                        /* ce qui s'est vu lors de la mise au point de l'image 'v $xiirc/ZETA.21$m.IdM'...           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(hyper_hyper_complexe,o1_partieReelle);                                                                    \
                         DEFV(Float,INIT(exponentielle_de_o1_partieReelle,FLOT__UNDEF));                                                \
                                                                                                                                        \
                         DEFV(hyper_hyper_complexe,o1_partieIJKSTUVmaginaire);                                                          \
                         DEFV(Float,INIT(module_de_o1_partieIJKSTUVmaginaire,FLOT__UNDEF));                                             \
                         DEFV(Float,INIT(cosinus_de_module_de_o1_partieIJKSTUVmaginaire,FLOT__UNDEF));                                  \
                         DEFV(Float,INIT(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire,FLOT__UNDEF));                           \
                                                                                                                                        \
                         DEFV(hyper_hyper_complexe,o1_partiel);                                                                         \
                                                                                                                                        \
                         FHHCpartieReelle(o1_partieReelle,o1);                                                                          \
                         FHHCpartieIJKSTUVmaginaire(o1_partieIJKSTUVmaginaire,o1);                                                      \
                                                                                                                                        \
                         EGAL(module_de_o1_partieIJKSTUVmaginaire,FHHCmodule(o1_partieIJKSTUVmaginaire));                               \
                         EGAL(exponentielle_de_o1_partieReelle,EXba(base,HHReelle(o1_partieReelle)));                                   \
                         EGAL(cosinus_de_module_de_o1_partieIJKSTUVmaginaire,COSX(module_de_o1_partieIJKSTUVmaginaire));                \
                         EGAL(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire,SINC(module_de_o1_partieIJKSTUVmaginaire));         \
                                                                                                                                        \
                         FHHCinitialisation(o1_partiel                                                                                  \
                                           ,cosinus_de_module_de_o1_partieIJKSTUVmaginaire                                              \
                                           ,MUL2(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire                                  \
                                                ,HHImaginaire(o1_partieIJKSTUVmaginaire)                                                \
                                                 )                                                                                      \
                                           ,MUL2(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire                                  \
                                                ,HHJmaginaire(o1_partieIJKSTUVmaginaire)                                                \
                                                 )                                                                                      \
                                           ,MUL2(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire                                  \
                                                ,HHKmaginaire(o1_partieIJKSTUVmaginaire)                                                \
                                                 )                                                                                      \
                                           ,MUL2(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire                                  \
                                                ,HHSmaginaire(o1_partieIJKSTUVmaginaire)                                                \
                                                 )                                                                                      \
                                           ,MUL2(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire                                  \
                                                ,HHTmaginaire(o1_partieIJKSTUVmaginaire)                                                \
                                                 )                                                                                      \
                                           ,MUL2(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire                                  \
                                                ,HHUmaginaire(o1_partieIJKSTUVmaginaire)                                                \
                                                 )                                                                                      \
                                           ,MUL2(sinus_cardinal_de_module_de_o1_partieIJKSTUVmaginaire                                  \
                                                ,HHVmaginaire(o1_partieIJKSTUVmaginaire)                                                \
                                                 )                                                                                      \
                                            );                                                                                          \
                         FHHCforme_lineaire(o                                                                                           \
                                           ,exponentielle_de_o1_partieReelle                                                            \
                                           ,o1_partiel                                                                                  \
                                           ,FZERO                                                                                       \
                                            );                                                                                          \
                                        /* Le 20230204091013, il semblerait que la bonne definition de l'exponentielle d'un nombre   */ \
                                        /* hyper-hyper-complexe soit :                                                               */ \
                                        /*                                                                                           */ \
                                        /*        :Debut_listMN_DEFINITION_EXPONENTIELLE_NOMBRES_HYPER_HYPER_COMPLEXES:              */ \
                                        /*                                                                                           */ \
                                        /*                   o    R(o)                                                               */ \
                                        /*                  e  = e    .[cos(|I(o)|) + sinc(|I(o)|).I(o)]                             */ \
                                        /*                                                                                           */ \
                                        /*        :Fin_listMN_DEFINITION_EXPONENTIELLE_NOMBRES_HYPER_HYPER_COMPLEXES:                */ \
                                        /*                                                                                           */ \
                                        /* (voir la demonstration pour 'FgHCexponentielle(...)').                                    */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I A T I O N   H Y P E R - H Y P E R - C O M P L E X E                                                      */
/*        A   B A S E   H Y P E R - H Y P E R - C O M P L E X E  :                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCexponentielle_octonionique(o,base,o1)                                                                                      \
                    Bblock                                                                                                              \
                    FHHCexponentielle_octonionique(o,base,o1);                                                                          \
                    Eblock
#define   FHHCexponentielle_octonionique(o,base,o1)                                                                                     \
                    Bblock                                                                                                              \
                    FgHHCexponentielle_octonionique(o,base,o1);                                                                         \
                    Eblock
#define   FgHHCexponentielle_octonionique(o,base,o1)                                                                                    \
                                        /* Introduit le 20110829140721...                                                            */ \
                    Bblock                                                                                                              \
                    Test(HHCTestIFEQ(base,HHC_____octonion__0__0__0__0__0__0__0__0))                                                    \
                         Bblock                                                                                                         \
                         FHHCegal(o,HHC_____octonion__0__0__0__0__0__0__0__0);                                                          \
                                        /* Valeur arbitraire introduite le 20210218120647...                                         */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(hyper_hyper_complexe,logarithme_base);                                                                    \
                         DEFV(hyper_hyper_complexe,o_produit);                                                                          \
                                        /* Octonions de manoeuvre...                                                                 */ \
                                                                                                                                        \
                         FHHClogarithme(logarithme_base,base);                                                                          \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  log(base)                                                                */ \
                                        /*                                                                                           */ \
                         FHHCproduit(o_produit,o1,logarithme_base);                                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  o1.log(base)                                                             */ \
                                        /*                                                                                           */ \
                         FHHCexponentielle(o,EN,o_produit);                                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   o1.log(base)                                                            */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L O G A R I T H M E   H Y P E R - H Y P E R - C O M P L E X E  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHClogarithme(o,o1)                                                                                                           \
                    Bblock                                                                                                              \
                    FHHClogarithme(o,o1);                                                                                               \
                    Eblock
#define   FHHClogarithme(o,o1)                                                                                                          \
                    Bblock                                                                                                              \
                    FgHHClogarithme(o,o1);                                                                                              \
                    Eblock
#define   FgHHClogarithme(o,o1)                                                                                                         \
                                        /* Introduit le 20110829140721...                                                            */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHHClogarithme_____compatibilite_20230204))                                                            \
                                        /* Test introduit le 20230204111216...                                                       */ \
                         Bblock                                                                                                         \
                         DEFV(Float,INIT(module_o1,FHHCmodule(o1)));                                                                    \
                         DEFV(Float,INIT(argumentA1_o1,FHHCargumentA1_PI(o1)));                                                         \
                         DEFV(Float,INIT(argumentA2_o1,FHHCargumentA2_PI(o1)));                                                         \
                         DEFV(Float,INIT(argumentA3_o1,FHHCargumentA3_PI(o1)));                                                         \
                         DEFV(Float,INIT(argumentA4_o1,FHHCargumentA4_PI(o1)));                                                         \
                         DEFV(Float,INIT(argumentA5_o1,FHHCargumentA5_PI(o1)));                                                         \
                         DEFV(Float,INIT(argumentA6_o1,FHHCargumentA6_PI(o1)));                                                         \
                         DEFV(Float,INIT(argumentA7_o1,FHHCargumentA7_PI(o1)));                                                         \
                                        /* Module et arguments du nombre 'o1'.                                                       */ \
                                                                                                                                        \
                         FHHCinitialisation(o                                                                                           \
                                           ,COND(IZEQ_a_peu_pres(module_o1,GRAND_EPSILON),F_MOINS_LE_PETIT_INFINI,LOGX(module_o1))      \
                                           ,argumentA1_o1                                                                               \
                                           ,argumentA2_o1                                                                               \
                                           ,argumentA3_o1                                                                               \
                                           ,argumentA4_o1                                                                               \
                                           ,argumentA5_o1                                                                               \
                                           ,argumentA6_o1                                                                               \
                                           ,argumentA7_o1                                                                               \
                                            );                                                                                          \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  o = log(module(o1))                                                      */ \
                                        /*                      + i.argA1(o1)                                                        */ \
                                        /*                      + j.argA2(o1)                                                        */ \
                                        /*                      + k.argA3(o1)                                                        */ \
                                        /*                      + s.argA4(o1)                                                        */ \
                                        /*                      + t.argA5(o1)                                                        */ \
                                        /*                      + u.argA6(o1)                                                        */ \
                                        /*                      + v.argA7(o1)                                                        */ \
                                        /*                                                                                           */ \
                                        /* On notera qu'en toute generalite, c'est la nullite "parfaite" du module qui devrait       */ \
                                        /* etre testee, mais en faisant ainsi, on risquerait des debordements ulterieurs, d'ou       */ \
                                        /* ce dispositif "a epsilon pres".                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         DEFV(Float,INIT(module_de_o1,FLOT__UNDEF));                                                                    \
                         DEFV(Float,INIT(logarithme_du_module_de_o1,FLOT__UNDEF));                                                      \
                                                                                                                                        \
                         DEFV(hyper_hyper_complexe,o1_partieReelle);                                                                    \
                         DEFV(Float,INIT(module_de_o1_partieReelle,FLOT__UNDEF));                                                       \
                                                                                                                                        \
                         DEFV(hyper_hyper_complexe,o1_partieIJKSTUVmaginaire);                                                          \
                         DEFV(Float,INIT(module_de_o1_partieIJKSTUVmaginaire,FLOT__UNDEF));                                             \
                                                                                                                                        \
                         DEFV(Float,INIT(facteur,FLOT__UNDEF));                                                                         \
                                                                                                                                        \
                         FHHCpartieReelle(o1_partieReelle,o1);                                                                          \
                         EGAL(module_de_o1_partieReelle,FHHCmodule(o1_partieReelle));                                                   \
                         FHHCpartieIJKSTUVmaginaire(o1_partieIJKSTUVmaginaire,o1);                                                      \
                                                                                                                                        \
                         EGAL(module_de_o1,FHHCmodule(o1));                                                                             \
                         EGAL(logarithme_du_module_de_o1                                                                                \
                             ,COND(IZEQ_a_peu_pres(module_de_o1,GRAND_EPSILON),F_MOINS_LE_PETIT_INFINI,LOGX(module_de_o1))              \
                              );                                                                                                        \
                         EGAL(module_de_o1_partieIJKSTUVmaginaire,FHHCmodule(o1_partieIJKSTUVmaginaire));                               \
                         EGAL(facteur                                                                                                   \
                             ,DIV0(ACOX(DIVZ(module_de_o1_partieReelle,module_de_o1))                                                   \
                                  ,module_de_o1_partieIJKSTUVmaginaire                                                                  \
                                  ,FZERO                                                                                                \
                                  ,FZERO                                                                                                \
                                   )                                                                                                    \
                              );                                                                                                        \
                                        /* Le cas particulier de la division par 0 a ete introduit le 20230321121916 lors de la      */ \
                                        /* mise au point de l'image 'v $xiirs/CAYA.W4'...                                            */ \
                                                                                                                                        \
                         FHHCinitialisation(o                                                                                           \
                                           ,logarithme_du_module_de_o1                                                                  \
                                           ,MUL2(facteur,HHImaginaire(o1_partieIJKSTUVmaginaire))                                       \
                                           ,MUL2(facteur,HHJmaginaire(o1_partieIJKSTUVmaginaire))                                       \
                                           ,MUL2(facteur,HHKmaginaire(o1_partieIJKSTUVmaginaire))                                       \
                                           ,MUL2(facteur,HHSmaginaire(o1_partieIJKSTUVmaginaire))                                       \
                                           ,MUL2(facteur,HHTmaginaire(o1_partieIJKSTUVmaginaire))                                       \
                                           ,MUL2(facteur,HHUmaginaire(o1_partieIJKSTUVmaginaire))                                       \
                                           ,MUL2(facteur,HHVmaginaire(o1_partieIJKSTUVmaginaire))                                       \
                                            );                                                                                          \
                                        /* Le 20230204112039 il semblerait que la bonne definition du logarithme d'un nombre         */ \
                                        /* hyper-hyper-complexe soit :                                                               */ \
                                        /*                                                                                           */ \
                                        /*        :Debut_listMN_DEFINITION_LOGARITHME_NOMBRES_HYPER_HYPER_COMPLEXES:                 */ \
                                        /*                                                                                           */ \
                                        /*                                        1          |R(o)|                                  */ \
                                        /*                  log(o) = {log(|o|,--------.acos(--------).I(o)}                          */ \
                                        /*                                     |I(o)|          |o|                                   */ \
                                        /*                                                                                           */ \
                                        /*        :Fin_listMN_DEFINITION_LOGARITHME_NOMBRES_HYPER_HYPER_COMPLEXES:                   */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   T R I G O N O M E T R I Q U E S   H Y P E R - H Y P E R - C O M P L E X E S                                  */
/*        C I R C U L A I R E S   E T   H Y P E R B O L I Q U E S  :                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FHHCcosinus_sinus_circulaires_et_hyperboliques__type_1(o,o1,facteur_des_exposants,FHHCplus_ou_moins,diviseur)                 \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,plus_o1);                                                                                 \
                    DEFV(hyper_hyper_complexe,moins_o1);                                                                                \
                    DEFV(hyper_hyper_complexe,oF1);                                                                                     \
                    DEFV(hyper_hyper_complexe,oF2);                                                                                     \
                    DEFV(hyper_hyper_complexe,oE1);                                                                                     \
                    DEFV(hyper_hyper_complexe,oE2);                                                                                     \
                    DEFV(hyper_hyper_complexe,oN);                                                                                      \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    FHHCegal(plus_o1,o1);                                                                                               \
                    FHHCnegation(moins_o1,o1);                                                                                          \
                                                                                                                                        \
                    FHHCproduit(oF1,facteur_des_exposants,plus_o1);                                                                     \
                    FHHCproduit(oF2,facteur_des_exposants,moins_o1);                                                                    \
                                        /* Definition des nombres '+f.o1' et '-f.o1'.                                                */ \
                                                                                                                                        \
                    FHHCexponentielle(oE1,EN,oF1);                                                                                      \
                    FHHCexponentielle(oE2,EN,oF2);                                                                                      \
                                                                                                                                        \
                    FHHCplus_ou_moins(oN,oE1,oE2);                                                                                      \
                                                                                                                                        \
                    FHHCquotient(o,oN,diviseur);                                                                                        \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +f.o1    -f.o1                                                     */ \
                                        /*                       e      & e                                                          */ \
                                        /*                  o = -----------------                                                    */ \
                                        /*                             d                                                             */ \
                                        /*                                                                                           */ \
                                        /* ou '&' et 'd' valent {+,-} et {2,2i} pour le cosinus et le sinus respectivement, et       */ \
                                        /* ou 'f' vaut {i,1} pour les lignes circulaires et hyperboliques respectivement.            */ \
                    Eblock

#define   FHHCcosinus_sinus_circulaires_et_hyperboliques__type_2(o,o1,f11,f12,signe,f21,f22)                                            \
                                        /* Procedure introduite le 20230206110454...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,o1_partieReelle);                                                                         \
                    DEFV(Float,INIT(module_de_o1_partieReelle,FLOT__UNDEF));                                                            \
                                                                                                                                        \
                    DEFV(hyper_hyper_complexe,o1_partieIJKSTUVmaginaire);                                                               \
                    DEFV(Float,INIT(module_de_o1_partieIJKSTUVmaginaire,FLOT__UNDEF));                                                  \
                                                                                                                                        \
                    DEFV(Float,INIT(f11_de_module_de_o1_partieReelle,FLOT__UNDEF));                                                     \
                    DEFV(Float,INIT(f12_de_module_de_o1_partieIJKSTUVmaginaire,FLOT__UNDEF));                                           \
                    DEFV(Float,INIT(f21_de_module_de_o1_partieReelle,FLOT__UNDEF));                                                     \
                    DEFV(Float,INIT(f22_de_module_de_o1_partieIJKSTUVmaginaire,FLOT__UNDEF));                                           \
                                                                                                                                        \
                    FHHCpartieReelle(o1_partieReelle,o1);                                                                               \
                    FHHCpartieIJKSTUVmaginaire(o1_partieIJKSTUVmaginaire,o1);                                                           \
                                                                                                                                        \
                    EGAL(module_de_o1_partieReelle,FHHCmodule(o1_partieReelle));                                                        \
                    EGAL(module_de_o1_partieIJKSTUVmaginaire,FHHCmodule(o1_partieIJKSTUVmaginaire));                                    \
                                                                                                                                        \
                    EGAL(f11_de_module_de_o1_partieReelle                                                                               \
                        ,f11(module_de_o1_partieReelle)                                                                                 \
                         );                                                                                                             \
                    EGAL(f21_de_module_de_o1_partieReelle                                                                               \
                        ,f21(module_de_o1_partieReelle)                                                                                 \
                         );                                                                                                             \
                                                                                                                                        \
                    EGAL(f12_de_module_de_o1_partieIJKSTUVmaginaire                                                                     \
                        ,f12(module_de_o1_partieIJKSTUVmaginaire)                                                                       \
                         );                                                                                                             \
                    EGAL(f22_de_module_de_o1_partieIJKSTUVmaginaire                                                                     \
                        ,f22(module_de_o1_partieIJKSTUVmaginaire)                                                                       \
                         );                                                                                                             \
                                                                                                                                        \
                    FHHCinitialisation(o                                                                                                \
                                      ,MUL2(f11_de_module_de_o1_partieReelle                                                            \
                                           ,f12_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                            )                                                                                           \
                                      ,MUL4(FLOT(signe)                                                                                 \
                                           ,f21_de_module_de_o1_partieReelle                                                            \
                                           ,f22_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                           ,HHImaginaire(o1_partieIJKSTUVmaginaire)                                                     \
                                            )                                                                                           \
                                      ,MUL4(FLOT(signe)                                                                                 \
                                           ,f21_de_module_de_o1_partieReelle                                                            \
                                           ,f22_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                           ,HHJmaginaire(o1_partieIJKSTUVmaginaire)                                                     \
                                            )                                                                                           \
                                      ,MUL4(FLOT(signe)                                                                                 \
                                           ,f21_de_module_de_o1_partieReelle                                                            \
                                           ,f22_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                           ,HHKmaginaire(o1_partieIJKSTUVmaginaire)                                                     \
                                            )                                                                                           \
                                      ,MUL4(FLOT(signe)                                                                                 \
                                           ,f21_de_module_de_o1_partieReelle                                                            \
                                           ,f22_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                           ,HHSmaginaire(o1_partieIJKSTUVmaginaire)                                                     \
                                            )                                                                                           \
                                      ,MUL4(FLOT(signe)                                                                                 \
                                           ,f21_de_module_de_o1_partieReelle                                                            \
                                           ,f22_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                           ,HHTmaginaire(o1_partieIJKSTUVmaginaire)                                                     \
                                            )                                                                                           \
                                      ,MUL4(FLOT(signe)                                                                                 \
                                           ,f21_de_module_de_o1_partieReelle                                                            \
                                           ,f22_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                           ,HHUmaginaire(o1_partieIJKSTUVmaginaire)                                                     \
                                            )                                                                                           \
                                      ,MUL4(FLOT(signe)                                                                                 \
                                           ,f21_de_module_de_o1_partieReelle                                                            \
                                           ,f22_de_module_de_o1_partieIJKSTUVmaginaire                                                  \
                                           ,HHVmaginaire(o1_partieIJKSTUVmaginaire)                                                     \
                                            )                                                                                           \
                                       );                                                                                               \
                    Eblock                                                                                                              \
                                        /* Le 20230206110454, il semblerait que la bonne definition des lignes trigonometriques      */ \
                                        /* circulaires et hyperboliques d'un nombre hyper-hyper-complexe soit :                      */ \
                                        /*                                                                                           */ \
                                        /*        :Debut_listMN_DEFINITION_LIGNES_TRIGONOMETRIQUES_NOMBRES_HYPER_HYPER_COMPLEXES:    */ \
                                        /*                                                                                           */ \
                                        /*                  cos(o) = [cos(R(o)).ch(|I(o)|)]  - [sin(R(o)).shc(|I(o)|).I(o)]          */ \
                                        /*                  sin(o) = [sin(R(o)).ch(|I(o)|)]  + [cos(R(o)).shc(|I(o)|).I(o)]          */ \
                                        /*                                                                                           */ \
                                        /*                  ch(o)  = [ch(R(o)).cos(|I(o)|)]  + [sh(R(o)).sinc(|I(o)|).I(o)]          */ \
                                        /*                  sh(o)  = [sh(R(o)).cos(|I(o)|)]  + [ch(R(o)).sinc(|I(o)|).I(o)]          */ \
                                        /*                                                                                           */ \
                                        /* en faisant les hypotheses audacieuses suivantes :                                         */ \
                                        /*                                                                                           */ \
                                        /*                  o  = R(o) + I(o)                                                         */ \
                                        /*                  o  = a    + b.i + c.j + d.k + e.s + f.t + g.u + h.v                      */ \
                                        /*                                                                                           */ \
                                        /*                  I  =        b.i + c.j + d.k + e.s + f.t + g.u + h.v         [I = I(o)]   */ \
                                        /*                                                                              [m = |I|]    */ \
                                        /*                                                                                           */ \
                                        /*                  o  = a + I                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                          f11    f12      f21    f22                       */ \
                                        /*                                                                                           */ \
                                        /*                  cos(o) = cos(a+I)   = [cos(a).cos(I) - sin(a).sin(I)]                    */ \
                                        /*                  sin(o) = cos(a+I)   = [sin(a).cos(I) + cos(a).sin(I)]                    */ \
                                        /*                                                                                           */ \
                                        /*                  ch(o)  = ch(a+I)    = [ch(a).ch(I)   + sh(a).sh(I)]                      */ \
                                        /*                  sh(o)  = sh(a+I)    = [sh(a).ch(I)   + ch(a).sh(I)]                      */ \
                                        /*                                                                                           */ \
                                        /* En effet, par des developpements en series tel celui de 'FgHCexponentielle(...)', on      */ \
                                        /* montre facilement que :                                                                   */ \
                                        /*                                                                                           */ \
                                        /*                  cos(I) = ch(m)                                                           */ \
                                        /*                                                                                           */ \
                                        /*                            sh(m)                                                          */ \
                                        /*                  sin(I) = -------.I  = shc(m).I                                           */ \
                                        /*                              m                                                            */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                  ch(I)  = cos(m)                                                          */ \
                                        /*                                                                                           */ \
                                        /*                            sin(m)                                                         */ \
                                        /*                  sh(I)  = --------.I = sinc(m).I                                          */ \
                                        /*                              m                                                            */ \
                                        /*                                                                                           */ \
                                        /* d'ou :                                                                                    */ \
                                        /*                                                                                           */ \
                                        /*                                          f11    f12      f21    f22                       */ \
                                        /*                                                                                           */ \
                                        /*                  cos(o) = cos(a+I)   = [cos(a).ch(m)  - sin(a).shc(m).I]                  */ \
                                        /*                  sin(o) = cos(a+I)   = [sin(a).ch(m)  + cos(a).shc(m).I]                  */ \
                                        /*                                                                                           */ \
                                        /*                  ch(o)  = ch(a+I)    = [ch(a).cos(m)  + sh(a).sinc(m).I]                  */ \
                                        /*                  sh(o)  = sh(a+I)    = [sh(a).cos(m)  + ch(a).sinc(m).I]                  */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /* On verifie aisement que :                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                     2         2        2         2     2                                  */ \
                                        /*                  cos (o) + sin (o) = ch (m) + shc (m).I                                   */ \
                                        /*                                                                                           */ \
                                        /*                                                  2                                        */ \
                                        /*                                        2       sh (m)   2            2      2             */ \
                                        /*                                    = ch (m) + --------.I           [I  = -(m )]           */ \
                                        /*                                                   2                                       */ \
                                        /*                                                  m                                        */ \
                                        /*                                                                                           */ \
                                        /*                                        2        2                                         */ \
                                        /*                                    = ch (m) - sh (m)                                      */ \
                                        /*                                                                    ['m' etant un Reel...] */ \
                                        /*                                    = 1                                                    */ \
                                        /*                                                                                           */ \
                                        /* de meme :                                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                    2        2                                                             */ \
                                        /*                  ch (o) - sh (o)   = 1                                                    */ \
                                        /*                                                                                           */ \
                                        /*        :Fin_listMN_DEFINITION_LIGNES_TRIGONOMETRIQUES_NOMBRES_HYPER_HYPER_COMPLEXES:      */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   T R I G O N O M E T R I Q U E S   H Y P E R - H Y P E R - C O M P L E X E S  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FHHCcosinus_sinus(o,o1,FHHCplus_ou_moins,diviseur)                                                                            \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCcosinus_sinus_circulaires_et_hyperboliques__type_1(o                                                            \
                                                                          ,o1                                                           \
                                                                          ,HHC_____octonion__0_p1__0__0__0__0__0__0                     \
                                                                          ,FHHCplus_ou_moins                                            \
                                                                          ,diviseur                                                     \
                                                                           );                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.o1    -i.o1                                                     */ \
                                        /*                       e      & e                                                          */ \
                                        /*                  o = -----------------                                                    */ \
                                        /*                             d                                                             */ \
                                        /*                                                                                           */ \
                                        /* ou '&' et 'd' valent {+,-} et {2,2.i} pour le cosinus et le sinus respectivement.         */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O S I N U S   H Y P E R - H Y P E R - C O M P L E X E  :                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCserie_cosinus(o,o1)                                                                                                        \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCserie_cosinus(o,o1);                                                                                            \
                    Eblock
#define   FHHCserie_cosinus(o,o1)                                                                                                       \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCserie_cosinus(o,o1);                                                                                           \
                    Eblock
#define   FgHHCserie_cosinus(o,o1)                                                                                                      \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(o,o1                                                                               \
                                                    ,GENERER_UN_COSINUS,TRIGONOMETRIE_CIRCULAIRE__                                      \
                                                    ,hyper_hyper_complexe                                                               \
                                                    ,FHHCegal                                                                           \
                                                    ,FHHCforme_lineaire                                                                 \
                                                    ,FHHCsomme                                                                          \
                                                    ,aHHCpuissance                                                                      \
                                                    ,FgHHCserie_cosinus_____HHC_____exposant                                            \
                                                    ,FHHCproduit                                                                        \
                                                    ,FgHHCserie_cosinus_____HHC_____octonion__0__0__0__0__0__0__0__0                    \
                                                    ,HHC_____octonion_p1__0__0__0__0__0__0__0                                           \
                                                     );                                                                                 \
                    Eblock

#define   HHCcosinus(o,o1)                                                                                                              \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCcosinus(o,o1);                                                                                                  \
                    Eblock
#define   FHHCcosinus(o,o1)                                                                                                             \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCcosinus(o,o1);                                                                                                 \
                    Eblock
#define   FgHHCcosinus(o,o1)                                                                                                            \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHHCcosinus_____compatibilite_20230206))                                                               \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHHCcosinus_sinus(o,o1,FHHCsomme,HHC_____octonion_p2__0__0__0__0__0__0__0);                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.o1    -i.o1                                                     */ \
                                        /*                       e      + e                                                          */ \
                                        /*                  o = -----------------                                                    */ \
                                        /*                             2                                                             */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FHHCcosinus_____compatibilite_20230321))                                                          \
                                        /* Test introduit le 20230321184556...                                                       */ \
                              Bblock                                                                                                    \
                              FHHCcosinus_sinus_circulaires_et_hyperboliques__type_2(o,o1,COSX,COHX,SIGNE_MOINS,SINX,SIHC);             \
                                        /* Procedure introduite le 20230206092813...                                                 */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              DEFV(hyper_hyper_complexe,exponentielle_o1);                                                              \
                                                                                                                                        \
                              FHHCexponentielle(exponentielle_o1,EN,o1);                                                                \
                              FHHCpartieReelle(o,exponentielle_o1);                                                                     \
                                        /* Mis sous cette forme le 20230321184556...                                                 */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S I N U S   H Y P E R - H Y P E R - C O M P L E X E  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCserie_sinus(o,o1)                                                                                                          \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCserie_sinus(o,o1);                                                                                              \
                    Eblock
#define   FHHCserie_sinus(o,o1)                                                                                                         \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCserie_sinus(o,o1);                                                                                             \
                    Eblock
#define   FgHHCserie_sinus(o,o1)                                                                                                        \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(o,o1                                                                               \
                                                    ,GENERER_UN_SINUS__,TRIGONOMETRIE_CIRCULAIRE__                                      \
                                                    ,hyper_hyper_complexe                                                               \
                                                    ,FHHCegal                                                                           \
                                                    ,FHHCforme_lineaire                                                                 \
                                                    ,FHHCsomme                                                                          \
                                                    ,aHHCpuissance                                                                      \
                                                    ,FgHHCserie_sinus_____HHC_____exposant                                              \
                                                    ,FHHCproduit                                                                        \
                                                    ,FgHHCserie_sinus_____HHC_____octonion__0__0__0__0__0__0__0__0                      \
                                                    ,HHC_____octonion_p1__0__0__0__0__0__0__0                                           \
                                                     );                                                                                 \
                    Eblock

#define   HHCsinus(o,o1)                                                                                                                \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCsinus(o,o1);                                                                                                    \
                    Eblock
#define   FHHCsinus(o,o1)                                                                                                               \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCsinus(o,o1);                                                                                                   \
                    Eblock
#define   FgHHCsinus(o,o1)                                                                                                              \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHHCsinus_____compatibilite_20230206))                                                                 \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHHCcosinus_sinus(o,o1,FHHCdifference,HHC_____octonion__0_p2__0__0__0__0__0__0);                               \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +i.o1    -i.o1                                                     */ \
                                        /*                       e      - e                                                          */ \
                                        /*                  o = -----------------                                                    */ \
                                        /*                            2.i                                                            */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Test(IL_FAUT(FHHCsinus_____compatibilite_20230321))                                                            \
                                        /* Test introduit le 20230321184556...                                                       */ \
                              Bblock                                                                                                    \
                              FHHCcosinus_sinus_circulaires_et_hyperboliques__type_2(o,o1,SINX,COHX,SIGNE_PLUS,COSX,SIHC);              \
                                        /* Procedure introduite le 20230206092813...                                                 */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              DEFV(hyper_hyper_complexe,exponentielle_o1);                                                              \
                                                                                                                                        \
                              FHHCexponentielle(exponentielle_o1,EN,o1);                                                                \
                              FHHCpartieIJKSTUVmaginaire(o,exponentielle_o1);                                                           \
                                        /* Mis sous cette forme le 20230321184556...                                                 */ \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A N G E N T E   H Y P E R - H Y P E R - C O M P L E X E  :                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FgHHCtangente_quotient(o,o1,fonction_cosinus,fonction_sinus__)                                                                \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,cosinus_o1);                                                                              \
                    DEFV(hyper_hyper_complexe,sinus_o1);                                                                                \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    fonction_cosinus(cosinus_o1,o1);                                                                                    \
                    fonction_sinus__(sinus_o1,o1);                                                                                      \
                                        /* Calcul du sinus et du cosinus de 'o1'.                                                    */ \
                                                                                                                                        \
                    Test(IZNE(FHHCmodule(cosinus_o1)))                                                                                  \
                         Bblock                                                                                                         \
                         FHHCquotient(o,sinus_o1,cosinus_o1);                                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                        sinus(o1)                                                          */ \
                                        /*                  o = -------------                                                        */ \
                                        /*                       cosinus(o1)                                                         */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHHCinitialisation(o                                                                                           \
                                           ,MEME_SIGNE_QUE(HHReelle(sinus_o1),F_INFINI)                                                 \
                                           ,MEME_SIGNE_QUE(HHImaginaire(sinus_o1),F_INFINI)                                             \
                                           ,MEME_SIGNE_QUE(HHJmaginaire(sinus_o1),F_INFINI)                                             \
                                           ,MEME_SIGNE_QUE(HHKmaginaire(sinus_o1),F_INFINI)                                             \
                                           ,MEME_SIGNE_QUE(HHSmaginaire(sinus_o1),F_INFINI)                                             \
                                           ,MEME_SIGNE_QUE(HHTmaginaire(sinus_o1),F_INFINI)                                             \
                                           ,MEME_SIGNE_QUE(HHUmaginaire(sinus_o1),F_INFINI)                                             \
                                           ,MEME_SIGNE_QUE(HHVmaginaire(sinus_o1),F_INFINI)                                             \
                                            );                                                                                          \
                                        /* Lorsque le module du cosinus est nul, la valeur de la tangente est fixee de facon tout    */ \
                                        /* a fait arbitraire...                                                                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   HHCserie_tangente(o,o1)                                                                                                       \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCserie_tangente(o,o1);                                                                                           \
                    Eblock
#define   FHHCserie_tangente(o,o1)                                                                                                      \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCserie_tangente(o,o1);                                                                                          \
                    Eblock
#define   FgHHCserie_tangente(o,o1)                                                                                                     \
                                        /* Procedure introduite le 20210209103456...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCtangente_quotient(o,o1,FHHCserie_cosinus,FHHCserie_sinus);                                                     \
                    Eblock

#define   HHCtangente(o,o1)                                                                                                             \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCtangente(o,o1);                                                                                                 \
                    Eblock
#define   FHHCtangente(o,o1)                                                                                                            \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCtangente(o,o1);                                                                                                \
                    Eblock
#define   FgHHCtangente(o,o1)                                                                                                           \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCtangente_quotient(o,o1,FHHCcosinus,FHHCsinus);                                                                 \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L I G N E S   H Y P E R B O L I Q U E S   H Y P E R - H Y P E R - C O M P L E X E S  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FHHCcosinus_sinus_hyperbolique(o,o1,FHHCplus_ou_moins)                                                                        \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCcosinus_sinus_circulaires_et_hyperboliques__type_1(o                                                            \
                                                                          ,o1                                                           \
                                                                          ,HHC_____octonion_p1__0__0__0__0__0__0__0                     \
                                                                          ,FHHCplus_ou_moins                                            \
                                                                          ,HHC_____octonion_p2__0__0__0__0__0__0__0                     \
                                                                           );                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +o1    -o1                                                         */ \
                                        /*                       e    & e                                                            */ \
                                        /*                  o = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                                        /* ou '&' vaut {+,-} pour le cosinus et le sinus respectivement.                             */ \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O S I N U S   H Y P E R B O L I Q U E   H Y P E R - H Y P E R - C O M P L E X E  :                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCserie_cosinus_hyperbolique(o,o1)                                                                                           \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCserie_cosinus_hyperbolique(o,o1);                                                                               \
                    Eblock
#define   FHHCserie_cosinus_hyperbolique(o,o1)                                                                                          \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCserie_cosinus_hyperbolique(o,o1);                                                                              \
                    Eblock
#define   FgHHCserie_cosinus_hyperbolique(o,o1)                                                                                         \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(o,o1                                                                               \
                                                    ,GENERER_UN_COSINUS,TRIGONOMETRIE_HYPERBOLIQUE                                      \
                                                    ,hyper_hyper_complexe                                                               \
                                                    ,FHHCegal                                                                           \
                                                    ,FHHCforme_lineaire                                                                 \
                                                    ,FHHCsomme                                                                          \
                                                    ,aHHCpuissance                                                                      \
                                                    ,FgHHCserie_cosinus_hyperbolique_____HHC_____exposant                               \
                                                    ,FHHCproduit                                                                        \
                                                    ,FgHHCserie_cosinus_hyperbolique_____HHC_____octonion__0__0__0__0__0__0__0__0       \
                                                    ,HHC_____octonion_p1__0__0__0__0__0__0__0                                           \
                                                     );                                                                                 \
                    Eblock

#define   HHCcosinus_hyperbolique(o,o1)                                                                                                 \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCcosinus_hyperbolique(o,o1);                                                                                     \
                    Eblock
#define   FHHCcosinus_hyperbolique(o,o1)                                                                                                \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCcosinus_hyperbolique(o,o1);                                                                                    \
                    Eblock
#define   FgHHCcosinus_hyperbolique(o,o1)                                                                                               \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHHCcosinus_hyperbolique_____compatibilite_20230206))                                                  \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHHCcosinus_sinus_hyperbolique(o,o1,FHHCsomme);                                                                \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +o1    -o1                                                         */ \
                                        /*                       e    + e                                                            */ \
                                        /*                  o = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHHCcosinus_sinus_circulaires_et_hyperboliques__type_2(o,o1,COHX,COSX,SIGNE_PLUS,SIHX,SINC);                   \
                                        /* Procedure introduite le 20230206092813...                                                 */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        S I N U S   H Y P E R B O L I Q U E   H Y P E R - H Y P E R - C O M P L E X E  :                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   HHCserie_sinus_hyperbolique(o,o1)                                                                                             \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCserie_sinus_hyperbolique(o,o1);                                                                                 \
                    Eblock
#define   FHHCserie_sinus_hyperbolique(o,o1)                                                                                            \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCserie_sinus_hyperbolique(o,o1);                                                                                \
                    Eblock
#define   FgHHCserie_sinus_hyperbolique(o,o1)                                                                                           \
                                        /* Procedure introduite le 20210208165922...                                                 */ \
                    Bblock                                                                                                              \
                    GENERATION_SERIE_TRIGONOMETRIQUE(o,o1                                                                               \
                                                    ,GENERER_UN_SINUS__,TRIGONOMETRIE_HYPERBOLIQUE                                      \
                                                    ,hyper_hyper_complexe                                                               \
                                                    ,FHHCegal                                                                           \
                                                    ,FHHCforme_lineaire                                                                 \
                                                    ,FHHCsomme                                                                          \
                                                    ,aHHCpuissance                                                                      \
                                                    ,FgHHCserie_sinus_hyperbolique_____HHC_____exposant                                 \
                                                    ,FHHCproduit                                                                        \
                                                    ,FgHHCserie_sinus_hyperbolique_____HHC_____octonion__0__0__0__0__0__0__0__0         \
                                                    ,HHC_____octonion_p1__0__0__0__0__0__0__0                                           \
                                                     );                                                                                 \
                    Eblock

#define   HHCsinus_hyperbolique(o,o1)                                                                                                   \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCsinus_hyperbolique(o,o1);                                                                                       \
                    Eblock
#define   FHHCsinus_hyperbolique(o,o1)                                                                                                  \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCsinus_hyperbolique(o,o1);                                                                                      \
                    Eblock
#define   FgHHCsinus_hyperbolique(o,o1)                                                                                                 \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(FHHCsinus_hyperbolique_____compatibilite_20230206))                                                    \
                                        /* Test introduit le 20230206092813...                                                       */ \
                         Bblock                                                                                                         \
                         FHHCcosinus_sinus_hyperbolique(o,o1,FHHCdifference);                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        +o1    -o1                                                         */ \
                                        /*                       e    - e                                                            */ \
                                        /*                  o = -------------                                                        */ \
                                        /*                            2                                                              */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHHCcosinus_sinus_circulaires_et_hyperboliques__type_2(o,o1,SIHX,COSX,SIGNE_PLUS,COHX,SINC);                   \
                                        /* Procedure introduite le 20230206092813...                                                 */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        T A N G E N T E   H Y P E R B O L I Q U E   H Y P E R - H Y P E R - C O M P L E X E  :                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   FgHHCtangente_hyperbolique_quotient(o,o1,fonction_cosinus_hyperbolique,fonction_sinus___hyperbolique)                         \
                    Bblock                                                                                                              \
                    DEFV(hyper_hyper_complexe,cosinus_hyperbolique_o1);                                                                 \
                    DEFV(hyper_hyper_complexe,sinus_hyperbolique_o1);                                                                   \
                                        /* Nombres complexes de manoeuvre...                                                         */ \
                                                                                                                                        \
                    fonction_cosinus_hyperbolique(cosinus_hyperbolique_o1,o1);                                                          \
                    fonction_sinus___hyperbolique(sinus_hyperbolique_o1,o1);                                                            \
                                        /* Calcul du sinus et du cosinus de 'o1'.                                                    */ \
                                                                                                                                        \
                    Test(IZNE(FHHCmodule(cosinus_hyperbolique_o1)))                                                                     \
                         Bblock                                                                                                         \
                         FHHCquotient(o,sinus_hyperbolique_o1,cosinus_hyperbolique_o1);                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                                                                                           */ \
                                        /*                        sinus_hyperbolique(o1)                                             */ \
                                        /*                  o = --------------------------                                           */ \
                                        /*                       cosinus_hyperbolique(o1)                                            */ \
                                        /*                                                                                           */ \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         FHHCinitialisation(o                                                                                           \
                                           ,MEME_SIGNE_QUE(HHReelle(sinus_hyperbolique_o1),F_INFINI)                                    \
                                           ,MEME_SIGNE_QUE(HHImaginaire(sinus_hyperbolique_o1),F_INFINI)                                \
                                           ,MEME_SIGNE_QUE(HHJmaginaire(sinus_hyperbolique_o1),F_INFINI)                                \
                                           ,MEME_SIGNE_QUE(HHKmaginaire(sinus_hyperbolique_o1),F_INFINI)                                \
                                           ,MEME_SIGNE_QUE(HHSmaginaire(sinus_hyperbolique_o1),F_INFINI)                                \
                                           ,MEME_SIGNE_QUE(HHTmaginaire(sinus_hyperbolique_o1),F_INFINI)                                \
                                           ,MEME_SIGNE_QUE(HHUmaginaire(sinus_hyperbolique_o1),F_INFINI)                                \
                                           ,MEME_SIGNE_QUE(HHVmaginaire(sinus_hyperbolique_o1),F_INFINI)                                \
                                            );                                                                                          \
                                        /* Lorsque le module du cosinus est nul, la valeur de la tangente est fixee de facon tout    */ \
                                        /* a fait arbitraire...                                                                      */ \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock

#define   HHCserie_tangente_hyperbolique(o,o1)                                                                                          \
                    Bblock                                                                                                              \
                    FHHCserie_tangente_hyperbolique(o,o1);                                                                              \
                    Eblock
#define   FHHCserie_tangente_hyperbolique(o,o1)                                                                                         \
                    Bblock                                                                                                              \
                    FgHHCserie_tangente_hyperbolique(o,o1);                                                                             \
                    Eblock
#define   FgHHCserie_tangente_hyperbolique(o,o1)                                                                                        \
                    Bblock                                                                                                              \
                    FgHHCtangente_hyperbolique_quotient(o,o1,FHHCserie_cosinus_hyperbolique,FHHCserie_sinus_hyperbolique);              \
                    Eblock

#define   HHCtangente_hyperbolique(o,o1)                                                                                                \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FHHCtangente_hyperbolique(o,o1);                                                                                    \
                    Eblock
#define   FHHCtangente_hyperbolique(o,o1)                                                                                               \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCtangente_hyperbolique(o,o1);                                                                                   \
                    Eblock
#define   FgHHCtangente_hyperbolique(o,o1)                                                                                              \
                                        /* Procedure introduite le 20210205180151...                                                 */ \
                    Bblock                                                                                                              \
                    FgHHCtangente_hyperbolique_quotient(o,o1,FHHCcosinus_hyperbolique,FHHCsinus_hyperbolique);                          \
                    Eblock

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A C C E L E R A T I O N   E V E N T U E L L E   D E S   C O M P I L A T I O N S                                            */
/*        D E S   I T E R A T I O N S   D A N S   L ' E S P A C E   H Y P E R - H Y P E R - C O M P L E X E  :                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* Le dispositif suivant a ete mis en place ici le 20111204113520 afin de pouvoir etre       */
                                        /* utilise a la fois dans 'v $ximcf/conformes$FOn' et 'v $ximcf/iterations$FON', alors       */
                                        /* qu'avant cette date il etait situe dans 'v $ximcf/iterations$FON' en en limitant ainsi    */
                                        /* la portee...                                                                              */

#ifdef    NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_HYPER_HYPER_COMPLEXES
#    define    aHHCconjugaison(o,o1)                                                                                                    \
                         Bblock                                                                                                         \
                         HHCconjugaison(o,o1);                                                                                          \
                         Eblock
#    define    aHHCmodulo(o,o1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext,Sorg,Sext,Torg,Text,Uorg,Uext,Vorg,Vext)                         \
                         Bblock                                                                                                         \
                         HHCmodulo(o,o1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext,Sorg,Sext,Torg,Text,Uorg,Uext,Vorg,Vext);               \
                         Eblock
#    define    aHHCproduit(o,o1,o2)                                                                                                     \
                         Bblock                                                                                                         \
                         HHCproduit(o,o1,o2);                                                                                           \
                         Eblock
#    define    aHHCpuissance(o,o1,exposant)                                                                                             \
                         Bblock                                                                                                         \
                         HHCpuissance(o,o1,exposant);                                                                                   \
                         Eblock
#    define    aHHCquotient(o,o1,o2)                                                                                                    \
                         Bblock                                                                                                         \
                         HHCquotient(o,o1,o2);                                                                                          \
                         Eblock
#    define    aHHCsomme(o,o1,o2)                                                                                                       \
                         Bblock                                                                                                         \
                         HHCsomme(o,o1,o2);                                                                                             \
                         Eblock
#    define    aHHCdifference(o,o1,o2)                                                                                                  \
                         Bblock                                                                                                         \
                         HHCdifference(o,o1,o2);                                                                                        \
                         Eblock
#    define    aHHCforme_lineaire(o,alpha,o1,beta)                                                                                      \
                         Bblock                                                                                                         \
                         HHCforme_lineaire(o,alpha,o1,beta);                                                                            \
                         Eblock
#    define    aHHCcombinaison_lineaire_2(o,a,o1,b,o2)                                                                                  \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_2(o,a,o1,b,o2);                                                                        \
                         Eblock
#    define    aHHCcombinaison_lineaire_3(o,a,o1,b,o2,c,o3)                                                                             \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_3(o,a,o1,b,o2,c,o3);                                                                   \
                         Eblock
#    define    aHHCcombinaison_lineaire_4(o,a,o1,b,o2,c,o3,d,o4)                                                                        \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_4(o,a,o1,b,o2,c,o3,d,o4);                                                              \
                         Eblock
#    define    aHHCcombinaison_lineaire_5(o,a,o1,b,o2,c,o3,d,o4,e,o5)                                                                   \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_5(o,a,o1,b,o2,c,o3,d,o4,e,o5);                                                         \
                         Eblock
#    define    aHHCcombinaison_lineaire_6(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6)                                                              \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_6(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6);                                                    \
                         Eblock
#    define    aHHCcombinaison_lineaire_7(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7)                                                         \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_7(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7);                                               \
                         Eblock
#    define    aHHCcombinaison_lineaire_8(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8)                                                    \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_8(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8);                                          \
                         Eblock
#    define    aHHCcombinaison_lineaire_9(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9)                                               \
                         Bblock                                                                                                         \
                         HHCcombinaison_lineaire_9(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9);                                     \
                         Eblock
#    define    aHHCexponentielle_octonionique(o,base,o1)                                                                                \
                         Bblock                                                                                                         \
                         HHCexponentielle_octonionique(o,base,o1);                                                                      \
                         Eblock
#    nodefine  aHHClogarithme(o,o1)                                                                                                     \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HHClogarithme(o,o1);                                                                                           \
                         Eblock
#    nodefine  aHHCcosinus(o,o1)                                                                                                        \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HHCcosinus(o,o1);                                                                                              \
                         Eblock
#    nodefine  aHHCsinus(o,o1)                                                                                                          \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HHCsinus(o,o1);                                                                                                \
                         Eblock
#    nodefine  aHHCtangente(o,o1)                                                                                                       \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HHCtangente(o,o1);                                                                                             \
                         Eblock
#    nodefine  aHHCcosinus_hyperbolique(o,o1)                                                                                           \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HHCcosinus_hyperbolique(o,o1);                                                                                 \
                         Eblock
#    nodefine  aHHCsinus_hyperbolique(o,o1)                                                                                             \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HHCsinus_hyperbolique(o,o1);                                                                                   \
                         Eblock
#    nodefine  aHHCtangente_hyperbolique(o,o1)                                                                                          \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         HHCtangente_hyperbolique(o,o1);                                                                                \
                         Eblock
#Aifdef   NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_HYPER_HYPER_COMPLEXES
                                        /* Possibilite introduite le 20111201134708...                                               */
#    define    aHHCconjugaison(o,o1)                                                                                                    \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCconjugaison(o1));                                                                                  \
                         Eblock
#    define    aHHCmodulo(o,o1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext,Sorg,Sext,Torg,Text,Uorg,Uext,Vorg,Vext)                         \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCmodulo(o1,Rorg,Rext,Iorg,Iext,Jorg,Jext,Korg,Kext,Sorg,Sext,Torg,Text,Uorg,Uext,Vorg,Vext));       \
                         Eblock
#    define    aHHCproduit(o,o1,o2)                                                                                                     \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCproduit(o1,o2));                                                                                   \
                         Eblock
#    define    aHHCpuissance(o,o1,exposant)                                                                                             \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCpuissance(o1,exposant));                                                                           \
                         Eblock
#    define    aHHCquotient(o,o1,o2)                                                                                                    \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCquotient(o1,o2));                                                                                  \
                         Eblock
#    define    aHHCsomme(o,o1,o2)                                                                                                       \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCsomme(o1,o2));                                                                                     \
                         Eblock
#    define    aHHCdifference(o,o1,o2)                                                                                                  \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCdifference(o1,o2));                                                                                \
                         Eblock
#    define    aHHCforme_lineaire(o,alpha,o1,beta)                                                                                      \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCforme_lineaire(alpha,o1,beta));                                                                    \
                         Eblock
#    define    aHHCcombinaison_lineaire_2(o,a,o1,b,o2)                                                                                  \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_2(a,o1,b,o2));                                                                \
                         Eblock
#    define    aHHCcombinaison_lineaire_3(o,a,o1,b,o2,c,o3)                                                                             \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_3(a,o1,b,o2,c,o3));                                                           \
                         Eblock
#    define    aHHCcombinaison_lineaire_4(o,a,o1,b,o2,c,o3,d,o4)                                                                        \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_4(a,o1,b,o2,c,o3,d,o4));                                                      \
                         Eblock
#    define    aHHCcombinaison_lineaire_5(o,a,o1,b,o2,c,o3,d,o4,e,o5)                                                                   \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_5(o,a,o1,b,o2,c,o3,d,o4,e,o5));                                               \
                         Eblock
#    define    aHHCcombinaison_lineaire_6(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6)                                                              \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_6(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6));                                          \
                         Eblock
#    define    aHHCcombinaison_lineaire_7(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7)                                                         \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_7(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7));                                     \
                         Eblock
#    define    aHHCcombinaison_lineaire_8(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8)                                                    \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_8(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8));                                \
                         Eblock
#    define    aHHCcombinaison_lineaire_9(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9)                                               \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcombinaison_lineaire_9(o,a,o1,b,o2,c,o3,d,o4,e,o5,f,o6,g,o7,h,o8,i,o9));                           \
                         Eblock
#    define    aHHCexponentielle_octonionique(o,base,o1)                                                                                \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCexponentielle_octonionique(base,o1));                                                              \
                         Eblock
#    nodefine  aHHClogarithme(o,o1)                                                                                                     \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(o,faFHHClogarithme(o1));                                                                                  \
                                        /* On notera le 'faFHHC...' a cause de 'v $ximcf/fonction$FON fFHHClogarithme'...            */ \
                         Eblock
#    nodefine  aHHCcosinus(o,o1)                                                                                                        \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCcosinus(o1));                                                                                      \
                         Eblock
#    nodefine  aHHCsinus(o,o1)                                                                                                          \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCsinus(o1));                                                                                        \
                         Eblock
#    nodefine  aHHCtangente(o,o1)                                                                                                       \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(o,fFHHCtangente(o1));                                                                                     \
                         Eblock
#    nodefine  aHHCcosinus_hyperbolique(o,o1)                                                                                           \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(o,faFHHCcosinus_hyperbolique(o1));                                                                        \
                                        /* On notera le 'faFHHC...' a cause de 'v $ximcf/fonction$FON fFHHCcosinus_hyperbolique'...  */ \
                         Eblock
#    nodefine  aHHCsinus_hyperbolique(o,o1)                                                                                             \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(o,faFHHCsinus_hyperbolique(o1));                                                                          \
                                        /* On notera le 'faFHHC...' a cause de 'v $ximcf/fonction$FON fFHHCsinus_hyperbolique'...    */ \
                         Eblock
#    nodefine  aHHCtangente_hyperbolique(o,o1)                                                                                          \
                                        /* Afin d'alleger la compilation de 'v $xbmcf/operator$K' (introduit le 20230323122843)...   */ \
                         Bblock                                                                                                         \
                         EGAL(o,faFHHCtangente_hyperbolique(o1));                                                                       \
                                        /* On notera le 'faFHHC...' a cause de 'v $ximcf/fonction$FON fFHHCtangente_hyperbolique'... */ \
                         Eblock
#Eifdef   NE_PAS_ACCELERER_LA_COMPILATION_DES_NOMBRES_HYPER_HYPER_COMPLEXES




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.