1. BBP(贝利-波尔温-普劳夫)公式
π=∑k=0∞16k1(8k+14−8k+42−8k+51−8k+61)
该公式给出了一个求 π 在十六进制下小数点后第 n+1 位数值位的算法,实现步骤如下:
- 对公式中的每一项进行拆分,拆成 n 之前和 n 之后两部分。
- 以公式中第一项为例:
∑k=0∞16k(8k+1)1=∑k=0n16k(8k+1)1+∑k=n+1∞16k(8k+1)1
等式两边同时乘以 16n,使小数点恰好落在第 n 位。
∑k=0∞8k+116n−k=∑k=0n8k+116n−k+∑k=n+1∞8k+116n−k
由于我们只关心小数部分,而该式子的右边只有第一项会出现整数部分,故需要将第一项去除整数部分:
∑k=0n8k+116n−k mod 8k+1+∑k=n+1∞8k+116n−k
从而将小数部分的和保留了下来,记为 ∑1 。
- 对公式中的其他项采取相同的处理办法,分别记为 ∑2、∑3、∑4,则最终求出 π 在十六进制下小数点后第 n+1 数值位的数值为:
⌊4∑1−2∑2−∑3−∑4⌋
【其他 BBP-Type 公式】
π=4∑k=0∞4k(2k+1)(−1)k−641∑k=0∞1024k(−1)k(4k+132+4k+28+4k+31)
BBP 和 BBP-Type 公式的意义在于它们可以求 π 小数点后任意位的数字,而不需要求出该位前的所有位小数。