_______________________________________________________________________________________________________________________________________
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        Q U E L Q U E S   F O N C T I O N S   U T I L E S   D A N S   L E S   N O M B R E S   C O M P L E X E S  :                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Dans ce fichier se trouve quelques                                                                             */
/*                  fonctions utiles definies pour les                                                                               */
/*                  nombres complexes.                                                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$ximcf/fonction$FON' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 19990616085943).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

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

#ifdef    FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES
DEFV(Common,DEFV(Logical,_______VERSION__ximcf_fonction_____ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES));
                                        /* Indicateur introduit le 20070129122544...                                                 */
#Aifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES
DEFV(Common,DEFV(Logical,_______VERSION__ximcf_fonction_____ARITHMETIQUE_DE_BASE_DANS_LES_NOMBRES_COMPLEXES));
                                        /* Indicateur introduit le 20070129132819...                                                 */
#Eifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_COMPLEXES

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A P P R O X I M A T I O N   D E   L A   F O N C T I O N   ' famma '                                                        */
/*        P A R   L A   F O R M U L E   D ' E U L E R - G A U S S  :                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    La fonction 'famma' est definie                                                                                */
/*                  dans le plan Complexe par la formule                                                                             */
/*                  de Euler-Gauss :                                                                                                 */
/*                                                                                                                                   */
/*                                                                              z                                                    */
/*                                                                             k                                                     */
/*                                      famma(z) =    limite    --------------------------------                                     */
/*                                                 k --> infini        z        z           z                                        */
/*                                                               (1 + ---)(1 + ---)...(1 + ---)                                      */
/*                                                                     1        2           k                                        */
/*                                                                                                                                   */
/*                  'z' etant different des entiers {0,-1,-2,...,-k}.                                                                */
/*                                                                                                                                   */
/*                    On notera que 'famma(z)' est en fait la                                                                        */
/*                  fonction factorielle generalisee (souvent                                                                        */
/*                  notee 'PI' -la lettre grecque-) et qu'elle                                                                       */
/*                  peut aussi s'ecrire :                                                                                            */
/*                                                                                                                                   */
/*                                      famma(z-1) = gamma(z)                                                                        */
/*                                                                                                                                   */
/*                  Le nom 'famma' est donc une contraction                                                                          */
/*                  de 'Factorielle' et de 'gAMMA'...                                                                                */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

#define   PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_FAMMA                                                                           \
                    UN                                                                                                                  \
                                        /* Valeur initiale de l'indice 'n'...                                                        */

DEFV(Common,DEFV(complexe,fFCfamma_Euler_Gauss_____valeur));
                                        /* Nombre complexe resultat. On notera qu'il est mis en 'Common' afin de pouvoir etre        */
                                        /* renvoye "directement" sans utiliser le 'RETU(...)'. En effet, a cause de la programmation */
                                        /* de 'FCegal(...)' ('v $ximcd/operator$FON FCegal'), lorsque le nombre Argument 'z1' est    */
                                        /* une fonction, celle-ci est appelee deux fois : la premiere pour 'Reelle(...)' et la       */
                                        /* seconde pour Imaginaire(...)'. La definition en 'Common' autorise la recuperation directe */
                                        /* du resultat...                                                                            */

