std:: riemann_zeta, std:: riemann_zetaf, std:: riemann_zetal
|
ヘッダーで定義
<cmath>
|
||
| (1) | ||
|
float
riemann_zeta
(
float
num
)
;
double
riemann_zeta
(
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以降) |
std::riemann_zeta
のオーバーロードを提供する。
(C++23以降)
目次 |
パラメータ
| num | - | 浮動小数点または値 |
戻り値
エラーが発生しない場合、実数軸全体で定義されるリーマンゼータ関数の値 num 、 ζ(num) を返します。
-
num>1 の場合、
Σ
∞
n=1 n -num
-
numが0≤num≤1 の場合、
Σ ∞1 2 1-num
-1
n=1 (-1) n
n -num
-
num<0 の場合、
2
num
π num-1
sin(
)Γ(1−num)ζ(1−num)πnum 2
エラー処理
エラーは、 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; // 既知の値のスポットチェック 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." From MathWorld — A Wolfram Web Resource. |
| Weisstein, Eric W. "Riemann Zeta Function." MathWorld — A Wolfram Web Resourceより。 |