akr
c54a1abde3
* bignum.c (BDIGMAX): Use BIGRAD.
...
(BIGLO): Use BDIGMAX.
(bigdivrem1): Ditto.
(bigor_int): Ditto.
(rb_big_or): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-21 10:40:19 +00:00
akr
6e19e1b876
* bignum.c (bigsub_int): Use bdigit_roomof.
...
(bigadd_int): Ditto.
(bigand_int): Ditto.
(bigor_int): Ditto.
(bigxor_int): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41529 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-21 10:09:34 +00:00
akr
de8ca8a138
* bignum.c (rb_ull2big): Refactored.
...
(rb_uint2big): Useless code removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41505 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 21:45:11 +00:00
akr
a0d42f0354
* bignum.c (bigmul1_toom3): Don't call bignorm twice.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 14:09:32 +00:00
akr
7e36326c06
* bignum.c (bignorm): Don't call bigtrunc if the result is a fixnum.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41500 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 13:52:19 +00:00
akr
94e5fdf336
* bignum.c (rb_uint2big): Refactored.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 13:40:09 +00:00
akr
ca10999c39
* bignum.c (dump_bignum): Use SIZEOF_BDIGITS.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41497 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 13:27:15 +00:00
akr
91894ab995
An extra semicolon removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 13:24:20 +00:00
akr
a9c71d1139
* bignum.c (big2ulong): Change the return type to unsigned long.
...
(rb_big2ulong_pack): Follow the above change.
(rb_big2long): Ditto.
(rb_big_lshift): Ditto.
(rb_big_rshift): Ditto.
(rb_big_aref): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 13:23:33 +00:00
akr
6ea1aee76e
* bignum.c (bary_unpack_internal): Return -2 when negative overflow.
...
(bary_unpack): Set the overflowed bit if an extra BDIGIT exists.
(rb_integer_unpack): Set the overflowed bit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-20 13:05:27 +00:00
akr
e98b7c6c52
* bignum.c (BIGSIZE): New macro.
...
(bigfixize): Use BIGSIZE.
(big2ulong): Ditto.
(check_shiftdown): Ditto.
(rb_big_aref): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 23:09:05 +00:00
akr
a5b0cace63
* bignum.c (bdigit_roomof): Use SIZEOF_BDIGITS.
...
(bigfixize): Refine an ifdef condition.
(rb_absint_size): Use bdigit_roomof.
(rb_absint_singlebit_p): Ditto.
(rb_integer_pack): Ditto.
(integer_pack_fill_dd): Use BITSPERDIG.
(integer_unpack_push_bits): Use BITSPERDIG, BIGLO and BIGDN.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41446 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 16:37:14 +00:00
akr
24c9860d55
* bignum.c (bigfixize): Use rb_absint_size.
...
(check_shiftdown): Ditto.
(big2ulong): Use bdigit_roomof.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41435 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 14:53:01 +00:00
akr
e82f5f7ddb
* bignum.c (rb_uint2big): Consider environments BDIGIT is bigger than
...
long.
(big2ulong): Ditto.
(rb_big_aref): Ditto.
(rb_big_pack): Just call rb_integer_pack.
(rb_big_unpack): Just call rb_integer_unpack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 12:19:10 +00:00
akr
9cff4e30c6
* bignum.c (DIGSPERLONG): Don't define if BDIGIT is bigger than long.
...
(DIGSPERLL): Don't define if BDIGIT is bigger than LONG_LONG
(rb_absint_size): Consider environments BDIGIT is bigger than long.
Use BIGLO and BIGDN.
(rb_absint_singlebit_p): Ditto.
(rb_integer_pack): Ditto.
(bigsub_int): Consider environments BDIGIT is bigger than long.
Use SIZEOF_BDIGITS instead of sizeof(BDIGIT).
(bigadd_int): Ditto.
(bigand_int): Ditto.
(bigor_int): Ditto.
(bigxor_int): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-19 10:36:22 +00:00
akr
0393a91926
* bignum.c (rb_big_aref): Apply BIGLO to ~xds[i] for environment which
...
BDIGIT is 16bit.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41404 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 22:20:22 +00:00
akr
1a6a65f16b
* configure.in: Check __int128.
...
* include/ruby/defines.h (BDIGIT_DBL): Use uint128_t if it is available.
(BDIGIT): Use uint64_t if uint128_t is available.
(SIZEOF_BDIGITS): Defined for above case.
(BDIGIT_DBL_SIGNED): Ditto.
(PRI_BDIGIT_PREFIX): Ditto.
* include/ruby/ruby.h (PRI_64_PREFIX): Defined.
* bignum.c (rb_big_pow): Don't use BITSPERDIG for the condition which
rb_big_pow returns Float or Bignum.
[ruby-dev:47413] [Feature #8509 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41379 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 09:46:01 +00:00
akr
e3b98ca301
* bignum.c (nlz): Cast the result explicitly.
...
(big2dbl): Don't assign BDIGIT values to int variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 03:56:49 +00:00
akr
b5c81904e6
* bignum.c (rb_big_xor): Non-effective code removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41374 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-18 03:37:53 +00:00
akr
f4b295da45
* bignum.c (bary_small_lshift): Renamed from bdigs_small_lshift.
...
(bary_small_rshift): Renamed from bdigs_small_rshift.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41341 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 22:57:22 +00:00
akr
12a9e3beaa
* bignum.c (absint_numwords_bytes): Removed.
...
(rb_absint_numwords): Don't call absint_numwords_bytes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41339 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 22:39:46 +00:00
akr
22b9ce10e3
* bignum.c (BARY_ADD): New macro.
...
(BARY_SUB): Ditto.
(BARY_MUL): Ditto.
(BARY_DIVMOD): Ditto.
(BARY_ZERO_P): Ditto.
(absint_numwords_generic): Use these macros.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41338 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 14:16:33 +00:00
akr
50794b3222
* bignum.c (bary_2comp): Extracted from get2comp.
...
(integer_unpack_num_bdigits): Extracted from
rb_integer_unpack_internal.
(bary_unpack_internal): Renamed from bary_unpack and support
INTEGER_PACK_2COMP.
(bary_unpack): New function to validate arguments and invoke
bary_unpack_internal.
(rb_integer_unpack_internal): Removed.
(rb_integer_unpack): Invoke bary_unpack_internal.
(rb_integer_unpack_2comp): Removed.
* internal.h (rb_integer_unpack_2comp): Removed.
* pack.c: Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41337 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 12:59:26 +00:00
akr
ecabbf1bf6
* internal.h (INTEGER_PACK_2COMP): Defined.
...
(rb_integer_pack_2comp): Removed.
* bignum.c (bary_pack): Support INTEGER_PACK_2COMP.
(rb_integer_pack): Invoke bary_pack directly.
(rb_integer_pack_2comp): Removed.
(rb_integer_pack_internal): Ditto.
(absint_numwords_generic): Follow the above change.
* pack.c (pack_pack): Ditto.
* sprintf.c (rb_str_format): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 09:53:45 +00:00
akr
fc3fbc143c
* bignum.c (absint_numwords_generic): rb_funcall invocations removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 08:49:26 +00:00
akr
552c0c5aa8
* bignum.c (bary_pack) Extracted from rb_integer_pack_internal.
...
(absint_numwords_generic): Use bary_pack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 05:33:39 +00:00
akr
7a58763dc6
* bignum.c (bary_add): New function.
...
(bary_zero_p): Extracted from bigzero_p.
(absint_numwords_generic): Use bary_zero_p and bary_add.
(bary_mul): Fix an argument for bary_mul_single.
(bary_divmod): Use size_t for arguments.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41328 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-16 01:41:58 +00:00
akr
d631642a2e
* bignum.c (bigdivrem): Use a BDIGIT variable to store the return
...
value of bigdivrem_single.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41327 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 23:56:32 +00:00
akr
00a95f15bc
* bignum.c (bary_divmod): New function.
...
(absint_numwords_generic): Use bary_divmod.
(bigdivrem_num_extra_words): Extracted from bigdivrem.
(bigdivrem_single): Ditto.
(bigdivrem_normal): Ditto.
(BIGDIVREM_EXTRA_WORDS): Defined.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 23:46:07 +00:00
akr
392def5b71
* bignum.c (bary_sub): New function.
...
(absint_numwords_generic): Use bary_sub.
(bigsub_core): Skip unnecessary copy.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41314 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 14:52:02 +00:00
akr
988c22ea72
* bignum.c (bary_mul): New function.
...
(absint_numwords_generic): Use bary_mul.
(bary_mul_single): Extracted from bigmul1_single.
(bary_mul_normal): Extracted from bigmul1_normal.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 13:32:16 +00:00
akr
d1eea69b01
* bignum.c (bary_unpack): Extracted from rb_integer_unpack_internal.
...
(absint_numwords_generic): Use bary_unpack.
(roomof): Defined.
(bdigit_roomof): Defined.
(BARY_ARGS): Defined.
(bary_unpack): Declared.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41312 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 11:15:23 +00:00
akr
78a6a6cad6
* bignum.c (absint_numwords_bytes): Make it static.
...
(absint_numwords_small): Ditto.
(absint_numwords_generic): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41311 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 10:35:52 +00:00
akr
919cc1e53e
* bignum.c (bigmul1_normal): Shrink the result Bignum length.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41310 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 08:15:40 +00:00
akr
6193a3148a
* bignum.c (bdigs_small_rshift): Extracted from big_rshift.
...
(bigdivrem): Use bdigs_small_rshift.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-15 01:03:37 +00:00
akr
2b6cab544f
* bignum.c (bdigs_small_lshift): Extracted from big_lshift.
...
(bigdivrem): Use bdigs_small_lshift.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41303 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-14 17:41:38 +00:00
akr
2f407300fa
* bignum.c (bigdivrem): Reduce number of digits before bignew() for div.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-14 12:05:38 +00:00
akr
48bfbb574e
* bignum.c (bigdivrem): Use bignew when ny == 1.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41301 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-14 11:13:16 +00:00
akr
65575bab02
* bignum.c (bigdivrem): Zero test condition simplified.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 15:15:07 +00:00
akr
b4bafcb416
Use ny instead of RBIGNUM_LEN(y).
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41281 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 13:02:34 +00:00
akr
63dd3e7ef9
* bignum.c (bigdivrem): Refactored to use ALLOCV_N for temporally
...
buffers.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 12:26:33 +00:00
usa
138bc4c0c4
* bignum.c (integer_unpack_num_bdigits_generic): reorder terms (but not
...
changed the intention of the expression) because VC++ reports a
warning for it. reported by ko1 via IRC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41277 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 09:56:52 +00:00
akr
db3b317ca7
* bignum.c (bigdivrem): Use nlz.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41275 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 09:35:05 +00:00
nobu
392d7a797a
bignum.c: suppress warnings
...
* bignum.c (integer_unpack_num_bdigits_generic): suppress "implicit
conversion shortens 64-bit value into a 32-bit value" warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 07:33:12 +00:00
akr
90026ab53f
Refine debug code.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-13 03:20:28 +00:00
akr
2b1c2b7223
* bignum.c (integer_unpack_num_bdigits_small): Fix a comple error on
...
clang -Werror,-Wshorten-64-to-32
Reported by Eric Hodel. [ruby-core:55467] [Bug #8522 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 21:13:56 +00:00
akr
aaa1461d7b
* bignum.c (rb_integer_unpack_2comp): New function.
...
(rb_integer_unpack_internal): Extracted from rb_integer_unpack and
nlp_bits_ret argument added.
(integer_unpack_num_bdigits_small): nlp_bits_ret argument added to
return number of leading padding bits.
(integer_unpack_num_bdigits_generic): Ditto.
* internal.h (rb_integer_unpack_2comp): Declared.
* pack.c (pack_unpack): Use rb_integer_unpack_2comp and
rb_integer_unpack.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41264 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 15:18:00 +00:00
akr
b53a183c00
* bignum.c (integer_unpack_num_bdigits_generic): Rewritten without
...
rb_funcall.
(integer_unpack_num_bdigits_bytes): Removed.
(rb_integer_unpack): integer_unpack_num_bdigits_bytes invocation
removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 13:25:00 +00:00
akr
4e0685faea
* bignum.c (validate_integer_pack_format): supported_flags argument
...
added and validate given flags.
(rb_integer_pack_internal): Specify supported_flags.
(rb_integer_unpack): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-12 09:21:11 +00:00
akr
0c9a719d77
* internal.h (INTEGER_PACK_NEGATIVE): Defined.
...
(rb_integer_unpack): sign argument removed.
* bignum.c (rb_integer_unpack): sign argument removed.
Non-negative integers generated by default.
INTEGER_PACK_NEGATIVE flag is used to generate non-positive integers.
* pack.c (pack_unpack): Follow the above change.
* random.c (int_pair_to_real_inclusive): Ditto.
(make_seed_value): Ditto.
(mt_state): Ditto.
(limited_big_rand): Ditto.
* marshal.c (r_object0): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-06-11 21:39:55 +00:00