名前空間
変種
操作

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

提供: cppreference.com
 
 
 
 
double      riemann_zeta( double arg );

float       riemann_zeta( float arg );
long double riemann_zeta( long double arg );
float       riemann_zetaf( float arg );

long double riemann_zetal( long double arg );
(1) (C++17以上)
double      riemann_zeta( 整数型 arg );
(2) (C++17以上)
1) argリーマンゼータ関数を計算します。
2) 任意の整数型の引数を取るオーバーロード集合または関数テンプレート。 double にキャストした後は (1) と同等です。

目次

[編集] 引数

arg - 浮動小数点型または整数型の値

[編集] 戻り値

エラーが発生しなければ、実軸全体について定義された、 arg のリーマンゼータ関数 ζ(arg) の値。

  • arg>1 の場合は Σ
    n=1
    n-arg
  • 0≤arg≤1 の場合は
    1
    1-21-arg
    Σ
    n=1
    (-1)n-1
    n-arg
  • arg<0 の場合は 2arg
    πarg-1
    sin(
    πarg
    2
    )Γ(1−arg)ζ(1−arg)

[編集] エラー処理

エラーは 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 でも利用可能です。

[編集]

#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.