akr
95de2b0012
* internal.h (struct RBignum): Use size_t for len.
...
* include/ruby/intern.h (rb_big_new): Use size_t instead of long to
specify the size of bignum.
(rb_big_resize): Ditto.
* bignum.c: Follow above changes.
* rational.c: Follow above changes.
* marshal.c: Follow above changes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45636 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-19 01:11:04 +00:00
akr
a6024cdc1b
* numeric.c (rb_num2long): Returns a long.
...
(rb_num2ulong): Returns a unsigned long.
* bignum.c (rb_big2long): Returns a long.
(rb_big2ulong): Returns a unsigned long.
* include/ruby/intern.h: Follow above changes.
* include/ruby/ruby.h: Follow above changes.
(rb_num2long_inline): No need to cast.
(rb_num2ulong_inline): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-18 15:46:32 +00:00
akr
9aa67e267b
* bignum.c (SIZEOF_BDIGIT): Renamed from SIZEOF_BDIGITS.
...
* internal.h: Ditto.
* marshal.c: Ditto.
* rational.c: Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45580 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-13 03:48:17 +00:00
nobu
3008ea2872
bignum.c: adjust condtions
...
* bignum.c (maxpow{16,32,64,128}_{exp,num}): adjust preprocessor
condtions to maxpow_in_bdigit_dbl().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-14 01:27:44 +00:00
nobu
fc23374f06
[DOC] add links to `Object#hash`
...
add links to `Object#hash` to each #`hash` methods rdocs.
[Fixes GH-567]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45329 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-03-14 01:27:43 +00:00
nobu
cc216f9aae
adjust indent and style
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45192 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-27 07:10:14 +00:00
mame
f67e09c7fd
* bignum.c (bary_mul_precheck): fix a copy-paste error.
...
Coverity Scan found this bug.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-21 16:23:58 +00:00
akr
3c99764bcd
* internal.h: Rename macro names: RBIGNUM_FOO to BIGNUM_FOO.
...
(BIGNUM_EMBED_LEN_NUMBITS): Renamed from RBIGNUM_EMBED_LEN_NUMBITS.
(BIGNUM_EMBED_LEN_MAX): Renamed from RBIGNUM_EMBED_LEN_MAX.
(BIGNUM_SIGN_BIT): Renamed from RBIGNUM_SIGN_BIT.
(BIGNUM_SIGN): Renamed from RBIGNUM_SIGN.
(BIGNUM_SET_SIGN): Renamed from RBIGNUM_SET_SIGN.
(BIGNUM_POSITIVE_P): Renamed from RBIGNUM_POSITIVE_P.
(BIGNUM_NEGATIVE_P): Renamed from RBIGNUM_NEGATIVE_P.
(BIGNUM_EMBED_FLAG): Renamed from RBIGNUM_EMBED_FLAG.
(BIGNUM_EMBED_LEN_MASK): Renamed from RBIGNUM_EMBED_LEN_MASK.
(BIGNUM_EMBED_LEN_SHIFT): Renamed from RBIGNUM_EMBED_LEN_SHIFT.
(BIGNUM_LEN): Renamed from RBIGNUM_LEN.
(RBIGNUM_DIGITS): Renamed from RBIGNUM_DIGITS.
(BIGNUM_LENINT): Renamed from RBIGNUM_LENINT.
* bignum.c: Follow the above change.
* gc.c: Ditto.
* marshal.c: Ditto.
* math.c: Ditto.
* numeric.c: Ditto.
* random.c: Ditto.
* rational.c: Ditto.
* sprintf.c: Ditto.
* ext/-test-/bignum/bigzero.c: Ditto.
* ext/-test-/bignum/intpack.c: Ditto.
* ext/bigdecimal/bigdecimal.c: Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44989 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-15 21:17:34 +00:00
akr
dfd26e3a47
* bignum.c (rb_big_cmp): Avoid bignum allocation for comparison
...
between bignum and fixnum.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44965 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-15 02:48:44 +00:00
akr
6f8b0e9bb0
* include/ruby/intern.h,
...
include/ruby/io.h,
include/ruby/ruby.h,
include/ruby/win32.h,
include/ruby/backward/rubysig.h,
bignum.c,
gc.c,
io.c,
process.c,
safe.c,
struct.c,
thread.c,
ext/socket/rubysocket.h,
ext/-test-/old_thread_select: Remove deprecated definitions
[ruby-core:60581] [Feature #9502 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-14 15:16:31 +00:00
akr
2fee22f30d
[DOC]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-11 16:40:41 +00:00
akr
c1de2f4e3a
* bignum.c (rb_big_cmp): Specialize a comparison to zero.
...
* ext/bigdecimal/bigdecimal.c (is_negative): Use rb_big_cmp instead of
RBIGNUM_NEGATIVE_P.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-02-11 14:43:23 +00:00
akr
bc65d709ab
* bignum.c (bigxor_int): Apply BIGLO for long in a BDIGIT expression.
...
(bigor_int): Ditto.
(bigand_int): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-24 13:27:14 +00:00
akr
d33541009f
* include/ruby/defines.h: Don't use int128_t for Bignum.
...
It's not always faster.
* bignum.c: Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-24 04:51:33 +00:00
nobu
ef37d178bb
bignum.c: suppress warning
...
* bignum.c (absint_numwords_generic): suppress false warning in
rb_absint_numwords() by gcc 4.4.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43722 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-19 14:00:26 +00:00
nobu
e146015272
bignum.c, math.c: RB_BIGNUM_TYPE_P
...
* bignum.c, math.c (RB_BIGNUM_TYPE_P): predicate macro like
RB_FLOAT_TYPE_P.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42874 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 19:04:23 +00:00
nobu
c26293dccf
bignum.c, math.c: type predicates
...
* bignum.c, math.c: use type predicate macros instead of TYPE().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42873 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 19:04:18 +00:00
nobu
a77ae1eced
bignum.c: split rb_big_fdiv and big_fdiv
...
* bignum.c (rb_big_fdiv): split with big_fdiv by divider type.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42872 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-07 19:04:15 +00:00
akr
b1b395911c
* bignum.c (GMP_DIV_DIGITS): New macro.
...
(bary_divmod_gmp): New function.
(rb_big_divrem_gmp): Ditto.
(bary_divmod_branch): Ditto.
(bary_divmod): Use bary_divmod_branch.
(bigdivrem): Ditto.
* internal.h (rb_big_divrem_gmp): Declared.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 23:22:27 +00:00
akr
3b1ab2a6b7
* bignum.c (bary_divmod_normal): Reduce temporary array allocations.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 21:23:21 +00:00
akr
8745bc676e
* bignum.c (rb_big_divrem_normal): Add GC guards.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 17:21:43 +00:00
akr
8f8bf8243d
* bignum.c (rb_big_divrem_normal): New function.
...
* internal.h (rb_big_divrem_normal): Declared.
* ext/-test-/bignum/div.c: New file.
* test/-ext-/bignum/test_div.rb: New file.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42834 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 16:10:06 +00:00
akr
cf3736a75a
* bignum.c (bigdivrem_normal): Removed.
...
(bary_divmod_normal): New function.
(bary_divmod): Use bary_divmod_normal.
(bigdivrem): Use bary_divmod_normal.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 15:10:48 +00:00
akr
102a2c2e80
* bignum.c (bigdivrem): Useless declaration removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42830 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 14:03:29 +00:00
akr
dd95c9b1cd
* bignum.c (bigdivrem_normal): Add assertions.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-04 11:23:05 +00:00
akr
2583689340
* bignum.c (GMP_STR2BIG_DIGITS): New macro.
...
(str2big_gmp): New function.
(rb_cstr_to_inum): Use str2big_gmp for big bignums.
(rb_str2big_gmp): New function.
* internal.h (rb_str2big_gmp): Declared.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 11:20:02 +00:00
akr
0b2413b471
* bignum.c (rb_str2big_poweroftwo): New function.
...
(rb_str2big_normal): Ditto.
(rb_str2big_karatsuba): Ditto.
* internal.h (rb_str2big_poweroftwo): Declared.
(rb_str2big_normal): Ditto.
(rb_str2big_karatsuba): Ditto.
* ext/-test-/bignum/str2big.c: New file.
* test/-ext-/bignum/test_str2big.rb: New file.
* ext/-test-/bignum/depend: Add the dependency for str2big.c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 03:50:15 +00:00
akr
c048ad23b6
* bignum.c (str2big_scan_digits): Extracted from rb_cstr_to_inum.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-03 03:03:32 +00:00
akr
0c3d124571
* bignum.c (bytes_2comp): Define it only for little endian
...
environment.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42787 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-02 22:41:07 +00:00
akr
1d7611ff48
* bignum.c (ISDIGIT): Unused macro removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-02 13:56:23 +00:00
akr
5f61a592e9
* bignum.c (str2big_poweroftwo): Extracted from rb_cstr_to_inum.
...
(str2big_normal): Ditto.
(str2big_karatsuba): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-02 13:52:05 +00:00
akr
0effd06122
* bignum.c (Init_Bignum): Define Bignum::GMP_VERSION when GMP is used.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42767 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 22:04:35 +00:00
akr
c48e169fb9
* bignum.c (big2str_generic): Reduce arguments.
...
(big2str_gmp): Ditto.
(rb_big2str1): Follow the above change.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 16:47:20 +00:00
akr
b64c2c348f
* bignum.c (GMP_BIG2STR_DIGITS): New constant.
...
(big2str_gmp): New function.
(rb_big2str1): Use big2str_gmp for big bignums.
* internal.h (rb_big2str_gmp): Declared.
* ext/-test-/bignum/big2str.c (big2str_gmp): New method.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42762 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 14:34:53 +00:00
akr
4dd7a13a0a
* bignum.c (bary_mul_gmp): Use mpz_init and mpz_clear instead of
...
mpz_inits and mpz_clears.
Older GMP don't have them.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42761 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 13:38:49 +00:00
akr
7dd1604603
* bignum.c (big2str_base_poweroftwo): Renamed from
...
big2str_base_powerof2.
(rb_big2str_poweroftwo): New function for test.
(big2str_generic): Extracted from rb_big2str1.
(rb_big2str_generic): New function for test.
* internal.h (rb_big2str_poweroftwo): Declared.
(rb_big2str_generic): Ditto.
* ext/-test-/bignum/big2str.c: New file.
* test/-ext-/bignum/test_big2str.rb: New file.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42758 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 11:35:57 +00:00
akr
34004844cd
* bignum.c (big2str_2bdigits): Renamed from big2str_orig.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42756 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 06:21:52 +00:00
akr
6fe40011a8
* bignum.c: Remove BITSPERDIG >= INT_MAX test. The static assertion,
...
SIZEOF_BDIGITS <= sizeof(BDIGIT) is enough.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42755 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 04:03:32 +00:00
akr
c9b3571ceb
* bignum.c (maxpow_in_bdigit): Removed.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42754 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 02:39:05 +00:00
akr
77f245e62e
* numeric.c (rb_fix_bit_length): Moved from bignum.c.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 01:31:16 +00:00
akr
a0a0b61b68
[DOC]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42751 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 01:00:15 +00:00
akr
7bb549d6b5
* internal.h (bit_length): Moved from bignum.c.
...
(nlz_int): Ditto.
(nlz_long): Ditto.
(nlz_long_long): Ditto.
(nlz_int128): Ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-09-01 00:57:00 +00:00
akr
8bd7af6794
* bignum.c (bit_length): Renamed from bitsize.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-31 18:34:42 +00:00
akr
89744e75bd
* bignum.c (rb_big_bit_length): New method.
...
(rb_fix_bit_length): Ditto.
[ruby-core:56247] [Feature #8700 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42746 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-31 15:09:20 +00:00
akr
83a0709174
* bignum.c: Use GMP to accelerate big Bignum multiplication.
...
(bary_mul_gmp): New function.
(bary_mul): Use bary_mul_gmp.
(bigsq): Use different threshold with GMP.
* configure.in: Detect GMP.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-31 12:17:18 +00:00
akr
5a0e4a5871
* bignum.c (BARY_SHORT_MUL): Renamed from BARY_MUL1.
...
(bary_short_mul): Renamed from bary_mul1.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42679 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-08-24 16:51:23 +00:00
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