名前空間
変種
操作

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

From cppreference.com
 
 
 
 
ヘッダー <cmath> で定義
(1)
float       riemann_zeta ( float num );

double      riemann_zeta ( double num );

long double riemann_zeta ( long double num );
(C++17以降)
(C++23まで)
/* floating-point-type */ riemann_zeta( /* floating-point-type */ num );
(C++23から)
float       riemann_zetaf( float num );
(2) (C++17以降)
long double riemann_zetal( long double num );
(3) (C++17以降)
ヘッダー <cmath> で定義
template< class Integer >
double      riemann_zeta ( Integer num );
(A) (C++17以降)
1-3) numリーマンゼータ関数を計算します。ライブラリは、パラメータ num の型として、すべての cv-修飾されていない浮動小数点型に対する std::riemann_zeta のオーバーロードを提供します。(since C++23)
A) すべての整数型に対する追加のオーバーロードが提供されます。これらは double として扱われます。

目次

[編集] パラメータ

num - 浮動小数点数または値

[編集] 戻り値

エラーが発生しない場合、num のリーマンゼータ関数、ζ(num) の値。これは実軸全体で定義されます。

  • num>1 の場合、Σ
    n=1
    n-num
  • 0≤num≤1 の場合、
    1
    21-num
    -1
    Σ
    n=1
    (-1)n
    n-num
  • num<0 の場合、2num
    πnum-1
    sin(
    πnum
    2
    )Γ(1−num)ζ(1−num)

[編集] エラー処理

math_errhandling で指定されたとおりにエラーが報告される場合があります。

  • 引数が NaN の場合、NaN が返され、ドメインエラーは報告されません。

[編集] 注記

C++17をサポートしないが、ISO 29124:2010をサポートする実装では、実装によって__STDCPP_MATH_SPEC_FUNCS__が少なくとも201003L以上の値に定義され、ユーザーが標準ライブラリヘッダをインクルードする前に__STDCPP_WANT_MATH_SPEC_FUNCS__を定義した場合、この関数が提供されます。

ISO 29124:2010をサポートしないが、TR 19768:2007 (TR1) をサポートする実装では、tr1/cmathヘッダおよびstd::tr1名前空間でこの関数が提供されます。

この関数の実装は、boost.math でも利用可能です。

追加のオーバーロードは (A) とまったく同じように提供される必要はありません。整数型の引数 num に対して、std::riemann_zeta(num)std::riemann_zeta(static_cast<double>(num)) と同じ効果を持つことを保証するのに十分であればよいのです。

[編集]

#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);
}

出力

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

[編集] 外部リンク

Weisstein, Eric W. "Riemann Zeta Function." MathWorld — A Wolfram Web Resourceより。
English 日本語 中文(简体) 中文(繁體)