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

ruby-changes:25516

From: usa <ko1@a...>
Date: Fri, 9 Nov 2012 13:16:37 +0900 (JST)
Subject: [ruby-changes:25516] usa:r37573 (ruby_1_9_3): merge revision(s) 37567: [Backport #7315]

usa	2012-11-09 13:16:27 +0900 (Fri, 09 Nov 2012)

  New Revision: 37573

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

  Log:
    merge revision(s) 37567: [Backport #7315]
    
    * bignum.c (bigmul0): enable big_mul_toom3.
      [ruby-core:48552] [Bug #7242]
    
    * bignum.c (bigmul1_toom3): fix incorrect calculation.
      the patch is made by Heesob Park.
      [ruby-core:48552] [Bug #7242]
    
    * bignum.c (bigmul0): disable big_mul_toom3 temporalily.

  Modified directories:
    branches/ruby_1_9_3/
  Modified files:
    branches/ruby_1_9_3/ChangeLog
    branches/ruby_1_9_3/bignum.c
    branches/ruby_1_9_3/test/ruby/test_bignum.rb
    branches/ruby_1_9_3/version.h

Index: ruby_1_9_3/ChangeLog
===================================================================
--- ruby_1_9_3/ChangeLog	(revision 37572)
+++ ruby_1_9_3/ChangeLog	(revision 37573)
@@ -1,8 +1,17 @@
-Thu Nov  9 05:33:99 2012  Kenta Murata  <mrkn@m...>
+Fri Nov  9 13:16:16 2012  Kenta Murata  <mrkn@m...>
 
-	* bignum.c (bigmul0): disable big_mul_toom3_temporalily.
+	* bignum.c (bigmul0): enable big_mul_toom3.
 	  [ruby-core:48552] [Bug #7242]
 
+	* bignum.c (bigmul1_toom3): fix incorrect calculation.
+	  the patch is made by Heesob Park.
+	  [ruby-core:48552] [Bug #7242]
+
+Fri Nov  9 13:16:16 2012  Kenta Murata  <mrkn@m...>
+
+	* bignum.c (bigmul0): disable big_mul_toom3 temporalily.
+	  [ruby-core:48552] [Bug #7242]
+
 	* test/ruby/test_bignum.rb (test_mul_large_numbers):
 	  add a test for bigmul1_toom3 suggested in [Bug #7242].
 
Index: ruby_1_9_3/version.h
===================================================================
--- ruby_1_9_3/version.h	(revision 37572)
+++ ruby_1_9_3/version.h	(revision 37573)
@@ -1,5 +1,5 @@
 #define RUBY_VERSION "1.9.3"
-#define RUBY_PATCHLEVEL 319
+#define RUBY_PATCHLEVEL 320
 
 #define RUBY_RELEASE_DATE "2012-11-09"
 #define RUBY_RELEASE_YEAR 2012
Index: ruby_1_9_3/bignum.c
===================================================================
--- ruby_1_9_3/bignum.c	(revision 37572)
+++ ruby_1_9_3/bignum.c	(revision 37573)
@@ -2419,7 +2419,7 @@
     z2 = bigtrunc(bigadd(u2, u0, 0));
 
     /* z3 <- (z2 - z3) / 2 + 2 * z(inf) == (z2 - z3) / 2 + 2 * u4 */
-    z3 = bigadd(z2, z3, 0);
+    z3 = bigtrunc(bigadd(z2, z3, 0));
     bigrsh_bang(BDIGITS(z3), RBIGNUM_LEN(z3), 1);
     t = big_lshift(u4, 1); /* TODO: combining with next addition */
     z3 = bigtrunc(bigadd(z3, t, 1));
@@ -2535,8 +2535,13 @@
     /* balance multiplication by slicing y when x is much smaller than y */
     if (2 * xn <= yn) return bigmul1_balance(x, y);
 
-    /* multiplication by karatsuba method */
-    return bigmul1_karatsuba(x, y);
+    if (xn < TOOM3_MUL_DIGITS) {
+	/* multiplication by karatsuba method */
+	return bigmul1_karatsuba(x, y);
+    }
+    else if (3*xn <= 2*(yn + 2))
+	return bigmul1_balance(x, y);
+    return bigmul1_toom3(x, y);
 }
 
 /*
Index: ruby_1_9_3/test/ruby/test_bignum.rb
===================================================================
--- ruby_1_9_3/test/ruby/test_bignum.rb	(revision 37572)
+++ ruby_1_9_3/test/ruby/test_bignum.rb	(revision 37573)
@@ -274,7 +274,6 @@
       69131640408147806442422254638590386673344704147156793990832671592488742473
       31524606724894164324227362735271650556732855509929890983919463699819116427
     ].join.to_i
-
     b = %w[
       31519454770031243652776765515030872050264386564379909299874378289835540661
       99756262835346828114038365624177182230027040172583473561802565238817167503
@@ -354,7 +353,7 @@
       21851731257845562153822058534043916834839514338448582518847879059020959697
       90538105704766415685100946308842788321400392381169436435078204622400475281
     ].join.to_i
-    assert_equal(c, a*b)
+    assert_equal(c, a*b, '[ruby-core:48552]')
   end
 
   def test_divrem

Property changes on: ruby_1_9_3
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r37567


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

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