前几天,新闻上说美国Solidigm公司已计算到圆周率的小数点后105万亿位。很好奇,他们用的是什么语言、什么算法?
我自己尝试了一下割圆术,但是C++的数据类型本身也有精度限制,而且cmath也没有提及三角函数的精度,所以算出来的结果连小数点后50位都达不到;莱布尼茨公式收敛的速度太慢,只计算了公式的前9百万项,时间长、精度低,而且每一项都是分数转小数,每项都存在精度降低的可能,难道16、17世纪,莱布尼茨真用这种方法计算圆周率吗,他借助什么计算工具来完成这么大的计算量?蒙特卡洛方法理论上可行,但实际操作起来,也需要非常多的随机点,而且没法验证小数点后每一位的正确性,进而无法确定精确到了小数点后第几位。
所以,我很好奇,solidigm公司究竟用的是什么方法、什么语言做到的?有大神科普一下吗?