/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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   1 6 - D I M E N S I O N N E L L E  :         */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xrs/CalabiYau.81$I' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 20230225102916).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*        :Debut_listMN_VARIETE_DE_CALABI_YAU_16_DIMENSIONNELLE_11:                                                                  */
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        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.82$K') :                                                                                    */
/*                                                                                                                                   */
/*                    Une variete hyper-hyper-complexe de Calabi-Yau                                                                 */
/*                  16-dimensionnelle est definie                                                                                    */
/*                  implicitement par :                                                                                              */
/*                                                                                                                                   */
/*                                      /      \n1   /      \n2                                                                      */
/*                                      |  O'  |     |  O'  |                                                                        */
/*                                      |   1  |     |   2  |                                                                        */
/*                                      | ---- |   + | ---- |   = 1                                                                  */
/*                                      |  A   |     |  B   |                                                                        */
/*                                      \      /     \      /                                                                        */
/*                                                                                                                                   */
/*                  posons :                                                                                                         */
/*                                                                                                                                   */
/*                                            O'                                                                                     */
/*                                             1                                                                                     */
/*                                      O  = ----                                                                                    */
/*                                       1    A                                                                                      */
/*                                                                                                                                   */
/*                                            O'                                                                                     */
/*                                             2                                                                                     */
/*                                      O  = ----                                                                                    */
/*                                       2    B                                                                                      */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1    n2                                                                                    */
/*                                      O   + O   = 1                                                                                */
/*                                       1     2                                                                                     */
/*                                                                                                                                   */
/*                  ou 'O1' et 'O2' sont deux nombres hyper-hyper-complexes.                                                         */
/*                  Cela peut se reecrire :                                                                                          */
/*                                                                                                                                   */
/*                                               2            2                                                                      */
/*                                      /   n1  \    /   n2  \                                                                       */
/*                                      |  ---- |    |  ---- |                                                                       */
/*                                      |   2   |    |   2   |                                                                       */
/*                                      | O     |  + | O     |   = 1                                                                 */
/*                                      \  1    /    \  2    /                                                                       */
/*                                                                                                                                   */
/*                  ou encore :                                                                                                      */
/*                                                                                                                                   */
/*                                            2         2                                                                            */
/*                                      cos(O)  + sin(O)  = 1                                                                        */
/*                                                                                                                                   */
/*                  d'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                       n1         2                                                                                */
/*                                      O   = cos(O)                                                                                 */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                       n2         2                                                                                */
/*                                      O   = sin(O)                                                                                 */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  (ou 'O' est un "angle" hyper-hyper-complexe) d'ou :                                                              */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k1   /       \ ----                                                               */
/*                                            2Ip.---- |         | n1                                                                */
/*                                                 n1  |       2 |                                                                   */
/*                                      O  = e         | cos(O)  |                                                                   */
/*                                       1              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                 1                                                                 */
/*                                                 k2   /       \ ----                                                               */
/*                                            2Ip.---- |         | n2                                                                */
/*                                                 n2  |       2 |                                                                   */
/*                                      O  = e         | sin(O)  |                                                                   */
/*                                       2              \       /                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  ou 'I' represente l'imaginaire pur (0,1,1,1,1,1,1,1).                                                            */
/*                                                                                                                                   */
/*                  D'ou :                                                                                                           */
/*                                                                                                                                   */
/*                                                 k1         2                                                                      */
/*                                            2Ip.----       ----                                                                    */
/*                                                 n1         n1                                                                     */
/*                                      O  = e        .cos(O)                                                                        */
/*                                       1                                                                                           */
/*                                                                                                                                   */
/*                                                 k2         2                                                                      */
/*                                            2Ip.----       ----                                                                    */
/*                                                 n2         n2                                                                     */
/*                                      O  = e        .sin(O)                                                                        */
/*                                       2                                                                                           */
/*                                                                                                                                   */
/*                  et :                                                                                                             */
/*                                                                                                                                   */
/*                                      O' = A.O                                                                                     */
/*                                       1      1                                                                                    */
/*                                                                                                                                   */
/*                                      O' = B.O                                                                                     */
/*                                       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 {w1,w2,w3,w4,w5,w6,w7,w8}, avec :                                                          */
/*                                                                                                                                   */
/*                                      w1 E [ 0 , p/2 ]                                                                             */
/*                                                                                                                                   */
/*                                      w2 E [ -1 , +1 ]                                                                             */
/*                                                                                                                                   */
/*                                      w3 E [ -1 , +1 ]                                                                             */
/*                                                                                                                                   */
/*                                      w4 E [ -1 , +1 ]                                                                             */
/*                                                                                                                                   */
/*                                      w5 E [ -1 , +1 ]                                                                             */
/*                                                                                                                                   */
/*                                      w6 E [ -1 , +1 ]                                                                             */
/*                                                                                                                                   */
/*                                      w7 E [ -1 , +1 ]                                                                             */
/*                                                                                                                                   */
/*                                      w8 E [ -1 , +1 ]                                                                             */
/*                                                                                                                                   */
/*                  (ou 'p' designe 'pi') et :                                                                                       */
/*                                                                                                                                   */
/*                                      Q = w1 + i.w2 + j.w3 + k.w4 + s.w5 + t.w6 + u.w7 + v.w8                                      */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
/*        :Fin_listMN_VARIETE_DE_CALABI_YAU_16_DIMENSIONNELLE_11:                                                                    */
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  Cette variete est donc a 16 dimensions, et la                                                                    */
/*                  surface a 3 dimensions que l'on visualisera                                                                      */
/*                  sera definie par :                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      X = (A   .R(O )) + (A   .I(O )) + (...) + (A   .U(O )) + (A   .V(O ))                        */
/*                                            X01    1       X02    1               X15    2       X16    2                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      Y = (A   .R(O )) + (A   .I(O )) + (...) + (A   .U(O )) + (A   .V(O ))                        */
/*                                            Y01    1       Y02    1               Y15    2       Y16    2                          */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                                      Z = (A   .R(O )) + (A   .I(O )) + (...) + (A   .U(O )) + (A   .V(O ))                        */
/*                                            Z01    1       Z02    1               Z15    2       Z16    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(...)', 'K(...)', S(...)', 'T(...)', 'U(...)' et 'V(...)' designent respectivement      */
/*                  les parties Reelle, Imaginaire, Jmaginaire, Kmaginaire, Smaginaire, Tmaginaire, Umaginaire et Vmaginaire).       */
/*                  Une possible matrice 'A' sera :                                                                                  */
/*                                                                                                                                   */
/*                                      | 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |                                                          */
/*                                      | 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |                                                          */
/*                                      | 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 |                                                          */
/*                                                                                                                                   */
/*                  qui permet de retrouver 'v $xiirs/CAYA.A1.0129'                                                                  */
/*                  avec 'v $xiirs/CAYA.W3'...                                                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

DEFV(Local,DEFV(hyper_hyper_complexe,o1));
DEFV(Local,DEFV(hyper_hyper_complexe,o2));
                                        /* Definition des coordonnees {o1,o2} de la variete hyper-hyper-complexe a 2 dimensions.     */
