1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Changed to use lib/bigdecimal/math.rb.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shigek 2003-08-14 15:33:36 +00:00
parent 9b1dbc0c77
commit 67ea373c70

View file

@ -3,48 +3,18 @@
# #
# pi.rb # pi.rb
# #
require "bigdecimal"
#
# Calculates 3.1415.... (the number of times that a circle's diameter # Calculates 3.1415.... (the number of times that a circle's diameter
# will fit around the circle) using J. Machin's formula. # will fit around the circle) using J. Machin's formula.
# #
def big_pi(sig) # sig: Number of significant figures
exp = -sig
pi = BigDecimal::new("0")
two = BigDecimal::new("2")
m25 = BigDecimal::new("-0.04")
m57121 = BigDecimal::new("-57121")
u = BigDecimal::new("1") require "bigdecimal"
k = BigDecimal::new("1") require "bigdecimal/math.rb"
w = BigDecimal::new("1")
t = BigDecimal::new("-80")
while (u.nonzero? && u.exponent >= exp)
t = t*m25
u = t.div(k,sig)
pi = pi + u
k = k+two
end
u = BigDecimal::new("1") include BigMath
k = BigDecimal::new("1")
w = BigDecimal::new("1")
t = BigDecimal::new("956")
while (u.nonzero? && u.exponent >= exp )
t = t.div(m57121,sig)
u = t.div(k,sig)
pi = pi + u
k = k+two
end
pi
end
if $0 == __FILE__ if ARGV.size == 1
if ARGV.size == 1
print "PI("+ARGV[0]+"):\n" print "PI("+ARGV[0]+"):\n"
p big_pi(ARGV[0].to_i) p PI(ARGV[0].to_i)
else else
print "TRY: ruby pi.rb 1000 \n" print "TRY: ruby pi.rb 1000 \n"
end
end end