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
Definiert im Header <math.h>
float tgammaf ( float arg ) ;
(1) (seit C99)
double tgamma ( double arg ) ;
(2) (seit C99)
long double tgammal ( long double arg ) ;
(3) (seit C99)
Definiert im Header <tgmath.h>
#define tgamma( arg )
(4) (seit C99)
1-3) Berechnet die Gamma-Funktion von arg .
4) Typgenerisches Makro: Wenn arg den Typ long double hat, wird tgammal aufgerufen. Andernfalls, wenn arg ganzzahligen Typ oder den Typ double hat, wird tgamma aufgerufen. Andernfalls wird tgammaf aufgerufen.

Inhaltsverzeichnis

Parameter

arg - Gleitkommawert

Rückgabewert

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

Wenn ein Domänenfehler auftritt, wird ein implementierungsdefinierter Wert (NaN, sofern unterstützt) 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.

Wenn ein Bereichsfehler aufgrund von Unterlauf auftritt, wird der korrekte Wert (nach Rundung) 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 oder ein Definitionsbereichsfehler auftreten.

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

  • Wenn das Argument ±0 ist, wird ±∞ zurückgegeben und FE_DIVBYZERO wird ausgelöst.
  • Wenn das Argument eine negative Ganzzahl ist, wird NaN zurückgegeben und FE_INVALID wird ausgelöst.
  • Wenn das Argument -∞ ist, wird NaN zurückgegeben und FE_INVALID 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, tgamma ( arg ) ist die Fakultät von arg - 1 . Viele Implementierungen berechnen die exakte Ganzzahl-Fakultät, wenn das Argument eine hinreichend kleine Ganzzahl ist.

Für IEEE-kompatible Typen double tritt Überlauf auf, wenn 0 < x < 1 / DBL_MAX oder wenn x > 171.7 .

POSIX erfordert dass ein Polfehler auftritt, wenn das Argument null ist, aber ein Definitionsbereichfehler auftritt, wenn das Argument eine negative ganze Zahl ist. Es legt auch fest, dass in Zukunft Definitionsbereichfehler für negative ganzzahlige Argumente durch Polfehler ersetzt werden können (in diesem Fall würde der Rückgabewert in diesen Fällen von NaN zu ±∞ wechseln).

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

Mögliche Ausgabe:

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

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.12.8.4 Die tgamma-Funktionen (S: 250)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S: 373-375)
  • F.10.5.4 Die tgamma-Funktionen (S: 525)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.12.8.4 Die tgamma-Funktionen (S. 250)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 373-375)
  • F.10.5.4 Die tgamma-Funktionen (S. 525)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.12.8.4 Die tgamma-Funktionen (S: 250)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S: 373-375)
  • F.10.5.4 Die tgamma-Funktionen (S: 525)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.12.8.4 Die tgamma-Funktionen (S. 231)
  • 7.22 Typgenerische Mathematik <tgmath.h> (S. 335-337)
  • F.9.5.4 Die tgamma-Funktionen (S. 462)

Siehe auch

(C99) (C99) (C99)
berechnet den natürlichen (Basis- e ) Logarithmus der Gammafunktion
(Funktion)

Externe Links

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