DEFV(Local,DEFV(Float,INIT(coordonnee_w1,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w2,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w3,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w4,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w5,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w6,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w7,FLOT__UNDEF)));
DEFV(Local,DEFV(Float,INIT(coordonnee_w8,FLOT__UNDEF)));
                                        /* Definition des coordonnees parametriques {w1,w2,w3,w4,w5,w6,w7,w8}.                       */
DEFV(Local,DEFV(Logical,INIT(initialiser_les_coordonnees_w1_w2_w3_w4_w5_w6_w7_w8,VRAI)));
                                        /* Controle de l'initialisation des coordonnees parametriques {w1,w2,w3,w4,w5,w6,w7,w8}.     */

#define   GENERATION_DU_CALABI_YAU_HEXADIMENSIONNEL(coord_w3,coord_w4,coord_w5,coord_w6,coord_w7,coord_w8)                              \
                    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_hyper_complexe,ouv);                                                                                \
                         DEFV(hyper_hyper_complexe,cosinus_ouv);                                                                        \
                         DEFV(hyper_hyper_complexe,sinus_ouv);                                                                          \
                         DEFV(hyper_hyper_complexe,puissance_de_cosinus_ouv);                                                           \
                         DEFV(hyper_hyper_complexe,puissance_de_sinus_ouv);                                                             \
                         DEFV(hyper_hyper_complexe,racine_de_l_unite_1);                                                                \
                         DEFV(hyper_hyper_complexe,racine_de_l_unite_2);                                                                \
                                        /* Nombres hyper-hyper-complexes de manoeuvre...                                             */ \
                                                                                                                                        \
                         HHCinitialisation(ouv,w1,w2,coord_w3,coord_w4,coord_w5,coord_w6,coord_w7,coord_w8);                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  o   = w1 + i.w2 + j.w3 + k.w4 + s.w5 + t.w6 + u.w7 + v.W8                */ \
                                        /*                   uv                                                                      */ \
                                        /*                                                                                           */ \
                         HHCcosinus(cosinus_ouv,ouv);                                                                                   \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  cos(o  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HHCsinus(sinus_ouv,ouv);                                                                                       \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  sin(o  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HHCpuissance(puissance_de_cosinus_ouv,cosinus_ouv,INVE(demi_exposant_n1));                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2                                                               */ \
                                        /*                          ----                                                             */ \
                                        /*                           n1                                                              */ \
                                        /*                  cos(o  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HHCpuissance(puissance_de_sinus_ouv,sinus_ouv,INVE(demi_exposant_n2));                                         \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                           2                                                               */ \
                                        /*                          ----                                                             */ \
                                        /*                           n2                                                              */ \
                                        /*                  sin(o  )                                                                 */ \
                                        /*                       uv                                                                  */ \
                                        /*                                                                                           */ \
                         HHCdefinition_trigonometrique(racine_de_l_unite_1                                                              \
                                                      ,HHC_MODULE_UNITAIRE                                                              \
                                                      ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n1,parametre_k1)                            \
                                                       );                                                                               \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1                                                                 */ \
                                        /*                   2Ip.----                                                                */ \
                                        /*                        n1                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         HHCdefinition_trigonometrique(racine_de_l_unite_2                                                              \
                                                      ,HHC_MODULE_UNITAIRE                                                              \
                                                      ,SCAL(CERCLE_TRIGONOMETRIQUE,exposant_n2,parametre_k2)                            \
                                                       );                                                                               \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2                                                                 */ \
                                        /*                   2Ip.----                                                                */ \
                                        /*                        n2                                                                 */ \
                                        /*                  e                                                                        */ \
                                        /*                                                                                           */ \
                         HHCproduit(o1,racine_de_l_unite_1,puissance_de_cosinus_ouv);                                                   \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k1           2                                                     */ \
                                        /*                   2Ip.----         ----                                                   */ \
                                        /*                        n1           n1                                                    */ \
                                        /*                  e        .cos(o  )                                                       */ \
                                        /*                                 uv                                                        */ \
                                        /*                                                                                           */ \
                         HHCproduit(o2,racine_de_l_unite_2,puissance_de_sinus_ouv);                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                        k2           2                                                     */ \
                                        /*                   2Ip.----         ----                                                   */ \
                                        /*                        n2           n2                                                    */ \
                                        /*                  e        .sin(o  )                                                       */ \
                                        /*                                 uv                                                        */ \
                                        /*                                                                                           */ \
                         HHCproduit(o1,parametre_oA,o1);                                                                                \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k1           2                                                   */ \
                                        /*                     2Ip.----         ----                                                 */ \
                                        /*                          n1           n1                                                  */ \
                                        /*                  A.e        .cos(o  )                                                     */ \
                                        /*                                   uv                                                      */ \
                                        /*                                                                                           */ \
                         HHCproduit(o2,parametre_oB,o2);                                                                                \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                          k2           2                                                   */ \
                                        /*                     2Ip.----         ----                                                 */ \
                                        /*                          n2           n2                                                  */ \
                                        /*                  B.e        .sin(o  )                                                     */ \
                                        /*                                   uv                                                      */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                         Test(IL_FAUT(valider_la_qualite_du_calcul_de_o1_et_de_o2))                                                     \
                                        /* 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 'HHCpuissance(...)', 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 20230324102306...                 */ \
                              Bblock                                                                                                    \
                              DEFV(hyper_hyper_complexe,o1_puissance_n1);                                                               \
                              DEFV(hyper_hyper_complexe,o2_puissance_n2);                                                               \
                              DEFV(hyper_hyper_complexe,validation);                                                                    \
                                        /* Nombres hyper-hyper-complexes de manoeuvre...                                             */ \
                                                                                                                                        \
                              HHCpuissance(o1_puissance_n1,o1,parametre_n1);                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1                                                                      */ \
                                        /*                  o                                                                        */ \
                                        /*                   1                                                                       */ \
                                        /*                                                                                           */ \
                              HHCpuissance(o2_puissance_n2,o2,parametre_n2);                                                            \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n2                                                                      */ \
                                        /*                  o                                                                        */ \
                                        /*                   2                                                                       */ \
                                        /*                                                                                           */ \
                              HHCsomme(validation,o1_puissance_n1,o2_puissance_n2);                                                     \
                                        /* Calcul de :                                                                               */ \
                                        /*                                                                                           */ \
                                        /*                   n1    n2                                                                */ \
                                        /*                  o   + o                                                                  */ \
                                        /*                   1     2                                                                 */ \
                                        /*                                                                                           */ \
                                                                                                                                        \
                              Test(HHCTestIFNE_a_peu_pres_absolu(validation,HHC_____octonion_p1__0__0__0__0__0__0__0                    \
                                                                ,epsilon_de_validation_du_calcul_de_o1_et_de_o2                         \
                                                                 )                                                                      \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("le calcul de 'o1' et de 'o2' est incorrect");                                          \
                                   PRINT_DANS_HHC("ouv",ouv);                                                                           \
                                        /* Introduit le 20230323092956...                                                            */ \
                                   PRINT_DANS_HHC("o1",o1);                                                                             \
                                   PRINT_DANS_HHC("o2",o2);                                                                             \
                                   CAL1(Prer8("(%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^) est obtenu "                   \
                                             ,HHReelle(validation)                                                                      \
                                             ,HHImaginaire(validation)                                                                  \
                                             ,HHJmaginaire(validation)                                                                  \
                                             ,HHKmaginaire(validation)                                                                  \
                                             ,HHSmaginaire(validation)                                                                  \
                                             ,HHTmaginaire(validation)                                                                  \
                                             ,HHUmaginaire(validation)                                                                  \
                                             ,HHVmaginaire(validation)                                                                  \
                                              )                                                                                         \
                                        );                                                                                              \
                                   CAL1(Prer8("au lieu de (%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^)\n"                  \
                                             ,HHReelle(HHC_____octonion_p1__0__0__0__0__0__0__0)                                        \
                                             ,HHImaginaire(HHC_____octonion_p1__0__0__0__0__0__0__0)                                    \
                                             ,HHJmaginaire(HHC_____octonion_p1__0__0__0__0__0__0__0)                                    \
                                             ,HHKmaginaire(HHC_____octonion_p1__0__0__0__0__0__0__0)                                    \
                                             ,HHSmaginaire(HHC_____octonion_p1__0__0__0__0__0__0__0)                                    \
                                             ,HHTmaginaire(HHC_____octonion_p1__0__0__0__0__0__0__0)                                    \
                                             ,HHUmaginaire(HHC_____octonion_p1__0__0__0__0__0__0__0)                                    \
                                             ,HHVmaginaire(HHC_____octonion_p1__0__0__0__0__0__0__0)                                    \
                                              )                                                                                         \
                                        );                                                                                              \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                    end_nouveau_block                                                                                                   \
                    Eblock                                                                                                              \
                                        /* Calcul sur la variete hyper-hyper-complexe a 2 dimensions.                                */

#define   GENERATION_DU_CALABI_YAU_8(w1,w2,w3,w4,w5,w6,w7,w8)                                                                           \
                    Bblock                                                                                                              \
                    Test(IFOU(IL_FAUT(initialiser_les_coordonnees_w1_w2_w3_w4_w5_w6_w7_w8)                                              \
                             ,IFET(IL_NE_FAUT_PAS(initialiser_les_coordonnees_w1_w2_w3_w4_w5_w6_w7_w8)                                  \
                                  ,I8OU(IFNE(w1,coordonnee_w1)                                                                          \
                                       ,IFNE(w2,coordonnee_w2)                                                                          \
                                       ,IFNE(w3,coordonnee_w3)                                                                          \
                                       ,IFNE(w4,coordonnee_w4)                                                                          \
                                       ,IFNE(w5,coordonnee_w5)                                                                          \
                                       ,IFNE(w6,coordonnee_w6)                                                                          \
                                       ,IFNE(w7,coordonnee_w7)                                                                          \
                                       ,IFNE(w8,coordonnee_w8)                                                                          \
                                        )                                                                                               \
                                   )                                                                                                    \
                              )                                                                                                         \
                         )                                                                                                              \
                         Bblock                                                                                                         \
                         EGAL(initialiser_les_coordonnees_w1_w2_w3_w4_w5_w6_w7_w8,FAUX);                                                \
                         EGAL(coordonnee_w1,w1);                                                                                        \
                         EGAL(coordonnee_w2,w2);                                                                                        \
                         EGAL(coordonnee_w3,w3);                                                                                        \
                         EGAL(coordonnee_w4,w4);                                                                                        \
                         EGAL(coordonnee_w5,w5);                                                                                        \
                         EGAL(coordonnee_w6,w6);                                                                                        \
                         EGAL(coordonnee_w7,w7);                                                                                        \
                         EGAL(coordonnee_w8,w8);                                                                                        \
                                        /* Initialisation et optimisation du processus...                                            */ \
                                                                                                                                        \
                         begin_nouveau_block                                                                                            \
                              Bblock                                                                                                    \
                              GENERATION_DU_CALABI_YAU_HEXADIMENSIONNEL(w3,w4,w5,w6,w7,w8);                                             \
                              Eblock                                                                                                    \
                         end_nouveau_block                                                                                              \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Calcul sur la variete hyper-hyper-complexe a 8 dimensions.                                */

BFonctionV

DEFV(Local,DEFV(FonctionV,FCalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)))
DEFV(Argument,DEFV(Float,w1));
DEFV(Argument,DEFV(Float,w2));
DEFV(Argument,DEFV(Float,w3));
DEFV(Argument,DEFV(Float,w4));
DEFV(Argument,DEFV(Float,w5));
DEFV(Argument,DEFV(Float,w6));
DEFV(Argument,DEFV(Float,w7));
DEFV(Argument,DEFV(Float,w8));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     GENERATION_DU_CALABI_YAU_8(w1,w2,w3,w4,w5,w6,w7,w8);
                                        /* Calcul, si besoin est, de {o1,o2}.                                                        */

     RETU_VIDE;
     Eblock

EFonctionV

#undef    GENERATION_DU_CALABI_YAU_8

#define   EDITION_EVENTUELLE_DES_PROJECTIONS(nom_de_la_coordonnee,valeur_de_la_coordonnee)                                              \
                    Bblock                                                                                                              \
                    Test(IL_FAUT(editer_les_projections))                                                                               \
                         Bblock                                                                                                         \
                         CAL3(Prme0("{"));                                                                                              \
                                                                                                                                        \
                         CAL3(Prme8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                         \
                                   ,HHReelle(o1)                                                                                        \
                                   ,HHImaginaire(o1)                                                                                    \
                                   ,HHJmaginaire(o1)                                                                                    \
                                   ,HHKmaginaire(o1)                                                                                    \
                                   ,HHSmaginaire(o1)                                                                                    \
                                   ,HHTmaginaire(o1)                                                                                    \
                                   ,HHUmaginaire(o1)                                                                                    \
                                   ,HHVmaginaire(o1)                                                                                    \
                                    )                                                                                                   \
                              );                                                                                                        \
                                                                                                                                        \
                         CAL3(Prme0(","));                                                                                              \
                                                                                                                                        \
                         CAL3(Prme8("{%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^,%+.^^^}"                                         \
                                   ,HHReelle(o2)                                                                                        \
                                   ,HHImaginaire(o2)                                                                                    \
                                   ,HHJmaginaire(o2)                                                                                    \
                                   ,HHKmaginaire(o2)                                                                                    \
                                   ,HHSmaginaire(o2)                                                                                    \
                                   ,HHTmaginaire(o2)                                                                                    \
                                   ,HHUmaginaire(o2)                                                                                    \
                                   ,HHVmaginaire(o2)                                                                                    \
                                    )                                                                                                   \
                              );                                                                                                        \
                                                                                                                                        \
                         CAL3(Prme0("}     "));                                                                                         \
                                                                                                                                        \
                         CAL3(Prme1("     R=%+.^^^"                                                                                     \
                                   ,COEFFICIENT_DE_PROJECTION_PERSPECTIVE_01_16D_3D_R(HHReelle(o1)                                      \
                                                                                     ,HHImaginaire(o1)                                  \
                                                                                     ,HHJmaginaire(o1)                                  \
                                                                                     ,HHKmaginaire(o1)                                  \
                                                                                     ,HHSmaginaire(o1)                                  \
                                                                                     ,HHTmaginaire(o1)                                  \
                                                                                     ,HHUmaginaire(o1)                                  \
                                                                                     ,HHVmaginaire(o1)                                  \
                                                                                     ,HHReelle(o2)                                      \
                                                                                     ,HHImaginaire(o2)                                  \
                                                                                     ,HHJmaginaire(o2)                                  \
                                                                                     ,HHKmaginaire(o2)                                  \
                                                                                     ,HHSmaginaire(o2)                                  \
                                                                                     ,HHTmaginaire(o2)                                  \
                                                                                     ,HHUmaginaire(o2)                                  \
                                                                                     ,HHVmaginaire(o2)                                  \
                                                                                      )                                                 \
                                    )                                                                                                   \
                              );                                                                                                        \
                                                                                                                                        \
                         CAL3(Prme0("     --> "));                                                                                      \
                                                                                                                                        \
                         CAL3(Prme2("     %s=%+.^^^\n"                                                                                  \
                                   ,nom_de_la_coordonnee                                                                                \
                                   ,valeur_de_la_coordonnee                                                                             \
                                    )                                                                                                   \
                              );                                                                                                        \
                         Eblock                                                                                                         \
                    ATes                                                                                                                \
                         Bblock                                                                                                         \
                         Eblock                                                                                                         \
                    ETes                                                                                                                \
                    Eblock                                                                                                              \
                                        /* Procedure introduite le 20230317100800...                                                 */

