From 6fdad008a2bf2e28db5029104b51373b767021fd Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 8 Jul 2013 13:05:57 +0000 Subject: * bignum.c (rb_big_sq_fast): New function for testing. (rb_big_mul_toom3): Ditto. * internal.h (rb_big_sq_fast): Declared. (rb_big_mul_toom3): Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/-ext-/bignum/test_mul.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test/-ext-/bignum') diff --git a/test/-ext-/bignum/test_mul.rb b/test/-ext-/bignum/test_mul.rb index e125401664..e462506e9f 100644 --- a/test/-ext-/bignum/test_mul.rb +++ b/test/-ext-/bignum/test_mul.rb @@ -36,6 +36,22 @@ class TestBignum < Test::Unit::TestCase assert_equal(z, x.big_mul_normal(y)) end + def test_sq_fast + x = (1 << BITSPERDIG) | 1 + z = (1 << 2*BITSPERDIG) | (2 << BITSPERDIG) | 1 + assert_equal(z, x.big_sq_fast) + end + + def test_sq_fast_max2 + x = (BDIGMAX << BITSPERDIG) | BDIGMAX + assert_equal(x.big_mul_normal(x), x.big_sq_fast) + end + + def test_sq_fast_zero_in_middle + x = (BDIGMAX << 2*BITSPERDIG) | BDIGMAX + assert_equal(x.big_mul_normal(x), x.big_sq_fast) + end + def test_mul_balance x = (1 << BITSPERDIG) | 1 y = (1 << BITSPERDIG) | 1 @@ -104,5 +120,11 @@ class TestBignum < Test::Unit::TestCase assert_equal(x.big_mul_normal(y), x.big_mul_karatsuba(y)) end + def test_mul_toom3 + x = (1 << 2*BITSPERDIG) | (1 << BITSPERDIG) | 1 + y = (1 << 2*BITSPERDIG) | (1 << BITSPERDIG) | 1 + assert_equal(x.big_mul_normal(y), x.big_mul_toom3(y)) + end + end end -- cgit v1.2.3