このマニュアルは既にメンテナンスが終了したバージョンの Ruby を対象としています。 最新版のマニュアルへ

Ruby 3.1 リファレンスマニュアル

module function Math.#gamma

gamma(x) -> FloatRuby 1.9.3 から[permalink][rdoc][edit]

x のガンマ関数の値を返します。

[PARAM] x:
実数
[EXCEPTION] TypeError:
x に数値以外を指定した場合に発生します。
[EXCEPTION] Math::DomainError:
x に負の整数、もしくは -∞ を渡した場合に発生します。
[EXCEPTION] RangeError:
x に実数以外の数値を指定した場合に発生します。
自然数 𝑛 に対し Γ(𝑛) = (𝑛 - 1)! を確認
def fact(n) = (1..n).inject(1, :*) # 階乗

1.upto(18) { |n| p [n, Math.gamma(n), fact(n - 1)] }
# => [1, 1.0, 1]
#    [2, 1.0, 1]
#    [3, 2.0, 2]
#    [4, 6.0, 6]
#    [5, 24.0, 24]
#    [6, 120.0, 120]
#    [7, 720.0, 720]
#    [8, 5040.0, 5040]
#    [9, 40320.0, 40320]
#    [10, 362880.0, 362880]
#    [11, 3628800.0, 3628800]
#    [12, 39916800.0, 39916800]
#    [13, 479001600.0, 479001600]
#    [14, 6227020800.0, 6227020800]
#    [15, 87178291200.0, 87178291200]
#    [16, 1307674368000.0, 1307674368000]
#    [17, 20922789888000.0, 20922789888000]
#    [18, 355687428096000.0, 355687428096000]

x に符号付きゼロを渡した場合も +0.0-0.0 は区別され、符号付きの無限大を返します。これは x に負の整数を渡した場合に Math::DomainError が発生するのとは別の挙動です。

例: 符号付きゼロ
p Math.gamma(0.0)   # =>  Infinity
p Math.gamma(-0.0)  # => -Infinity

[SEE_ALSO] Math.#lgamma