名前空間
変種
操作

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

From cppreference.com
 
 
 
 
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リーマンゼータ関数を計算します。
2) 整数型 (integral type) の引数を受け付けるオーバーロードのセット、または関数テンプレートです。引数を 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 - 21-arg
    Σ
    n=1
    (-1)n-1
    n-arg
  • arg < 0 の場合、 2arg
    π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()
{
    // spot checks for well-known values
    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. "Riemann Zeta Function." From MathWorld--A Wolfram Web Resource.

English 日本語 中文(简体) 中文(繁體)