Namespaces
Variants

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

From cppreference.net
Definiert im Header <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)
/* floating-point-type */ riemann_zeta ( /* floating-point-type */ 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 im Header <cmath>
template < class Integer >
double riemann_zeta ( Integer num ) ;
(A) (seit C++17)
1-3) Berechnet die Riemann-Zeta-Funktion von num . Die Bibliothek bietet Überladungen von std::riemann_zeta für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters num an. (since C++23)
A) Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als double behandelt werden.

Inhaltsverzeichnis

Parameter

num - Gleitkomma- oder Ganzzahlwert

Rückgabewert

Wenn keine Fehler auftreten, Wert der Riemannschen Zetafunktion von num , ζ(num) , definiert für die gesamte reelle Achse:

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

Fehlerbehandlung

Fehler können gemäß den Angaben in math_errhandling gemeldet werden.

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

Hinweise

Implementierungen, die C++17 nicht unterstützen, aber ISO 29124:2010 unterstützen, stellen diese Funktion bereit, wenn __STDCPP_MATH_SPEC_FUNCS__ durch die Implementierung auf einen Wert von mindestens 201003L definiert wird und wenn der Benutzer __STDCPP_WANT_MATH_SPEC_FUNCS__ definiert, bevor er Standardbibliotheksheader einbindet.

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

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

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 :: riemann_zeta ( num ) die gleiche Wirkung hat wie std :: riemann_zeta ( static_cast < double > ( num ) ) .

Beispiel

#include <cmath>
#include <format>
#include <iostream>
#include <numbers>
int main()
{
    constexpr auto π = std::numbers::pi;
    // Stichproben für bekannte Werte
    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

Externe Links

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