ruby-changes:15816
From: nobu <ko1@a...>
Date: Wed, 12 May 2010 15:05:57 +0900 (JST)
Subject: [ruby-changes:15816] Ruby:r27747 (trunk, ruby_1_9_2): * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#log): improved
nobu 2010-05-12 15:04:59 +0900 (Wed, 12 May 2010) New Revision: 27747 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27747 Log: * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#log): improved precision and performance. [ruby-dev:41295] Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/ext/bigdecimal/lib/bigdecimal/math.rb branches/ruby_1_9_2/version.h trunk/ChangeLog trunk/ext/bigdecimal/lib/bigdecimal/math.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 27746) +++ ChangeLog (revision 27747) @@ -1,3 +1,8 @@ +Wed May 12 15:04:57 2010 Nobuyoshi Nakada <nobu@r...> + + * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#log): improved + precision and performance. [ruby-dev:41295] + Wed May 12 11:39:10 2010 NAKAMURA Usaku <usa@r...> * ext/socket/extconf.rb: test all IPPROTO_* constants for recent Win32 Index: ext/bigdecimal/lib/bigdecimal/math.rb =================================================================== --- ext/bigdecimal/lib/bigdecimal/math.rb (revision 27746) +++ ext/bigdecimal/lib/bigdecimal/math.rb (revision 27747) @@ -190,8 +190,10 @@ one = BigDecimal("1") two = BigDecimal("2") n = prec + BigDecimal.double_fig - if (expo = x.exponent) < 0 + if (expo = x.exponent) < 0 || expo >= 3 x = x.mult(BigDecimal("1E#{-expo}"), n) + else + expo = nil end x = (x - one).div(x + one,n) x2 = x.mult(x,n) @@ -206,7 +208,7 @@ y += d end y *= two - if expo < 0 + if expo y += log(BigDecimal("10"),prec) * BigDecimal(expo.to_s) end y Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 27746) +++ ruby_1_9_2/ChangeLog (revision 27747) @@ -1,3 +1,8 @@ +Wed May 12 15:04:57 2010 Nobuyoshi Nakada <nobu@r...> + + * ext/bigdecimal/lib/bigdecimal/math.rb (BigMath#log): improved + precision and performance. [ruby-dev:41295] + Tue May 11 14:26:00 2010 Kenta Murata <mrkn@m...> * ext/bigdecimal/lib/bigdecimal/math.rb (atan), Index: ruby_1_9_2/ext/bigdecimal/lib/bigdecimal/math.rb =================================================================== --- ruby_1_9_2/ext/bigdecimal/lib/bigdecimal/math.rb (revision 27746) +++ ruby_1_9_2/ext/bigdecimal/lib/bigdecimal/math.rb (revision 27747) @@ -190,8 +190,10 @@ one = BigDecimal("1") two = BigDecimal("2") n = prec + BigDecimal.double_fig - if (expo = x.exponent) < 0 + if (expo = x.exponent) < 0 || expo >= 3 x = x.mult(BigDecimal("1E#{-expo}"), n) + else + expo = nil end x = (x - one).div(x + one,n) x2 = x.mult(x,n) @@ -206,7 +208,7 @@ y += d end y *= two - if expo < 0 + if expo y += log(BigDecimal("10"),prec) * BigDecimal(expo.to_s) end y Index: ruby_1_9_2/version.h =================================================================== --- ruby_1_9_2/version.h (revision 27746) +++ ruby_1_9_2/version.h (revision 27747) @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_RELEASE_DATE "2010-05-11" +#define RUBY_RELEASE_DATE "2010-05-12" #define RUBY_PATCHLEVEL -1 #define RUBY_VERSION_MAJOR 1 @@ -7,7 +7,7 @@ #define RUBY_VERSION_TEENY 1 #define RUBY_RELEASE_YEAR 2010 #define RUBY_RELEASE_MONTH 5 -#define RUBY_RELEASE_DAY 11 +#define RUBY_RELEASE_DAY 12 #include "ruby/version.h" -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/