到目前为止,它看起来像法布里斯·贝拉的基地2方程是要走的路。

“替代文字”

讽刺的是,这将需要一个BigReal类型;做我们这对于.NET? .NET 4.0具有的BigInteger。

任何人都有一个Haskell版本?

有帮助吗?

解决方案

既然你问了一个Haskell版本,这里是一纸由耶Karczmarczuk,被称为“最不可靠的技术在世界各地以计算π”:

  

此纸是一种非典型exercice在   懒惰的功能编码,书面   乐趣和指令。它可以读取   和任何人了解谁   理解编程语言   哈斯克尔。我们展示如何实现   贝利-Borwein-Ploue公式π   在共同递归的,渐进的方式   其产生的数字3,1,4,1,   5,9。 。直到内存   疲惫。这不是办法   继续,如果有人需要很多   数字!我们的编码策略是   乖张和危险的,它   可证明分解。它是基于   在算术上的域   数字无穷序列   较适当的分数扩大   在一个整数碱。我们展示如何   操作:加,乘用   整数等。从这样的序列   从左到右循环往复,   这显然不能工作在所有   因为含糊不清的情况。一些   深层次的哲学后果   在结论中讨论的。

它并不真正解决以有效或非常实用的方法的问题,但是娱乐性和示出了一些与懒惰无限精度算术的问题。

然后有也本文由Jeremy长臂猿

其他提示

这是迄今为止我最喜欢的Haskell插口对于PI来自杰里米·吉本斯:

pi = g(1,0,1,1,3,3) where
    g(q,r,t,k,n,l) = 
        if 4*q+r-t<n*t
        then n : g(10*q,10*(r-n*t),t,k,div(10*(3*q+r))t-10*n,l)
        else g(q*k,(2*q+r)*l,t*l,k+1,div(q*(7*k+2)+r*l)(t*l),l+2)

这证明该实施的数学背景中可以找到:

插口算法裨的位数

有这样的存在的可能性来处理大有理数在 DLR 基于动态语言(如 IronPython的)。或者你可以使用任何便携式C / C ++实现大的实数通过的P / Invoke

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top