最終更新日時(UTC):
が更新

履歴 編集

function
<cmath>

std::riemann_zeta(C++17)

namespace std {
  double
    riemann_zeta(double x);              // (1) C++17
  floating-point-type
    riemann_zeta(floating-point-type x); // (1) C++23

  Promoted
    riemann_zeta(Arithmetic x);          // (2) C++17

  float
    riemann_zetaf(float x);              // (3) C++17

  long double
    riemann_zetal(long double x);        // (4) C++17
}

概要

リーマンのゼータ関数 (Riemann zeta function) を求める。

  • (1) :
    • C++17 : doubleに対するオーバーロード
    • C++23 : 浮動小数点数型に対するオーバーロード
  • (2) : 算術型に対するオーバーロード (対応する精度の浮動小数点数型にキャストして計算される)
  • (3) : float型規定
  • (4) : long double型規定

戻り値

引数 x のリーマンゼータ関数 $$ \zeta (x) = \begin{cases} \displaystyle \sum_{k=1}^\infty k^{-x} & \text{for } x > 1 \\ \displaystyle \frac{1}{1 - 2^{1-x}} \sum_{k=1}^\infty (-1)^{k-1} k^{-x} & \text{for } 0 \le x \le 1 \\ \displaystyle 2^x \pi^{x-1} \sin \frac{\pi x}{2} \Gamma (1 - x) \zeta(1 - x) & \text{for } x < 0 \end{cases} $$ を返す。

備考

#include <cmath>
#include <iostream>

int main() {
  std::cout << "riemann_zeta(-2) = " << std::riemann_zeta(-2) << "\n";  // 0
  std::cout << "riemann_zeta(-1) = " << std::riemann_zeta(-1) << "\n";  // -1 / 12
  std::cout << "riemann_zeta(0)  = " << std::riemann_zeta(0) << "\n";   // -1 / 2
  std::cout << "riemann_zeta(1)  = " << std::riemann_zeta(1) << "\n";   // ∞
  std::cout << "riemann_zeta(2)  = " << std::riemann_zeta(2) << "\n";   // π^2 / 6
}

出力例

riemann_zeta(-2) = 0
riemann_zeta(-1) = -0.0833333
riemann_zeta(0)  = -0.5
riemann_zeta(1)  = inf
riemann_zeta(2)  = 1.64493

バージョン

言語

  • C++17

処理系

参照