std:: tgamma, std:: tgammaf, std:: tgammal
|
Défini dans l'en-tête
<cmath>
|
||
| (1) | ||
|
float
tgamma
(
float
num
)
;
double
tgamma
(
double
num
)
;
|
(jusqu'à C++23) | |
|
/*floating-point-type*/
tgamma ( /*floating-point-type*/ num ) ; |
(depuis C++23)
(constexpr depuis C++26) |
|
|
float
tgammaf
(
float
num
)
;
|
(2) |
(depuis C++11)
(constexpr depuis C++26) |
|
long
double
tgammal
(
long
double
num
)
;
|
(3) |
(depuis C++11)
(constexpr depuis C++26) |
|
Surcharge SIMD
(depuis C++26)
|
||
|
Défini dans l'en-tête
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
/*deduced-simd-t*/
<
V
>
|
(S) | (depuis C++26) |
|
Surcharges supplémentaires
(depuis C++11)
|
||
|
Défini dans l'en-tête
<cmath>
|
||
|
template
<
class
Integer
>
double tgamma ( Integer num ) ; |
(A) | (constexpr depuis C++26) |
std::tgamma
pour tous les types à virgule flottante non qualifiés cv comme type du paramètre.
(depuis C++23)
|
S)
La surcharge SIMD effectue un calcul
std::tgamma
élément par élément sur
v_num
.
|
(depuis C++26) |
|
A)
Des surcharges supplémentaires sont fournies pour tous les types entiers, qui sont traités comme
double
.
|
(depuis C++11) |
Table des matières |
Paramètres
| num | - | valeur à virgule flottante ou entière |
Valeur de retour
Si aucune erreur ne se produit, la valeur de la fonction gamma de
num
, c'est-à-dire
∫
∞
0
t
num-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 num 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 num est un nombre naturel, std :: tgamma ( num ) est la factorielle de num - 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 < num && num < 1 / DBL_MAX ou si num > 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 cas 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
.
Les surcharges supplémentaires ne sont pas requises d'être fournies exactement comme (A) . Elles doivent seulement être suffisantes pour garantir que pour leur argument num de type entier, std :: tgamma ( num ) ait le même effet que std :: tgamma ( static_cast < double > ( num ) ) .
Exemple
#include <cerrno> #include <cfenv> #include <cmath> #include <cstring> #include <iostream> // #pragma STDC FENV_ACCESS ON int main() { std::cout << "tgamma(10) = " << std::tgamma(10) << ", 9! = " << 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 << '\n' << "tgamma(0.5) = " << std::tgamma(0.5) << ", sqrt(pi) = " << std::sqrt(std::acos(-1)) << '\n'; // valeurs spéciales std::cout << "tgamma(1) = " << std::tgamma(1) << '\n' << "tgamma(+Inf) = " << std::tgamma(INFINITY) << '\n'; // gestion des erreurs errno = 0; std::feclearexcept(FE_ALL_EXCEPT); std::cout << "tgamma(-1) = " << std::tgamma(-1) << '\n'; if (errno == EDOM) std::cout << " errno == EDOM: " << std::strerror(errno) << '\n'; if (std::fetestexcept(FE_INVALID)) std::cout << " FE_INVALID levée\n"; }
Sortie possible :
tgamma(10) = 362880, 9! = 362880
tgamma(0.5) = 1.77245, sqrt(pi) = 1.77245
tgamma(1) = 1
tgamma(+Inf) = inf
tgamma(-1) = nan
errno == EDOM: Numerical argument out of domain
FE_INVALID levée
Voir aussi
|
(C++11)
(C++11)
(C++11)
|
logarithme naturel de la fonction gamma
(fonction) |
|
(C++17)
(C++17)
(C++17)
|
fonction bêta
(fonction) |
|
Documentation C
pour
tgamma
|
|
Liens externes
| Weisstein, Eric W. "Fonction Gamma." De MathWorld — Une ressource web Wolfram. |