Namespaces
Variants

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

From cppreference.net
double riemann_zeta ( double arg ) ;

double riemann_zeta ( float arg ) ;
double riemann_zeta ( long double arg ) ;
float riemann_zetaf ( float arg ) ;

long double riemann_zetal ( long double arg ) ;
(1)
double riemann_zeta ( IntegralType arg ) ;
(2)
1) 引数 arg Riemann zeta function を計算します。
2) 任意の 整数型 の引数を受け入れるオーバーロードのセットまたは関数テンプレート。引数を double にキャストした後の (1) と等価です。

すべての特殊関数と同様に、 riemann_zeta は、 __STDCPP_MATH_SPEC_FUNCS__ が実装によって少なくとも201003Lの値に定義されており、かつユーザーが標準ライブラリのヘッダーをインクルードする前に __STDCPP_WANT_MATH_SPEC_FUNCS__ を定義している場合にのみ、 <cmath> で利用可能であることが保証されています。

目次

パラメータ

arg - 浮動小数点型または整数型の値

戻り値

エラーが発生しない場合、実数全体で定義されるリーマンゼータ関数の値 arg ζ(arg) を計算します:

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

エラーハンドリング

エラーは math_errhandling で指定される方法で報告される場合があります。

  • 引数がNaNの場合、NaNが返され、定義域エラーは報告されません。

注記

TR 29124をサポートせず、TR 19768をサポートする実装では、この関数はヘッダー tr1/cmath および名前空間 std::tr1 で提供されます。

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

(gcc 6.0で示された通り動作します)

#define __STDCPP_WANT_MATH_SPEC_FUNCS__ 1
#include <cmath>
#include <iostream>
int main()
{
    // 既知の値に対するスポットチェック
    std::cout << "ζ(-1) = " << std::riemann_zeta(-1) << '\n'
              << "ζ(0) = " << std::riemann_zeta(0) << '\n'
              << "ζ(1) = " << std::riemann_zeta(1) << '\n'
              << "ζ(0.5) = " << std::riemann_zeta(0.5) << '\n'
              << "ζ(2) = " << std::riemann_zeta(2) << ' '
              << "(π²/6 = " << std::pow(std::acos(-1), 2) / 6 << ")\n";
}

出力:

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

外部リンク

Weisstein, Eric W. "リーマンゼータ関数." MathWorld(Wolfram Webリソース)より。