BFonctionF

DEFV(Local,DEFV(FonctionF,FFx_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)))
DEFV(Argument,DEFV(Float,w1));
DEFV(Argument,DEFV(Float,w2));
DEFV(Argument,DEFV(Float,w3));
DEFV(Argument,DEFV(Float,w4));
DEFV(Argument,DEFV(Float,w5));
DEFV(Argument,DEFV(Float,w6));
DEFV(Argument,DEFV(Float,w7));
DEFV(Argument,DEFV(Float,w8));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(coordonnee_projetee_X,FLOT__UNDEF));
                                        /* Coordonnee 'X' projetee introduite explicitement le 20230317095341...                     */
     /*..............................................................................................................................*/
     CALS(FCalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8));
                                        /* Calcul, si besoin est, de {o1,o2}.                                                        */

     EGAL(coordonnee_projetee_X
         ,COND(IL_FAUT(faire_une_projection_parallele)
              ,PROJECTION_PARALLELE_01_16D_3D_X(HHReelle(o1)
                                               ,HHImaginaire(o1)
                                               ,HHJmaginaire(o1)
                                               ,HHKmaginaire(o1)
                                               ,HHSmaginaire(o1)
                                               ,HHTmaginaire(o1)
                                               ,HHUmaginaire(o1)
                                               ,HHVmaginaire(o1)
                                               ,HHReelle(o2)
                                               ,HHImaginaire(o2)
                                               ,HHJmaginaire(o2)
                                               ,HHKmaginaire(o2)
                                               ,HHSmaginaire(o2)
                                               ,HHTmaginaire(o2)
                                               ,HHUmaginaire(o2)
                                               ,HHVmaginaire(o2)
                                                )
              ,PROJECTION_PERSPECTIVE_01_16D_3D_X(HHReelle(o1)
                                                 ,HHImaginaire(o1)
                                                 ,HHJmaginaire(o1)
                                                 ,HHKmaginaire(o1)
                                                 ,HHSmaginaire(o1)
                                                 ,HHTmaginaire(o1)
                                                 ,HHUmaginaire(o1)
                                                 ,HHVmaginaire(o1)
                                                 ,HHReelle(o2)
                                                 ,HHImaginaire(o2)
                                                 ,HHJmaginaire(o2)
                                                 ,HHKmaginaire(o2)
                                                 ,HHSmaginaire(o2)
                                                 ,HHTmaginaire(o2)
                                                 ,HHUmaginaire(o2)
                                                 ,HHVmaginaire(o2)
                                                  )
               )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  X = (A   .R(Q )) + (A   .I(Q )) + (...) + (A   .U(Q )) + (A   .v(Q ))    */
                                        /*                        X01    1       X02    1               X15    2       X16    2      */
                                        /*                                                                                           */


     EDITION_EVENTUELLE_DES_PROJECTIONS("X",coordonnee_projetee_X);
                                        /* Introduit le 20230317100800...                                                            */

     RETU(coordonnee_projetee_X);
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFy_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)))
DEFV(Argument,DEFV(Float,w1));
DEFV(Argument,DEFV(Float,w2));
DEFV(Argument,DEFV(Float,w3));
DEFV(Argument,DEFV(Float,w4));
DEFV(Argument,DEFV(Float,w5));
DEFV(Argument,DEFV(Float,w6));
DEFV(Argument,DEFV(Float,w7));
DEFV(Argument,DEFV(Float,w8));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(coordonnee_projetee_Y,FLOT__UNDEF));
                                        /* Coordonnee 'Y' projetee introduite explicitement le 20230317095341...                     */
     /*..............................................................................................................................*/
     CALS(FCalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8));
                                        /* Calcul, si besoin est, de {o1,o2}.                                                        */

     EGAL(coordonnee_projetee_Y
         ,COND(IL_FAUT(faire_une_projection_parallele)
              ,PROJECTION_PARALLELE_01_16D_3D_Y(HHReelle(o1)
                                               ,HHImaginaire(o1)
                                               ,HHJmaginaire(o1)
                                               ,HHKmaginaire(o1)
                                               ,HHSmaginaire(o1)
                                               ,HHTmaginaire(o1)
                                               ,HHUmaginaire(o1)
                                               ,HHVmaginaire(o1)
                                               ,HHReelle(o2)
                                               ,HHImaginaire(o2)
                                               ,HHJmaginaire(o2)
                                               ,HHKmaginaire(o2)
                                               ,HHSmaginaire(o2)
                                               ,HHTmaginaire(o2)
                                               ,HHUmaginaire(o2)
                                               ,HHVmaginaire(o2)
                                                )
              ,PROJECTION_PERSPECTIVE_01_16D_3D_Y(HHReelle(o1)
                                                 ,HHImaginaire(o1)
                                                 ,HHJmaginaire(o1)
                                                 ,HHKmaginaire(o1)
                                                 ,HHSmaginaire(o1)
                                                 ,HHTmaginaire(o1)
                                                 ,HHUmaginaire(o1)
                                                 ,HHVmaginaire(o1)
                                                 ,HHReelle(o2)
                                                 ,HHImaginaire(o2)
                                                 ,HHJmaginaire(o2)
                                                 ,HHKmaginaire(o2)
                                                 ,HHSmaginaire(o2)
                                                 ,HHTmaginaire(o2)
                                                 ,HHUmaginaire(o2)
                                                 ,HHVmaginaire(o2)
                                                  )
               )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  Y = (A   .R(Q )) + (A   .I(Q )) + (...) + (A   .U(Q )) + (A   .v(Q ))    */
                                        /*                        Y01    1       Y02    1               Y15    2       Y16    2      */
                                        /*                                                                                           */

     EDITION_EVENTUELLE_DES_PROJECTIONS("Y",coordonnee_projetee_Y);
                                        /* Introduit le 20230317100800...                                                            */

     RETU(coordonnee_projetee_Y);
     Eblock

EFonctionF

BFonctionF

DEFV(Local,DEFV(FonctionF,FFz_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)))
DEFV(Argument,DEFV(Float,w1));
DEFV(Argument,DEFV(Float,w2));
DEFV(Argument,DEFV(Float,w3));
DEFV(Argument,DEFV(Float,w4));
DEFV(Argument,DEFV(Float,w5));
DEFV(Argument,DEFV(Float,w6));
DEFV(Argument,DEFV(Float,w7));
DEFV(Argument,DEFV(Float,w8));
                                        /* Definition des coordonnees parametriques.                                                 */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(Float,INIT(coordonnee_projetee_Z,FLOT__UNDEF));
                                        /* Coordonnee 'Z' projetee introduite explicitement le 20230317095341...                     */
     /*..............................................................................................................................*/
     CALS(FCalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8));
                                        /* Calcul, si besoin est, de {o1,o2}.                                                        */

     EGAL(coordonnee_projetee_Z
         ,COND(IL_FAUT(faire_une_projection_parallele)
              ,PROJECTION_PARALLELE_01_16D_3D_Z(HHReelle(o1)
                                               ,HHImaginaire(o1)
                                               ,HHJmaginaire(o1)
                                               ,HHKmaginaire(o1)
                                               ,HHSmaginaire(o1)
                                               ,HHTmaginaire(o1)
                                               ,HHUmaginaire(o1)
                                               ,HHVmaginaire(o1)
                                               ,HHReelle(o2)
                                               ,HHImaginaire(o2)
                                               ,HHJmaginaire(o2)
                                               ,HHKmaginaire(o2)
                                               ,HHSmaginaire(o2)
                                               ,HHTmaginaire(o2)
                                               ,HHUmaginaire(o2)
                                               ,HHVmaginaire(o2)
                                                )
              ,PROJECTION_PERSPECTIVE_01_16D_3D_Z(HHReelle(o1)
                                                 ,HHImaginaire(o1)
                                                 ,HHJmaginaire(o1)
                                                 ,HHKmaginaire(o1)
                                                 ,HHSmaginaire(o1)
                                                 ,HHTmaginaire(o1)
                                                 ,HHUmaginaire(o1)
                                                 ,HHVmaginaire(o1)
                                                 ,HHReelle(o2)
                                                 ,HHImaginaire(o2)
                                                 ,HHJmaginaire(o2)
                                                 ,HHKmaginaire(o2)
                                                 ,HHSmaginaire(o2)
                                                 ,HHTmaginaire(o2)
                                                 ,HHUmaginaire(o2)
                                                 ,HHVmaginaire(o2)
                                                  )
               )
          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  Z = (A   .R(Q )) + (A   .I(Q )) + (...) + (A   .U(Q )) + (A   .v(Q ))    */
                                        /*                        Z01    1       Z02    1               Z15    2       Z16    2      */
                                        /*                                                                                           */

     EDITION_EVENTUELLE_DES_PROJECTIONS("Z",coordonnee_projetee_Z);
                                        /* Introduit le 20230317100800...                                                            */

     RETU(coordonnee_projetee_Z);
     Eblock

EFonctionF

#undef    EDITION_EVENTUELLE_DES_PROJECTIONS

#define   Fx_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)                                                                                       \
                    FFx_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)                                                                            \
                                        /* Definition de la fonction F (w1,w2,w3,w4,w5,w6,w7,w8).                                    */ \
                                        /*                            x                                                              */
#define   Fy_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)                                                                                       \
                    FFy_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)                                                                            \
                                        /* Definition de la fonction F (w1,w2,w3,w4,w5,w6,w7,w8).                                    */ \
                                        /*                            y                                                              */
#define   Fz_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)                                                                                       \
                    FFz_CalabiYau_8(w1,w2,w3,w4,w5,w6,w7,w8)                                                                            \
                                        /* Definition de la fonction F (w1,w2,w3,w4,w5,w6,w7,w8).                                    */ \
                                        /*                            z                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N I T I A L I S A T I O N S   R E L A T I V E S   A   L A   P S E U D O - P R O J E C T I O N  :                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   Pxyz_CalabiYau_8                                                                                                              \
                    Bblock                                                                                                              \
                    BLOC(VIDE;);                                                                                                        \
                    Eblock
                                        /* Initialisations specifiques a cette surface destinees a permettre la reinjection des      */
                                        /* trois pseudo-projections {Projection_de_Fx,Projection_de_Fy,Projection_de_Fz} dans        */
                                        /* 'v $xrs/project2D.11$K'...                                                                */



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.