[前][次][番号順一覧][スレッド一覧]

ruby-changes:29857

From: usa <ko1@a...>
Date: Thu, 11 Jul 2013 10:09:56 +0900 (JST)
Subject: [ruby-changes:29857] usa:r41909 (ruby_1_9_3): merge revision(s) 41623,41723: [Backport #8603]

usa	2013-07-11 10:09:39 +0900 (Thu, 11 Jul 2013)

  New Revision: 41909

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=41909

  Log:
    merge revision(s) 41623,41723: [Backport #8603]
    
    * ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Fix for the cases when
      the argument x is not a BigDecimal.
      This change is based on the patch made by Garth Snyder.
      [Fix GH-332] https://github.com/ruby/ruby/pull/332
      This change is based on the patch made by Heesob Park and Garth Snyder.
      [Bug #6862] [ruby-core:47145]

  Modified directories:
    branches/ruby_1_9_3/
  Modified files:
    branches/ruby_1_9_3/ChangeLog
    branches/ruby_1_9_3/ext/bigdecimal/bigdecimal.c
    branches/ruby_1_9_3/test/bigdecimal/test_bigdecimal.rb
    branches/ruby_1_9_3/version.h

Index: ruby_1_9_3/ChangeLog
===================================================================
--- ruby_1_9_3/ChangeLog	(revision 41908)
+++ ruby_1_9_3/ChangeLog	(revision 41909)
@@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ruby_1_9_3/ChangeLog#L1
+Thu Jul 11 10:07:15 2013  Kenta Murata  <mrkn@m...>
+
+	* ext/bigdecimal/bigdecimal.c (BigMath_s_exp): Fix for the cases when
+	  the argument x is not a BigDecimal.
+	  This change is based on the patch made by Heesob Park and Garth Snyder.
+	  [Bug #6862] [ruby-core:47145]
+	  [Fix GH-332] https://github.com/ruby/ruby/pull/332
+
 Wed Jul 10 10:27:12 2013  NAKAMURA Usaku  <usa@r...>
 
 	* include/ruby/intern.h (rb_path_next, rb_path_skip_prefix,
Index: ruby_1_9_3/ext/bigdecimal/bigdecimal.c
===================================================================
--- ruby_1_9_3/ext/bigdecimal/bigdecimal.c	(revision 41908)
+++ ruby_1_9_3/ext/bigdecimal/bigdecimal.c	(revision 41909)
@@ -2554,7 +2554,7 @@ BigMath_s_exp(VALUE klass, VALUE x, VALU https://github.com/ruby/ruby/blob/trunk/ruby_1_9_3/ext/bigdecimal/bigdecimal.c#L2554
     else if (vx == NULL) {
 	cannot_be_coerced_into_BigDecimal(rb_eArgError, x);
     }
-    RB_GC_GUARD(vx->obj);
+    x = RB_GC_GUARD(vx->obj);
 
     n = prec + rmpd_double_figures();
     negative = VpGetSign(vx) < 0;
Index: ruby_1_9_3/version.h
===================================================================
--- ruby_1_9_3/version.h	(revision 41908)
+++ ruby_1_9_3/version.h	(revision 41909)
@@ -1,10 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ruby_1_9_3/version.h#L1
 #define RUBY_VERSION "1.9.3"
-#define RUBY_PATCHLEVEL 451
+#define RUBY_PATCHLEVEL 452
 
-#define RUBY_RELEASE_DATE "2013-07-10"
+#define RUBY_RELEASE_DATE "2013-07-11"
 #define RUBY_RELEASE_YEAR 2013
 #define RUBY_RELEASE_MONTH 7
-#define RUBY_RELEASE_DAY 10
+#define RUBY_RELEASE_DAY 11
 
 #include "ruby/version.h"
 
Index: ruby_1_9_3/test/bigdecimal/test_bigdecimal.rb
===================================================================
--- ruby_1_9_3/test/bigdecimal/test_bigdecimal.rb	(revision 41908)
+++ ruby_1_9_3/test/bigdecimal/test_bigdecimal.rb	(revision 41909)
@@ -1210,11 +1210,35 @@ class TestBigDecimal < Test::Unit::TestC https://github.com/ruby/ruby/blob/trunk/ruby_1_9_3/test/bigdecimal/test_bigdecimal.rb#L1210
   end
 
   def test_BigMath_exp
-    n = 20
-    assert_in_epsilon(Math.exp(n), BigMath.exp(BigDecimal("20"), n))
-    assert_in_epsilon(Math.exp(40), BigMath.exp(BigDecimal("40"), n))
-    assert_in_epsilon(Math.exp(-n), BigMath.exp(BigDecimal("-20"), n))
-    assert_in_epsilon(Math.exp(-40), BigMath.exp(BigDecimal("-40"), n))
+    prec = 20
+    assert_in_epsilon(Math.exp(20), BigMath.exp(BigDecimal("20"), prec))
+    assert_in_epsilon(Math.exp(40), BigMath.exp(BigDecimal("40"), prec))
+    assert_in_epsilon(Math.exp(-20), BigMath.exp(BigDecimal("-20"), prec))
+    assert_in_epsilon(Math.exp(-40), BigMath.exp(BigDecimal("-40"), prec))
+  end
+
+  def test_BigMath_exp_with_float
+    prec = 20
+    assert_in_epsilon(Math.exp(20), BigMath.exp(20.0, prec))
+    assert_in_epsilon(Math.exp(40), BigMath.exp(40.0, prec))
+    assert_in_epsilon(Math.exp(-20), BigMath.exp(-20.0, prec))
+    assert_in_epsilon(Math.exp(-40), BigMath.exp(-40.0, prec))
+  end
+
+  def test_BigMath_exp_with_fixnum
+    prec = 20
+    assert_in_epsilon(Math.exp(20), BigMath.exp(20, prec))
+    assert_in_epsilon(Math.exp(40), BigMath.exp(40, prec))
+    assert_in_epsilon(Math.exp(-20), BigMath.exp(-20, prec))
+    assert_in_epsilon(Math.exp(-40), BigMath.exp(-40, prec))
+  end
+
+  def test_BigMath_exp_with_rational
+    prec = 20
+    assert_in_epsilon(Math.exp(20), BigMath.exp(Rational(40,2), prec))
+    assert_in_epsilon(Math.exp(40), BigMath.exp(Rational(80,2), prec))
+    assert_in_epsilon(Math.exp(-20), BigMath.exp(Rational(-40,2), prec))
+    assert_in_epsilon(Math.exp(-40), BigMath.exp(Rational(-80,2), prec))
   end
 
   def test_BigMath_exp_under_gc_stress

Property changes on: ruby_1_9_3
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r41623,41723


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]