akr
364237623b
* bignum.c (rb_big2str1): Make an expression more explicit.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-18 01:07:50 +00:00
akr
c106d19445
* bignum.c (rb_big2str1): Use power_level instead of bitsize(xn).
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42602 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-17 18:21:46 +00:00
akr
908e7312c4
* bignum.c (BIGDIVREM_EXTRA_WORDS): Redefine to 1.
...
(bigdivrem_num_extra_words): Removed.
(bigdivrem_normal): Simplefied.
(big2str_karatsuba): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42600 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-17 15:48:44 +00:00
akr
dcd4832d69
* bignum.c (bigdivrem_single1): Renamed from bigdivrem_single. Add
...
x_higher_bdigit argument.
(bigdivrem_single): Just call bigdivrem_single1.
(bigdivrem_restoring): Use bigdivrem_single1 to avoid memmove.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-16 01:11:18 +00:00
akr
9f6c62ad5f
* bignum.c (bary_small_rshift): Specify the higher BDIGIT instead of
...
sign bit.
(big_shift3): Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42575 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-16 00:19:51 +00:00
akr
d0b5d2016d
* bignum.c (bary_mul_toom3): Reduce a branch.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-15 17:24:41 +00:00
akr
6df786c79f
* bignum.c (bigdivrem_single): Use shift when y is a power of two.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-15 16:47:08 +00:00
akr
49e8387bae
* bignum.c (bigdivrem_restoring): Use bigdivrem_single if non-topmost
...
BDIGITs of y are zero.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-15 16:16:08 +00:00
akr
7fc4142a02
* bignum.c (rb_big2str1): Truncate topmost zeros of x.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42570 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-15 15:36:00 +00:00
akr
02b6f663c5
* bignum.c (bary_divmod): Simplify an expression.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42569 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-15 15:03:35 +00:00
akr
942a3c9985
* bignum.c (bigdivrem_normal): Remove a local variable.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-15 15:01:38 +00:00
akr
d94fc786a4
* bignum.c (big2str_karatsuba): Use bigdivrem_restoring directly to
...
reduce working buffer and memory copy.
(rb_big2str1): Allocate working buffer for big2str_karatsuba here.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42566 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-15 14:25:19 +00:00
akr
38be07f833
* bignum.c (bigdivrem_restoring): xn argument removed.
...
(bigdivrem_normal): Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-13 15:54:27 +00:00
akr
f069f26bc2
* bignum.c (big_div_struct): Remove xn and j field. Add zn field.
...
(bigdivrem1): Follow the above change.
(bigdivrem_restoring): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-13 15:21:42 +00:00
akr
26e69a89fa
* bignum.c (big_div_struct): ynzero field removed.
...
(bigdivrem1): Follow the above change.
(bigdivrem_restoring): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-13 14:43:10 +00:00
akr
adaa5650cd
* bignum.c (bigdivrem_restoring): Extracted from bigdivrem_normal.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-13 14:03:55 +00:00
akr
06ed1c781a
* bignum.c (bitsize): Fix a conditional expression.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-10 18:26:28 +00:00
akr
180d461a22
* bignum.c (big_div_struct): Use size_t.
...
(bigdivrem1): Ditto.
(bigdivrem_num_extra_words): Ditto.
(bigdivrem_single): Ditto.
(bigdivrem_normal): Ditto.
(bary_divmod): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42477 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-09 19:55:24 +00:00
nobu
ca3b9bbfe0
bignum.c: suppress warning
...
* bignum.c (rb_big_mul_karatsuba): suppress logical-op-parentheses
warning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-09 13:41:23 +00:00
akr
fe6273975e
* bignum.c (rb_big_odd_p): Check the bignum length.
...
(rb_big_even_p): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-07 11:08:03 +00:00
akr
ff84827eb6
* bignum.c (dbl2big): A condition simplified.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42423 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-07 10:31:35 +00:00
akr
d35596c61d
* bignum.c (nlz16): Removed.
...
(nlz32): Ditto.
(nlz64): Ditto.
(nlz128): Ditto.
(nlz_int): New function.
(nlz_long): New function.
(nlz_long_long): New function.
(nlz_int128): New function.
(nlz): Follow above changes.
(bitsize): Follow above changes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42413 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 22:43:01 +00:00
akr
25336fa7c1
* bignum.c (rb_big_realloc): Use VALGRIND_MAKE_MEM_UNDEFINED to
...
declare undefined memory area.
(bignew_1): Ditto.
* internal.h (VALGRIND_MAKE_MEM_DEFINED): Moved from gc.c
(VALGRIND_MAKE_MEM_UNDEFINED): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42392 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-06 03:26:34 +00:00
akr
2ae634f2f4
* bignum.c: Rename local variables.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42387 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-05 14:50:07 +00:00
akr
5a13ad0386
* bignum.c (BARY_TRUNC): New macro.
...
(bary_cmp): Use BARY_TRUNC.
(bary_mul_toom3): Ditto.
(bary_divmod): Ditto.
(abs2twocomp): Ditto.
(bigfixize): Ditto.
(rb_cstr_to_inum): Ditto.
(big2str_karatsuba): Ditto.
(bigdivrem): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42365 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-03 16:58:30 +00:00
akr
092511bac7
* bignum.c (big2str_karatsuba): Don't allocate new temporary buffer
...
if the buffer is enough for current invocation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42364 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-03 16:01:14 +00:00
nobu
b3be3c29c4
bignum.c: suppress warnings
...
* bignum.c (power_cache_get_power): declare as inline before call to
suppress warnings from gcc 4.2.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42363 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-03 15:41:31 +00:00
akr
606a03dc59
* bignum.c (bary2bdigitdbl): New function.
...
(bdigitdbl2bary): Ditto.
(bary_mul_single): Use bdigitdbl2bary.
(power_cache_get_power): Ditto.
(bary_divmod): Use bary2bdigitdbl.
(big2str_orig): Ditto.
(bigdivrem): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42361 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-03 15:26:04 +00:00
akr
f12ef626d1
* bignum.c: The branch condition of selecting multiplication
...
algorighms should check smaller argument because Karatsuba and Toom3
is effective only if both arguments are big.
(bary_mul_toom3_branch): Compare the smaller argument to
TOOM3_MUL_DIGITS.
(bary_mul): Compare the smaller argument to KARATSUBA_MUL_DIGITS.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42360 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-03 14:20:31 +00:00
akr
f858cd8a38
* bignum.c (big2str_orig): Receive the number to stringize as
...
BDIGIT array and size.
(big2str_karatsuba): Receive the number to stringize as BDIGIT array
and size. Use an temporary array of BDIGIT.
(rb_big2str1): Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-03 13:27:25 +00:00
akr
36c89c484b
* bignum.c (MAX_BASE36_POWER_TABLE_ENTRIES): Renamed from
...
MAX_BIG2STR_TABLE_ENTRIES.
(base36_power_cache): Renamed from big2str_power_cache.
(base36_numdigits_cache): Renamed from big2str_numdigits_cache.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-03 04:32:33 +00:00
akr
04cf3fa346
* bignum.c (big2str_orig): Refactored.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 17:24:19 +00:00
akr
81f42c7576
* bignum.c (big2str_orig): Rename a local variable.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42343 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 16:42:40 +00:00
akr
d0741fdf1c
* bignum.c (bigadd_core): Removed.
...
(bigadd): Use bary_add instead of bigadd_core.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 16:22:47 +00:00
akr
ebbaec9696
* bignum.c (rb_big2str1): Simplify power_level calculation.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 15:55:07 +00:00
akr
54c3b1ba19
* bignum.c (power_cache_get_power): Appry bigtrunc to the result of
...
bigsq.
(big2str_karatsuba): Fix number of leading zero characters.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 14:53:22 +00:00
nobu
ba95b9787d
bignum.c: suppress a warning
...
* bignum.c (rb_cstr_to_inum): remove set but unused variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 14:10:51 +00:00
akr
bc7c0a63fd
* bignum.c (big2str_karatsuba): Reduce power_level more than one at
...
recursion, if possible.
(rb_big2str1): Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42325 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 09:36:23 +00:00
akr
9e8f82e087
* bignum.c (bary_mul): Swap x and y for bary_mul1 if x is longer than y.
...
[ruby-dev:47565] [Bug #8719 ] Reported by Narihiro Nakamura.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42324 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-02 03:28:33 +00:00
akr
474dc1e816
* bignum.c (big2str_orig): Remove len argument.
...
(big2str_karatsuba): Ditto.
(rb_big2str1): Follow above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-01 22:49:12 +00:00
akr
9ebd675c47
* bignum.c (rb_big2str1): Remove a local variable.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-01 14:57:21 +00:00
akr
69263bb755
* bignum.c (rb_cstr_to_inum): Use power_cache_get_power.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42309 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-01 14:34:59 +00:00
akr
d620b0b9cd
* bignum.c (rb_big2str1): Raise an error for too big number.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-01 12:05:04 +00:00
akr
780a125faf
* bignum.c (power_cache_get_power): Hide cached Bignum objects.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-01 11:48:42 +00:00
akr
0ade4f39fd
* bignum.c (rb_big2str1): Remove non-trim mode.
...
(rb_big2str0): Non-trim mode implemented here.
(big2str_find_n1): Change the result type to long again.
(big2str_base_powerof2): Don't take arguments: len and trim.
(rb_big2str): Follow above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-01 10:19:23 +00:00
akr
93055423bd
* bignum.c (big2str_alloc): New function to allocate the result string.
...
It is called after actual length is calculated.
(big2str_struct): Add fields: negative, result and ptr.
(big2str_orig): Write out the result via b2s->ptr.
(big2str_orig): Ditto.
(rb_big2str1): Don't allocate the result string at beginning.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-01 03:43:14 +00:00
akr
478bd3128c
* bignum.c (big2str_orig): Use temporary buffer when trim mode.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-31 22:38:53 +00:00
akr
39a00c6710
* bignum.c (big2str_orig): Simplified because RBIGNUM_LEN(x) <= 2 now.
...
(big2str_struct): Two fields added: hbase2, hbase2_numdigits.
(rb_big2str1): Initialize above fields.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42301 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-31 21:33:14 +00:00
akr
eed6c15a21
* bignum.c (big2str_karatsuba): Fix a condition of power_level.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-31 16:48:08 +00:00
nobu
278b494ba7
* remove trailing spaces.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-31 16:21:11 +00:00