/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D ' U N E   V A R I E T E   D E   C A L A B I - Y A U   8 - D I M E N S I O N N E L L E  :           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/CalabiYau.31.1$I' :                                                                                        */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20230210114658).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   T R O I S   F O N C T I O N S   ' F '  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition  ('v $xrs/CalabiYau.32$K') :                                                                                    */
/*                                                                                                                                   */
/*                    Une variete hyper-complexe de Calabi-Yau                                                                       */
/*                  8-dimensionnelle est definie                                                                                     */
/*                  implicitement par :                                                                                              */
/*                                                                                                                                   */
/*                                      /      \n1   /      \n2                                                                      */
/*                                      |  Q'  |     |  Q'  |                                                                        */
/*                                      |   1  |     |   2  |                                                                        */
/*                                      | ---- |   + | ---- |   = 1                                                                  */
/*                                      |  A   |     |  B   |                                                                        */
/*                                      \      /     \      /                                                                        */
/*                                                                                                                                   */
/*                  posons :                                                                                                         */
/*                                                                                                                                   */
/*                                            Q'                                                                                     */
/*                                             1                                                                                     */
/*                                      Q  = ----                                                                                    */
/*                                       1    A                                                                                      */
/*                                                                                                                                   */
/*                                            Q'                                                                                     */
/*                                             2                                                                                     */
/*                                      Q  = ----                                                                                    */
/*                                       2    B                                                                                      */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1    n2                                                                                    */
/*                                      Q   + Q   = 1                                                                                */
/*                                       1     2                                                                                     */
/*                                                                                                                                   */
/*                  ou 'Q1' et 'Q2' sont deux nombres hyper-complexes.                                                               */
/*                  Cela peut se reecrire :                                                                                          */
/*                                                                                                                                   */
/*                                               2            2                                                                      */
/*                                      /   n1  \    /   n2  \                                                                       */
/*                                      |  ---- |    |  ---- |                                                                       */
/*                                      |   2   |    |   2   |                                                                       */
/*                                      | Q     |  + | Q     |   = 1                                                                 */
/*                                      \  1    /    \  2    /                                                                       */
/*                                                                                                                                   */
/*                  ou encore :                                                                                                      */
/*                                                                                                                                   */
/*                                            2         2                                                                            */
/*                                      cos(Q)  + sin(Q)  = 1                                                                        */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1         2                                                                                */
/*                                      Q   = cos(Q)                                                                                 */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                       n2         2                                                                                */
/*                                      Q   = sin(Q)                                                                                 */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  (ou 'Q' est un "angle" hyper-complexe) d'ou :                                                                    */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k1   /       \ ----                                                               */
/*                                            2Ip.---- |         | n1                                                                */
/*                                                 n1  |       2 |                                                                   */
/*                                      Q  = e         | cos(Q)  |                                                                   */
/*                                       1              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k2   /       \ ----                                                               */
/*                                            2Ip.---- |         | n2                                                                */
/*                                                 n2  |       2 |                                                                   */
/*                                      Q  = e         | sin(Q)  |                                                                   */
/*                                       2              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ou 'I' represente l'imaginaire pur (0,1,1,1).                                                                    */
/*                                                                                                                                   */
/*                  D'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                                 k1         2                                                                      */
/*                                            2Ip.----       ----                                                                    */
/*                                                 n1         n1                                                                     */
/*                                      Q  = e        .cos(Q)                                                                        */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                                 k2         2                                                                      */
/*                                            2Ip.----       ----                                                                    */
/*                                                 n2         n2                                                                     */
/*                                      Q  = e        .sin(Q)                                                                        */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  et :                                                                                                             */
/*                                                                                                                                   */
/*                                      Q' = A.Q                                                                                     */
/*                                       1      1                                                                                    */
/*                                                                                                                                   */
/*                                      Q' = B.Q                                                                                     */
/*                                       2      2                                                                                    */
/*                                                                                                                                   */
/*                  ou 'k1' et 'k2' indicent les racines n-iemes                                                                     */
/*                  de l'unite (n = {n1,n2}) :                                                                                       */
/*                                                                                                                                   */
/*                                      k1 E [ 0 , n1-1 ]                                                                            */
/*                                                                                                                                   */
/*                                      k2 E [ 0 , n2-1 ]                                                                            */
/*                                                                                                                                   */
/*                  La variete est ainsi composee de n1.n2 "patches"                                                                 */
/*                  parametres chacun par {u,v}, avec :                                                                              */
/*                                                                                                                                   */
/*                                      u E [ 0 , p/2 ]                                                                              */
/*                                                                                                                                   */
/*                                      v E [ -1 , +1 ]                                                                              */
/*                                                                                                                                   */
/*                  (ou 'p' designe 'pi') et :                                                                                       */
/*                                                                                                                                   */
/*                                      Q = u + i.v + j.u' + k.v'                                                                    */
/*                                                                                                                                   */
/*                  {u',v'} etant deux parametres supplementaires...                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  Cette variete est donc a 8 dimensions, et la                                                                     */
/*                  surface a 3 dimensions que l'on visualisera                                                                      */
/*                  sera definie par :                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             X = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q )) + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))     */
/*                   X1    1       X2    1       X3    1       X4    1       X5    2       X6    2       X7    2       X8    2       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Y = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q )) + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))     */
/*                   Y1    1       Y2    1       Y3    1       Y4    1       Y5    2       Y6    2       Y7    2       Y8    2       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Z = (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q )) + (A  .R(Q )) + (A  .I(Q )) + (A  .J(Q )) + (A  .K(Q ))     */
/*                   Z1    1       Z2    1       Z3    1       Z4    1       Z5    2       Z6    2       Z7    2       Z8    2       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  soit, par defaut (qui fait que 'v $xiirs/CAYA.A1.0129' et 'v $xiirs/CAYA.O3' sont semblables bien qu'ayant ete   */
/*                  generees par '$xrs/CalabiYau.12$X' et '$xrs/CalabiYau.32$X' respectivement) :                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             X =      R(Q )                                                          +      I(Q )                                  */
/*                         1                                                                     2                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Y =                    I(Q )                                            +      I(Q )                                  */
/*                                       1                                                       2                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             Z =                                                              R(Q )  +      I(Q )                                  */
/*                                                                                 2             2                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  (ou 'R(...)', 'I(...)', J(...)' et 'K(...)' designent respectivement                                             */
/*                  les parties Reelle, Imaginaire, Jmaginaire et Kmaginaire). Une possible                                          */
/*                  matrice 'A' sera :                                                                                               */
/*                                                                                                                                   */
/*                                      | 1 0 0 0 0 1 0 0 |                                                                          */
/*                                      | 0 1 0 0 0 1 0 0 |                                                                          */
/*                                      | 0 0 0 0 1 1 0 0 |                                                                          */
/*                                                                                                                                   */
/*                  qui permet de retrouver 'v $xiirs/CAYA.A1.0129'                                                                  */
/*                  avec 'v $xiirs/CAYA.O3'...                                                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#define   GENERATION_DU_CALABI_YAU_OCTODIMENSIONNEL(coordonnee_w,coordonnee_t)                                                          \
                    Bblock                                                                                                              \
                    begin_nouveau_block                                                                                                 \
                         Bblock                                                                                                         \
                         DEFV(Float,INIT(exposant_n1,parametre_n1));                                                                    \
                         DEFV(Float,INIT(demi_exposant_n1,MOIT(parametre_n1)));                                                         \
                                        /* Exposant (n1) et demi-exposant (n1/2).                                                    */ \
                         DEFV(Float,INIT(exposant_n2,parametre_n2));                                                                    \
                         DEFV(Float,INIT(demi_exposant_n2,MOIT(parametre_n2)));                                                         \
                                        /* Exposant (n2) et demi-exposant (n2/2).                                                    */ \
                         DEFV(hyper_complexe,quv);                                                                                      \
                         DEFV(hyper_complexe,cosinus_quv);                                                                              \
                         DEFV(hyper_complexe,sinus_quv);                                                                                \
                         DEFV(hyper_complexe,puissance_de_cosinus_quv);                                                                 \
                         DEFV(hyper_complexe,puissance_de_sinus_quv);                                                                   \
                         DEFV(hyper_complexe,racine_de_l_unite_1);                                                                      \
                         DEFV(hyper_complexe,racine_de_l_unite_2);                                                                      \
                                        /* Nombres hyper-complexes de manoeuvre...                                                   */ \
                                                                                                                                        \
                         HCinitialisation(quv,u,v,coordonnee_w,coordonnee_t);                                                           \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  q   = u + i.v + j.w + k.t                                                */ \
                                        /*                   uv                                                                      */ \
                                        /*                                                                                           */ \
                         HCcosinus(cosinus_quv,quv);                                                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  cos(q  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HCsinus(sinus_quv,quv);                                                                                        \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  sin(q  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HCpuissance(puissance_de_cosinus_quv,cosinus_quv,INVE(demi_exposant_n1));                                      \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2                                                               */ \
                                        /*                          ----                                                             */ \
                                        /*                           n1                                                              */ \
                                        /*                  cos(q  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HCpuissance(puissance_de_sinus_quv,sinus_quv,INVE(demi_exposant_n2));                                          \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2                                                               */ \
                                        /*                          ----                                                             */ \
                                        /*                           n2                                                              */ \
                                        /*                  sin(q  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HCdefinition_trigonometrique(racine_de_l_unite_1                                                               \
                                                     ,HC_MODULE_UNITAIRE                                                                \
                                                     ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n1,parametre_k1)                             \
                                                      );                                                                                \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1                                                                 */ \
                                        /*                   2Ip.----                                                                */ \
                                        /*                        n1                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         HCdefinition_trigonometrique(racine_de_l_unite_2                                                               \
                                                     ,HC_MODULE_UNITAIRE                                                                \
                                                     ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n2,parametre_k2)                             \
                                                      );                                                                                \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2                                                                 */ \
                                        /*                   2Ip.----                                                                */ \
                                        /*                        n2                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         HCproduit(q1,racine_de_l_unite_1,puissance_de_cosinus_quv);                                                    \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1           2                                                     */ \
                                        /*                   2Ip.----         ----                                                   */ \
                                        /*                        n1           n1                                                    */ \
                                        /*                  e        .cos(q  )                                                       */ \
                                        /*                                 uv                                                        */ \
                                        /*                                                                                           */ \
                         HCproduit(q2,racine_de_l_unite_2,puissance_de_sinus_quv);                                                      \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2           2                                                     */ \
                                        /*                   2Ip.----         ----                                                   */ \
                                        /*                        n2           n2                                                    */ \
                                        /*                  e        .sin(q  )                                                       */ \
                                        /*                                 uv                                                        */ \
                                        /*                                                                                           */ \
                         HCproduit(q1,parametre_qA,q1);                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k1           2                                                   */ \
                                        /*                     2Ip.----         ----                                                 */ \
                                        /*                          n1           n1                                                  */ \
                                        /*                  A.e        .cos(q  )                                                     */ \
                                        /*                                   uv                                                      */ \
                                        /*                                                                                           */ \
                         HCproduit(q2,parametre_qB,q2);                                                                                 \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k2           2                                                   */ \
                                        /*                     2Ip.----         ----                                                 */ \
                                        /*                          n2           n2                                                  */ \
                                        /*                  B.e        .sin(q  )                                                     */ \
                                        /*                                   uv                                                      */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         Test(IL_FAUT(valider_la_qualite_du_calcul_de_q1_et_de_q2))                                                     \
                                        /* On notera le probleme "existentiel" decrit dans 'v $ximcd/operator$FON 20230324100530'    */ \
                                        /* qui fait que ce test de validation n'a peut-etre, a cause de 'HCpuissance(...)', aucun    */ \
                                        /* sens ! Et d'ailleurs cela peut concerner en fait tous les calculs precedents. Cela s'est  */ \
                                        /* vu lors du calcul de 'v $xiirs/CAYA.W4' aux environs du 20230324100530...                 */ \
                              Bblock                                                                                                    \
                              DEFV(hyper_complexe,q1_puissance_n1);                                                                     \
                              DEFV(hyper_complexe,q2_puissance_n2);                                                                     \
                              DEFV(hyper_complexe,validation);                                                                          \
                                        /* Nombres hyper-complexes de manoeuvre...                                                   */ \
                                                                                                                                        \
                              HCpuissance(q1_puissance_n1,q1,parametre_n1);                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1                                                                      */ \
                                        /*                  q                                                                        */ \
                                        /*                   1                                                                       */ \
                                        /*                                                                                           */ \
                              HCpuissance(q2_puissance_n2,q2,parametre_n2);                                                             \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n2                                                                      */ \
                                        /*                  q                                                                        */ \
                                        /*                   2                                                                       */ \
                                        /*                                                                                           */ \
                              HCsomme(validation,q1_puissance_n1,q2_puissance_n2);                                                      \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1    n2                                                                */ \
                                        /*                  q   + q                                                                  */ \
                                        /*                   1     2                                                                 */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                              Test(HCTestIFNE_a_peu_pres_absolu(validation,HC_____quaternion_p1__0__0__0                                \
                                                               ,epsilon_de_validation_du_calcul_de_q1_et_de_q2                          \
                                                                )                                                                       \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("le calcul de 'q1' et de 'q2' est incorrect");                                          \
                                   PRINT_DANS_HC("quv",quv);                                                                            \
                                        /* Introduit le 20230323092855...                                                            */ \
                                   PRINT_DANS_HC("q1",q1);                                                                              \
                                   PRINT_DANS_HC("q2",q2);                                                                              \
                                   CAL1(Prer8("(%+.^^^,%+.^^^,%+.^^^,%+.^^^) est obtenu au lieu de (%+.^^^,%+.^^^,%+.^^^,%+.^^^)\n"     \
                                             ,HReelle(validation)                                                                       \
                                             ,HImaginaire(validation)                                                                   \
                                             ,HJmaginaire(validation)                                                                   \
                                             ,HKmaginaire(validation)                                                                   \
                                             ,HReelle(HC_____quaternion_p1__0__0__0)                                                    \
                                             ,HImaginaire(HC_____quaternion_p1__0__0__0)                                                \
                                             ,HJmaginaire(HC_____quaternion_p1__0__0__0)                                                \
                                             ,HKmaginaire(HC_____quaternion_p1__0__0__0)                                                \
                                              )                                                                                         \
                                        );                                                                                              \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    end_nouveau_block                                                                                                   \
                    Eblock                                                                                                              \
                                        /* Calcul sur la variete hyper-complexe a 2 dimensions.                                      */



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