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
Definido en el encabezado <math.h>
float tgammaf ( float arg ) ;
(1) (desde C99)
double tgamma ( double arg ) ;
(2) (desde C99)
long double tgammal ( long double arg ) ;
(3) (desde C99)
Definido en el encabezado <tgmath.h>
#define tgamma( arg )
(4) (desde C99)
1-3) Calcula la función gamma de arg .
4) Macro genérica de tipos: Si arg tiene tipo long double , tgammal es llamado. De lo contrario, si arg tiene tipo entero o el tipo double , tgamma es llamado. De lo contrario, tgammaf es llamado.

Contenidos

Parámetros

arg - valor de punto flotante

Valor de retorno

Si no ocurren errores, se devuelve el valor de la función gamma de arg , es decir
0
t arg-1
e -t d t
.

Si ocurre un error de dominio, se devuelve un valor definido por la implementación (NaN donde esté soportado).

Si ocurre un error de polo, ± HUGE_VAL , ±HUGE_VALF , o ±HUGE_VALL es devuelto.

Si ocurre un error de rango debido a desbordamiento, ±HUGE_VAL , ±HUGE_VALF , o ±HUGE_VALL es devuelto.

Si ocurre un error de rango debido a desbordamiento inferior, se devuelve el valor correcto (después del redondeo).

Manejo de errores

Los errores se reportan como se especifica en math_errhandling .

Si arg es cero o es un entero menor que cero, puede ocurrir un error de polo o un error de dominio.

Si la implementación soporta aritmética de punto flotante IEEE (IEC 60559):

  • Si el argumento es ±0, se retorna ±∞ y FE_DIVBYZERO es activado.
  • Si el argumento es un entero negativo, se retorna NaN y FE_INVALID es activado.
  • Si el argumento es -∞, se retorna NaN y FE_INVALID es activado.
  • Si el argumento es +∞, se retorna +∞.
  • Si el argumento es NaN, se retorna NaN.

Notas

Si arg es un número natural, tgamma ( arg ) es el factorial de arg - 1 . Muchas implementaciones calculan el factorial exacto en el dominio de los enteros si el argumento es un entero suficientemente pequeño.

Para el tipo compatible con IEEE double , el desbordamiento ocurre si 0 < x < 1 / DBL_MAX o si x > 171.7 .

POSIX requiere que ocurra un error de polo si el argumento es cero, pero un error de dominio ocurre cuando el argumento es un entero negativo. También especifica que en el futuro, los errores de dominio pueden ser reemplazados por errores de polo para argumentos enteros negativos (en cuyo caso el valor de retorno en esos casos cambiaría de NaN a ±∞).

Existe una función no estándar llamada gamma en varias implementaciones, pero su definición es inconsistente. Por ejemplo, la versión de glibc y 4.2BSD de gamma ejecuta lgamma , pero la versión de 4.4BSD de gamma ejecuta tgamma .

Ejemplo

#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");
}

Salida posible:

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

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.12.8.4 Las funciones tgamma (p: 250)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
  • F.10.5.4 Las funciones tgamma (p: 525)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.12.8.4 Las funciones tgamma (p: 250)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
  • F.10.5.4 Las funciones tgamma (p: 525)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.12.8.4 Las funciones tgamma (p: 250)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
  • F.10.5.4 Las funciones tgamma (p: 525)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.12.8.4 Las funciones tgamma (p: 231)
  • 7.22 Matemáticas genéricas de tipos <tgmath.h> (p: 335-337)
  • F.9.5.4 Las funciones tgamma (p: 462)

Véase también

(C99) (C99) (C99)
calcula el logaritmo natural (base e ) de la función gamma
(función)

Enlaces externos

Weisstein, Eric W. "Función Gamma." De MathWorld — Un recurso web de Wolfram.