Namespaces
Variants

tgamma, tgammaf, tgammal

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
tgamma
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
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)
1-3) Calcule la fonction gamma de arg .
4) Macro générique de type : Si arg a le type long double , 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
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)

Liens externes

Weisstein, Eric W. "Fonction Gamma." De MathWorld — Une ressource web Wolfram.