名稱空間
變體
操作

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

來自 cppreference.com
< cpp‎ | 數值‎ | 特殊函式
 
 
 
 
定義於標頭檔案 <cmath>
(1)
float       riemann_zeta ( float num );

double      riemann_zeta ( double num );

long double riemann_zeta ( long 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 起)
1-3) 計算 黎曼 zeta 函式num 庫為所有 cv-不限定的浮點型別提供了 std::riemann_zeta 的過載,作為引數 num 的型別。(C++23 起)
A) 為所有整數型別提供了額外的過載,它們被視為 double

目錄

[編輯] 引數

num - 浮點數或值

[編輯] 返回值

如果沒有錯誤發生,返回在整個實軸上定義的黎曼 zeta 函式 num 的值,ζ(num)

  • 對於 num>1Σ
    n=1
    n-num
  • 對於 0≤num≤1
    1
    21-num
    -1
    Σ
    n=1
    (-1)n
    n-num
  • 對於 num<02num
    πnum-1
    sin(
    πnum
    2
    )Γ(1−num)ζ(1−num)

[編輯] 錯誤處理

錯誤可能按 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) 提供額外的過載。它們只需足以確保對於整數型別的引數 numstd::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 網路資源。