diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-06-18 09:46:01 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-06-18 09:46:01 +0000 |
commit | 1a6a65f16bb8f9f8035dc8d4689ec0b6032047d0 (patch) | |
tree | 7c4a486219dc84f02865e2da98c7d943185c3ffa /bignum.c | |
parent | ca7bdc882bab78fffc91244496fd2c797018d881 (diff) |
* 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
Diffstat (limited to 'bignum.c')
-rw-r--r-- | bignum.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -4332,7 +4332,7 @@ rb_big_pow(VALUE x, VALUE y) SIGNED_VALUE mask; const long xlen = RBIGNUM_LEN(x); const long xbits = BITSPERDIG*xlen - nlz(RBIGNUM_DIGITS(x)[xlen-1]); - const long BIGLEN_LIMIT = BITSPERDIG*1024*1024; + const long BIGLEN_LIMIT = 32*1024*1024; if ((xbits > BIGLEN_LIMIT) || (xbits * yy > BIGLEN_LIMIT)) { rb_warn("in a**b, b may be too big"); |