我在 C++ 中实现了一个任意精度的算术库,在实现 gamma 函数时我几乎被卡住了。
通过分别使用等价gamma(n) = gamma(n - 1) * n
和gamma(n) = gamma(n + 1) / n
,我可以获得所有实数值r
范围内的有理数。(1; 2]
x
但是,我不知道如何评价gamma(r)
。对于 Lanczos 近似(https://en.wikipedia.org/wiki/Lanczos_approximation),我需要预先计算的值 p 恰好计算非整数值的阶乘(?!)并且不能用我的动态计算当前知识...在实现任意精度库时,预先计算 p 的值没有多大意义。
是否有任何算法可以gamma(r)
在合理的时间内以任意精度进行计算?谢谢你的帮助。