Namespaces
Variants

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

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definiert im Header <cmath>
(1)
float tgamma ( float num ) ;

double tgamma ( double num ) ;

long double tgamma ( long double num ) ;
(bis C++23)
/*floating-point-type*/
tgamma ( /*floating-point-type*/ num ) ;
(seit C++23)
(constexpr seit C++26)
float tgammaf ( float num ) ;
(2) (seit C++11)
(constexpr seit C++26)
long double tgammal ( long double num ) ;
(3) (seit C++11)
(constexpr seit C++26)
SIMD-Überladung (seit C++26)
Definiert im Header <simd>
template < /*math-floating-point*/ V >

constexpr /*deduced-simd-t*/ < V >

tgamma ( const V & v_num ) ;
(S) (seit C++26)
Definiert im Header <cmath>
template < class Integer >
double tgamma ( Integer num ) ;
(A) (constexpr seit C++26)
1-3) Berechnet die Gammafunktion von num . Die Bibliothek bietet Überladungen von std::tgamma für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters an. (since C++23)
S) Die SIMD-Überladung führt eine elementweise std::tgamma auf v_num aus.
(Siehe math-floating-point und deduced-simd-t für deren Definitionen.)
(seit C++26)
A) Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als double behandelt werden.
(since C++11)

Inhaltsverzeichnis

Parameter

num - Gleitkomma- oder Ganzzahlwert

Rückgabewert

Wenn keine Fehler auftreten, wird der Wert der Gammafunktion von num , also
0
t num-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 Überlaufs 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 spezifiziert.

Wenn num 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 num eine natürliche Zahl ist, std :: tgamma ( num ) ist die Fakultät von num - 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, falls 0 < num && num < 1 / DBL_MAX oder falls num > 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.

Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr Argument num vom Ganzzahltyp std :: tgamma ( num ) dieselbe Wirkung hat wie std :: tgamma ( static_cast < double > ( num ) ) .

Beispiel

#include <cerrno>
#include <cfenv>
#include <cmath>
#include <cstring>
#include <iostream>
// #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';
    // special values
    std::cout << "tgamma(1) = " << std::tgamma(1) << '\n'
              << "tgamma(+Inf) = " << std::tgamma(INFINITY) << '\n';
    // error handling
    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 << "    FE_INVALID raised\n";
}

Mögliche Ausgabe:

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: Numerical argument out of domain
    FE_INVALID raised

Siehe auch

(C++11) (C++11) (C++11)
Natürlicher Logarithmus der Gammafunktion
(Funktion)
(C++17) (C++17) (C++17)
Betafunktion
(Funktion)
C-Dokumentation für tgamma

Externe Links

Weisstein, Eric W. "Gamma-Funktion." Von MathWorld — Eine Wolfram-Webressource.