Namensräume
Varianten
Aktionen

std::riemann_zeta, std::riemann_zetaf, std::riemann_zetal

Von cppreference.com
 
 
 
 
Definiert in der Header-Datei <cmath>
(1)
float       riemann_zeta ( float num );

double      riemann_zeta ( double num );

long double riemann_zeta ( long double num );
(seit C++17)
(bis C++23)
/* Gleitkomma-Typ */ riemann_zeta( /* Gleitkomma-Typ */ num );
(seit C++23)
float       riemann_zetaf( float num );
(2) (seit C++17)
long double riemann_zetal( long double num );
(3) (seit C++17)
Definiert in der Header-Datei <cmath>
template< class Integer >
double      riemann_zeta ( Integer num );
(A) (seit C++17)
1-3) Berechnet die Riemannsche Zeta-Funktion von num. Die Bibliothek stellt Überladungen von std::riemann_zeta für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters num bereit.(seit C++23)
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.

Inhalt

[edit] Parameter

num - Gleitkommazahl oder Wert

[edit] Rückgabewert

Wenn keine Fehler auftreten, Wert der Riemannschen Zeta-Funktion von num, ζ(num), definiert für die gesamte reelle Achse.

  • Für num>1, Σ
    n=1
    n-num
  • Für 0≤num≤1,
    1
    21-num
    -1
    Σ
    n=1
    (-1)n
    n-num
  • Für num<0, 2num
    πnum-1
    sin(
    πnum
    2
    )Γ(1−num)ζ(1−num)

[edit] Fehlerbehandlung

Fehler können wie in math_errhandling angegeben gemeldet werden.

  • Wenn das Argument NaN ist, wird NaN zurückgegeben und kein Domänenfehler gemeldet.

[edit] Anmerkungen

Implementierungen, die C++17 nicht unterstützen, aber ISO 29124:2010 unterstützen, stellen diese Funktion bereit, wenn __STDCPP_MATH_SPEC_FUNCS__ von der Implementierung auf einen Wert von mindestens 201003L definiert wird und wenn der Benutzer __STDCPP_WANT_MATH_SPEC_FUNCS__ definiert, bevor er beliebige Standardbibliotheks-Header einschließt.

Implementierungen, die ISO 29124:2010 nicht unterstützen, aber TR 19768:2007 (TR1) unterstützen, stellen diese Funktion im Header tr1/cmath im Namespace std::tr1 bereit.

Eine Implementierung dieser Funktion ist auch in boost.math verfügbar.

Die zusätzlichen Überladungen müssen nicht exakt als (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom Integer-Typ, std::riemann_zeta(num) denselben Effekt hat wie std::riemann_zeta(static_cast<double>(num)).

[edit] Beispiel

#include <cmath>
#include <format>
#include <iostream>
#include <numbers>
 
int main()
{
    constexpr auto π = std::numbers::pi;
 
    // spot checks for well-known values
    for (const double x : {-1.0, 0.0, 1.0, 0.5, 2.0})
        std::cout << std::format("ζ({})\t= {:+.5f}\n", x, std::riemann_zeta(x));
    std::cout << std::format("π²/6\t= {:+.5f}\n", π * π / 6);
}

Ausgabe

ζ(-1)   = -0.08333
ζ(0)    = -0.50000
ζ(1)    = +inf
ζ(0.5)  = -1.46035
ζ(2)    = +1.64493
π²/6    = +1.64493

[edit] Externe Links

Weisstein, Eric W. "Riemann Zeta Function." Aus MathWorld – Eine Wolfram-Webressource.