Newer
Older
Ruby / pibench.rb
@HIROSE Yuuji HIROSE Yuuji on 24 Sep 2021 664 bytes PI calculation programms added
#!/usr/bin/env ruby
# From: http://imetrics.co.jp/math2/Pi-with-Ruby.pdf
require "bigdecimal"
require "benchmark"
result = Benchmark.realtime do
  prec = 10
  conv = 6
  a = BigDecimal("1")
  b = BigDecimal("1") / BigDecimal("2").sqrt(prec)
  t = BigDecimal("1") / 4
  p = BigDecimal("1")
  for n in 1..conv do
    an = (a + b) / 2
    b = (a * b).sqrt(prec)
    t -= p * (an - a) * (an - a)
    p *= 2
    a = an
  end
  puts (a + b) * (a + b) / (4 * t)
end
puts "Time: #{result}s"

include Math
a=1.0; b=1/sqrt(2); t=1.0/4; p=1.0
6.times do
  an = (a+b)/2
  b  = sqrt(a*b)
  t -= p*(an-a)*(an-a)
  p *= 2
  a  = an
  p a
end
  puts (a + b) * (a + b) / (4.0 * t)