_______________________________________________________________________________________________________________________________________
/*************************************************************************************************************************************/
/* */
/* 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.