Linux上一个命令计算PI

在Windows上有super pi可以计算PI,在Linux上,我之前也写过 y-cruncher 工具可用于计算PI;其实,Linux上只需要使用 bc 这简单的命令行工具也可以计算PI。

bc 命令加上 -l 参数后,就可以使用sin/cos/atan等数学函数,其中:
a (x) The arctangent of x, arctangent returns radians. # 就是计算 atan() 反正切值。
由于tan(PI/4) = 1 ,所以 PI = 4*atan(1)

在bc中,用scale=100 这样的变量来控制计算结果的小数点后面的位数。

所以,echo "scale=10000; 4*a(1)" | bc -l 这个命令就可以表示计算PI保留小数点后1万位小数。

加上time命令对PI计算过程计时,演示如下:

我们可以看到通过bc这样计算,PI后1万位小数点精度,花费了143秒钟。

是的,就这么简单,用来简单测试一下单核CPU的计算能力也是挺直观的(主要和CPU主频相关)。

不过,我发现这种bc中调用a()的计算方法效率可能不高(耗时较多,且不能多线程、不能使用到AVX2之类的新指令),可以和我之前介绍y-cruncher工具比较一下。

参考资料:
man bc (搜索一下arctangent, scale等关键词)
y-cruncher: http://smilejay.cn/2017/03/y-cruncher-a-cpu-test-benchmark/

master

Stay hungry, stay foolish.

2 Comments

  1. 这假的吧,我找了一台机器,2个cpu,48核也是2分多

    • 这么简单的问题 很难的假的吧
      文章中写清楚了的;只能单线程运行。再多cpu也没用。

发表评论

邮箱地址不会被公开。 必填项已用*标注

*