到目前为止,看起来Fabrice Bellard的基础2方程式是可行的
具有讽刺意味的是,这将需要BigReal类型; 我们有.Net这个吗?.Net 4.0有BigInteger.
有人有Haskell版本吗?
既然你要求Haskell版本,这里有一篇由Jerzy Karczmarczuk撰写的论文,名为"世界上最不可靠的技术来计算π":
本文是懒惰函数编码的非典型练习,为乐趣和教学而编写.任何了解编程语言Haskell的人都可以阅读和理解它.我们展示了如何以共同递归的方式实现π的Bailey-Borwein-Ploue公式,该方法产生数字3,1,4,1,5,9..直到内存耗尽.如果有人需要多位数,这不是一种方法!我们的编码策略是有悖常理和危险的,并且可以证明它已经崩溃了.它基于无限数字序列域上的算术,表示在整数基数中扩展的适当分数.我们展示了如何操纵:添加,乘以整数等等从左到右无限的序列,由于含糊不清,显然不能在所有情况下都起作用.结论中讨论了一些深刻的哲学后果.
它并没有以高效或非常实用的方式真正解决问题,而是娱乐性并且展示了懒惰无限精度算法的一些问题.
然后还有Jeremy Gibbons的这篇论文.
到目前为止,我最喜欢的Haskell pi用于来自Jeremy Gibbons:
pi = g(1,0,1,1,3,3) where g(q,r,t,k,n,l) = if 4*q+r-t可以在以下位置找到证明该实现的数学背景:
Pi数字的插口算法