ruby-changes:15804
From: mrkn <ko1@a...>
Date: Tue, 11 May 2010 14:12:17 +0900 (JST)
Subject: [ruby-changes:15804] Ruby:r27734 (trunk): * ext/bigdecimal/lib/bigdecimal/math.rb (atan), test/bigdecimal/test_bigmath.rb (test_atan): explicitly specify the precision for calculating a reciprocal number of an argument. [Bug #3267]
mrkn 2010-05-11 14:11:59 +0900 (Tue, 11 May 2010) New Revision: 27734 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27734 Log: * ext/bigdecimal/lib/bigdecimal/math.rb (atan), test/bigdecimal/test_bigmath.rb (test_atan): explicitly specify the precision for calculating a reciprocal number of an argument. [Bug #3267] Modified files: trunk/ChangeLog trunk/ext/bigdecimal/lib/bigdecimal/math.rb trunk/test/bigdecimal/test_bigmath.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 27733) +++ ChangeLog (revision 27734) @@ -1,3 +1,10 @@ +Tue May 11 13:46:00 2010 Kenta Murata <mrkn@m...> + + * ext/bigdecimal/lib/bigdecimal/math.rb (atan), + test/bigdecimal/test_bigmath.rb (test_atan): explicitly specify + the precision for calculating a reciprocal number of an argument. + [Bug #3267] + Tue May 11 11:49:44 2010 Nobuyoshi Nakada <nobu@r...> * ext/sdbm/sdbm.h (DBM): large file support on win32. Index: ext/bigdecimal/lib/bigdecimal/math.rb =================================================================== --- ext/bigdecimal/lib/bigdecimal/math.rb (revision 27733) +++ ext/bigdecimal/lib/bigdecimal/math.rb (revision 27734) @@ -125,7 +125,7 @@ x = -x if neg = x < 0 return pi.div(neg ? -2 : 2, prec) if x.infinite? return pi / (neg ? -4 : 4) if x.round(prec) == 1 - x = 1 / x if inv = x > 1 + x = BigDecimal("1").div(x, prec) if inv = x > 1 x = (-1 + sqrt(1 + x**2, prec))/x if dbl = x > 0.5 n = prec + BigDecimal.double_fig y = x Index: test/bigdecimal/test_bigmath.rb =================================================================== --- test/bigdecimal/test_bigmath.rb (revision 27733) +++ test/bigdecimal/test_bigmath.rb (revision 27734) @@ -57,6 +57,8 @@ assert_in_delta(Math::PI/4, atan(BigDecimal("1.0"), N)) assert_in_delta(Math::PI/6, atan(sqrt(BigDecimal("3.0"), N) / 3, N)) assert_in_delta(Math::PI/2, atan(PINF, N)) + assert_equal(BigDecimal("0.823840753418636291769355073102514088959345624027952954058347023122539489"), + atan(BigDecimal("1.08"), 72).round(72), '[ruby-dev:41257]') end def test_exp -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/