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:
parent
9b1dbc0c77
commit
67ea373c70
1 changed files with 6 additions and 36 deletions
|
@ -3,48 +3,18 @@
|
|||
#
|
||||
# pi.rb
|
||||
#
|
||||
|
||||
require "bigdecimal"
|
||||
#
|
||||
# Calculates 3.1415.... (the number of times that a circle's diameter
|
||||
# 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")
|
||||
k = BigDecimal::new("1")
|
||||
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
|
||||
require "bigdecimal"
|
||||
require "bigdecimal/math.rb"
|
||||
|
||||
u = BigDecimal::new("1")
|
||||
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
|
||||
include BigMath
|
||||
|
||||
if $0 == __FILE__
|
||||
if ARGV.size == 1
|
||||
if ARGV.size == 1
|
||||
print "PI("+ARGV[0]+"):\n"
|
||||
p big_pi(ARGV[0].to_i)
|
||||
else
|
||||
p PI(ARGV[0].to_i)
|
||||
else
|
||||
print "TRY: ruby pi.rb 1000 \n"
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue