Namensräume
Varianten
Aktionen

tgamma, tgammaf, tgammal

Von cppreference.com
< c‎ | numerik‎ | math
 
 
 
Allgemeine mathematische Funktionen
Funktionen
Grundlegende Operationen
(C99)
(C99)
(C99)
(C99)(C99)(C99)(C23)
Maximum/Minimum-Operationen
(C99)
(C99)
Exponentialfunktionen
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Potenzfunktionen
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
Trigonometrische und hyperbolische Funktionen
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nächste ganze Gleitkommazahlen
(C99)(C99)(C99)
(C99)

(C99)(C99)(C99)
(C23)(C23)(C23)(C23)
Gleitkomma-Manipulation
(C99)(C99)
(C99)(C23)
(C99)
Verengende Operationen
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quanten- und Quantenexponent-Funktionen
Dezimal-Neu-Kodierungsfunktionen
Gesamtordnung und Payload-Funktionen
Klassifizierung
(C99)
(C99)
(C99)
(C23)
Fehler- und Gammafunktionen
(C99)
(C99)
(C99)
tgamma
(C99)
Typen
Makrokonstanten
Spezielle Gleitkommawerte
(C99)(C23)
Argumente und Rückgabewerte
Fehlerbehandlung
Schnelle Operationsanzeigen
 
Definiert in 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 in Header <tgmath.h>
#define tgamma( arg )
(4) (seit C99)
1-3) Berechnet die Gammafunktion von arg.
4) Typ-generische Makrodefinition: Wenn arg vom Typ long double ist, wird tgammal aufgerufen. Andernfalls, wenn arg vom Integer-Typ oder vom Typ double ist, wird tgamma aufgerufen. Andernfalls wird tgammaf aufgerufen.

Inhalt

[edit] Parameter

arg - Gleitkommawert

[edit] Rückgabewert

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

Wenn ein Domänenfehler auftritt, wird ein implementierungsdefinierter Wert (NaN, wo unterstützt) zurückgegeben.

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

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

Wenn ein Bereichsfehler aufgrund von Unterlauf auftritt, wird der korrekte Wert (nach Rundung) zurückgegeben.

[edit] Fehlerbehandlung

Fehler werden wie in math_errhandling angegeben gemeldet.

Wenn arg null oder eine negative ganze Zahl ist, kann ein Polfehler oder ein Domänenfehler auftreten.

Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt

  • Wenn das Argument ±0 ist, wird ±∞ zurückgegeben und FE_DIVBYZERO ausgelöst.
  • Wenn das Argument eine negative ganze Zahl ist, wird NaN zurückgegeben und FE_INVALID ausgelöst.
  • Wenn das Argument -∞ ist, wird NaN zurückgegeben und FE_INVALID ausgelöst.
  • Wenn das Argument +∞ ist, wird +∞ zurückgegeben.
  • Wenn das Argument NaN ist, wird NaN zurückgegeben.

[edit] Hinweise

Wenn arg eine natürliche Zahl ist, ist tgamma(arg) die Fakultät von arg - 1. Viele Implementierungen berechnen die exakte Fakultät für Ganzzahlargumente, wenn das Argument eine ausreichend kleine ganze Zahl ist.

Für den IEEE-kompatiblen Typ double tritt ein Überlauf auf, wenn 0 < x < 1/DBL_MAX oder wenn x > 171.7.

POSIX schreibt vor, dass ein Polfehler auftritt, wenn das Argument null ist, während ein Domänenfehler auftritt, wenn das Argument eine negative ganze Zahl ist. Es wird auch angegeben, dass Domänenfehler in Zukunft durch Polfehler für negative ganzzahlige Argumente ersetzt werden könnten (in diesem Fall würde der Rückgabewert von NaN zu ±∞ geändert).

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

[edit] 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

[edit] Referenzen

  • C23-Standard (ISO/IEC 9899:2024)
  • 7.12.8.4 Die tgamma-Funktionen (S. 250)
  • 7.25 Typ-generische 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 Typ-generische 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 Typ-generische 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 Typ-generische Mathematik <tgmath.h> (S. 335-337)
  • F.9.5.4 Die tgamma-Funktionen (S. 462)

[edit] Siehe auch

(C99)(C99)(C99)
berechnet den natürlichen (Basis-e) Logarithmus der Gammafunktion
(Funktion) [bearbeiten]
C++-Dokumentation für tgamma

[edit] Externe Links

Weisstein, Eric W. "Gamma Function." From MathWorld — A Wolfram Web Resource.