std::riemann_zeta, std::riemann_zetaf, std::riemann_zetal
From cppreference.com
< cpp | experimental | special functions
| double riemann_zeta( double arg ); double riemann_zeta( float arg ); |
(1) | |
| double riemann_zeta( IntegralType arg ); |
(2) | |
すべての特殊関数と同様に、riemann_zetaは、実装によって__STDCPP_MATH_SPEC_FUNCS__が少なくとも201003Lの値に定義されており、かつユーザーが標準ライブラリヘッダーをインクルードする前に__STDCPP_WANT_MATH_SPEC_FUNCS__を定義した場合にのみ、<cmath>で利用可能であることが保証されます。
目次 |
[編集] パラメータ
| arg | - | 浮動小数点型または整数型の値 |
[編集] 戻り値
エラーが発生しなかった場合、実軸全体で定義されるリーマンゼータ関数 arg の値 ζ(arg)
- arg > 1 の場合、 Σ∞
n=1n-arg
。 - 0 ≤ arg ≤ 1 の場合、
Σ∞1 1 - 21-arg
n=1(-1)n-1
n-arg
。 - arg < 0 の場合、 2arg
πarg-1
sin(
)Γ(1 − arg)ζ(1 − arg)。πarg 2
[編集] エラー処理
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.