Namespaces
Variants

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

From cppreference.net
Défini dans l'en-tête <cmath>
(1)
float riemann_zeta ( float num ) ;

double riemann_zeta ( double num ) ;

long double riemann_zeta ( long double num ) ;
(depuis C++17)
(jusqu'à C++23)
/* floating-point-type */ riemann_zeta ( /* floating-point-type */ num ) ;
(depuis C++23)
float riemann_zetaf ( float num ) ;
(2) (depuis C++17)
long double riemann_zetal ( long double num ) ;
(3) (depuis C++17)
Défini dans l'en-tête <cmath>
template < class Integer >
double riemann_zeta ( Integer num ) ;
(A) (depuis C++17)
1-3) Calcule la fonction zêta de Riemann de num . La bibliothèque fournit des surcharges de std::riemann_zeta pour tous les types à virgule flottante non qualifiés cv comme type du paramètre num . (depuis C++23)
A) Des surcharges supplémentaires sont fournies pour tous les types entiers, qui sont traités comme double .

Table des matières

Paramètres

num - valeur à virgule flottante ou valeur

Valeur de retour

Si aucune erreur ne se produit, valeur de la fonction zêta de Riemann de num , ζ(num) , définie pour l'ensemble de l'axe réel :

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

Gestion des erreurs

Les erreurs peuvent être signalées comme spécifié dans math_errhandling .

  • Si l'argument est NaN, NaN est retourné et aucune erreur de domaine n'est signalée

Notes

Les implémentations qui ne prennent pas en charge C++17, mais prennent en charge ISO 29124:2010 , fournissent cette fonction si __STDCPP_MATH_SPEC_FUNCS__ est défini par l'implémentation à une valeur d'au moins 201003L et si l'utilisateur définit __STDCPP_WANT_MATH_SPEC_FUNCS__ avant d'inclure tout en-tête de la bibliothèque standard.

Les implémentations qui ne prennent pas en charge ISO 29124:2010 mais prennent en charge TR 19768:2007 (TR1), fournissent cette fonction dans l'en-tête tr1/cmath et l'espace de noms std::tr1 .

Une implémentation de cette fonction est également disponible dans boost.math .

Les surcharges supplémentaires ne sont pas tenues d'être fournies exactement comme (A) . Elles doivent seulement être suffisantes pour garantir que pour leur argument num de type entier, std :: riemann_zeta ( num ) ait le même effet que std :: riemann_zeta ( static_cast < double > ( num ) ) .

Exemple

#include <cmath>
#include <format>
#include <iostream>
#include <numbers>
int main()
{
    constexpr auto π = std::numbers::pi;
    // vérifications ponctuelles pour les valeurs connues
    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);
}

Sortie :

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

Liens externes

Weisstein, Eric W. "Fonction Zêta de Riemann." De MathWorld — Une ressource Web Wolfram.