std::riemann_zeta, std::riemann_zetaf, std::riemann_zetal
來自 cppreference.com
定義於標頭檔案 <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 起) |
A) 為所有整數型別提供了額外的過載,它們被視為 double。
目錄 |
[編輯] 引數
num | - | 浮點數或值 |
[編輯] 返回值
如果沒有錯誤發生,返回在整個實軸上定義的黎曼 zeta 函式 num 的值,ζ(num)
- 對於 num>1,Σ∞
n=1n-num - 對於 0≤num≤1,
Σ∞1 21-num
-1
n=1 (-1)n
n-num - 對於 num<0,2num
π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; // 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 — Wolfram 網路資源。 |