Namespaces
Variants

std:: tgamma, std:: tgammaf, std:: tgammal

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Défini dans l'en-tête <cmath>
(1)
float tgamma ( float num ) ;

double tgamma ( double num ) ;

long double tgamma ( long 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 >

tgamma ( const V & v_num ) ;
(S) (depuis C++26)
Défini dans l'en-tête <cmath>
template < class Integer >
double tgamma ( Integer num ) ;
(A) (constexpr depuis C++26)
1-3) Calcule la fonction gamma de num . La bibliothèque fournit des surcharges de 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 .
(Voir math-floating-point et deduced-simd-t pour leurs définitions.)
(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.