DEFV(Common,DEFV(FonctionJ,fFCfamma_Euler_Gauss(z,dernier_indice_d_approximation_de_la_fonction_famma)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'famma(z)'.                                     */
DEFV(Argument,DEFV(Positive,dernier_indice_d_approximation_de_la_fonction_famma));
                                        /* Nombre d'iterations 'n' pour obtenir l'approximation souhaitee pour 'famma(z)'.           */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Cinitialisation(fFCfamma_Euler_Gauss_____valeur,FLOT__UNDEF,I0_Complexe);
                                        /* Au cas ou l'on demanderait un nombre incorrect d'iterations (0 par exemple), ou bien      */
                                        /* au cas ou la fonction serait declaree indefinie ci-apres...                               */

     Test(IFOU(IFET(IFET(fEST_ENTIER(Reelle(z))
                        ,IZLE(Reelle(z))
                         )
                   ,IZEQ(Imaginaire(z))
                    )
              ,IFOU(IFLT(dernier_indice_d_approximation_de_la_fonction_famma,PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_FAMMA)
                   ,IZLE(dernier_indice_d_approximation_de_la_fonction_famma)
                    )
               )
          )
                                        /* Les deux tests sur 'dernier_indice_d_approximation_de_la_fonction_famma' ne sont pas      */
                                        /* redondants car il est imperatif de detecter explicitement si 'n' est strictement          */
                                        /* positif (ce qui est necessaire) ou pas (ce qui est impossible...).                        */
          Bblock
                                        /* Cas ou 'z' est un nombre entier negatif : la fonction est alors indefinie ; elle vaut     */
                                        /* plus ou moins l'infini, suivant que l'on arrive par la droite ou par la gauche. Ainsi,    */
                                        /* pour :                                                                                    */
                                        /*                                                                                           */
                                        /*                  n E {0,1,2,...}                                                          */
                                        /*                                                                                           */
                                        /* on a :                                                                                    */
                                        /*                                                                                           */
                                        /*                  famma(-(2n)   a droite) = +infini                                        */
                                        /*                  famma(-(2n)   a gauche) = -infini                                        */
                                        /*                  famma(-(2n+1) a droite) = -infini                                        */
                                        /*                  famma(-(2n+1) a gauche) = +infini                                        */
                                        /*                                                                                           */
                                        /* d'ou le renvoi de la valeur 'UNDEF', ne sachant pas determiner le signe...                */
          Eblock
     ATes
          Bblock
          DEFV(Int,INIT(indice_d_iteration,PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_FAMMA));
                                        /* Indice de calcul du produit.                                                              */
          DEFV(complexe,z_numerateur);
          DEFV(complexe,z_denominateur);
                                        /* Nombres complexes de manoeuvre.                                                           */

          Cexponentielle(z_numerateur,dernier_indice_d_approximation_de_la_fonction_famma,z);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                        z                                                                  */
                                        /*                  z  = n                                                                   */
                                        /*                   N                                                                       */
                                        /*                                                                                           */

          Cegal(z_denominateur,C_____nombre_complexe_p1__0);
                                        /* Initialisation du produit du denominateur avec le nombre complexe (1,0).                  */

          Repe(NBRE(PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_FAMMA,dernier_indice_d_approximation_de_la_fonction_famma))
               Bblock
               DEFV(complexe,z_reduit_translate);
                                        /* Nombres complexes de manoeuvre.                                                           */

               Cforme_lineaire(z_reduit_translate,INVE(indice_d_iteration),z,FU);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                            z                                                              */
                                        /*                  z  = 1 + ---                                                             */
                                        /*                   T        k                                                              */
                                        /*                                                                                           */
               Cproduit(z_denominateur,z_denominateur,z_reduit_translate);
                                        /* Calcul iteratif de :                                                                      */
                                        /*                                                                                           */
                                        /*                             z        z           z                                        */
                                        /*                  z  = (1 + ---)(1 + ---)...(1 + ---)                                      */
                                        /*                   D         1        2           k                                        */
                                        /*                                                                                           */

               INCR(indice_d_iteration,I);
                                        /* Progression de l'indice d'iteration...                                                    */
               Eblock
          ERep

          Cquotient(fFCfamma_Euler_Gauss_____valeur,z_numerateur,z_denominateur);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                                       z                                                   */
                                        /*                                      n                                                    */
                                        /*                  z  = --------------------------------                                    */
                                        /*                   G          z        z           z                                       */
                                        /*                        (1 + ---)(1 + ---)...(1 + ---)                                     */
                                        /*                              1        2           n                                       */
                                        /*                                                                                           */
          Eblock
     ETes

     RETU(fFCfamma_Euler_Gauss_____valeur);
     Eblock

#undef    PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_FAMMA

EFonctionJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A P P R O X I M A T I O N   D E   L A   F O N C T I O N   ' gamma '                                                        */
/*        P A R   L A   F O R M U L E   D E   W E I E R S T R A S S  :                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    La fonction 'gamma' est definie                                                                                */
/*                  dans le plan Complexe par la formule                                                                             */
/*                  de Euler-Gauss :                                                                                                 */
/*                                                         k=infini                                                                  */
/*                                                          ------              z                                                    */
/*                                                           |  |            - ---                                                   */
/*                                          1           E.z  |  |        z      k                                                    */
/*                                      ---------- = z.e     |  | [(1 + ---)e     ]                                                  */
/*                                       gamma(z)                        k                                                           */
/*                                                            k=1                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  'z' etant different des  entiers {0,-1,-2,...,-k}                                                                */
/*                  et ou 'E' symbolise la constante d'Euler.                                                                        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

#define   PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_GAMMA                                                                           \
                    UN                                                                                                                  \
                                        /* Valeur initiale de l'indice 'n'...                                                        */

DEFV(Common,DEFV(complexe,fFCgamma_Weierstrass_____valeur));
                                        /* Nombre complexe resultat. On notera qu'il est mis en 'Common' afin de pouvoir etre        */
                                        /* renvoye "directement" sans utiliser le 'RETU(...)'. En effet, a cause de la programmation */
                                        /* de 'FCegal(...)' ('v $ximcd/operator$FON FCegal'), lorsque le nombre Argument 'z1' est    */
                                        /* une fonction, celle-ci est appelee deux fois : la premiere pour 'Reelle(...)' et la       */
                                        /* seconde pour Imaginaire(...)'. La definition en 'Common' autorise la recuperation directe */
                                        /* du resultat...                                                                            */

DEFV(Common,DEFV(FonctionJ,fFCgamma_Weierstrass(z,dernier_indice_d_approximation_de_la_fonction_gamma)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'gamma(z)'.                                     */
DEFV(Argument,DEFV(Positive,dernier_indice_d_approximation_de_la_fonction_gamma));
                                        /* Nombre d'iterations 'n' pour obtenir l'approximation souhaitee pour 'gamma(z)'.           */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(complexe,z_un_sur_gamma);
                                        /* Inverse du nombre complexe resultat.                                                      */
     /*..............................................................................................................................*/
     Cinitialisation(fFCgamma_Weierstrass_____valeur,FLOT__UNDEF,I0_Complexe);
                                        /* Au cas ou l'on demanderait un nombre incorrect d'iterations (0 par exemple), ou bien      */
                                        /* au cas ou la fonction serait declaree indefinie ci-apres...                               */

     Test(IFOU(IFET(IFET(fEST_ENTIER(Reelle(z))
                        ,IZLE(Reelle(z))
                         )
                   ,IZEQ(Imaginaire(z))
                    )
              ,IFOU(IFLT(dernier_indice_d_approximation_de_la_fonction_gamma,PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_GAMMA)
                   ,IZLE(dernier_indice_d_approximation_de_la_fonction_gamma)
                    )
               )
          )
                                        /* Les deux tests sur 'dernier_indice_d_approximation_de_la_fonction_gamma' ne sont pas      */
                                        /* redondants car il est imperatif de detecter explicitement si 'n' est strictement          */
                                        /* positif (ce qui est necessaire) ou pas (ce qui est impossible...).                        */
          Bblock
                                        /* Cas ou 'z' est un nombre entier negatif : la fonction est alors indefinie.                */
          Eblock
     ATes
          Bblock
          DEFV(Int,INIT(indice_d_iteration,PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_GAMMA));
                                        /* Indice de calcul du produit.                                                              */
          DEFV(complexe,z_Euler);
          DEFV(complexe,z_exponentielle);
                                        /* Nombres complexes de manoeuvre.                                                           */

          Cforme_lineaire(z_Euler,EULER,z,FZERO);
          Cexponentielle(z_exponentielle,EN,z_Euler);
          Cproduit(z_un_sur_gamma,z,z_exponentielle);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                     E.z                                                                   */
                                        /*                  z.e                                                                      */
                                        /*                                                                                           */

          Repe(NBRE(PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_GAMMA,dernier_indice_d_approximation_de_la_fonction_gamma))
               Bblock
               DEFV(complexe,z_reduit);
               DEFV(complexe,z_reduit_translate);
                                        /* Nombres complexes de manoeuvre.                                                           */

               Cforme_lineaire(z_reduit,INVE(indice_d_iteration),z,FZERO);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                   z                                                                       */
                                        /*                  ---                                                                      */
                                        /*                   k                                                                       */
                                        /*                                                                                           */
               Cforme_lineaire(z_reduit_translate,FU,z_reduit,FU);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                       z                                                                   */
                                        /*                  1 + ---                                                                  */
                                        /*                       k                                                                   */
                                        /*                                                                                           */
               Cproduit(z_un_sur_gamma,z_un_sur_gamma,z_reduit_translate);
                                        /* Calcul iteratif de :                                                                      */
                                        /*                                                                                           */
                                        /*                        z        z           z                                             */
                                        /*                  (1 + ---)(1 + ---)...(1 + ---)                                           */
                                        /*                        1        2           k                                             */
                                        /*                                                                                           */
               Cforme_lineaire(z_reduit,NEGA(FU),z_reduit,FZERO);
               Cexponentielle(z_exponentielle,EN,z_reduit);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                       z                                                                   */
                                        /*                    - ---                                                                  */
                                        /*                       k                                                                   */
                                        /*                  e                                                                        */
                                        /*                                                                                           */
               Cproduit(z_un_sur_gamma,z_un_sur_gamma,z_exponentielle);
                                        /* Calcul iteratif de l'inverse de 'gamma(z)'.                                               */

               INCR(indice_d_iteration,I);
                                        /* Progression de l'indice d'iteration...                                                    */
               Eblock
          ERep

          Cquotient(fFCgamma_Weierstrass_____valeur,C_____nombre_complexe_p1__0,z_un_sur_gamma);
                                        /* Calcul final de 'gamma' a partir de son inverse...                                        */
          Eblock
     ETes

     RETU(fFCgamma_Weierstrass_____valeur);
     Eblock

#undef    PREMIER_INDICE_D_APPROXIMATION_DE_LA_FONCTION_GAMMA

EFonctionJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A P P R O X I M A T I O N   D E   L A   F O N C T I O N   ' famma '                                                        */
/*        A   L ' A I D E   D E   S O N   P R O L O N G E M E N T   A N A L Y T I Q U E  :                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    La fonction 'famma' est definie                                                                                */
/*                  dans le plan Complexe par :                                                                                      */
/*                                                                                                                                   */
/*                                                                              z                                                    */
/*                                                                             n                                                     */
/*                                      famma(z) =    limite    --------------------------------                                     */
/*                                                 n --> infini        z        z           z                                        */
/*                                                               (1 + ---)(1 + ---)...(1 + ---)                                      */
/*                                                                     1        2           n                                        */
/*                                                                                                                                   */
/*                  Il est possible de faire un prolongement                                                                         */
/*                  analytique qui converge "partout" en ecrivant                                                                    */
/*                  (d'apres 'RIEMANN'S ZETA FUNCTION de H.M Edwards,                                                                */
/*                  Academic Press, New-York, 1974, reference BCX PAM-AC58,                                                          */
/*                  page 106) :                                                                                                      */
/*                                                                                                                                   */
/*                                                            1                log(2p)                                               */
/*                                      log(famma(z)) = (z + ---)log(z) - z + ---------                                              */
/*                                                            2                   2                                                  */
/*                                                                                                                                   */
/*                                                        k=V                                                                        */
/*                                                      _______                                                                      */
/*                                                      \             B                                                              */
/*                                                       \             2k                                                            */
/*                                                    +  /      ---------------                                                      */
/*                                                      /______           2k-1                                                       */
/*                                                               2k(2k-1)z                                                           */
/*                                                        k=1                                                                        */
/*                                                                                                                                   */
/*                                                    + epsilon(z,N,V)                                                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  Enfin, 'epsilon' sera neglige. Au passage, il                                                                    */
/*                  s'agit de la methode de sommation de Euler-Maclaurin.                                                            */
/*                                                                                                                                   */
/*                    Lorsqu'il y risque de divergence (lorsque                                                                      */
/*                  'Reelle(z)' est inferieure ou egale a 1), on                                                                     */
/*                  utilise l'equation fonctionelle :                                                                                */
/*                                                                                                                                   */
/*                                                      famma(z+n)                                                                   */
/*                                      famma(z) = ---------------------                                                             */
/*                                                  (z+1).(z+2)...(z+n)                                                              */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  qui permet de translater 'z' d'autant que                                                                        */
/*                  necessaire...                                                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Float,SINT(fFCfamma_sommation_Euler_MacLaurin_____precision_du_calcul,PARE(1.0e-3))));
                                        /* Precision demandee pour calculer la fonction 'famma'. ATTENTION, une valeur plus petite   */
                                        /* de la precision cree des problemes lors des calculs de factorielles...                    */

DEFV(Common,DEFV(Logical,SINT(fFCfamma_sommation_Euler_MacLaurin_____editer_les_parametres_de_calcul,FAUX)));
                                        /* Pour editer eventuellement {N,V,k}.                                                       */

#define   VALEUR_MINIMALE_DE_indice_k_LORS_DU_CALCUL_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin                                  \
                    UN                                                                                                                  \
                                        /* Valeur initiale de l'indice 'k'...                                                        */

DEFV(Common,DEFV(Int,SINT(fFCfamma_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
                         ,VALEUR_MINIMALE_DE_indice_k_LORS_DU_CALCUL_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin
                          )
                 )
     );
DEFV(Common,DEFV(Int,SINT(fFCfamma_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
                         ,INFINI
                          )
                 )
     );
                                        /* Afin de borner la valeur de 'V'. Ce dispositif est essentiel dans le cas ou la fonction   */
                                        /* 'fFCfamma_sommation_Euler_MacLaurin(...)' est appelee plusieurs fois de suite dans un     */
                                        /* pave du plan Complexe ('v $xrc/gamma.21$K fFCfamma_sommation_Euler_MacLaurin') de facon   */
                                        /* a garantir que tous les calculs se font dans les memes conditions, assurant  ainsi la     */
                                        /* "continuite"...                                                                           */

#define   SEUIL_DE_DIVERGENCE_DE_LA_SOMMATION_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin                                         \
                    GRO4(FU)                                                                                                            \
                                        /* Seuil a tester par rapport a 'Reelle(z)'. On notera que 1 devrait suffir puisque l'on     */ \
                                        /* fait par la suite un test strictement superieur a cette constante, mais il semble qu'il   */ \
                                        /* vaille mieux etre prudent puisque l'on voit des ouvrages ou il est dit que cette formule  */ \
                                        /* vaut pour des "grands" z...                                                               */

DEFV(Common,DEFV(complexe,fFCfamma_sommation_Euler_MacLaurin_____valeur));
                                        /* Nombre complexe resultat. On notera qu'il est mis en 'Common' afin de pouvoir etre        */
                                        /* renvoye "directement" sans utiliser le 'RETU(...)'. En effet, a cause de la programmation */
                                        /* de 'FCegal(...)' ('v $ximcd/operator$FON FCegal'), lorsque le nombre Argument 'z1' est    */
                                        /* une fonction (et par exemple 'fFCfamma_sommation_Euler_MacLaurin(...)'), celle-ci est     */
                                        /* appelee deux fois : la premiere pour 'Reelle(...)' et la seconde pour Imaginaire(...)'.   */
                                        /* La definition en 'Common' autorise la recuperation directe du resultat...                 */

DEFV(Common,DEFV(FonctionJ,fFCfamma_sommation_Euler_MacLaurin(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'famma(z)'.                                     */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IFLT(fFCfamma_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
              ,fFCfamma_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
               )
          )
          Bblock
          PRINT_ERREUR("la relation d'ordre entre les bornes de 'V' est incorrecte, elles sont donc permutees");
          iSWAP(fFCfamma_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
               ,fFCfamma_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
                );
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     Test(CTestIFEQ(z,C_____nombre_complexe__0__0))
                                        /* Cas du pole (0,0) :                                                                       */
          Bblock
          Cinitialisation(fFCfamma_sommation_Euler_MacLaurin_____valeur,F_PETIT_INFINI,I0_Complexe);
                                        /* La valeur de 'famma' est alors (infini,0).                                                */
          Eblock
     ATes
          Bblock
          DEFV(Int,INIT(nombre_V
                       ,TRON(ADD2(MAX2(UN,NEGA(ENTE(MOIT(Reelle(z))))),UN)
                            ,MAX2(fFCfamma_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
                                 ,VALEUR_MINIMALE_DE_indice_k_LORS_DU_CALCUL_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin
                                  )
                            ,fFCfamma_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
                             )
                        )
               );
                                        /* Definition du nombre 'V' en le majorant un petit peu, puis en le bornant... ATTENTION,    */
                                        /* 'VALEUR_MINIMALE_DE_indice_k_LORS_DU_CALCUL_DE_LA_FONCTION_fFCfamma_sommation_Euler_...'  */
                                        /* est utilise ici correctement...                                                           */
          DEFV(Logical,INIT(continuer_l_approximation_de_la_fonction_famma,VRAI));
                                        /* Indicateur de convergence...                                                              */

          DEFV(Int,INIT(indice_k,VALEUR_MINIMALE_DE_indice_k_LORS_DU_CALCUL_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin));
                                        /* Indices de sommation de la fonction 'famma'.                                              */

          DEFV(complexe,z_effectif);
          DEFV(complexe,z_diviseur_final_de_fFCfamma_sommation_Euler_MacLaurin);
          DEFV(complexe,log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur);
          DEFV(complexe,z_plus_un_demi);
          DEFV(complexe,log_de_z);
          DEFV(complexe,z_terme_courant);
                                        /* Nombres complexes de manoeuvre.                                                           */

          Cegal(z_diviseur_final_de_fFCfamma_sommation_Euler_MacLaurin,C_____nombre_complexe_p1__0);
                                        /* Le diviseur final de 'log(famma(z+n))' sera a priori le nombre (1,0).                     */

          Test(IFGT(Reelle(z),SEUIL_DE_DIVERGENCE_DE_LA_SOMMATION_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin))
               Bblock
               Cegal(z_effectif,z);
                                        /* Dans le cas ou il n'y a pas de risque de divergences avec l'inverse de 'z', on calcule    */
                                        /* 'famma(z)'.                                                                               */
               Eblock
          ATes
               Bblock
               DEFV(Int,INIT(indice_n,UN));
                                        /* Indices de sommation de la fonction 'famma'.                                              */
               DEFV(Int,INIT(translation_entiere_z
                            ,ADD2(INTE(SOUS(SEUIL_DE_DIVERGENCE_DE_LA_SOMMATION_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin
                                           ,Reelle(z)
                                            )
                                       )
                                 ,UN
                                  )
                             )
                    );
               Cforme_lineaire(z_effectif,FU,z,FLOT(translation_entiere_z));
                                        /* On va translater le 'z' d'une certaine quantite entiere suffisante pour assurer la        */
                                        /* convergence. En fait, on va calculer 'log(famma(z+n))', sachant que :                     */
                                        /*                                                                                           */
                                        /*                                  famma(z+n)                                               */
                                        /*                  famma(z) = ---------------------                                         */
                                        /*                              (z+1).(z+2)...(z+n)                                          */
                                        /*                                                                                           */

               Repe(translation_entiere_z)
                    Bblock
                    Cforme_lineaire(z_terme_courant,FU,z,FLOT(indice_n));
                    Cproduit(z_diviseur_final_de_fFCfamma_sommation_Euler_MacLaurin
                            ,z_diviseur_final_de_fFCfamma_sommation_Euler_MacLaurin
                            ,z_terme_courant
                             );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                  (z+1).(z+2)...(z+n)                                                      */
                                        /*                                                                                           */

                    INCR(indice_n,I);
                                        /* Progression de l'indice d'iteration...                                                    */
                    Eblock
               ERep
               Eblock
          ETes

          Cforme_lineaire(z_plus_un_demi,FU,z_effectif,FDU);
          Clogarithme(log_de_z,z_effectif);
          Cproduit(log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur,z_plus_un_demi,log_de_z);
          Cdifference(log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur
                     ,log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur
                     ,z_effectif
                      );
          Cforme_lineaire(log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur
                         ,FU
                         ,log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur
                         ,MOIT(LOGX(CERCLE_TRIGONOMETRIQUE))
                          );
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                                        1                log(2p)                           */
                                        /*                  log(famma(Z)) = (Z + ---)log(Z) - Z + ---------                          */
                                        /*                                        2                   2                              */
                                        /*                                                                                           */
                                        /* en posant :                                                                               */
                                        /*                                                                                           */
                                        /*                  Z = z + n                                                                */
                                        /*                                                                                           */

          Tant(IL_FAUT(continuer_l_approximation_de_la_fonction_famma))
               Bblock
               DEFV(complexe,z_terme_courant);
               DEFV(complexe,z_produit_courant);
               DEFV(complexe,z_puissance_moins_2k_plus_un);
                                        /* Nombres complexes de manoeuvre.                                                           */
               DEFV(Float,INIT(Bernoulli_2k,calcul_du_nombre_de_Bernoulli_B2k(indice_k)));
                                        /* Valeur du nombre de Bernoulli 'B(2k)'.                                                    */

               Cegal(z_produit_courant,C_____nombre_complexe_p1__0);
                                        /* Initialisation du produit courant vec le nombre complexe (1,0).                           */

               Repe(NBRE(VALEUR_MINIMALE_DE_indice_k_LORS_DU_CALCUL_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin
                        ,SOUS(DOUB(indice_k),UN)
                         )
                    )
                    Bblock
                    Cproduit(z_produit_courant,z_produit_courant,z_effectif);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                   p=2k-1                                                                  */
                                        /*                  ________                                                                 */
                                        /*                   |    |                                                                  */
                                        /*                   |    |                                                                  */
                                        /*                   |    | z                                                                */
                                        /*                   |    |                                                                  */
                                        /*                                                                                           */
                                        /*                     p=1                                                                   */
                                        /*                                                                                           */
                    Eblock
               ERep

               Test(IZNE(Cmodule(z_produit_courant)))
                    Bblock
                    Cforme_lineaire(z_produit_courant,MUL2(DOUB(indice_k),SOUS(DOUB(indice_k),UN)),z_produit_courant,FZERO);
                    Cinitialisation(z_terme_courant,Bernoulli_2k,I0_Complexe);
                    Cquotient(z_terme_courant,z_terme_courant,z_produit_courant);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                                                                                           */
                                        /*                        B                                                                  */
                                        /*                         2k                                                                */
                                        /*                  ---------------                                                          */
                                        /*                            2k-1                                                           */
                                        /*                   2k(2k-1)z                                                               */
                                        /*                                                                                           */
                                        /*                                                                                           */
                    Eblock
               ATes
                    Bblock
                    Cinitialisation(z_terme_courant,F_PETIT_INFINI,F_PETIT_INFINI);
                                        /* Cas d'une division par (0,0)...                                                           */
                    Eblock
               ETes

               Csomme(log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur
                     ,log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur,z_terme_courant
                      );
                                        /* Cumul dans l'approximation du logarithme de 'famma(z+n)'.                                 */

               Test(IFET(IFGT(indice_k,nombre_V)
                        ,IFLE(Cmodule(z_terme_courant)
                             ,fFCfamma_sommation_Euler_MacLaurin_____precision_du_calcul
                              )
                         )
                    )
                                        /* On considere que l'erreur commise est de l'ordre du terme courant...                      */
                    Bblock
                    EGAL(continuer_l_approximation_de_la_fonction_famma,FAUX);
                                        /* Des que la precision est atteinte, on arrete d'iterer...                                  */
                    Eblock
               ATes
                    Bblock
                    INCR(indice_k,I);
                                        /* Tant que la precision n'est pas atteinte, on itere...                                     */
                    Eblock
               ETes
               Eblock
          ETan

          Cexponentielle(fFCfamma_sommation_Euler_MacLaurin_____valeur,EN,log_de_fFCfamma_sommation_Euler_MacLaurin_____valeur);
                                        /* Et enfin, calcul de 'famma(z+n)' par exponentiation de son logarithme...                  */
          Cquotient(fFCfamma_sommation_Euler_MacLaurin_____valeur
                   ,fFCfamma_sommation_Euler_MacLaurin_____valeur
                   ,z_diviseur_final_de_fFCfamma_sommation_Euler_MacLaurin
                    );
                                        /* Et calcul final de 'famma(z)' en utilisant l'equation fonctionnelle :                     */
                                        /*                                                                                           */
                                        /*                                  famma(z+n)                                               */
                                        /*                  famma(z) = ---------------------                                         */
                                        /*                              (z+1).(z+2)...(z+n)                                          */
                                        /*                                                                                           */

          Test(IL_FAUT(fFCfamma_sommation_Euler_MacLaurin_____editer_les_parametres_de_calcul))
               Bblock
               CAL3(Prme4("Le calcul de la fonction 'famma(%+.^^^,%+.^^^)=(%+.^^^,%+.^^^)' a ete fait avec :\n"
                         ,Reelle(z)
                         ,Imaginaire(z)
                         ,Reelle(fFCfamma_sommation_Euler_MacLaurin_____valeur)
                         ,Imaginaire(fFCfamma_sommation_Euler_MacLaurin_____valeur)
                          )
                    );
                                        /* Edition completee le 20240625171035...                                                    */
               CAL3(Prme1("V=%d\n",nombre_V));
               CAL3(Prme1("k=%d\n",indice_k));
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ETes

     RETU(fFCfamma_sommation_Euler_MacLaurin_____valeur);
     Eblock

#undef    SEUIL_DE_DIVERGENCE_DE_LA_SOMMATION_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin
#undef    VALEUR_MINIMALE_DE_indice_k_LORS_DU_CALCUL_DE_LA_FONCTION_fFCfamma_sommation_Euler_MacLaurin

EFonctionJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A P P R O X I M A T I O N   D E   L A   F O N C T I O N   ' gamma '  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    La fonction 'gamma' est definie                                                                                */
/*                  dans le plan Complexe par :                                                                                      */
/*                                                                                                                                   */
/*                                      gamma(z) = famma(z-1)                                                                        */
/*                                                                                                                                   */
/*                  avec, en particulier :                                                                                           */
/*                                                                                                                                   */
/*                                      gamma(n) = (n-1)!                                                                            */
/*                                                                                                                                   */
/*                  pour 'n' entier positif...                                                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(complexe,fFCgamma_sommation_Euler_MacLaurin_____valeur));
                                        /* Nombre complexe resultat. On notera qu'il est mis en 'Common' afin de pouvoir etre        */
                                        /* renvoye "directement" sans utiliser le 'RETU(...)'. En effet, a cause de la programmation */
                                        /* de 'FCegal(...)' ('v $ximcd/operator$FON FCegal'), lorsque le nombre Argument 'z1' est    */
                                        /* une fonction, celle-ci est appelee deux fois : la premiere pour 'Reelle(...)' et la       */
                                        /* seconde pour Imaginaire(...)'. La definition en 'Common' autorise la recuperation directe */
                                        /* du resultat...                                                                            */
DEFV(Common,DEFV(Float,SINT(fFCgamma_sommation_Euler_MacLaurin_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCgamma_sommation_Euler_MacLaurin_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCgamma_sommation_Euler_MacLaurin_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCgamma_sommation_Euler_MacLaurin_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCgamma_sommation_Euler_MacLaurin(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'gamma(z)'.                                     */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(complexe,z_moins_un);
                                        /* Nombres complexes de manoeuvre.                                                           */
     /*..............................................................................................................................*/
     Cforme_lineaire(z_moins_un,FU,z,NEGA(FU));
     CALS(fFCfamma_sommation_Euler_MacLaurin(z_moins_un));
     Cegal(fFCgamma_sommation_Euler_MacLaurin_____valeur,fFCfamma_sommation_Euler_MacLaurin_____valeur);
                                        /* Calcul de 'famma(z-1)'.                                                                   */

     RETU(fFCgamma_sommation_Euler_MacLaurin_____valeur);
     Eblock

EFonctionJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A P P R O X I M A T I O N   D E   L A   F O N C T I O N   ' zeta '                                                         */
/*        A   L ' A I D E   D E   S O N   P R O L O N G E M E N T   A N A L Y T I Q U E  :                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    La fonction 'zeta' est definie                                                                                 */
/*                  dans le plan Complexe par :                                                                                      */
/*                                                                                                                                   */
/*                                               n=+infini                                                                           */
/*                                                _______                                                                            */
/*                                                \                                                                                  */
/*                                                 \       -z                                                                        */
/*                                      zeta(z) =  /      n                                                                          */
/*                                                /______                                                                            */
/*                                                                                                                                   */
/*                                                  n=1                                                                              */
/*                                                                                                                                   */
/*                  Malheureusement, cette serie ne converge que pour :                                                              */
/*                                                                                                                                   */
/*                                      Reelle(z) > 1                                                                                */
/*                                                                                                                                   */
/*                  Il est possible de faire un prolongement                                                                         */
/*                  analytique qui converge "partout" en ecrivant                                                                    */
/*                  (d'apres 'RIEMANN'S ZETA FUNCTION de H.M Edwards,                                                                */
/*                  Academic Press, New-York, 1974, reference BCX PAM-AC58,                                                          */
/*                  page 114) :                                                                                                      */
/*                                                                                                                                   */
/*                                                 n=N-1                                                                             */
/*                                                _______                                                                            */
/*                                                \                                                                                  */
/*                                                 \       -z                                                                        */
/*                                      zeta(z) =  /      n                                                                          */
/*                                                /______                                                                            */
/*                                                                                                                                   */
/*                                                  n=1                                                                              */
/*                                                                                                                                   */
/*                                                  1-z      -z                                                                      */
/*                                                 N        N                                                                        */
/*                                              + ------ + -----                                                                     */
/*                                                 z-1       2                                                                       */
/*                                                                                                                                   */
/*                                                  k=V                        p=2k-2                                                */
/*                                                _______                     ________                                               */
/*                                                \          B                 |    |                                                */
/*                                                 \          2k    -z-(2k)+1  |    |                                                */
/*                                              +  /      [-------.N           |    | (z+p)]                                         */
/*                                                /______   (2k)!              |    |                                                */
/*                                                                                                                                   */
/*                                                  k=1                          p=0                                                 */
/*                                                                                                                                   */
/*                                              + epsilon(z,N,V)                                                                     */
/*                                                                                                                                   */
/*                  a condition de choisir :                                                                                         */
/*                                                                                                                                   */
/*                                      N ~ |z|                                                                                      */
/*                                                                                                                                   */
/*                  et 'V' tel que :                                                                                                 */
/*                                                                                                                                   */
/*                                      Reelle(z+2V+1) > 1                                                                           */
/*                                                                                                                                   */
/*                  soit :                                                                                                           */
/*                                                                                                                                   */
/*                                      V >= MAX2(1,-Reelle(z)/2)                                                                    */
/*                                                                                                                                   */
/*                  Enfin, 'epsilon' sera neglige. Au passage, il                                                                    */
/*                  s'agit de la methode de sommation de Euler-Maclaurin.                                                            */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    Pour les 'z' tels que 'Reelle(z) est negatif,                                                                  */
/*                  on utilisera l'equation fonctionnelle :                                                                          */
/*                                                                                                                                   */
/*                                                              z-1       z.p                                                        */
/*                                      zeta(z) = famma(-z)(2.p)   2.sin(-----)zeta(1-z)                                             */
/*                                                                         2                                                         */
/*                                                                                                                                   */
/*                  afin d'eviter des instabilites numeriques...                                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    La fonction 'zeta' de Riemann possede un                                                                       */
/*                  pole de residu 1 : le nombre z=1. Elle possede                                                                   */
/*                  une infinite de zeros "triviaux" qui sont les                                                                    */
/*                  nombres entiers negatifs et pairs. Elle possede                                                                  */
/*                  aussi une infinite de zeros non triviaux de la                                                                   */
/*                  forme :                                                                                                          */
/*                                                                                                                                   */
/*                                           1                                                                                       */
/*                                      z = --- + h.i                                                                                */
/*                                           2                                                                                       */
/*                                                                                                                                   */
/*                  sachant que le fait que la partie Reelle soit                                                                    */
/*                  constante (et egale a 1/2) constitue ce que l'on                                                                 */
/*                  appelle l'hypothese de Riemann (non encore demontree                                                             */
/*                  a la date de 19990607172302). Voici les 6 premieres                                                              */
/*                  valeurs positives de 'h' :                                                                                       */
/*                                                                                                                                   */
/*                                      14.134725...                                                                                 */
/*                                      21.02...                                                                                     */
/*                                      25.01...                                                                                     */
/*                                      30.42...                                                                                     */
/*                                      32.93...                                                                                     */
/*                                      37.58...                                                                                     */
/*                                                                                                                                   */
/*                  la dixieme etant egale a 49.773832. On n'oubliera                                                                */
/*                  pas la propriete :                                                                                               */
/*                                                                                                                                   */
/*                                           ---    ---------                                                                        */
/*                                      zeta( z ) =  zeta(z)                                                                         */
/*                                                                                                                                   */
/*                  qui implique que si 'z' est un zero, le conjugue                                                                 */
/*                  de 'z' est un zero, son conjugue l'est aussi...                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    Donnons quelques valeurs particulieres de                                                                      */
/*                  la fonction 'zeta' de Riemann :                                                                                  */
/*                                                                                                                                   */
/*                                                    2.n-1                                                                          */
/*                                                   2        2.n                                                                    */
/*                                      zeta(2.n) = --------.p   B                                                                   */
/*                                                   (2.n)!       n                                                                  */
/*                                                                                                                                   */
/*                  ou 'Bn' designe les nombres de Bernoulli                                                                         */
/*                  et 'p' le nombre 'pi'. On a en particulier :                                                                     */
/*                                                                                                                                   */
/*                                                   2                                                                               */
/*                                                  p                                                                                */
/*                                      zeta(+2) = ----                                                                              */
/*                                                  6                                                                                */
/*                                                                                                                                   */
/*                                                   4                                                                               */
/*                                                  p                                                                                */
/*                                      zeta(+4) = ----                                                                              */
/*                                                  90                                                                               */
/*                                                                                                                                   */
/*                    Enfin, on notera que :                                                                                         */
/*                                                                                                                                   */
/*                                      zeta(+3) = 1.20205...                                                                        */
/*                                                                                                                                   */
/*                                      zeta(-1) = -1/12    d'ou : 1+2+3+4+... = -1/12 (Ramanujan, 1910)                             */
/*                                                                                                                                   */
/*                  ce qui va permettre de faire des tests de                                                                        */
/*                  validite...                                                                                                      */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Float,SINT(fFCzeta_sommation_Euler_MacLaurin_____precision_du_calcul,PARE(1.0e-3))));
                                        /* Precision demandee pour calculer la fonction 'zeta'. ATTENTION, une valeur plus petite    */
                                        /* de la precision cree des problemes lors des calculs de factorielles (explicitement        */
                                        /* dans 'factorielle_non_recursive_sans_validation(...)' ou de facon plus discrete lors      */
                                        /* de calculs de produits tel celui concernant '(z+p)'...                                    */
DEFV(Common,DEFV(Positive,SINT(fFCzeta_sommation_Euler_MacLaurin_____time_out,MILLE)));
                                        /* Lors de la mise au point de 'v $xiirc/ZETA_21_IdM' sur '$LACT1A', il est apparu que pour  */
                                        /* X=786 et Y=439 le processus bouclait via 'continuer_l_approximation_de_la_fonction_zeta'. */
                                        /* Un decompteur a donc ete introduit le 20240625121302 pour eviter cela...                  */

DEFV(Common,DEFV(Float,SINT(fFCzeta_sommation_Euler_MacLaurin_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCzeta_sommation_Euler_MacLaurin_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCzeta_sommation_Euler_MacLaurin_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCzeta_sommation_Euler_MacLaurin_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(Logical,SINT(fFCzeta_sommation_Euler_MacLaurin_____editer_les_parametres_de_calcul,FAUX)));
                                        /* Pour editer eventuellement {N,V,k}.                                                       */

#define   VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin                                   \
                    UN                                                                                                                  \
                                        /* Valeur initiale de l'indice 'n'...                                                        */

DEFV(Common,DEFV(Int,SINT(fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_N_lors_du_calcul
                         ,VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin
                          )
                 )
     );
DEFV(Common,DEFV(Int,SINT(fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_N_lors_du_calcul
                         ,INFINI
                          )
                 )
     );
                                        /* Afin de borner la valeur de 'N'. Ce dispositif est essentiel dans le cas ou la fonction   */
                                        /* 'fFCfamma_sommation_Euler_MacLaurin(...)' est appelee plusieurs fois de suite dans un     */
                                        /* pave du plan Complexe ('v $xrc/gamma.21$K fFCfamma_sommation_Euler_MacLaurin') de facon   */
                                        /* a garantir que tous les calculs se font dans les memes conditions, assurant  ainsi la     */
                                        /* "continuite"...                                                                           */

DEFV(Common,DEFV(Int,SINT(fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
                         ,VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin
                          )
                 )
     );
DEFV(Common,DEFV(Int,SINT(fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
                         ,INFINI
                          )
                 )
     );
                                        /* Afin de borner la valeur de 'V'. Ce dispositif est essentiel dans le cas ou la fonction   */
                                        /* 'fFCfamma_sommation_Euler_MacLaurin(...)' est appelee plusieurs fois de suite dans un     */
                                        /* pave du plan Complexe ('v $xrc/gamma.21$K fFCfamma_sommation_Euler_MacLaurin') de facon   */
                                        /* a garantir que tous les calculs se font dans les memes conditions, assurant  ainsi la     */
                                        /* "continuite"...                                                                           */

#define   SEUIL_DE_DIVERGENCE_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin                                                \
                    FZERO                                                                                                               \
                                        /* Seuil a tester par rapport a 'Reelle(z)'. On notera que 1 devrait suffir puisque l'on     */ \
                                        /* fait par la suite un test strictement superieur a cette constante, mais il semble qu'il   */ \
                                        /* vaille mieux etre prudent puisque l'on voit des ouvrages ou il est dit que cette formule  */ \
                                        /* vaut pour des "grands" z...                                                               */

DEFV(Common,DEFV(complexe,fFCzeta_sommation_Euler_MacLaurin_____valeur));
                                        /* Nombre complexe resultat. On notera qu'il est mis en 'Common' afin de pouvoir etre        */
                                        /* renvoye "directement" sans utiliser le 'RETU(...)'. En effet, a cause de la programmation */
                                        /* de 'FCegal(...)' ('v $ximcd/operator$FON FCegal'), lorsque le nombre Argument 'z1' est    */
                                        /* une fonction (et par exemple 'fFCzeta_sommation_Euler_MacLaurin(...)'), celle-ci est      */
                                        /* appelee deux fois : la premiere pour 'Reelle(...)' et la seconde pour Imaginaire(...)'.   */
                                        /* La definition en 'Common' autorise la recuperation directe du resultat...                 */

DEFV(Common,DEFV(FonctionJ,fFCzeta_sommation_Euler_MacLaurin(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'zeta(z)'.                                      */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IFLT(fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_N_lors_du_calcul
              ,fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_N_lors_du_calcul
               )
          )
          Bblock
          PRINT_ERREUR("la relation d'ordre entre les bornes de 'N' est incorrecte, elles sont donc permutees");
          iSWAP(fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_N_lors_du_calcul
               ,fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_N_lors_du_calcul
                );
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     Test(IFLT(fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
              ,fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
               )
          )
          Bblock
          PRINT_ERREUR("la relation d'ordre entre les bornes de 'V' est incorrecte, elles sont donc permutees");
          iSWAP(fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
               ,fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
                );
          Eblock
     ATes
          Bblock
          Eblock
     ETes

     Test(CTestIFEQ(z,C_____nombre_complexe_p1__0))
                                        /* Cas du pole (1,0) :                                                                       */
          Bblock
          Cinitialisation(fFCzeta_sommation_Euler_MacLaurin_____valeur,F_PETIT_INFINI,I0_Complexe);
                                        /* La valeur de 'zeta' est alors (infini,0).                                                 */
          Eblock
     ATes
          Bblock
          DEFV(Int,INIT(nombre_N,UNDEF));
                                        /* Definition du nombre 'N' en le majorant un petit peu, puis en le bornant... On notera     */
                                        /* la valeur minimale de 2 necessaire car la premiere somme que l'on fait va de 1 a N-1.     */
          DEFV(Int,INIT(nombre_V,UNDEF));
                                        /* Definition du nombre 'V' en le majorant un petit peu, puis en le bornant... ATTENTION,    */
                                        /* 'VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_...' est     */
                                        /* utilise ici correctement...                                                               */
          DEFV(Logical,INIT(continuer_l_approximation_de_la_fonction_zeta,VRAI));
          DEFV(Positive,INIT(time_out_d_approximation_de_la_fonction_zeta,fFCzeta_sommation_Euler_MacLaurin_____time_out));
                                        /* Indicateur de convergence...                                                              */

          DEFV(Int,INIT(indice_n,VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin));
          DEFV(Int,INIT(indice_k,VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin));
                                        /* Indices de sommation de la fonction 'zeta'.                                               */

          DEFV(complexe,z_effectif);
          DEFV(complexe,z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin);
          DEFV(complexe,moins_z);
          DEFV(complexe,z_moins_un);
          DEFV(complexe,un_moins_z);
          DEFV(complexe,z_monome_1);
          DEFV(complexe,z_monome_2);
          DEFV(complexe,z_terme_courant);
                                        /* Nombres complexes de manoeuvre.                                                           */

          Cegal(z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin,C_____nombre_complexe_p1__0);
                                        /* Le multiplicateur final de 'zeta(z)' sera a priori le nombre (1,0).                       */

          Test(IFGE(Reelle(z),SEUIL_DE_DIVERGENCE_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin))
                                        /* Il convient de prendre 'IFGE(...)' afin d'assurer un calcul correct a l'origine.          */
               Bblock
               Cegal(z_effectif,z);
                                        /* Dans le cas ou il n'y a pas de risque de divergences avec les 'Reelle(z)' negatifs, on    */
                                        /* calcule 'zeta(z)'.                                                                        */
               Eblock
          ATes
               Bblock
               DEFV(complexe,famma_de_moins_z);
               DEFV(complexe,deux_pi_puissance_z_moins_un);
               DEFV(complexe,z_pi_sur_2);
               DEFV(complexe,sinus_de_z_pi_sur_2);
                                        /* Nombres complexes de manoeuvre.                                                           */

               Cforme_lineaire(z_effectif,NEGA(FU),z,FU);
                                        /* Pour eviter les divergences pour 'Reelle(z)' negatif, on va calculer 'zeta(1-z)',         */
                                        /* sachant que :                                                                             */
                                        /*                                                                                           */
                                        /*                                          z-1       z.p                                    */
                                        /*                  zeta(z) = famma(-z)(2.p)   2.sin(-----)zeta(1-z)                         */
                                        /*                                                     2                                     */
                                        /*                                                                                           */

               Cnegation(moins_z,z);
                                        /* Calcul de '-z'.                                                                           */
               CALS(fFCfamma_sommation_Euler_MacLaurin(moins_z));
               Cegal(famma_de_moins_z,fFCfamma_sommation_Euler_MacLaurin_____valeur);
                                        /* Calcul de 'famma(-z)'.                                                                    */
               Cforme_lineaire(z_moins_un,NEUT(FU),z,NEGA(FU));
               Cexponentielle(deux_pi_puissance_z_moins_un,CERCLE_TRIGONOMETRIQUE,z_moins_un);
                                        /* Calcul de '2.p' a la puissance 'z-1'.                                                     */
               Cforme_lineaire(z_pi_sur_2,PI_SUR_2,z,FZERO);
               Csinus(sinus_de_z_pi_sur_2,z_pi_sur_2);
                                        /* Calcul de 'sinus(z.p/2)'.                                                                 */

               Cproduit(z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                       ,famma_de_moins_z
                       ,z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                        );
               Cproduit(z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                       ,deux_pi_puissance_z_moins_un
                       ,z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                        );
               Cproduit(z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                       ,sinus_de_z_pi_sur_2
                       ,z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                        );
               Cforme_lineaire(z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                              ,FDEUX
                              ,z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                              ,FZERO
                               );
                                        /* Calcul du multiplicateur final.                                                           */
               Eblock
          ETes

          EGAL(nombre_N
              ,TRON(ADD2(INTE(Cmodule(z)),UN)
                   ,MAX2(fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_N_lors_du_calcul
                        ,ADD2(VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin
                             ,UN
                              )
                         )
                   ,fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_N_lors_du_calcul
                    )
               );
                                        /* Definition du nombre 'N' en le majorant un petit peu, puis en le bornant... On notera     */
                                        /* la valeur minimale de 2 necessaire car la premiere somme que l'on fait va de 1 a N-1.     */
          EGAL(nombre_V
              ,TRON(ADD2(MAX2(UN,NEGA(ENTE(MOIT(Reelle(z))))),UN)
                   ,MAX2(fFCzeta_sommation_Euler_MacLaurin_____valeur_minimale_de_nombre_V_lors_du_calcul
                        ,VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin
                         )
                   ,fFCzeta_sommation_Euler_MacLaurin_____valeur_maximale_de_nombre_V_lors_du_calcul
                    )
               );
                                        /* Definition du nombre 'V' en le majorant un petit peu, puis en le bornant... ATTENTION,    */
                                        /* 'VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_...' est     */
                                        /* utilise ici correctement...                                                               */

          Cegal(fFCzeta_sommation_Euler_MacLaurin_____valeur,C_____nombre_complexe__0__0);
                                        /* Initialisation du resultat avec (0+i0).                                                   */

          Cnegation(moins_z,z_effectif);
                                        /* Calcul de '-z'.                                                                           */

          Cforme_lineaire(z_moins_un,NEUT(FU),z_effectif,NEGA(FU));
          Cforme_lineaire(un_moins_z,NEGA(FU),z_effectif,NEUT(FU));
                                        /* Calcul de 'z-1' et '1-z'.                                                                 */

          Repe(NBRE(VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin,SOUS(nombre_N,UN)))
               Bblock
               Cexponentielle(z_terme_courant,indice_n,moins_z);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                   -z                                                                      */
                                        /*                  n                                                                        */
                                        /*                                                                                           */
               Csomme(fFCzeta_sommation_Euler_MacLaurin_____valeur,fFCzeta_sommation_Euler_MacLaurin_____valeur,z_terme_courant);
                                        /* Et sommation...                                                                           */

               INCR(indice_n,I);
                                        /* Progression de l'indice d'iteration...                                                    */
               Eblock
          ERep

          Cexponentielle(z_monome_1,nombre_N,un_moins_z);
          Cquotient(z_monome_1,z_monome_1,z_moins_un);
                                        /* Calcul du premier monome :                                                                */
                                        /*                                                                                           */
                                        /*                     1-z                                                                   */
                                        /*                    N                                                                      */
                                        /*                   ------                                                                  */
                                        /*                    z-1                                                                    */
                                        /*                                                                                           */

          Cexponentielle(z_monome_2,nombre_N,moins_z);
          Cforme_lineaire(z_monome_2,FDU,z_monome_2,FZERO);
                                        /* Calcul du second monome :                                                                 */
                                        /*                                                                                           */
                                        /*                     -z                                                                    */
                                        /*                    N                                                                      */
                                        /*                   -----                                                                   */
                                        /*                     2                                                                     */
                                        /*                                                                                           */

          Csomme(fFCzeta_sommation_Euler_MacLaurin_____valeur,fFCzeta_sommation_Euler_MacLaurin_____valeur,z_monome_1);
          Csomme(fFCzeta_sommation_Euler_MacLaurin_____valeur,fFCzeta_sommation_Euler_MacLaurin_____valeur,z_monome_2);
                                        /* Et sommation...                                                                           */

          Tant(IL_FAUT(continuer_l_approximation_de_la_fonction_zeta))
               Bblock
               DEFV(complexe,z_produit_courant);
               DEFV(complexe,moins_z_moins_2k_plus_un);
               DEFV(complexe,z_plus_2k_moins_un);
                                        /* Nombres complexes de manoeuvre.                                                           */

               DEFV(Int,INIT(indice_p,ZERO));
                                        /* Nombre 'p'.                                                                               */

               DEFV(Float,INIT(factorielle_2k,factorielle_non_recursive_sans_validation(DOUB(indice_k))));
                                        /* Valeur de '(2k)!'. On notera qu'elle est calculee deux fois : une premiere fois dans      */
                                        /* 'nombre_de_Bernoulli(...)' et une deuxieme fois lors de l'appel explicite de              */
                                        /* 'factorielle_non_recursive_sans_validation(...)'.                                         */
                                        /*                                                                                           */
                                        /* Mais plus grave, ce double calcul ne sert a rien car en effet, '(2k)!' sert une premiere  */
                                        /* fois en numerateur lors du calcul de 'B(2k)', puis divise (donc en denominateur) 'B(2k)'  */
                                        /* lui-meme lors de la somme en 'k'. On pourrait donc simplifier en ne la mettant pas,       */
                                        /* mais c'est plus correct mathematiquement avec...                                          */
                                        /*                                                                                           */
                                        /* Le 20000316152326 j'ai esaye d'arranger cela en rendant facultative cette multiplication  */
                                        /* puis cette division par '(2k)!' mais cela ne fait pas disparaitre le probleme lie au      */
                                        /* calcul iteratif du produit 'PI(z+p)' ci-apres qui pose le meme probleme. J'ai donc        */
                                        /* supprime cette possibilite (finalement assez dangereuse..).                               */

               DEFV(Float,INIT(Bernoulli_2k,calcul_du_nombre_de_Bernoulli_B2k(indice_k)));
                                        /* Valeur du nombre de Bernoulli 'B(2k)'.                                                    */

               Cegal(z_produit_courant,C_____nombre_complexe_p1__0);
                                        /* Initialisation du produit courant avec le nombre complexe (1,0).                          */

               Repe(NBRE(ZERO,DOUB(SOUS(indice_k,UN))))
                    Bblock
                    DEFV(complexe,z_plus_p);
                    Cforme_lineaire(z_plus_p,FU,z_effectif,FLOT(indice_p));
                                        /* Calcul de 'z+p'.                                                                          */
                    Cproduit(z_produit_courant,z_produit_courant,z_plus_p);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                   p=2k-2                                                                  */
                                        /*                  ________                                                                 */
                                        /*                   |    |                                                                  */
                                        /*                   |    |                                                                  */
                                        /*                   |    | (z+p)                                                            */
                                        /*                   |    |                                                                  */
                                        /*                                                                                           */
                                        /*                     p=0                                                                   */
                                        /*                                                                                           */
                    INCR(indice_p,I);
                                        /* Progression de l'indice d'iteration...                                                    */
                    Eblock
               ERep

               Cforme_lineaire(moins_z_moins_2k_plus_un,NEGA(FU),z_effectif,FLOT(ADD2(NEGA(DOUB(indice_k)),UN)));
                                        /* Calcul de '-z-2k+1'.                                                                      */
               Cexponentielle(z_terme_courant,nombre_N,moins_z_moins_2k_plus_un);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                     -z-2k+1                                                               */
                                        /*                    N                                                                      */
                                        /*                                                                                           */

               Cproduit(z_terme_courant,z_produit_courant,z_terme_courant);

               Cforme_lineaire(z_terme_courant,DIVI(Bernoulli_2k,factorielle_2k),z_terme_courant,FZERO);
                                        /* Calcul de :                                                                               */
                                        /*                                                                                           */
                                        /*                                      i=2k-2                                               */
                                        /*                                     ________                                              */
                                        /*                    B                 |    |                                               */
                                        /*                     2k    -z-(2k)+1  |    |                                               */
                                        /*                  -------.N           |    | (z+i)                                         */
                                        /*                   (2k)!              |    |                                               */
                                        /*                                                                                           */
                                        /*                                        i=0                                                */
                                        /*                                                                                           */

               Csomme(fFCzeta_sommation_Euler_MacLaurin_____valeur,fFCzeta_sommation_Euler_MacLaurin_____valeur,z_terme_courant);
                                        /* Et sommation...                                                                           */

               Cforme_lineaire(z_plus_2k_moins_un,NEUT(FU),z_effectif,FLOT(SOUS(DOUB(indice_k),UN)));
                                        /* Calcul de 'z+2k-1'.                                                                       */

               Test(IFOU(IZEQ(time_out_d_approximation_de_la_fonction_zeta)
                        ,IFET(IFGT(indice_k,nombre_V)
                             ,IFLE(SCAL(Cmodule(z_terme_courant)
                                       ,ABSO(Reelle(z_plus_2k_moins_un))
                                       ,Cmodule(z_plus_2k_moins_un)
                                        )
                                  ,fFCzeta_sommation_Euler_MacLaurin_____precision_du_calcul
                                   )
                              )
                         )
                    )
                                        /* On considere que l'erreur commise est de l'ordre du terme courant (module par le          */
                                        /* module de 'z_plus_2k_moins_un' a quelque chose pres...).                                  */
                    Bblock
                    DEFV(IntFloat,Verification_de_____fFCzeta_sommation_Euler_MacLaurin_____Rvaleur);
                    DEFV(IntFloat,Verification_de_____fFCzeta_sommation_Euler_MacLaurin_____Ivaleur);

                    EGAL(Equivalence_IntFloat_FloaT(Verification_de_____fFCzeta_sommation_Euler_MacLaurin_____Rvaleur)
                        ,Reelle(fFCzeta_sommation_Euler_MacLaurin_____valeur)
                         );
                    EGAL(Equivalence_IntFloat_FloaT(Verification_de_____fFCzeta_sommation_Euler_MacLaurin_____Ivaleur)
                        ,Imaginaire(fFCzeta_sommation_Euler_MacLaurin_____valeur)
                         );

                    Test(IFOU(IFEQ(Equivalence_IntFloat_InT(Verification_de_____fFCzeta_sommation_Euler_MacLaurin_____Rvaleur)
                                  ,NAN_VALEUR_INDETERMINEE
                                   )
                             ,IFEQ(Equivalence_IntFloat_InT(Verification_de_____fFCzeta_sommation_Euler_MacLaurin_____Ivaleur)
                                  ,NAN_VALEUR_INDETERMINEE
                                   )
                              )
                         )
                         Bblock
                         PRINT_ERREUR("le calcul de 'zeta/Euler/MacLaurin' conduit a une ou des valeurs indeterminees");
                         CAL1(Prer2("(le decompteur de 'time-out' vaut %d/%d)\n"
                                   ,time_out_d_approximation_de_la_fonction_zeta
                                   ,fFCzeta_sommation_Euler_MacLaurin_____time_out
                                    )
                              );
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes

                    EGAL(continuer_l_approximation_de_la_fonction_zeta,FAUX);
                                        /* Des que la precision est atteinte, on arrete d'iterer...                                  */
                    Eblock
               ATes
                    Bblock
                    INCR(indice_k,I);
                                        /* Tant que la precision n'est pas atteinte, on itere...                                     */
                    DECR(time_out_d_approximation_de_la_fonction_zeta,I);
                                        /* Pour eviter des bouclages a l'infini...                                                   */
                    Eblock
               ETes
               Eblock
          ETan

          Cproduit(fFCzeta_sommation_Euler_MacLaurin_____valeur
                  ,z_multiplicateur_final_de_fFCzeta_sommation_Euler_MacLaurin
                  ,fFCzeta_sommation_Euler_MacLaurin_____valeur
                   );
                                        /* Et calcul final de 'zeta(z)' en utilisant l'equation fonctionnelle :                      */
                                        /*                                                                                           */
                                        /*                                          z-1       z.p                                    */
                                        /*                  zeta(z) = famma(-z)(2.p)   2.sin(-----)zeta(1-z)                         */
                                        /*                                                     2                                     */
                                        /*                                                                                           */

          Test(IL_FAUT(fFCzeta_sommation_Euler_MacLaurin_____editer_les_parametres_de_calcul))
               Bblock
               CAL3(Prme4("Le calcul de la fonction 'zeta(%+.^^^,%+.^^^)=(%+.^^^,%+.^^^)' a ete fait avec :\n"
                         ,Reelle(z)
                         ,Imaginaire(z)
                         ,Reelle(fFCzeta_sommation_Euler_MacLaurin_____valeur)
                         ,Imaginaire(fFCzeta_sommation_Euler_MacLaurin_____valeur)
                          )
                    );
                                        /* Edition completee le 20240625171035...                                                    */
                                        /* Le 20060105091338, le format "16g" est passe a "^^g" pour plus de souplesse...            */
                                        /*                                                                                           */
                                        /* Le 20091123122801, le format "^^g" est passe a "^^^" pour plus de souplesse...            */
                                        /*                                                                                           */
                                        /* Edition completee le 20240625171035...                                                    */
               CAL3(Prme1("N=%d\n",nombre_N));
               CAL3(Prme1("V=%d\n",nombre_V));
               CAL3(Prme1("k=%d\n",indice_k));
               Eblock
          ATes
               Bblock
               Eblock
          ETes
          Eblock
     ETes

     RETU(fFCzeta_sommation_Euler_MacLaurin_____valeur);
     Eblock

#undef    SEUIL_DE_DIVERGENCE_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin
#undef    VALEUR_MINIMALE_DE_indice_n_LORS_DU_CALCUL_DE_LA_FONCTION_fFCzeta_sommation_Euler_MacLaurin

EFonctionJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' cos '   C I R C U L A I R E                                                  */
/*        C O M P L E X E  :                                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Logical,SINT(fFCcosinus_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgCserie_cosinus_____C_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(complexe,INIS(FgCserie_cosinus_____C_____nombre_complexe__0__0
                              ,DEFINITION_DE__C_____nombre_complexe__0__0
                               )
                 )
     );
DEFV(Common,DEFV(complexe,fFCcosinus_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFCcosinus_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCcosinus_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCcosinus_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCcosinus_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCcosinus_circulaire(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'cosinus(z)'.                                   */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFCcosinus_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          Cserie_cosinus(fFCcosinus_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          Ccosinus(fFCcosinus_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFCcosinus_circulaire_____valeur);
     Eblock

EFonctionJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' sin '   C I R C U L A I R E                                                  */
/*        C O M P L E X E  :                                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Logical,SINT(fFCsinus_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgCserie_sinus_____C_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(complexe,INIS(FgCserie_sinus_____C_____nombre_complexe__0__0
                              ,DEFINITION_DE__C_____nombre_complexe__0__0
                               )
                 )
     );
DEFV(Common,DEFV(complexe,fFCsinus_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFCsinus_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCsinus_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCsinus_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCsinus_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCsinus_circulaire(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'sinus(z)'.                                     */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFCsinus_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          Cserie_sinus(fFCsinus_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          Csinus(fFCsinus_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFCsinus_circulaire_____valeur);
     Eblock

EFonctionJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' tg '   C I R C U L A I R E                                                   */
/*        C O M P L E X E  :                                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Logical,SINT(fFCtangente_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210209111749...                                               */
DEFV(Common,DEFV(complexe,fFCtangente_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFCtangente_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCtangente_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCtangente_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCtangente_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCtangente_circulaire(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'tangente(z)'.                                  */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFCtangente_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          Cserie_tangente(fFCtangente_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          Ctangente(fFCtangente_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFCtangente_circulaire_____valeur);
     Eblock

EFonctionJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' ch '   H Y P E R B O L I Q U E                                               */
/*        C O M P L E X E  :                                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Logical,SINT(fFCcosinus_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgCserie_cosinus_hyperbolique_____C_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(complexe,INIS(FgCserie_cosinus_hyperbolique_____C_____nombre_complexe__0__0
                              ,DEFINITION_DE__C_____nombre_complexe__0__0
                               )
                 )
     );
DEFV(Common,DEFV(complexe,fFCcosinus_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFCcosinus_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCcosinus_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCcosinus_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCcosinus_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCcosinus_hyperbolique(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'ch(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFCcosinus_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          Cserie_cosinus_hyperbolique(fFCcosinus_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          Ccosinus_hyperbolique(fFCcosinus_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFCcosinus_hyperbolique_____valeur);
     Eblock

EFonctionJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' sh '   H Y P E R B O L I Q U E                                               */
/*        C O M P L E X E  :                                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Logical,SINT(fFCsinus_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgCserie_sinus_hyperbolique_____C_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(complexe,INIS(FgCserie_sinus_hyperbolique_____C_____nombre_complexe__0__0
                              ,DEFINITION_DE__C_____nombre_complexe__0__0
                               )
                 )
     );
DEFV(Common,DEFV(complexe,fFCsinus_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFCsinus_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCsinus_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCsinus_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCsinus_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCsinus_hyperbolique(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'sh(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFCsinus_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          Cserie_sinus_hyperbolique(fFCsinus_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          Csinus_hyperbolique(fFCsinus_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFCsinus_hyperbolique_____valeur);
     Eblock

EFonctionJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' th '   H Y P E R B O L I Q U E                                               */
/*        C O M P L E X E  :                                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(Logical,SINT(fFCtangente_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210209111749...                                               */
DEFV(Common,DEFV(complexe,fFCtangente_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFCtangente_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCtangente_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCtangente_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCtangente_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCtangente_hyperbolique(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'th(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFCtangente_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          Cserie_tangente_hyperbolique(fFCtangente_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          Ctangente_hyperbolique(fFCtangente_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFCtangente_hyperbolique_____valeur);
     Eblock

EFonctionJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I E L L E   X ^ Z   C O M P L E X E  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(complexe,fFCexponentielle_____valeur));
                                        /* Nombre complexe resultat.                                                                 */

DEFV(Common,DEFV(FonctionJ,fFCexponentielle(base,z)))
DEFV(Argument,DEFV(Float,base));
DEFV(Argument,DEFV(complexe,z));
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     FCexponentielle(fFCexponentielle_____valeur,base,z);

     RETU(fFCexponentielle_____valeur);
     Eblock

EFonctionJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I E L L E   e ^ Z   C O M P L E X E  :                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(complexe,fFCexponentielle_neperienne_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFCexponentielle_neperienne_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFCexponentielle_neperienne_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCexponentielle_neperienne_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFCexponentielle_neperienne_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFCexponentielle_neperienne(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(complexe,z));
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     FCexponentielle(fFCexponentielle_neperienne_____valeur,EN,z);

     RETU(fFCexponentielle_neperienne_____valeur);
     Eblock

EFonctionJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' log '   C O M P L E X E  :                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionJ

DEFV(Common,DEFV(complexe,fFClogarithme_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFClogarithme_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFClogarithme_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFClogarithme_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFClogarithme_____Hdelta,FU)));
                                        /* Arguments "Homographiques" introduits le 20091021154607, la valeur par defaut             */
                                        /* garantissant la compatibilite anterieure...                                               */

DEFV(Common,DEFV(FonctionJ,fFClogarithme(z)))
DEFV(Argument,DEFV(complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'log(z)'.                                       */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Clogarithme(fFClogarithme_____valeur,z);

     RETU(fFClogarithme_____valeur);
     Eblock

EFonctionJ

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

#ifdef    FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES
DEFV(Common,DEFV(Logical,_______VERSION__ximcf_fonction_____ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES));
                                        /* Indicateur introduit le 20070129122544...                                                 */
#Aifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES
DEFV(Common,DEFV(Logical,_______VERSION__ximcf_fonction_____ARITHMETIQUE_DE_BASE_DANS_LES_NOMBRES_HYPER_COMPLEXES));
                                        /* Indicateur introduit le 20070129132819...                                                 */
#Eifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_COMPLEXES

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

BFonctionHJ

DEFV(Common,DEFV(Logical,SINT(fFHCcosinus_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHCserie_cosinus_____HC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_complexe,INIS(FgHCserie_cosinus_____HC_____quaternion__0__0__0__0
                                    ,DEFINITION_DE__HC_____quaternion__0__0__0__0
                                     )
                 )
     );
DEFV(Common,DEFV(hyper_complexe,fFHCcosinus_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHCcosinus_circulaire(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'cosinus(z)'.                                   */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHCcosinus_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          HCserie_cosinus(fFHCcosinus_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          HCcosinus(fFHCcosinus_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFHCcosinus_circulaire_____valeur);
     Eblock

EFonctionHJ

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

BFonctionHJ

DEFV(Common,DEFV(Logical,SINT(fFHCsinus_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHCserie_sinus_____HC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_complexe,INIS(FgHCserie_sinus_____HC_____quaternion__0__0__0__0
                                    ,DEFINITION_DE__HC_____quaternion__0__0__0__0
                                     )
                 )
     );
DEFV(Common,DEFV(hyper_complexe,fFHCsinus_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHCsinus_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHCsinus_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCsinus_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCsinus_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHCsinus_circulaire(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'sinus(z)'.                                     */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHCsinus_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          HCserie_sinus(fFHCsinus_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          HCsinus(fFHCsinus_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFHCsinus_circulaire_____valeur);
     Eblock

EFonctionHJ

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

BFonctionHJ

DEFV(Common,DEFV(Logical,SINT(fFHCtangente_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210209111749...                                               */
DEFV(Common,DEFV(hyper_complexe,fFHCtangente_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHCtangente_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHCtangente_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCtangente_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCtangente_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHCtangente_circulaire(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'tangente(z)'.                                  */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHCtangente_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          HCserie_tangente(fFHCtangente_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          HCtangente(fFHCtangente_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFHCtangente_circulaire_____valeur);
     Eblock

EFonctionHJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' ch '   H Y P E R B O L I Q U E                                               */
/*        H Y P E R - C O M P L E X E  :                                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHJ

DEFV(Common,DEFV(Logical,SINT(fFHCcosinus_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHCserie_cosinus_hyperbolique_____HC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_complexe,INIS(FgHCserie_cosinus_hyperbolique_____HC_____quaternion__0__0__0__0
                                    ,DEFINITION_DE__HC_____quaternion__0__0__0__0
                                     )
                 )
     );
DEFV(Common,DEFV(hyper_complexe,fFHCcosinus_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCcosinus_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHCcosinus_hyperbolique(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'ch(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHCcosinus_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          HCserie_cosinus_hyperbolique(fFHCcosinus_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          HCcosinus_hyperbolique(fFHCcosinus_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFHCcosinus_hyperbolique_____valeur);
     Eblock

EFonctionHJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' sh '   H Y P E R B O L I Q U E                                               */
/*        H Y P E R - C O M P L E X E  :                                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHJ

DEFV(Common,DEFV(Logical,SINT(fFHCsinus_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHCserie_sinus_hyperbolique_____HC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_complexe,INIS(FgHCserie_sinus_hyperbolique_____HC_____quaternion__0__0__0__0
                                    ,DEFINITION_DE__HC_____quaternion__0__0__0__0
                                     )
                 )
     );
DEFV(Common,DEFV(hyper_complexe,fFHCsinus_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHCsinus_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHCsinus_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCsinus_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCsinus_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHCsinus_hyperbolique(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'sh(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHCsinus_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          HCserie_sinus_hyperbolique(fFHCsinus_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          HCsinus_hyperbolique(fFHCsinus_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFHCsinus_hyperbolique_____valeur);
     Eblock

EFonctionHJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' th '   H Y P E R B O L I Q U E                                               */
/*        H Y P E R - C O M P L E X E  :                                                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHJ

DEFV(Common,DEFV(Logical,SINT(fFHCtangente_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210209111749...                                               */
DEFV(Common,DEFV(hyper_complexe,fFHCtangente_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHCtangente_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHCtangente_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCtangente_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCtangente_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHCtangente_hyperbolique(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'th(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHCtangente_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          HCserie_tangente_hyperbolique(fFHCtangente_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          HCtangente_hyperbolique(fFHCtangente_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFHCtangente_hyperbolique_____valeur);
     Eblock

EFonctionHJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I E L L E   X ^ Z   H Y P E R - C O M P L E X E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHJ

DEFV(Common,DEFV(hyper_complexe,fFHCexponentielle_____valeur));
                                        /* Nombre complexe resultat.                                                                 */

DEFV(Common,DEFV(FonctionHJ,fFHCexponentielle(base,z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(Float,base));
DEFV(Argument,DEFV(hyper_complexe,z));
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     FHCexponentielle(fFHCexponentielle_____valeur,base,z);

     RETU(fFHCexponentielle_____valeur);
     Eblock

EFonctionHJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I E L L E   e ^ Z   H Y P E R - C O M P L E X E  :                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHJ

DEFV(Common,DEFV(hyper_complexe,fFHCexponentielle_neperienne_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHCexponentielle_neperienne_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHCexponentielle_neperienne_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCexponentielle_neperienne_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHCexponentielle_neperienne_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHCexponentielle_neperienne(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_complexe,z));
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     FHCexponentielle(fFHCexponentielle_neperienne_____valeur,EN,z);

     RETU(fFHCexponentielle_neperienne_____valeur);
     Eblock

EFonctionHJ

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

BFonctionHJ

DEFV(Common,DEFV(hyper_complexe,fFHClogarithme_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHClogarithme_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHClogarithme_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHClogarithme_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHClogarithme_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHJ,fFHClogarithme(z)))
DEFV(Argument,DEFV(hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'log(z)'.                                       */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     HClogarithme(fFHClogarithme_____valeur,z);

     RETU(fFHClogarithme_____valeur);
     Eblock

EFonctionHJ

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

#ifdef    FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES
DEFV(Common,DEFV(Logical,_______VERSION__ximcf_fonction_____ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES));
                                        /* Indicateur introduit le 20111201103119...                                                 */
#Aifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES
DEFV(Common,DEFV(Logical,_______VERSION__ximcf_fonction_____ARITHMETIQUE_DE_BASE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES));
                                        /* Indicateur introduit le 20111201103119...                                                 */
#Eifdef   FAIRE_EVENTUELLEMENT_DE_L_ARITHMETIQUE_ETENDUE_DANS_LES_NOMBRES_HYPER_HYPER_COMPLEXES

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

BFonctionHHJ

DEFV(Common,DEFV(Logical,SINT(fFHHCcosinus_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHHCserie_cosinus_____HHC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_hyper_complexe,INIS(FgHHCserie_cosinus_____HHC_____octonion__0__0__0__0__0__0__0__0
                                          ,DEFINITION_DE__HHC_____octonion__0__0__0__0__0__0__0__0
                                           )
                 )
     );
DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCcosinus_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHCcosinus_circulaire(z)))
                                        /* Fonction introduite le 20210206105728...                                                  */
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'cosinus(z)'.                                   */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHHCcosinus_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          HHCserie_cosinus(fFHHCcosinus_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          HHCcosinus(fFHHCcosinus_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFHHCcosinus_circulaire_____valeur);
     Eblock

EFonctionHHJ

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

BFonctionHHJ

DEFV(Common,DEFV(Logical,SINT(fFHHCsinus_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHHCserie_sinus_____HHC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_hyper_complexe,INIS(FgHHCserie_sinus_____HHC_____octonion__0__0__0__0__0__0__0__0
                                          ,DEFINITION_DE__HHC_____octonion__0__0__0__0__0__0__0__0
                                           )
                 )
     );
DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCsinus_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHCsinus_circulaire(z)))
                                        /* Fonction introduite le 20210206105728...                                                  */
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'sinus(z)'.                                     */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHHCsinus_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          HHCserie_sinus(fFHHCsinus_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          HHCsinus(fFHHCsinus_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFHHCsinus_circulaire_____valeur);
     Eblock

EFonctionHHJ

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

BFonctionHHJ

DEFV(Common,DEFV(Logical,SINT(fFHHCtangente_circulaire_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210209111749...                                               */
DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCtangente_circulaire_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_circulaire_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_circulaire_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_circulaire_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_circulaire_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHCtangente_circulaire(z)))
                                        /* Fonction introduite le 20210206105728...                                                  */
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'tangente(z)'.                                  */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHHCtangente_circulaire_____utiliser_le_developpement_en_serie))
          Bblock
          HHCserie_tangente(fFHHCtangente_circulaire_____valeur,z);
          Eblock
     ATes
          Bblock
          HHCtangente(fFHHCtangente_circulaire_____valeur,z);
          Eblock
     ETes

     RETU(fFHHCtangente_circulaire_____valeur);
     Eblock

EFonctionHHJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' ch '   H Y P E R B O L I Q U E                                               */
/*        H Y P E R - H Y P E R - C O M P L E X E  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHHJ

DEFV(Common,DEFV(Logical,SINT(fFHHCcosinus_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHHCserie_cosinus_hyperbolique_____HHC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_hyper_complexe,INIS(FgHHCserie_cosinus_hyperbolique_____HHC_____octonion__0__0__0__0__0__0__0__0
                                          ,DEFINITION_DE__HHC_____octonion__0__0__0__0__0__0__0__0
                                           )
                 )
     );
DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCcosinus_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCcosinus_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHCcosinus_hyperbolique(z)))
                                        /* Fonction introduite le 20210206105728...                                                  */
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'ch(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHHCcosinus_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          HHCserie_cosinus_hyperbolique(fFHHCcosinus_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          HHCcosinus_hyperbolique(fFHHCcosinus_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFHHCcosinus_hyperbolique_____valeur);
     Eblock

EFonctionHHJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' sh '   H Y P E R B O L I Q U E                                               */
/*        H Y P E R - H Y P E R - C O M P L E X E  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHHJ

DEFV(Common,DEFV(Logical,SINT(fFHHCsinus_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210208174211...                                               */
DEFV(Common,DEFV(Float,SINT(FgHHCserie_sinus_hyperbolique_____HHC_____exposant,FU)));
                                        /* Introduit le 20210217163925...                                                            */
DEFV(Common,DEFV(hyper_hyper_complexe,INIS(FgHHCserie_sinus_hyperbolique_____HHC_____octonion__0__0__0__0__0__0__0__0
                                          ,DEFINITION_DE__HHC_____octonion__0__0__0__0__0__0__0__0
                                           )
                 )
     );
DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCsinus_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCsinus_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHCsinus_hyperbolique(z)))
                                        /* Fonction introduite le 20210206105728...                                                  */
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'sh(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHHCsinus_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          HHCserie_sinus_hyperbolique(fFHHCsinus_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          HHCsinus_hyperbolique(fFHHCsinus_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFHHCsinus_hyperbolique_____valeur);
     Eblock

EFonctionHHJ

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C A L C U L   D E   L A   F O N C T I O N   ' th '   H Y P E R B O L I Q U E                                               */
/*        H Y P E R - H Y P E R - C O M P L E X E  :                                                                                 */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHHJ

DEFV(Common,DEFV(Logical,SINT(fFHHCtangente_hyperbolique_____utiliser_le_developpement_en_serie,FAUX)));
                                        /* Possibilite introduite le 20210209111749...                                               */
DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCtangente_hyperbolique_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_hyperbolique_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_hyperbolique_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_hyperbolique_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCtangente_hyperbolique_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHCtangente_hyperbolique(z)))
                                        /* Fonction introduite le 20210206105728...                                                  */
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'th(z)'.                                        */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     Test(IL_FAUT(fFHHCtangente_hyperbolique_____utiliser_le_developpement_en_serie))
          Bblock
          HHCserie_tangente_hyperbolique(fFHHCtangente_hyperbolique_____valeur,z);
          Eblock
     ATes
          Bblock
          HHCtangente_hyperbolique(fFHHCtangente_hyperbolique_____valeur,z);
          Eblock
     ETes

     RETU(fFHHCtangente_hyperbolique_____valeur);
     Eblock

EFonctionHHJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I E L L E   X ^ Z   H Y P E R - H Y P E R - C O M P L E X E  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHHJ

DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCexponentielle_____valeur));
                                        /* Nombre complexe resultat.                                                                 */

DEFV(Common,DEFV(FonctionHHJ,fFHHCexponentielle(base,z)))
                                        /* Fonction introduite le 20210206105728...                                                  */
DEFV(Argument,DEFV(Float,base));
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     FHHCexponentielle(fFHHCexponentielle_____valeur,base,z);

     RETU(fFHHCexponentielle_____valeur);
     Eblock

EFonctionHHJ

_______________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E X P O N E N T I E L L E   e ^ Z   H Y P E R - H Y P E R - C O M P L E X E  :                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

BFonctionHHJ

DEFV(Common,DEFV(hyper_hyper_complexe,fFHHCexponentielle_neperienne_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHCexponentielle_neperienne_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHCexponentielle_neperienne_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCexponentielle_neperienne_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHCexponentielle_neperienne_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHCexponentielle_neperienne(z)))
                                        /* Fonction introduite le 20090303145946...                                                  */
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     FHHCexponentielle(fFHHCexponentielle_neperienne_____valeur,EN,z);

     RETU(fFHHCexponentielle_neperienne_____valeur);
     Eblock

EFonctionHHJ

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

BFonctionHHJ

DEFV(Common,DEFV(hyper_hyper_complexe,fFHHClogarithme_____valeur));
                                        /* Nombre complexe resultat.                                                                 */
DEFV(Common,DEFV(Float,SINT(fFHHClogarithme_____Halpha,FU)));
DEFV(Common,DEFV(Float,SINT(fFHHClogarithme_____Hbeta_,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHClogarithme_____Hgamma,FZERO)));
DEFV(Common,DEFV(Float,SINT(fFHHClogarithme_____Hdelta,FU)));
                                        /* Arguments "Homographiques"...                                                             */

DEFV(Common,DEFV(FonctionHHJ,fFHHClogarithme(z)))
DEFV(Argument,DEFV(hyper_hyper_complexe,z));
                                        /* Nombre complexe 'z' dont on veut calculer 'log(z)'.                                       */
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     HHClogarithme(fFHHClogarithme_____valeur,z);

     RETU(fFHHClogarithme_____valeur);
     Eblock

EFonctionHHJ

_______________________________________________________________________________________________________________________________________



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