私はC++で任意の精度の算術ライブラリを実装していますが、ガンマ関数を実装するときはかなり詰まっています。等価gamma(n) = gamma(n - 1) * n
とgamma(n) = gamma(n + 1)/n
を使用することにより任意精度のガンマ関数
、それぞれ、私はすべての実数値x
ための範囲(1; 2]
で有理数r
を得ることができます。
しかし、gamma(r)
の評価方法はわかりません。 Lanczos近似(https://en.wikipedia.org/wiki/Lanczos_approximation)については、私は事前計算値pを必要とする非整数値(?!)の階乗を計算し、私の現在の知識で動的に計算することはできません... pの事前計算値は任意の精度ライブラリを実装する場合には、非常に意味があります。
gamma(r)
を任意の精度で適切な時間内に計算するアルゴリズムはありますか?ご協力いただきありがとうございます。
私はあなたがhttp://functions.wolfram.com/GammaBetaErf/Gamma/introductions/Gamma/05/を勉強し、必要なものを見つけることができなかったと推測します。 –
それはプログラミングよりも数学に関連しているように見えます。たぶん、そこに質問を投稿する方が良いでしょう。 –
私はMPFRのソースを調べて、彼らが何を使用しているかを見ていきます。 –