Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
任意精度伽马函数 我在C++中实现了任意精度的算术库,在实现伽玛函数时,我几乎被卡住了。_C++_Algorithm_Math_Floating Point_Gamma Function - Fatal编程技术网

任意精度伽马函数 我在C++中实现了任意精度的算术库,在实现伽玛函数时,我几乎被卡住了。

任意精度伽马函数 我在C++中实现了任意精度的算术库,在实现伽玛函数时,我几乎被卡住了。,c++,algorithm,math,floating-point,gamma-function,C++,Algorithm,Math,Floating Point,Gamma Function,通过分别使用等价的gamma(n)=gamma(n-1)*n和gamma(n)=gamma(n+1)/n,我可以为所有实值x获得一个范围(1;2]的有理数r 但是,我不知道如何计算gamma(r)。对于Lanczos近似(),我需要预先计算的值p,它正好计算非整数值(?)的阶乘而且不能用我目前的知识动态计算…在实现任意精度库时,预先计算p的值没有多大意义 有没有任何算法可以在合理的时间内以任意精度计算伽马(r)?谢谢你的帮助。Lanczos近似似乎不太糟糕。你到底怀疑什么 计算p、C(切比雪夫多

通过分别使用等价的
gamma(n)=gamma(n-1)*n
gamma(n)=gamma(n+1)/n
,我可以为所有实值
x
获得一个范围
(1;2]
的有理数
r

但是,我不知道如何计算
gamma(r)
。对于Lanczos近似(),我需要预先计算的值p,它正好计算非整数值(?)的阶乘而且不能用我目前的知识动态计算…在实现任意精度库时,预先计算p的值没有多大意义


有没有任何算法可以在合理的时间内以任意精度计算伽马(r)?谢谢你的帮助。

Lanczos近似似乎不太糟糕。你到底怀疑什么


计算
p
C
(切比雪夫多项式)和
(a+1/2)!
的代码部分可以实现为有状态对象,例如,您可以从
p(i-1)计算
p(i)
和切比雪夫系数可以计算一次,保持它们的矩阵。

类似于Lanczos的近似,但可能更容易用于任意精度,因为您可以设置所需的误差。

我想您已经研究过,但没有找到您需要的。看起来它更像是与数学有关,而不是与编程有关……也许,它是“最好把问题贴在那里。我也会查看MPFR的源代码,看看他们使用了什么。@乔治·索维托夫:考虑到高效实现的实际限制,我认为这是合理的主题。现代计算机算术第二4.5版(官方PDF)给出了一种方法,即对大的
x
使用Stirling渐近展开,并使用函数方程将其转换为较小的
x
(反射公式可以有效地将其扩展到负的
x