Ruby
2.0.0p247(2013-06-27revision41674)
|
#include "ruby/ruby.h"
#include "ruby/thread.h"
#include "ruby/util.h"
#include "internal.h"
#include <math.h>
#include <float.h>
#include <ctype.h>
#include <assert.h>
Go to the source code of this file.
Data Structures | |
struct | big_div_struct |
Defines | |
#define | BDIGITS(x) (RBIGNUM_DIGITS(x)) |
#define | BITSPERDIG (SIZEOF_BDIGITS*CHAR_BIT) |
#define | BIGRAD ((BDIGIT_DBL)1 << BITSPERDIG) |
#define | BIGRAD_HALF ((BDIGIT)(BIGRAD >> 1)) |
#define | DIGSPERLONG (SIZEOF_LONG/SIZEOF_BDIGITS) |
#define | BIGUP(x) ((BDIGIT_DBL)(x) << BITSPERDIG) |
#define | BIGDN(x) RSHIFT((x),BITSPERDIG) |
#define | BIGLO(x) ((BDIGIT)((x) & (BIGRAD-1))) |
#define | BDIGMAX ((BDIGIT)-1) |
#define | BIGZEROP(x) |
#define | BIGNUM_DEBUG 0 |
#define | ON_DEBUG(x) |
#define | RBIGNUM_SET_LEN(b, l) |
#define | bignew(len, sign) bignew_1(rb_cBignum,(len),(sign)) |
#define | QUAD_SIZE 8 |
#define | BNEG(b) (RSHIFT(((BDIGIT*)(b))[QUAD_SIZE/SIZEOF_BDIGITS-1],BITSPERDIG-1) != 0) |
#define | ISDIGIT(c) ('0' <= (c) && (c) <= '9') |
#define | conv_digit(c) |
#define | POW2_P(x) (((x)&((x)-1))==0) |
#define | MASK_55 0x55555555UL |
#define | MASK_33 0x33333333UL |
#define | MASK_0f 0x0f0f0f0fUL |
#define | LOG2_KARATSUBA_DIGITS 7 |
#define | KARATSUBA_DIGITS (1L<<LOG2_KARATSUBA_DIGITS) |
#define | MAX_BIG2STR_TABLE_ENTRIES 64 |
#define | KARATSUBA_MUL_DIGITS 70 |
#define | TOOM3_MUL_DIGITS 150 |
#define | DBL_BIGDIG ((DBL_MANT_DIG + BITSPERDIG) / BITSPERDIG) |
Enumerations | |
enum | big_op_t { big_op_gt, big_op_ge, big_op_lt, big_op_le } |
Functions | |
static int | bigzero_p (VALUE x) |
int | rb_bigzero_p (VALUE x) |
int | rb_cmpint (VALUE val, VALUE a, VALUE b) |
static void | rb_big_realloc (VALUE big, long len) |
void | rb_big_resize (VALUE big, long len) |
static VALUE | bignew_1 (VALUE klass, long len, int sign) |
VALUE | rb_big_new (long len, int sign) |
VALUE | rb_big_clone (VALUE x) |
static void | get2comp (VALUE x) |
void | rb_big_2comp (VALUE x) |
static VALUE | bigtrunc (VALUE x) |
static VALUE | bigfixize (VALUE x) |
static VALUE | bignorm (VALUE x) |
VALUE | rb_big_norm (VALUE x) |
VALUE | rb_uint2big (VALUE n) |
VALUE | rb_int2big (SIGNED_VALUE n) |
VALUE | rb_uint2inum (VALUE n) |
VALUE | rb_int2inum (SIGNED_VALUE n) |
void | rb_big_pack (VALUE val, unsigned long *buf, long num_longs) |
VALUE | rb_big_unpack (unsigned long *buf, long num_longs) |
static int | quad_buf_complement (char *buf, size_t len) |
void | rb_quad_pack (char *buf, VALUE val) |
VALUE | rb_quad_unpack (const char *buf, int sign) |
VALUE | rb_cstr_to_inum (const char *str, int base, int badcheck) |
VALUE | rb_str_to_inum (VALUE str, int base, int badcheck) |
VALUE | rb_cstr2inum (const char *str, int base) |
VALUE | rb_str2inum (VALUE str, int base) |
static VALUE | bigsqr (VALUE x) |
static void | bigdivmod (VALUE x, VALUE y, volatile VALUE *divp, volatile VALUE *modp) |
static int | ones (register unsigned long x) |
static unsigned long | next_pow2 (register unsigned long x) |
static int | floor_log2 (register unsigned long x) |
static int | ceil_log2 (register unsigned long x) |
static void | power_cache_init (void) |
static VALUE | power_cache_get_power0 (int base, int i) |
static VALUE | power_cache_get_power (int base, long n1, long *m1) |
static long | big2str_find_n1 (VALUE x, int base) |
static long | big2str_orig (VALUE x, int base, char *ptr, long len, long hbase, int trim) |
static long | big2str_karatsuba (VALUE x, int base, char *ptr, long n1, long len, long hbase, int trim) |
VALUE | rb_big2str0 (VALUE x, int base, int trim) |
VALUE | rb_big2str (VALUE x, int base) |
static VALUE | rb_big_to_s (int argc, VALUE *argv, VALUE x) |
static VALUE | big2ulong (VALUE x, const char *type, int check) |
VALUE | rb_big2ulong_pack (VALUE x) |
VALUE | rb_big2ulong (VALUE x) |
SIGNED_VALUE | rb_big2long (VALUE x) |
static VALUE | dbl2big (double d) |
VALUE | rb_dbl2big (double d) |
static int | nlz (BDIGIT x) |
static double | big2dbl (VALUE x) |
double | rb_big2dbl (VALUE x) |
static VALUE | rb_big_to_f (VALUE x) |
VALUE | rb_integer_float_cmp (VALUE x, VALUE y) |
VALUE | rb_integer_float_eq (VALUE x, VALUE y) |
VALUE | rb_big_cmp (VALUE x, VALUE y) |
static VALUE | big_op (VALUE x, VALUE y, enum big_op_t op) |
static VALUE | big_gt (VALUE x, VALUE y) |
static VALUE | big_ge (VALUE x, VALUE y) |
static VALUE | big_lt (VALUE x, VALUE y) |
static VALUE | big_le (VALUE x, VALUE y) |
VALUE | rb_big_eq (VALUE x, VALUE y) |
VALUE | rb_big_eql (VALUE x, VALUE y) |
VALUE | rb_big_uminus (VALUE x) |
static VALUE | rb_big_neg (VALUE x) |
static void | bigsub_core (BDIGIT *xds, long xn, BDIGIT *yds, long yn, BDIGIT *zds, long zn) |
static VALUE | bigsub (VALUE x, VALUE y) |
static VALUE | bigadd_int (VALUE x, long y) |
static VALUE | bigsub_int (VALUE x, long y0) |
static void | bigadd_core (BDIGIT *xds, long xn, BDIGIT *yds, long yn, BDIGIT *zds, long zn) |
static VALUE | bigadd (VALUE x, VALUE y, int sign) |
VALUE | rb_big_plus (VALUE x, VALUE y) |
VALUE | rb_big_minus (VALUE x, VALUE y) |
static long | big_real_len (VALUE x) |
static VALUE | bigmul1_single (VALUE x, VALUE y) |
static VALUE | bigmul1_normal (VALUE x, VALUE y) |
static VALUE | bigmul0 (VALUE x, VALUE y) |
static VALUE | bigmul1_balance (VALUE x, VALUE y) |
static void | big_split (VALUE v, long n, volatile VALUE *ph, volatile VALUE *pl) |
static VALUE | bigmul1_karatsuba (VALUE x, VALUE y) |
static void | biglsh_bang (BDIGIT *xds, long xn, unsigned long shift) |
static void | bigrsh_bang (BDIGIT *xds, long xn, unsigned long shift) |
static void | big_split3 (VALUE v, long n, volatile VALUE *p0, volatile VALUE *p1, volatile VALUE *p2) |
static VALUE | big_lshift (VALUE, unsigned long) |
static VALUE | big_rshift (VALUE, unsigned long) |
static VALUE | bigdivrem (VALUE, VALUE, volatile VALUE *, volatile VALUE *) |
static VALUE | bigmul1_toom3 (VALUE x, VALUE y) |
static VALUE | bigsqr_fast (VALUE x) |
static VALUE | big_sparse_p (VALUE x) |
VALUE | rb_big_mul (VALUE x, VALUE y) |
static void * | bigdivrem1 (void *ptr) |
static void | rb_big_stop (void *ptr) |
static VALUE | rb_big_divide (VALUE x, VALUE y, ID op) |
VALUE | rb_big_div (VALUE x, VALUE y) |
VALUE | rb_big_idiv (VALUE x, VALUE y) |
VALUE | rb_big_modulo (VALUE x, VALUE y) |
static VALUE | rb_big_remainder (VALUE x, VALUE y) |
VALUE | rb_big_divmod (VALUE x, VALUE y) |
static int | bdigbitsize (BDIGIT x) |
static VALUE | big_shift (VALUE x, long n) |
static VALUE | big_fdiv (VALUE x, VALUE y) |
VALUE | rb_big_fdiv (VALUE x, VALUE y) |
VALUE | rb_big_pow (VALUE x, VALUE y) |
static VALUE | bigand_int (VALUE x, long y) |
VALUE | rb_big_and (VALUE xx, VALUE yy) |
static VALUE | bigor_int (VALUE x, long y) |
VALUE | rb_big_or (VALUE xx, VALUE yy) |
static VALUE | bigxor_int (VALUE x, long y) |
VALUE | rb_big_xor (VALUE xx, VALUE yy) |
static VALUE | check_shiftdown (VALUE y, VALUE x) |
VALUE | rb_big_lshift (VALUE x, VALUE y) |
VALUE | rb_big_rshift (VALUE x, VALUE y) |
static VALUE | rb_big_aref (VALUE x, VALUE y) |
static VALUE | rb_big_hash (VALUE x) |
static VALUE | rb_big_coerce (VALUE x, VALUE y) |
static VALUE | rb_big_abs (VALUE x) |
static VALUE | rb_big_size (VALUE big) |
static VALUE | rb_big_odd_p (VALUE num) |
static VALUE | rb_big_even_p (VALUE num) |
void | Init_Bignum (void) |
Variables | |
VALUE | rb_cBignum |
static VALUE | big_three = Qnil |
const char | ruby_digitmap [] = "0123456789abcdefghijklmnopqrstuvwxyz" |
static VALUE | big2str_power_cache [35][MAX_BIG2STR_TABLE_ENTRIES] |
#define BDIGITS | ( | x | ) | (RBIGNUM_DIGITS(x)) |
Definition at line 36 of file bignum.c.
Referenced by big2dbl(), big2str_orig(), big2ulong(), big_fdiv(), big_lshift(), big_real_len(), big_rshift(), big_sparse_p(), big_split(), bigadd(), bigadd_int(), bigand_int(), bigdivrem(), bigfixize(), bigmul1_balance(), bigmul1_karatsuba(), bigmul1_normal(), bigmul1_single(), bigmul1_toom3(), bigor_int(), bigsqr_fast(), bigsub(), bigsub_int(), bigtrunc(), bigxor_int(), bigzero_p(), dbl2big(), get2comp(), rb_big_and(), rb_big_aref(), rb_big_clone(), rb_big_cmp(), rb_big_eq(), rb_big_eql(), rb_big_even_p(), rb_big_hash(), rb_big_neg(), rb_big_odd_p(), rb_big_or(), rb_big_pack(), rb_big_unpack(), rb_big_xor(), rb_cstr_to_inum(), rb_quad_pack(), rb_quad_unpack(), and rb_uint2big().
#define BIGDN | ( | x | ) | RSHIFT((x),BITSPERDIG) |
Definition at line 45 of file bignum.c.
Referenced by big_lshift(), bigadd_core(), bigadd_int(), bigand_int(), bigdivrem(), bigdivrem1(), bigmul1_normal(), bigmul1_single(), bigor_int(), bigsqr_fast(), bigsub_core(), bigsub_int(), bigxor_int(), get2comp(), rb_big_aref(), rb_big_unpack(), rb_cstr_to_inum(), and rb_uint2big().
Definition at line 46 of file bignum.c.
Referenced by big_lshift(), big_rshift(), bigadd_core(), bigadd_int(), bigand_int(), bigdivrem(), bigdivrem1(), bigmul1_normal(), bigmul1_single(), bigor_int(), bigsqr_fast(), bigsub_core(), bigsub_int(), bigxor_int(), get2comp(), rb_big_unpack(), rb_cstr_to_inum(), and rb_uint2big().
#define bignew | ( | len, | |
sign | |||
) | bignew_1(rb_cBignum,(len),(sign)) |
Definition at line 183 of file bignum.c.
Referenced by big_lshift(), big_rshift(), big_split(), bigadd(), bigadd_int(), bigand_int(), bigdivrem(), bigmul1_balance(), bigmul1_karatsuba(), bigmul1_normal(), bigmul1_single(), bigmul1_toom3(), bigor_int(), bigsqr_fast(), bigsub(), bigsub_int(), bigxor_int(), dbl2big(), rb_big_and(), rb_big_new(), rb_big_or(), rb_big_unpack(), rb_big_xor(), rb_cstr_to_inum(), rb_quad_unpack(), and rb_uint2big().
#define BIGNUM_DEBUG 0 |
#define BIGRAD ((BDIGIT_DBL)1 << BITSPERDIG) |
Definition at line 38 of file bignum.c.
Referenced by big2dbl(), bigdivrem1(), bigor_int(), dbl2big(), and rb_big_or().
#define BIGRAD_HALF ((BDIGIT)(BIGRAD >> 1)) |
Definition at line 39 of file bignum.c.
Referenced by bigmul1_toom3().
#define BIGUP | ( | x | ) | ((BDIGIT_DBL)(x) << BITSPERDIG) |
Definition at line 44 of file bignum.c.
Referenced by big2str_orig(), big2ulong(), big_rshift(), bigdivrem(), bigdivrem1(), and bigfixize().
#define BIGZEROP | ( | x | ) |
(RBIGNUM_LEN(x) == 0 || \ (BDIGITS(x)[0] == 0 && \ (RBIGNUM_LEN(x) == 1 || bigzero_p(x))))
Definition at line 49 of file bignum.c.
Referenced by big2str_find_n1(), big2str_karatsuba(), bigdivmod(), bigdivrem(), bigmul1_karatsuba(), rb_big2str0(), rb_big_pow(), rb_bigzero_p(), and rb_cmpint().
#define BITSPERDIG (SIZEOF_BDIGITS*CHAR_BIT) |
Definition at line 37 of file bignum.c.
Referenced by bdigbitsize(), big2dbl(), big2str_find_n1(), big_fdiv(), big_lshift(), big_rshift(), bigdivrem(), biglsh_bang(), bigrsh_bang(), nlz(), rb_big_aref(), rb_big_pack(), rb_big_pow(), and rb_cstr_to_inum().
#define BNEG | ( | b | ) | (RSHIFT(((BDIGIT*)(b))[QUAD_SIZE/SIZEOF_BDIGITS-1],BITSPERDIG-1) != 0) |
Definition at line 558 of file bignum.c.
Referenced by rb_quad_unpack().
#define conv_digit | ( | c | ) |
(!ISASCII(c) ? -1 : \ ISDIGIT(c) ? ((c) - '0') : \ ISLOWER(c) ? ((c) - 'a' + 10) : \ ISUPPER(c) ? ((c) - 'A' + 10) : \ -1)
Referenced by rb_cstr_to_inum().
#define DBL_BIGDIG ((DBL_MANT_DIG + BITSPERDIG) / BITSPERDIG) |
Referenced by big_fdiv().
#define DIGSPERLONG (SIZEOF_LONG/SIZEOF_BDIGITS) |
Definition at line 40 of file bignum.c.
Referenced by big2ulong(), rb_big_aref(), rb_big_pack(), rb_big_unpack(), rb_num_to_uint(), and rb_uint2big().
#define ISDIGIT | ( | c | ) | ('0' <= (c) && (c) <= '9') |
#define KARATSUBA_DIGITS (1L<<LOG2_KARATSUBA_DIGITS) |
Definition at line 944 of file bignum.c.
Referenced by big2str_karatsuba(), power_cache_get_power(), power_cache_get_power0(), and rb_big2str0().
#define KARATSUBA_MUL_DIGITS 70 |
#define LOG2_KARATSUBA_DIGITS 7 |
Definition at line 943 of file bignum.c.
Referenced by power_cache_get_power().
#define MAX_BIG2STR_TABLE_ENTRIES 64 |
Definition at line 945 of file bignum.c.
Referenced by power_cache_get_power(), and power_cache_init().
#define POW2_P | ( | x | ) | (((x)&((x)-1))==0) |
Definition at line 881 of file bignum.c.
Referenced by ceil_log2().
#define QUAD_SIZE 8 |
Definition at line 452 of file bignum.c.
Referenced by rb_quad_pack(), and rb_quad_unpack().
#define RBIGNUM_SET_LEN | ( | b, | |
l | |||
) |
((RBASIC(b)->flags & RBIGNUM_EMBED_FLAG) ? \ (void)(RBASIC(b)->flags = \ (RBASIC(b)->flags & ~RBIGNUM_EMBED_LEN_MASK) | \ ((l) << RBIGNUM_EMBED_LEN_SHIFT)) : \ (void)(RBIGNUM(b)->as.heap.len = (l)))
Definition at line 118 of file bignum.c.
Referenced by bigdivrem(), bigmul1_balance(), bignew_1(), rb_big_realloc(), rb_big_resize(), and rb_uint2big().
#define TOOM3_MUL_DIGITS 150 |
enum big_op_t |
static int bdigbitsize | ( | BDIGIT | x | ) | [static] |
Definition at line 3031 of file bignum.c.
References BDIGIT, BITSPERDIG, and size.
Referenced by big_fdiv().
Definition at line 1380 of file bignum.c.
References BDIGIT, BDIGITS, BIGRAD, bigtrunc(), BITSPERDIG, DBL_MANT_DIG, DBL_MAX_EXP, lo, nlz(), RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by big_fdiv(), rb_big2dbl(), and rb_big_fdiv().
static long big2str_find_n1 | ( | VALUE | x, |
int | base | ||
) | [static] |
Definition at line 1011 of file bignum.c.
References BIGZEROP, BITSPERDIG, CHAR_BIT, FIXNUM_P, LONG_MAX, rb_bug(), rb_eRangeError, rb_raise(), and RBIGNUM_LEN.
Referenced by rb_big2str0().
static long big2str_karatsuba | ( | VALUE | x, |
int | base, | ||
char * | ptr, | ||
long | n1, | ||
long | len, | ||
long | hbase, | ||
int | trim | ||
) | [static] |
Definition at line 1082 of file bignum.c.
References big2str_orig(), bigdivmod(), BIGZEROP, KARATSUBA_DIGITS, power_cache_get_power(), and rb_big_resize().
Referenced by rb_big2str0().
static long big2str_orig | ( | VALUE | x, |
int | base, | ||
char * | ptr, | ||
long | len, | ||
long | hbase, | ||
int | trim | ||
) | [static] |
Definition at line 1050 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGUP, MEMMOVE, RBIGNUM_LEN, and SIZEOF_BDIGITS.
Referenced by big2str_karatsuba(), and rb_big2str0().
Definition at line 1194 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGUP, DIGSPERLONG, rb_eRangeError, rb_raise(), and RBIGNUM_LEN.
Referenced by rb_big2long(), rb_big2ulong(), rb_big2ulong_pack(), rb_big_aref(), rb_big_lshift(), and rb_big_rshift().
Definition at line 3065 of file bignum.c.
References bdigbitsize(), BDIGITS, big2dbl(), big_shift(), bigdivrem(), bigtrunc(), BITSPERDIG, dbl2big(), DBL2NUM, DBL_BIGDIG, DBL_MANT_DIG, FIX2LONG, INFINITY, rb_bug(), rb_int2big(), RBIGNUM_LEN, RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by rb_big_fdiv().
Definition at line 1661 of file bignum.c.
References big_op(), and big_op_ge.
Referenced by Init_Bignum().
Definition at line 1647 of file bignum.c.
References big_op(), and big_op_gt.
Referenced by Init_Bignum().
Definition at line 1689 of file bignum.c.
References big_op(), and big_op_le.
Referenced by Init_Bignum().
static VALUE big_lshift | ( | VALUE | x, |
unsigned long | shift | ||
) | [static] |
Definition at line 3575 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, BITSPERDIG, RBIGNUM_LEN, RBIGNUM_SIGN, and big_div_struct::zds.
Referenced by big_shift(), bigmul1_toom3(), rb_big_lshift(), and rb_big_rshift().
Definition at line 1675 of file bignum.c.
References big_op(), and big_op_lt.
Referenced by Init_Bignum().
static long big_real_len | ( | VALUE | x | ) | [static] |
Definition at line 2098 of file bignum.c.
References BDIGIT, BDIGITS, and RBIGNUM_LEN.
Referenced by bigmul1_balance(), bigmul1_karatsuba(), and bigmul1_toom3().
static VALUE big_rshift | ( | VALUE | x, |
unsigned long | shift | ||
) | [static] |
Definition at line 3641 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGLO, bignew, BIGUP, BITSPERDIG, get2comp(), INT2FIX, big_div_struct::j, rb_big_clone(), RB_GC_GUARD, RBIGNUM_LEN, RBIGNUM_SIGN, and big_div_struct::zds.
Referenced by big_shift(), rb_big_lshift(), and rb_big_rshift().
Definition at line 3055 of file bignum.c.
References big_lshift(), and big_rshift().
Referenced by big_fdiv().
static VALUE big_sparse_p | ( | VALUE | x | ) | [inline, static] |
Definition at line 2600 of file bignum.c.
References BDIGITS, Qfalse, Qtrue, rb_genrand_ulong_limited(), and RBIGNUM_LEN.
Referenced by bigmul0().
Definition at line 2196 of file bignum.c.
References BDIGIT, BDIGITS, bignew, MEMCPY, rb_uint2big(), and RBIGNUM_LEN.
Referenced by big_split3(), and bigmul1_karatsuba().
static void big_split3 | ( | VALUE | v, |
long | n, | ||
volatile VALUE * | p0, | ||
volatile VALUE * | p1, | ||
volatile VALUE * | p2 | ||
) | [static] |
Definition at line 2375 of file bignum.c.
References big_split(), and bigtrunc().
Referenced by bigmul1_toom3().
Definition at line 1997 of file bignum.c.
References BDIGITS, bigadd_core(), bignew, bigsub(), RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by bigdivmod(), bigmul1_toom3(), rb_big_minus(), and rb_big_plus().
static void bigadd_core | ( | BDIGIT * | xds, |
long | xn, | ||
BDIGIT * | yds, | ||
long | yn, | ||
BDIGIT * | zds, | ||
long | zn | ||
) | [static] |
Definition at line 1963 of file bignum.c.
References assert, BDIGIT, BDIGIT_DBL, BIGDN, and BIGLO.
Referenced by bigadd(), bigmul1_balance(), bigmul1_karatsuba(), and bigmul1_toom3().
static VALUE bigadd_int | ( | VALUE | x, |
long | y | ||
) | [static] |
Definition at line 1910 of file bignum.c.
References assert, BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, bignorm(), RB_GC_GUARD, RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by rb_big_minus(), and rb_big_plus().
static VALUE bigand_int | ( | VALUE | x, |
long | y | ||
) | [static] |
Definition at line 3228 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, bignorm(), get2comp(), INT2FIX, LONG2NUM, RBIGNUM_LEN, RBIGNUM_SIGN, and big_div_struct::zds.
Referenced by rb_big_and().
Definition at line 2866 of file bignum.c.
References bigadd(), bigdivrem(), BIGZEROP, mod, rb_int2big(), and RBIGNUM_SIGN.
Referenced by big2str_karatsuba(), rb_big_divide(), rb_big_divmod(), and rb_big_modulo().
Definition at line 2741 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, bigdivrem1(), BIGDN, BIGLO, bignew, BIGUP, BIGZEROP, BITSPERDIG, big_div_struct::j, big_div_struct::nx, big_div_struct::ny, big_div_struct::nyzero, Qfalse, Qnil, Qtrue, rb_big_clone(), rb_big_stop(), RB_GC_GUARD, rb_int2big(), rb_num_zerodiv(), rb_thread_call_without_gvl(), rb_uint2big(), RBIGNUM_LEN, RBIGNUM_SET_LEN, RBIGNUM_SET_SIGN, RBIGNUM_SIGN, big_div_struct::stop, big_div_struct::yds, and big_div_struct::zds.
Referenced by big_fdiv(), bigdivmod(), bigmul1_toom3(), and rb_big_remainder().
static void* bigdivrem1 | ( | void * | ptr | ) | [static] |
Definition at line 2687 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGIT_DBL_SIGNED, BIGDN, BIGLO, BIGRAD, BIGUP, big_div_struct::j, big_div_struct::ny, big_div_struct::nyzero, big_div_struct::stop, big_div_struct::yds, and big_div_struct::zds.
Referenced by bigdivrem().
Definition at line 245 of file bignum.c.
References BDIGIT, BDIGITS, BIGUP, INT2FIX, LONG2FIX, NEGFIXABLE, POSFIXABLE, RBIGNUM_LEN, RBIGNUM_SIGN, and SIZEOF_BDIGITS.
Referenced by bignorm().
static void biglsh_bang | ( | BDIGIT * | xds, |
long | xn, | ||
unsigned long | shift | ||
) | [static] |
Definition at line 2323 of file bignum.c.
References BDIGIT, BITSPERDIG, and MEMZERO.
Referenced by bigmul1_toom3().
Definition at line 2612 of file bignum.c.
References assert, big_sparse_p(), bigmul1_balance(), bigmul1_karatsuba(), bigmul1_normal(), bigmul1_single(), bigmul1_toom3(), bigsqr_fast(), KARATSUBA_MUL_DIGITS, RBIGNUM_LEN, and TOOM3_MUL_DIGITS.
Referenced by bigmul1_balance(), bigmul1_karatsuba(), bigmul1_toom3(), bigsqr(), rb_big_mul(), and rb_big_pow().
static VALUE bigmul1_balance | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 2159 of file bignum.c.
References assert, BDIGIT, BDIGITS, big_real_len(), bigadd_core(), bigmul0(), bignew, MEMCPY, RBIGNUM_LEN, RBIGNUM_SET_LEN, and RBIGNUM_SIGN.
Referenced by bigmul0().
static VALUE bigmul1_karatsuba | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 2228 of file bignum.c.
References BDIGIT, BDIGITS, big_real_len(), big_split(), bigadd_core(), bigmul0(), bignew, bigsub_core(), BIGZEROP, MEMCPY, Qundef, RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by bigmul0().
static VALUE bigmul1_normal | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 2125 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, rb_thread_check_ints(), RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by bigmul0().
static VALUE bigmul1_single | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 2107 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, and RBIGNUM_SIGN.
Referenced by bigmul0().
static VALUE bigmul1_toom3 | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 2392 of file bignum.c.
References assert, BDIGIT, BDIGITS, big_lshift(), big_real_len(), big_split3(), big_three, bigadd(), bigadd_core(), bigdivrem(), biglsh_bang(), bigmul0(), bignew, bignorm(), BIGRAD_HALF, bigrsh_bang(), bigsub(), bigtrunc(), MEMCPY, MEMZERO, NULL, Qnil, rb_big_resize(), RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by bigmul0().
Definition at line 167 of file bignum.c.
References ALLOC_N, BDIGIT, NEWOBJ_OF, OBJ_FREEZE, RBASIC, RBIGNUM, RBIGNUM_EMBED_FLAG, RBIGNUM_EMBED_LEN_MAX, RBIGNUM_SET_LEN, RBIGNUM_SET_SIGN, and T_BIGNUM.
Referenced by rb_big_clone().
Definition at line 273 of file bignum.c.
References bigfixize(), bigtrunc(), RB_TYPE_P, and T_BIGNUM.
Referenced by bigadd_int(), bigand_int(), bigmul1_toom3(), bigor_int(), bigsub_int(), bigxor_int(), rb_big_and(), rb_big_divide(), rb_big_divmod(), rb_big_lshift(), rb_big_minus(), rb_big_modulo(), rb_big_mul(), rb_big_neg(), rb_big_norm(), rb_big_or(), rb_big_plus(), rb_big_pow(), rb_big_remainder(), rb_big_rshift(), rb_big_uminus(), rb_big_unpack(), rb_big_xor(), rb_cstr_to_inum(), rb_dbl2big(), and rb_quad_unpack().
Definition at line 3332 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, bignorm(), BIGRAD, get2comp(), RBIGNUM_LEN, RBIGNUM_SIGN, and big_div_struct::zds.
Referenced by rb_big_or().
static void bigrsh_bang | ( | BDIGIT * | xds, |
long | xn, | ||
unsigned long | shift | ||
) | [static] |
Definition at line 2349 of file bignum.c.
References BDIGIT, BITSPERDIG, and MEMZERO.
Referenced by bigmul1_toom3().
Definition at line 3156 of file bignum.c.
References bigmul0(), and bigtrunc().
Referenced by power_cache_get_power(), power_cache_get_power0(), and rb_big_pow().
static VALUE bigsqr_fast | ( | VALUE | x | ) | [static] |
Definition at line 2562 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, and RBIGNUM_LEN.
Referenced by bigmul0().
Definition at line 1822 of file bignum.c.
References BDIGIT, BDIGITS, bignew, bigsub_core(), and RBIGNUM_LEN.
Referenced by bigadd(), bigmul1_toom3(), and bigsub_int().
static void bigsub_core | ( | BDIGIT * | xds, |
long | xn, | ||
BDIGIT * | yds, | ||
long | yn, | ||
BDIGIT * | zds, | ||
long | zn | ||
) | [static] |
Definition at line 1796 of file bignum.c.
References assert, BDIGIT_DBL_SIGNED, BIGDN, and BIGLO.
Referenced by bigmul1_karatsuba(), and bigsub().
static VALUE bigsub_int | ( | VALUE | x, |
long | y0 | ||
) | [static] |
Definition at line 1858 of file bignum.c.
References BDIGIT, BDIGIT_DBL_SIGNED, BDIGITS, BIGDN, BIGLO, bignew, bignorm(), bigsub(), RB_GC_GUARD, rb_int2big(), RBIGNUM_LEN, RBIGNUM_SET_SIGN, and RBIGNUM_SIGN.
Referenced by rb_big_minus(), and rb_big_plus().
Definition at line 231 of file bignum.c.
References BDIGIT, BDIGITS, rb_big_resize(), and RBIGNUM_LEN.
Referenced by big2dbl(), big_fdiv(), big_split3(), bigmul1_toom3(), bignorm(), bigsqr(), rb_big_aref(), and rb_big_pow().
static VALUE bigxor_int | ( | VALUE | x, |
long | y | ||
) | [static] |
Definition at line 3428 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, bignorm(), get2comp(), RBIGNUM_LEN, RBIGNUM_SIGN, and big_div_struct::zds.
Referenced by rb_big_xor().
Definition at line 79 of file bignum.c.
References BDIGIT, BDIGITS, and RBIGNUM_LEN.
static int ceil_log2 | ( | register unsigned long | x | ) | [inline, static] |
Definition at line 938 of file bignum.c.
References floor_log2(), and POW2_P.
Referenced by power_cache_get_power().
static VALUE check_shiftdown | ( | VALUE | y, |
VALUE | x | ||
) | [static] |
Definition at line 3527 of file bignum.c.
References INT2FIX, Qnil, RBIGNUM_LEN, RBIGNUM_SIGN, and SIZEOF_BDIGITS.
Referenced by rb_big_lshift(), and rb_big_rshift().
Definition at line 1321 of file bignum.c.
References BDIGIT, BDIGITS, bignew, BIGRAD, isinf(), isnan, POSFIXABLE, rb_eFloatDomainError, and rb_raise().
Referenced by big_fdiv(), and rb_dbl2big().
static int floor_log2 | ( | register unsigned long | x | ) | [inline, static] |
Definition at line 203 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, rb_big_resize(), and RBIGNUM_LEN.
Referenced by big_rshift(), bigand_int(), bigor_int(), bigxor_int(), rb_big_2comp(), rb_big_and(), rb_big_neg(), rb_big_or(), rb_big_unpack(), and rb_big_xor().
void Init_Bignum | ( | void | ) |
Definition at line 3867 of file bignum.c.
References big_ge(), big_gt(), big_le(), big_lt(), big_three, power_cache_init(), rb_big_abs(), rb_big_and(), rb_big_aref(), rb_big_cmp(), rb_big_coerce(), rb_big_div(), rb_big_divmod(), rb_big_eq(), rb_big_eql(), rb_big_even_p(), rb_big_fdiv(), rb_big_hash(), rb_big_idiv(), rb_big_lshift(), rb_big_minus(), rb_big_modulo(), rb_big_mul(), rb_big_neg(), rb_big_odd_p(), rb_big_or(), rb_big_plus(), rb_big_pow(), rb_big_remainder(), rb_big_rshift(), rb_big_size(), rb_big_to_f(), rb_big_to_s(), rb_big_uminus(), rb_big_xor(), rb_cBignum, rb_cInteger, rb_define_alias(), rb_define_class(), rb_define_method(), rb_gc_register_mark_object(), and rb_uint2big().
static unsigned long next_pow2 | ( | register unsigned long | x | ) | [inline, static] |
Definition at line 1359 of file bignum.c.
References BDIGIT, and BITSPERDIG.
Referenced by big2dbl().
static int ones | ( | register unsigned long | x | ) | [inline, static] |
static VALUE power_cache_get_power | ( | int | base, |
long | n1, | ||
long * | m1 | ||
) | [static] |
Definition at line 973 of file bignum.c.
References bigsqr(), ceil_log2(), KARATSUBA_DIGITS, LOG2_KARATSUBA_DIGITS, MAX_BIG2STR_TABLE_ENTRIES, power_cache_get_power0(), and rb_bug().
Referenced by big2str_karatsuba().
static VALUE power_cache_get_power0 | ( | int | base, |
int | i | ||
) | [inline, static] |
Definition at line 961 of file bignum.c.
References bigsqr(), INT2FIX, KARATSUBA_DIGITS, NIL_P, rb_big_pow(), rb_gc_register_mark_object(), and rb_int2big().
Referenced by power_cache_get_power().
static void power_cache_init | ( | void | ) | [static] |
Definition at line 950 of file bignum.c.
References MAX_BIG2STR_TABLE_ENTRIES, and Qnil.
Referenced by Init_Bignum().
static int quad_buf_complement | ( | char * | buf, |
size_t | len | ||
) | [static] |
Definition at line 525 of file bignum.c.
Referenced by rb_quad_pack(), and rb_quad_unpack().
double rb_big2dbl | ( | VALUE | x | ) |
Definition at line 1429 of file bignum.c.
References big2dbl(), isinf(), and rb_warning().
Referenced by flo_div(), flo_divmod(), flo_minus(), flo_mod(), flo_mul(), flo_plus(), flo_pow(), int_pair_to_real_inclusive(), ole_val2ptr_variant(), ole_val2variant(), rb_big_divide(), rb_big_fdiv(), rb_big_minus(), rb_big_mul(), rb_big_plus(), rb_big_pow(), rb_big_to_f(), and rb_Float().
SIGNED_VALUE rb_big2long | ( | VALUE | x | ) |
Definition at line 1243 of file bignum.c.
References big2ulong(), LONG_MAX, LONG_MIN, rb_eRangeError, rb_raise(), RBIGNUM_POSITIVE_P, and TRUE.
Referenced by rb_num2long().
VALUE rb_big2str | ( | VALUE | x, |
int | base | ||
) |
Definition at line 1159 of file bignum.c.
References rb_big2str0().
Referenced by GetVpValueWithPrec(), rb_big_to_s(), and rb_str_format().
VALUE rb_big2str0 | ( | VALUE | x, |
int | base, | ||
int | trim | ||
) |
Definition at line 1113 of file bignum.c.
References big2str_find_n1(), big2str_karatsuba(), big2str_orig(), BIGZEROP, FIXNUM_P, KARATSUBA_DIGITS, rb_big_clone(), rb_big_resize(), rb_eArgError, rb_fix2str(), rb_raise(), rb_str_resize(), rb_usascii_str_new(), rb_usascii_str_new2(), RBIGNUM_SET_SIGN, RBIGNUM_SIGN, and RSTRING_PTR.
Referenced by rb_big2str(), and rb_str_format().
VALUE rb_big2ulong | ( | VALUE | x | ) |
Definition at line 1225 of file bignum.c.
References big2ulong(), LONG_MAX, LONG_MIN, rb_eRangeError, rb_raise(), RBIGNUM_POSITIVE_P, and TRUE.
Referenced by rb_gzfile_set_mtime(), rb_num2ulong(), and rb_num_to_uint().
VALUE rb_big2ulong_pack | ( | VALUE | x | ) |
Definition at line 1215 of file bignum.c.
References big2ulong(), FALSE, RBIGNUM_SIGN, and SIGNED_VALUE.
Referenced by rb_dlcfunc_call().
void rb_big_2comp | ( | VALUE | x | ) |
static VALUE rb_big_abs | ( | VALUE | x | ) | [static] |
Definition at line 3789 of file bignum.c.
References rb_big_clone(), RBIGNUM_SET_SIGN, and RBIGNUM_SIGN.
Referenced by Init_Bignum().
VALUE rb_big_and | ( | VALUE | xx, |
VALUE | yy | ||
) |
Definition at line 3279 of file bignum.c.
References BDIGIT, BDIGITS, bigand_int(), bignew, bignorm(), FIX2LONG, FIXNUM_P, get2comp(), rb_big_clone(), rb_num_coerce_bit(), RB_TYPE_P, RBIGNUM_LEN, RBIGNUM_SIGN, T_BIGNUM, and big_div_struct::zds.
Referenced by fix_and(), and Init_Bignum().
static VALUE rb_big_aref | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 3705 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, big2ulong(), BIGDN, bigtrunc(), BITSPERDIG, DIGSPERLONG, FALSE, INT2FIX, NUM2LONG, RB_TYPE_P, RBIGNUM_LEN, RBIGNUM_SIGN, shift(), and T_BIGNUM.
Referenced by Init_Bignum().
VALUE rb_big_clone | ( | VALUE | x | ) |
Definition at line 192 of file bignum.c.
References BDIGIT, BDIGITS, bignew_1(), CLASS_OF, MEMCPY, RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by big_rshift(), bigdivrem(), limited_big_rand(), rand_int(), rb_big2str0(), rb_big_abs(), rb_big_and(), rb_big_neg(), rb_big_or(), rb_big_uminus(), rb_big_xor(), and rb_str_format().
VALUE rb_big_cmp | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 1553 of file bignum.c.
References BDIGIT, BDIGITS, FIX2LONG, INT2FIX, rb_int2big(), rb_integer_float_cmp(), rb_intern, rb_num_coerce_cmp(), RBIGNUM_LEN, RBIGNUM_SIGN, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by big_op(), fix_cmp(), fix_ge(), fix_gt(), fix_le(), fix_lt(), Init_Bignum(), and rb_integer_float_cmp().
static VALUE rb_big_coerce | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 3767 of file bignum.c.
References FIX2LONG, FIXNUM_P, rb_assoc_new(), rb_eTypeError, rb_int2big(), rb_obj_classname(), rb_raise(), RB_TYPE_P, and T_BIGNUM.
Referenced by Init_Bignum().
VALUE rb_big_div | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 2924 of file bignum.c.
References rb_big_divide().
Referenced by fix_divide(), and Init_Bignum().
static VALUE rb_big_divide | ( | VALUE | x, |
VALUE | y, | ||
ID | op | ||
) | [static] |
Definition at line 2882 of file bignum.c.
References bigdivmod(), bignorm(), DBL2NUM, FIX2LONG, rb_big2dbl(), rb_dbl2big(), rb_int2big(), rb_num_coerce_bin(), rb_num_zerodiv(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by rb_big_div(), and rb_big_idiv().
VALUE rb_big_divmod | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 3010 of file bignum.c.
References bigdivmod(), bignorm(), div, FIX2LONG, mod, rb_assoc_new(), rb_int2big(), rb_intern, rb_num_coerce_bin(), T_BIGNUM, T_FIXNUM, and TYPE.
Referenced by fix_divmod(), Init_Bignum(), and pack_pack().
Definition at line 1706 of file bignum.c.
References BDIGIT, BDIGITS, FIX2LONG, MEMCMP, Qfalse, Qtrue, rb_equal(), rb_int2big(), rb_integer_float_eq(), RBIGNUM_LEN, RBIGNUM_SIGN, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by fix_equal(), Init_Bignum(), and rb_integer_float_eq().
VALUE rb_big_eql | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 1737 of file bignum.c.
References BDIGIT, BDIGITS, MEMCMP, Qfalse, Qtrue, RB_TYPE_P, RBIGNUM_LEN, RBIGNUM_SIGN, and T_BIGNUM.
Referenced by Init_Bignum().
static VALUE rb_big_even_p | ( | VALUE | num | ) | [static] |
VALUE rb_big_fdiv | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 3123 of file bignum.c.
References big2dbl(), big_fdiv(), DBL2NUM, FIX2LONG, isinf(), isnan, rb_big2dbl(), rb_intern, rb_num_coerce_bin(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by fix_fdiv(), and Init_Bignum().
static VALUE rb_big_hash | ( | VALUE | x | ) | [static] |
Definition at line 3754 of file bignum.c.
References BDIGIT, BDIGITS, hash(), INT2FIX, rb_memhash(), RBIGNUM_LEN, and RBIGNUM_SIGN.
Referenced by Init_Bignum().
VALUE rb_big_idiv | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 2937 of file bignum.c.
References rb_big_divide(), and rb_intern.
Referenced by Init_Bignum().
VALUE rb_big_lshift | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 3544 of file bignum.c.
References big2ulong(), big_lshift(), big_rshift(), bignorm(), check_shiftdown(), FIX2LONG, FIXNUM_P, NIL_P, rb_to_int(), RB_TYPE_P, RBIGNUM_SIGN, shift(), T_BIGNUM, and TRUE.
Referenced by fix_lshift(), Init_Bignum(), and rb_fix_lshift().
VALUE rb_big_minus | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 2068 of file bignum.c.
References bigadd(), bigadd_int(), bignorm(), bigsub_int(), DBL2NUM, FIX2LONG, rb_big2dbl(), rb_num_coerce_bin(), RBIGNUM_SIGN, RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by fix_minus(), Init_Bignum(), rand_int(), rand_range(), sub(), and wsub().
VALUE rb_big_modulo | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 2952 of file bignum.c.
References bigdivmod(), bignorm(), FIX2LONG, rb_int2big(), rb_num_coerce_bin(), T_BIGNUM, T_FIXNUM, and TYPE.
Referenced by fix_mod(), Init_Bignum(), and mod().
VALUE rb_big_mul | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 2660 of file bignum.c.
References bigmul0(), bignorm(), DBL2NUM, FIX2LONG, rb_big2dbl(), rb_int2big(), rb_num_coerce_bin(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by f_imul(), fix_mul(), Init_Bignum(), int_pair_to_real_inclusive(), int_pow(), mul(), pack_unpack(), and wmul().
static VALUE rb_big_neg | ( | VALUE | x | ) | [static] |
Definition at line 1776 of file bignum.c.
References BDIGIT, BDIGITS, bignorm(), get2comp(), INT2FIX, rb_big_clone(), RBIGNUM_LEN, RBIGNUM_SET_SIGN, RBIGNUM_SIGN, and SIGNED_VALUE.
Referenced by Init_Bignum().
VALUE rb_big_new | ( | long | len, |
int | sign | ||
) |
Definition at line 186 of file bignum.c.
References bignew.
Referenced by int_pair_to_real_inclusive(), and mt_state().
VALUE rb_big_norm | ( | VALUE | x | ) |
Definition at line 282 of file bignum.c.
References bignorm().
Referenced by fix_aref(), limited_big_rand(), make_seed_value(), mt_state(), r_object0(), and rand_range().
static VALUE rb_big_odd_p | ( | VALUE | num | ) | [static] |
Definition at line 3375 of file bignum.c.
References BDIGIT, BDIGITS, bignew, bignorm(), bigor_int(), BIGRAD, FIX2LONG, FIXNUM_P, get2comp(), rb_big_clone(), rb_num_coerce_bit(), RB_TYPE_P, RBIGNUM_LEN, RBIGNUM_SIGN, T_BIGNUM, and big_div_struct::zds.
Referenced by fix_or(), and Init_Bignum().
void rb_big_pack | ( | VALUE | val, |
unsigned long * | buf, | ||
long | num_longs | ||
) |
Definition at line 369 of file bignum.c.
References BDIGIT, BDIGITS, BITSPERDIG, DIGSPERLONG, FIX2LONG, FIXNUM_P, rb_to_int(), RBIGNUM_LEN, and RBIGNUM_NEGATIVE_P.
Referenced by pack_pack().
VALUE rb_big_plus | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 2031 of file bignum.c.
References bigadd(), bigadd_int(), bignorm(), bigsub_int(), DBL2NUM, FIX2LONG, rb_big2dbl(), rb_num_coerce_bin(), RBIGNUM_SIGN, RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by add(), fix_plus(), Init_Bignum(), pack_unpack(), rand_range(), rb_random_int32(), ulong_to_num_plus_1(), and wadd().
VALUE rb_big_pow | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 3175 of file bignum.c.
References bigmul0(), bignorm(), bigsqr(), bigtrunc(), BIGZEROP, BITSPERDIG, DBL2NUM, ffs(), FIX2LONG, FIXNUM_MAX, INT2FIX, rb_big2dbl(), rb_complex_raw1, rb_funcall(), rb_intern, rb_num_coerce_bin(), rb_rational_raw1, rb_warn(), RBIGNUM_DIGITS, RBIGNUM_LEN, RBIGNUM_SIGN, RFLOAT_VALUE, round(), SIGNED_VALUE, SIZEOF_BDIGITS, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.
Referenced by fix_pow(), Init_Bignum(), int_pow(), and power_cache_get_power0().
static void rb_big_realloc | ( | VALUE | big, |
long | len | ||
) | [static] |
Definition at line 126 of file bignum.c.
References ALLOC_N, BDIGIT, MEMCPY, RBASIC, RBIGNUM, RBIGNUM_EMBED_FLAG, RBIGNUM_EMBED_LEN_MAX, RBIGNUM_LEN, RBIGNUM_SET_LEN, REALLOC_N, and xfree().
Referenced by rb_big_resize().
static VALUE rb_big_remainder | ( | VALUE | x, |
VALUE | y | ||
) | [static] |
Definition at line 2982 of file bignum.c.
References bigdivrem(), bignorm(), FIX2LONG, rb_int2big(), rb_intern, rb_num_coerce_bin(), T_BIGNUM, T_FIXNUM, and TYPE.
Referenced by Init_Bignum().
void rb_big_resize | ( | VALUE | big, |
long | len | ||
) |
Definition at line 160 of file bignum.c.
References rb_big_realloc(), and RBIGNUM_SET_LEN.
Referenced by big2str_karatsuba(), bigmul1_toom3(), bigtrunc(), get2comp(), make_seed_value(), r_object0(), and rb_big2str0().
VALUE rb_big_rshift | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 3608 of file bignum.c.
References big2ulong(), big_lshift(), big_rshift(), bignorm(), check_shiftdown(), FIX2LONG, FIXNUM_P, NIL_P, rb_to_int(), RB_TYPE_P, RBIGNUM_SIGN, shift(), T_BIGNUM, and TRUE.
Referenced by Init_Bignum(), int_pair_to_real_inclusive(), and rb_fix_rshift().
static VALUE rb_big_size | ( | VALUE | big | ) | [static] |
Definition at line 3811 of file bignum.c.
References LONG2FIX, RBIGNUM_LEN, and SIZEOF_BDIGITS.
Referenced by Init_Bignum().
static void rb_big_stop | ( | void * | ptr | ) | [static] |
Definition at line 2734 of file bignum.c.
References Qtrue, and big_div_struct::stop.
Referenced by bigdivrem().
static VALUE rb_big_to_f | ( | VALUE | x | ) | [static] |
Definition at line 1453 of file bignum.c.
References DBL2NUM, and rb_big2dbl().
Referenced by Init_Bignum().
static VALUE rb_big_to_s | ( | int | argc, |
VALUE * | argv, | ||
VALUE | x | ||
) | [static] |
Definition at line 1179 of file bignum.c.
References NUM2INT, rb_big2str(), and rb_scan_args().
Referenced by Init_Bignum().
VALUE rb_big_uminus | ( | VALUE | x | ) |
Definition at line 1754 of file bignum.c.
References bignorm(), rb_big_clone(), RBIGNUM_SET_SIGN, and RBIGNUM_SIGN.
Referenced by Init_Bignum().
VALUE rb_big_unpack | ( | unsigned long * | buf, |
long | num_longs | ||
) |
Definition at line 411 of file bignum.c.
References BDIGIT, BDIGITS, BIGDN, BIGLO, bignew, bignorm(), DIGSPERLONG, get2comp(), INT2FIX, LONG2NUM, and RBIGNUM_SET_SIGN.
Referenced by pack_unpack().
VALUE rb_big_xor | ( | VALUE | xx, |
VALUE | yy | ||
) |
Definition at line 3470 of file bignum.c.
References BDIGIT, BDIGITS, bignew, bignorm(), bigxor_int(), FIX2LONG, FIXNUM_P, get2comp(), rb_big_clone(), rb_num_coerce_bit(), RB_TYPE_P, RBIGNUM_LEN, RBIGNUM_SET_SIGN, RBIGNUM_SIGN, T_BIGNUM, and big_div_struct::zds.
Referenced by fix_xor(), and Init_Bignum().
int rb_bigzero_p | ( | VALUE | x | ) |
Definition at line 91 of file bignum.c.
References BIGZEROP.
Referenced by rand_int(), and rand_range().
Definition at line 97 of file bignum.c.
References BIGZEROP, FIX2LONG, FIXNUM_P, INT2FIX, NIL_P, rb_cmperr(), rb_funcall(), RB_TYPE_P, RBIGNUM_SIGN, RTEST, and T_BIGNUM.
Referenced by cmp(), cmp_eq(), cmp_ge(), cmp_gt(), cmp_le(), cmp_lt(), enum_each_cons_size(), flo_cmp(), max_by_i(), max_i(), max_ii(), min_by_i(), min_i(), min_ii(), minmax_by_i(), minmax_by_i_update(), minmax_i(), minmax_i_update(), minmax_ii(), minmax_ii_update(), r_le(), r_lt(), range_bsearch(), range_max(), range_min(), rb_ary_bsearch(), rb_invcmp(), sort_1(), sort_2(), sort_by_cmp(), and wcmp().
VALUE rb_cstr2inum | ( | const char * | str, |
int | base | ||
) |
Definition at line 865 of file bignum.c.
References rb_cstr_to_inum().
Referenced by JSON_parse_integer().
VALUE rb_cstr_to_inum | ( | const char * | str, |
int | base, | ||
int | badcheck | ||
) |
Definition at line 579 of file bignum.c.
References bad, BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, bignorm(), BITSPERDIG, CHAR_BIT, conv_digit, INT2FIX, ISSPACE, LONG2FIX, POSFIXABLE, rb_eArgError, rb_invalid_str(), rb_raise(), rb_uint2big(), RBIGNUM_SET_SIGN, result, strlen(), STRTOUL, and val.
Referenced by asn1integer_to_num(), ossl_bn_to_i(), parser_yylex(), rb_cstr2inum(), rb_str_to_inum(), read_digits(), str2num(), and tkstr_to_int().
VALUE rb_dbl2big | ( | double | d | ) |
Definition at line 1353 of file bignum.c.
References bignorm(), and dbl2big().
Referenced by case_when_optimizable_literal(), dbl2ival(), fix_divide(), flo_ceil(), flo_floor(), flo_truncate(), float_decode_internal(), nurat_div(), rb_big_divide(), rb_convert_to_integer(), rb_integer_float_cmp(), rb_integer_float_eq(), and rb_str_format().
VALUE rb_int2big | ( | SIGNED_VALUE | n | ) |
Definition at line 309 of file bignum.c.
References neg, rb_uint2big(), and RBIGNUM_SET_SIGN.
Referenced by big_fdiv(), bigdivmod(), bigdivrem(), bigsub_int(), f_imul(), fix_cmp(), fix_divide(), fix_divmod(), fix_fdiv(), fix_ge(), fix_gt(), fix_le(), fix_lshift(), fix_lt(), fix_minus(), fix_mod(), fix_mul(), fix_pow(), int_pow(), power_cache_get_power0(), rb_big_cmp(), rb_big_coerce(), rb_big_divide(), rb_big_divmod(), rb_big_eq(), rb_big_modulo(), rb_big_mul(), rb_big_remainder(), rb_fix_lshift(), rb_fix_rshift(), rb_int2inum(), rb_int2num_inline(), rb_long2num_inline(), rb_quad_pack(), rb_str_format(), and w_object().
VALUE rb_int2inum | ( | SIGNED_VALUE | n | ) |
Definition at line 337 of file bignum.c.
References FIXABLE, LONG2FIX, and rb_int2big().
Referenced by gzfile_reader_rewind().
VALUE rb_integer_float_cmp | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 1459 of file bignum.c.
References FIX2LONG, FIXNUM_MAX, FIXNUM_MIN, FIXNUM_P, INT2FIX, isinf(), isnan, Qnil, rb_big_cmp(), rb_dbl2big(), and RFLOAT_VALUE.
Referenced by big_op(), fix_cmp(), fix_ge(), fix_gt(), fix_le(), fix_lt(), flo_cmp(), flo_ge(), flo_gt(), flo_le(), flo_lt(), and rb_big_cmp().
VALUE rb_integer_float_eq | ( | VALUE | x, |
VALUE | y | ||
) |
Definition at line 1509 of file bignum.c.
References FIX2LONG, FIXNUM_P, isinf(), isnan, LONG_MAX, LONG_MIN, Qfalse, Qtrue, rb_big_eq(), rb_dbl2big(), and RFLOAT_VALUE.
Referenced by fix_equal(), flo_eq(), and rb_big_eq().
void rb_quad_pack | ( | char * | buf, |
VALUE | val | ||
) |
Definition at line 539 of file bignum.c.
References BDIGITS, FIX2LONG, FIXNUM_P, quad_buf_complement(), QUAD_SIZE, rb_int2big(), rb_to_int(), RBIGNUM_LEN, RBIGNUM_NEGATIVE_P, and SIZEOF_BDIGITS.
VALUE rb_quad_unpack | ( | const char * | buf, |
int | sign | ||
) |
Definition at line 561 of file bignum.c.
References BDIGITS, bignew, bignorm(), BNEG, quad_buf_complement(), QUAD_SIZE, RBIGNUM_SET_SIGN, and SIZEOF_BDIGITS.
VALUE rb_str2inum | ( | VALUE | str, |
int | base | ||
) |
Definition at line 871 of file bignum.c.
References rb_str_to_inum().
VALUE rb_str_to_inum | ( | VALUE | str, |
int | base, | ||
int | badcheck | ||
) |
Definition at line 777 of file bignum.c.
References ALLOCV, ALLOCV_END, MEMCPY, rb_cstr_to_inum(), rb_must_asciicompat(), RSTRING_LEN, RSTRING_PTR, StringValue, and StringValueCStr.
Referenced by fun1(), obj2int(), obj2subsecx(), obj2vint(), rb_convert_to_integer(), rb_str2inum(), rb_str_format(), rb_str_hex(), rb_str_oct(), rb_str_to_i(), rb_str_upto(), and usec2subsecx().
VALUE rb_uint2big | ( | VALUE | n | ) |
Definition at line 288 of file bignum.c.
References BDIGIT, BDIGIT_DBL, BDIGITS, BIGDN, BIGLO, bignew, DIGSPERLONG, and RBIGNUM_SET_LEN.
Referenced by big_split(), bigdivrem(), Init_Bignum(), pack_pack(), pack_unpack(), rb_cstr_to_inum(), rb_int2big(), rb_uint2inum(), rb_uint2num_inline(), and rb_ulong2num_inline().
VALUE rb_uint2inum | ( | VALUE | n | ) |
Definition at line 330 of file bignum.c.
References LONG2FIX, POSFIXABLE, and rb_uint2big().
Referenced by do_checksum(), rb_gzfile_crc(), rb_gzfile_total_in(), rb_gzfile_total_out(), rb_zlib_crc_table(), rb_zstream_adler(), rb_zstream_avail_out(), rb_zstream_total_in(), rb_zstream_total_out(), and zstream_run().
VALUE big2str_power_cache[35][MAX_BIG2STR_TABLE_ENTRIES] [static] |
Definition at line 30 of file bignum.c.
Referenced by bigmul1_toom3(), and Init_Bignum().
Definition at line 28 of file bignum.c.
Referenced by generate_json(), Init_Bignum(), Init_RandomSeed2(), k_bignum_p(), make_seed_value(), negative_int_p(), positive_int_p(), r_object0(), and vm_redefinition_check_flag().
const char ruby_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz" |
Definition at line 876 of file bignum.c.
Referenced by rb_fix2str().