Namespaces
Variants

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

From cppreference.net
Definido en el encabezado <cmath>
(1)
float riemann_zeta ( float num ) ;

double riemann_zeta ( double num ) ;

long double riemann_zeta ( long double num ) ;
(desde C++17)
(hasta C++23)
/* floating-point-type */ riemann_zeta ( /* floating-point-type */ num ) ;
(desde C++23)
float riemann_zetaf ( float num ) ;
(2) (desde C++17)
long double riemann_zetal ( long double num ) ;
(3) (desde C++17)
Definido en el encabezado <cmath>
template < class Integer >
double riemann_zeta ( Integer num ) ;
(A) (desde C++17)
1-3) Calcula la función zeta de Riemann de num . La biblioteca proporciona sobrecargas de std::riemann_zeta para todos los tipos de punto flotante sin calificación cv como el tipo del parámetro num . (desde C++23)
A) Se proporcionan sobrecargas adicionales para todos los tipos enteros, los cuales son tratados como double .

Contenidos

Parámetros

num - valor o de punto flotante

Valor de retorno

Si no ocurren errores, el valor de la función zeta de Riemann de num , ζ(num) , definida para todo el eje real:

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

Manejo de errores

Los errores pueden ser reportados como se especifica en math_errhandling .

  • Si el argumento es NaN, se devuelve NaN y no se reporta un error de dominio

Notas

Las implementaciones que no admiten C++17, pero sí admiten ISO 29124:2010 , proporcionan esta función si __STDCPP_MATH_SPEC_FUNCS__ está definido por la implementación con un valor de al menos 201003L y si el usuario define __STDCPP_WANT_MATH_SPEC_FUNCS__ antes de incluir cualquier cabecera de la biblioteca estándar.

Las implementaciones que no admiten ISO 29124:2010 pero sí admiten TR 19768:2007 (TR1), proporcionan esta función en el encabezado tr1/cmath y el espacio de nombres std::tr1 .

Una implementación de esta función también está disponible en boost.math .

Las sobrecargas adicionales no requieren ser proporcionadas exactamente como (A) . Solo necesitan ser suficientes para garantizar que para su argumento num de tipo entero, std :: riemann_zeta ( num ) tenga el mismo efecto que std :: riemann_zeta ( static_cast < double > ( num ) ) .

Ejemplo

#include <cmath>
#include <format>
#include <iostream>
#include <numbers>
int main()
{
    constexpr auto π = std::numbers::pi;
    // verificaciones puntuales para valores conocidos
    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);
}

Salida:

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

Enlaces externos

Weisstein, Eric W. "Función Zeta de Riemann." De MathWorld — Un recurso web de Wolfram.