Namespaces
Variants

lgamma, lgammaf, lgammal

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)
lgamma
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Definido en el encabezado <math.h>
float lgammaf ( float arg ) ;
(1) (desde C99)
double lgamma ( double arg ) ;
(2) (desde C99)
long double lgammal ( long double arg ) ;
(3) (desde C99)
Definido en el encabezado <tgmath.h>
#define lgamma( arg )
(4) (desde C99)
1-3) Calcula el logaritmo natural del valor absoluto de la función gamma de arg .
4) Macro genérica de tipos: Si arg tiene tipo long double , lgammal es llamado. De lo contrario, si arg tiene tipo entero o el tipo double , lgamma es llamado. De lo contrario, lgammaf es llamado.

Contenidos

Parámetros

arg - valor de punto flotante

Valor de retorno

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

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.

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.

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

  • Si el argumento es 1, se devuelve +0.
  • Si el argumento es 2, se devuelve +0.
  • Si el argumento es ±0, se devuelve +∞ y FE_DIVBYZERO se activa.
  • Si el argumento es un entero negativo, se devuelve +∞ y FE_DIVBYZERO se activa.
  • Si el argumento es ±∞, se devuelve +∞.
  • Si el argumento es NaN, se devuelve NaN.

Notas

Si arg es un número natural, lgamma ( arg ) es el logaritmo del factorial de arg - 1 .

La versión POSIX de lgamma no es segura para hilos: cada ejecución de la función almacena el signo de la función gamma de arg en la variable externa estática signgam . Algunas implementaciones proporcionan lgamma_r , que toma un puntero a almacenamiento proporcionado por el usuario para signgam como segundo parámetro, y es segura para hilos.

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("lgamma(10) = %f, log(9!) = %f\n", lgamma(10),
                                              log(2 * 3 * 4 * 5 * 6 * 7 * 8 * 9));
    const double pi = acos(-1);
    printf("lgamma(0.5) = %f, log(sqrt(pi)) = %f\n", log(sqrt(pi)), lgamma(0.5));
    // special values
    printf("lgamma(1) = %f\n", lgamma(1));
    printf("lgamma(+Inf) = %f\n", lgamma(INFINITY));
    // error handling
    errno = 0; feclearexcept(FE_ALL_EXCEPT);
    printf("lgamma(0) = %f\n", lgamma(0));
    if (errno == ERANGE)
        perror("    errno == ERANGE");
    if (fetestexcept(FE_DIVBYZERO))
        puts("    FE_DIVBYZERO raised");
}

Salida posible:

lgamma(10) = 12.801827, log(9!) = 12.801827
lgamma(0.5) = 0.572365, log(sqrt(pi)) = 0.572365
lgamma(1) = 0.000000
lgamma(+Inf) = inf
lgamma(0) = inf
    errno == ERANGE: Resultado numérico fuera de rango
    FE_DIVBYZERO raised

Referencias

  • Estándar C23 (ISO/IEC 9899:2024):
  • 7.12.8.3 Las funciones lgamma (p: TBD)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: TBD)
  • F.10.5.3 Las funciones lgamma (p: TBD)
  • Estándar C17 (ISO/IEC 9899:2018):
  • 7.12.8.3 Las funciones lgamma (p: 182)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 272-273)
  • F.10.5.3 Las funciones lgamma (p: 383)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 7.12.8.3 Las funciones lgamma (p: 250)
  • 7.25 Matemáticas genéricas de tipos <tgmath.h> (p: 373-375)
  • F.10.5.3 Las funciones lgamma (p: 525)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 7.12.8.3 Las funciones lgamma (p: 231)
  • 7.22 Matemáticas genéricas de tipos <tgmath.h> (p: 335-337)
  • F.9.5.3 Las funciones lgamma (p: 462)

Véase también

(C99) (C99) (C99)
calcula la función gamma
(función)

Enlaces externos

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