Espacios de nombres
Variantes
Acciones

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

De cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
Funciones matemáticas comunes
Funciones
Operaciones básicas
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Funciones exponenciales
(C++11)
(C++11)
(C++11)
(C++11)
Funciones de potencias
(C++11)
(C++11)
Funciones trigonométricas e hiperbólicas
(C++11)
(C++11)
(C++11)
Funciones de error y gamma
(C++11)
(C++11)
(C++11)
tgamma
(C++11)
Operaciones de punto flotante del entero más cercano
(C++11)(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
Funciones de manipulación de punto flotante
(C++11)(C++11)
(C++11)
(C++11)
(C++11)(C++11)
(C++11)
Clasificación/comparación
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Constantes de macro
(C++11)(C++11)(C++11)(C++11)(C++11)
 
Definido en el archivo de encabezado <cmath>
float       tgamma ( float arg );
float       tgammaf( float arg );
(1) (desde C++11)
double      tgamma ( double arg );
(2) (desde C++11)
long double tgamma ( long double arg );
long double tgammal( long double arg );
(3) (desde C++11)
double      tgamma ( TipoEntero arg );
(4) (desde C++11)
1-3) Calcula la función gamma de arg.
4) Un conjunto de sobrecargas o una plantilla de función que acepta un argumento de cualquier tipo entero. Equivalente a 2) (el argumento se convierte a double).

Contenido

[editar] Parámetros

arg - Valor de un tipo de punto flotante o un tipo entero.

[editar] Valor de retorno

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

Si se produce un error de dominio, se devuelve un valor definido por la implementación (NaN donde se dé apoyo).

Si se produce un error de polo, se devuelve ±HUGE_VAL, ±HUGE_VALF, o ±HUGE_VALL.

Si se produce un error de rango debido a desbordamiento, se devuelve ±HUGE_VAL, ±HUGE_VALF, o ±HUGE_VALL.

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

[editar] Manejo de errores

Los errores se informan como se especifica en math_errhandling.

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

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

  • Si el argumento es +0, se devuelve +∞ y se genera FE_DIVBYZERO.
  • Si el argumento es -0, se devuelve -∞ y se genera FE_DIVBYZERO.
  • Si el argumento es un entero negativo, se devuelve NaN y se genera FE_INVALID.
  • Si el argumento es -∞, se devuelve NaN y se genera FE_INVALID.
  • Si el argumento es +∞, se devuelve +∞.
  • Si el argumento es NaN, se devuelve NaN.

[editar] Notas

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

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

POSIX requiere que se produzca un error de polo si el argumento es cero, pero que se produzca un error de dominio cuando el argumento sea 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 devuelto en esos casos cambiaría de NaN a ±∞).

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

[editar] Ejemplo

#include <iostream>
#include <cmath>
#include <cerrno>
#include <cstring>
#include <cfenv>
#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';
    // valores especiales
    std::cout << "tgamma(1) = " << std::tgamma(1) << '\n'
              << "tgamma(+Inf) = " << std::tgamma(INFINITY) << '\n';
    // manejo de errores
    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 << "    Se generó FE_INVALID\n";
}

Posible salida:

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: Argumento numérico fuera de dominio
    Se generó FE_INVALID

[editar] Véase también

(C++11)(C++11)(C++11)
Logaritmo natural de la función gamma
(función) [editar]
(C++17)(C++17)(C++17)
Función beta.
(función) [editar]

[editar] Enlaces externos

Weisstein, Eric W. "Gamma Function." De MathWorld – Un recurso web de Wolfram.