tgamma, tgammaf, tgammal
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<math.h>
|
||
|
float
tgammaf
(
float
arg
)
;
|
(1) | (depuis C99) |
|
double
tgamma
(
double
arg
)
;
|
(2) | (depuis C99) |
|
long
double
tgammal
(
long
double
arg
)
;
|
(3) | (depuis C99) |
|
Défini dans l'en-tête
<tgmath.h>
|
||
|
#define tgamma( arg )
|
(4) | (depuis C99) |
tgammal
est appelé. Sinon, si
arg
a un type entier ou le type
double
,
tgamma
est appelé. Sinon,
tgammaf
est appelé.
Table des matières |
Paramètres
| arg | - | valeur à virgule flottante |
Valeur de retour
Si aucune erreur ne se produit, la valeur de la fonction gamma de
arg
, c'est-à-dire
\(\Gamma(\mathtt{arg}) = \displaystyle\int_0^\infty\!\! t^{\mathtt{arg}-1} e^{-t}\, dt\)
∫
∞
0
t
arg-1
e
-t
d
t
, est retournée.
Si une erreur de domaine se produit, une valeur définie par l'implémentation (NaN là où supporté) est retournée.
Si une erreur de pôle se produit,
±
HUGE_VAL
,
±HUGE_VALF
, ou
±HUGE_VALL
est retourné.
Si une erreur de plage due à un dépassement de capacité se produit,
±HUGE_VAL
,
±HUGE_VALF
, ou
±HUGE_VALL
est renvoyé.
Si une erreur de plage due à un dépassement inférieur se produit, la valeur correcte (après arrondi) est retournée.
Gestion des erreurs
Les erreurs sont signalées comme spécifié dans
math_errhandling
.
Si arg est nul ou est un entier inférieur à zéro, une erreur de pôle ou une erreur de domaine peut survenir.
Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559) :
- Si l'argument est ±0, ±∞ est retourné et FE_DIVBYZERO est déclenché.
- Si l'argument est un entier négatif, NaN est retourné et FE_INVALID est déclenché.
- Si l'argument est -∞, NaN est retourné et FE_INVALID est déclenché.
- Si l'argument est +∞, +∞ est retourné.
- Si l'argument est NaN, NaN est retourné.
Notes
Si arg est un nombre naturel, tgamma ( arg ) est la factorielle de arg - 1 . De nombreuses implémentations calculent la factorielle exacte dans le domaine des entiers si l'argument est un entier suffisamment petit.
Pour le type compatible IEEE double , un dépassement de capacité se produit si 0 < x < 1 / DBL_MAX ou si x > 171.7 .
POSIX exige qu'une erreur de pôle se produise si l'argument est zéro, mais qu'une erreur de domaine se produit lorsque l'argument est un entier négatif. Il spécifie également qu'à l'avenir, les erreurs de domaine pourraient être remplacées par des erreurs de pôle pour les arguments entiers négatifs (auquel cas la valeur de retour dans ces situations passerait de NaN à ±∞).
Il existe une fonction non standard nommée
gamma
dans diverses implémentations, mais sa définition est incohérente. Par exemple, la version glibc et 4.2BSD de
gamma
exécute
lgamma
, mais la version 4.4BSD de
gamma
exécute
tgamma
.
Exemple
#include <errno.h> #include <fenv.h> #include <float.h> #include <math.h> #include <stdio.h> // #pragma STDC FENV_ACCESS ON int main(void) { printf("tgamma(10) = %f, 9!=%f\n", tgamma(10), 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9.0); printf("tgamma(0.5) = %f, sqrt(pi) = %f\n", tgamma(0.5), sqrt(acos(-1))); // special values printf("tgamma(+Inf) = %f\n", tgamma(INFINITY)); // error handling errno = 0; feclearexcept(FE_ALL_EXCEPT); printf("tgamma(-1) = %f\n", tgamma(-1)); if (errno == ERANGE) perror(" errno == ERANGE"); else if (errno == EDOM) perror(" errno == EDOM"); if (fetestexcept(FE_DIVBYZERO)) puts(" FE_DIVBYZERO raised"); else if (fetestexcept(FE_INVALID)) puts(" FE_INVALID raised"); }
Sortie possible :
tgamma(10) = 362880.000000, 9!=362880.000000
tgamma(0.5) = 1.772454, sqrt(pi) = 1.772454
tgamma(+Inf) = inf
tgamma(-1) = nan
errno == EDOM: Numerical argument out of domain
FE_INVALID raised
Références
- Norme C23 (ISO/IEC 9899:2024) :
-
- 7.12.8.4 Les fonctions tgamma (p : 250)
-
- 7.25 Mathématiques génériques de type <tgmath.h> (p : 373-375)
-
- F.10.5.4 Les fonctions tgamma (p : 525)
- Norme C17 (ISO/CEI 9899:2018) :
-
- 7.12.8.4 Les fonctions tgamma (p : 250)
-
- 7.25 Mathématiques génériques de type <tgmath.h> (p : 373-375)
-
- F.10.5.4 Les fonctions tgamma (p : 525)
- Norme C11 (ISO/CEI 9899:2011) :
-
- 7.12.8.4 Les fonctions tgamma (p : 250)
-
- 7.25 Mathématiques génériques de type <tgmath.h> (p : 373-375)
-
- F.10.5.4 Les fonctions tgamma (p : 525)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 7.12.8.4 Les fonctions tgamma (p: 231)
-
- 7.22 Mathématiques génériques de type <tgmath.h> (p: 335-337)
-
- F.9.5.4 Les fonctions tgamma (p: 462)
Voir aussi
|
(C99)
(C99)
(C99)
|
calcule le logarithme naturel (base-
e
) de la fonction gamma
(fonction) |
|
Documentation C++
pour
tgamma
|
|
Liens externes
| Weisstein, Eric W. "Fonction Gamma." De MathWorld — Une ressource web Wolfram. |