tgamma, tgammaf, tgammal
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
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) |
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
\(\Gamma(\mathtt{arg}) = \displaystyle\int_0^\infty\!\! t^{\mathtt{arg}-1} e^{-t}\, dt\)
∫
∞
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) |
|
Documentación de C++
para
tgamma
|
|
Enlaces externos
| Weisstein, Eric W. "Función Gamma." De MathWorld — Un recurso web de Wolfram. |