对于学校的作业,我正在尝试使用 Gauss Legendre 算法计算 pi 来测试 CPU 效率。因此,我用 Ruby 编写了一个程序。这个程序应该迭代 500000000 次并显示它使用的时间。但每次它都会在一秒钟内执行。我的问题:有没有更好的迭代方法,所以它确实重复了 5 亿次并显示 pi 和时间?
include Math
a = 1
b = 1/sqrt(2)
t = 0.25
p = 1
i = 0
imax = 500000000
start = Time.now
until i = imax
an = (a/2) + (b/2)
bn = sqrt(a) * sqrt(b)
tn = t - p * ((a-an) * (a-an))
pn = 2 * p
a = an
b = bn
t = tn
p = pn
i +=1
PI = ((a+b)*(a+b))/(4*t)
end
finish = Time.now
time = finish - start
puts PI
puts time