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
Definiert im Header <math.h>
float lgammaf ( float arg ) ;
(1) (seit C99)
double lgamma ( double arg ) ;
(2) (seit C99)
long double lgammal ( long double arg ) ;
(3) (seit C99)
Definiert im Header <tgmath.h>
#define lgamma( arg )
(4) (seit C99)
1-3) Berechnet den natürlichen Logarithmus des Absolutwerts der Gammafunktion von arg .
4) Typgenerisches Makro: Wenn arg den Typ long double hat, wird lgammal aufgerufen. Andernfalls, wenn arg ganzzahligen Typ oder den Typ double hat, wird lgamma aufgerufen. Andernfalls wird lgammaf aufgerufen.

Inhaltsverzeichnis

Parameter

arg - Gleitkommawert

Rückgabewert

Wenn keine Fehler auftreten, wird der Wert des Logarithmus der Gammafunktion von arg , also log e |
0
t arg-1
e -t d t |
, zurückgegeben.

Wenn ein Polfehler auftritt, +HUGE_VAL , +HUGE_VALF , oder +HUGE_VALL wird zurückgegeben.

Wenn ein Bereichsfehler aufgrund von Überlauf auftritt, ±HUGE_VAL , ±HUGE_VALF , oder ±HUGE_VALL wird zurückgegeben.

Fehlerbehandlung

Fehler werden gemeldet, wie in math_errhandling festgelegt.

Wenn arg null oder eine ganze Zahl kleiner als null ist, kann ein Polfehler auftreten.

Wenn die Implementierung IEEE-Gleitkommaarithmetik (IEC 60559) unterstützt,

  • Wenn das Argument 1 ist, wird +0 zurückgegeben.
  • Wenn das Argument 2 ist, wird +0 zurückgegeben.
  • Wenn das Argument ±0 ist, wird +∞ zurückgegeben und FE_DIVBYZERO wird ausgelöst.
  • Wenn das Argument eine negative Ganzzahl ist, wird +∞ zurückgegeben und FE_DIVBYZERO wird ausgelöst.
  • Wenn das Argument ±∞ ist, wird +∞ zurückgegeben.
  • Wenn das Argument NaN ist, wird NaN zurückgegeben.

Hinweise

Wenn arg eine natürliche Zahl ist, lgamma ( arg ) ist der Logarithmus der Fakultät von arg - 1 .

Die POSIX-Version von lgamma ist nicht threadsicher: Jede Ausführung der Funktion speichert das Vorzeichen der Gammafunktion von arg in der statischen externen Variable signgam . Einige Implementierungen bieten lgamma_r an, das einen Zeiger auf benutzerbereitgestellten Speicher für signgam als zweiten Parameter verwendet und threadsicher ist.

Es gibt eine nicht standardisierte Funktion namens gamma in verschiedenen Implementierungen, aber ihre Definition ist inkonsistent. Zum Beispiel führt die glibc- und 4.2BSD-Version von gamma lgamma aus, aber die 4.4BSD-Version von gamma führt tgamma aus.

Beispiel

#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));
    // Spezielle Werte
    printf("lgamma(1) = %f\n", lgamma(1));
    printf("lgamma(+Inf) = %f\n", lgamma(INFINITY));
    // Fehlerbehandlung
    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");
}

Mögliche Ausgabe:

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: Numerical result out of range
    FE_DIVBYZERO raised

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.12.8.3 Die lgamma-Funktionen (S.: TBD)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S.: TBD)
  • F.10.5.3 Die lgamma-Funktionen (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.12.8.3 Die lgamma-Funktionen (S: 182)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S: 272-273)
  • F.10.5.3 Die lgamma-Funktionen (S: 383)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.12.8.3 Die lgamma-Funktionen (S: 250)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S: 373-375)
  • F.10.5.3 Die lgamma-Funktionen (S: 525)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.12.8.3 Die lgamma-Funktionen (S: 231)
  • 7.22 Typgenerische Mathematik <tgmath.h> (S: 335-337)
  • F.9.5.3 Die lgamma-Funktionen (S: 462)

Siehe auch

(C99) (C99) (C99)
berechnet die Gamma-Funktion
(Funktion)

Externe Links

Weisstein, Eric W. "Log Gamma Function." Von MathWorld — Eine Wolfram Web Resource.