Ruby 1.9.3p327(2012-11-10revision37606)
Defines | Functions | Variables
numeric.c File Reference
#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include "ruby/util.h"
#include "internal.h"
#include <ctype.h>
#include <math.h>
#include <stdio.h>
Include dependency graph for numeric.c:

Go to the source code of this file.

Defines

#define FLT_RADIX   2
#define FLT_ROUNDS   1
#define DBL_MIN   2.2250738585072014e-308
#define DBL_MAX   1.7976931348623157e+308
#define DBL_MIN_EXP   (-1021)
#define DBL_MAX_EXP   1024
#define DBL_MIN_10_EXP   (-307)
#define DBL_MAX_10_EXP   308
#define DBL_DIG   15
#define DBL_MANT_DIG   53
#define DBL_EPSILON   2.2204460492503131e-16
#define NUMERR_TYPE   1
#define NUMERR_NEGATIVE   2
#define NUMERR_TOOLARGE   3
#define DIGSPERLONG   (SIZEOF_LONG/SIZEOF_BDIGITS)
#define LONG_MIN_MINUS_ONE   ((double)LONG_MIN-1)
#define LONG_MAX_PLUS_ONE   (2*(double)(LONG_MAX/2+1))
#define ULONG_MAX_PLUS_ONE   (2*(double)(ULONG_MAX/2+1))
#define SQRT_LONG_MAX   ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
#define FIT_SQRT_LONG(n)   (((n)<SQRT_LONG_MAX)&&((n)>=-SQRT_LONG_MAX))
#define rb_intern(str)   rb_intern_const(str)

Functions

double round (double x)
static VALUE fix_uminus (VALUE num)
static VALUE fix_mul (VALUE x, VALUE y)
static VALUE int_pow (long x, unsigned long y)
void rb_num_zerodiv (void)
int rb_num_to_uint (VALUE val, unsigned int *ret)
static VALUE num_coerce (VALUE x, VALUE y)
static VALUE coerce_body (VALUE *x)
static VALUE coerce_rescue (VALUE *x)
static int do_coerce (VALUE *x, VALUE *y, int err)
VALUE rb_num_coerce_bin (VALUE x, VALUE y, ID func)
VALUE rb_num_coerce_cmp (VALUE x, VALUE y, ID func)
VALUE rb_num_coerce_relop (VALUE x, VALUE y, ID func)
static VALUE num_sadded (VALUE x, VALUE name)
static VALUE num_init_copy (VALUE x, VALUE y)
static VALUE num_uplus (VALUE num)
static VALUE num_imaginary (VALUE num)
static VALUE num_uminus (VALUE num)
static VALUE num_quo (VALUE x, VALUE y)
static VALUE num_fdiv (VALUE x, VALUE y)
static VALUE num_div (VALUE x, VALUE y)
static VALUE num_modulo (VALUE x, VALUE y)
static VALUE num_remainder (VALUE x, VALUE y)
static VALUE num_divmod (VALUE x, VALUE y)
static VALUE num_real_p (VALUE num)
static VALUE num_int_p (VALUE num)
static VALUE num_abs (VALUE num)
static VALUE num_zero_p (VALUE num)
static VALUE num_nonzero_p (VALUE num)
static VALUE num_to_int (VALUE num)
VALUE rb_float_new (double d)
static VALUE flo_to_s (VALUE flt)
static VALUE flo_coerce (VALUE x, VALUE y)
static VALUE flo_uminus (VALUE flt)
static VALUE flo_plus (VALUE x, VALUE y)
static VALUE flo_minus (VALUE x, VALUE y)
static VALUE flo_mul (VALUE x, VALUE y)
static VALUE flo_div (VALUE x, VALUE y)
static VALUE flo_quo (VALUE x, VALUE y)
static void flodivmod (double x, double y, double *divp, double *modp)
double ruby_float_mod (double x, double y)
static VALUE flo_mod (VALUE x, VALUE y)
static VALUE dbl2ival (double d)
static VALUE flo_divmod (VALUE x, VALUE y)
static VALUE flo_pow (VALUE x, VALUE y)
static VALUE num_eql (VALUE x, VALUE y)
static VALUE num_cmp (VALUE x, VALUE y)
static VALUE num_equal (VALUE x, VALUE y)
static VALUE flo_eq (VALUE x, VALUE y)
static VALUE flo_hash (VALUE num)
VALUE rb_dbl_cmp (double a, double b)
static VALUE flo_cmp (VALUE x, VALUE y)
static VALUE flo_gt (VALUE x, VALUE y)
static VALUE flo_ge (VALUE x, VALUE y)
static VALUE flo_lt (VALUE x, VALUE y)
static VALUE flo_le (VALUE x, VALUE y)
static VALUE flo_eql (VALUE x, VALUE y)
static VALUE flo_to_f (VALUE num)
static VALUE flo_abs (VALUE flt)
static VALUE flo_zero_p (VALUE num)
static VALUE flo_is_nan_p (VALUE num)
static VALUE flo_is_infinite_p (VALUE num)
static VALUE flo_is_finite_p (VALUE num)
static VALUE flo_floor (VALUE num)
static VALUE flo_ceil (VALUE num)
static VALUE int_round_0 (VALUE num, int ndigits)
static VALUE flo_truncate (VALUE num)
static VALUE flo_round (int argc, VALUE *argv, VALUE num)
static VALUE num_floor (VALUE num)
static VALUE num_ceil (VALUE num)
static VALUE num_round (int argc, VALUE *argv, VALUE num)
static VALUE num_truncate (VALUE num)
int ruby_float_step (VALUE from, VALUE to, VALUE step, int excl)
static VALUE num_step (int argc, VALUE *argv, VALUE from)
SIGNED_VALUE rb_num2long (VALUE val)
VALUE rb_num2ulong (VALUE val)
long rb_num2int (VALUE val)
long rb_fix2int (VALUE val)
VALUE rb_num2fix (VALUE val)
static VALUE int_to_i (VALUE num)
static VALUE int_int_p (VALUE num)
static VALUE int_odd_p (VALUE num)
static VALUE int_even_p (VALUE num)
static VALUE fix_succ (VALUE num)
static VALUE int_succ (VALUE num)
static VALUE int_pred (VALUE num)
VALUE rb_enc_uint_chr (unsigned int code, rb_encoding *enc)
static VALUE int_chr (int argc, VALUE *argv, VALUE num)
static VALUE int_ord (VALUE num)
VALUE rb_fix2str (VALUE x, int base)
static VALUE fix_to_s (int argc, VALUE *argv, VALUE x)
static VALUE fix_plus (VALUE x, VALUE y)
static VALUE fix_minus (VALUE x, VALUE y)
static void fixdivmod (long x, long y, long *divp, long *modp)
static VALUE fix_fdiv (VALUE x, VALUE y)
static VALUE fix_divide (VALUE x, VALUE y, ID op)
static VALUE fix_div (VALUE x, VALUE y)
static VALUE fix_idiv (VALUE x, VALUE y)
static VALUE fix_mod (VALUE x, VALUE y)
static VALUE fix_divmod (VALUE x, VALUE y)
static VALUE fix_pow (VALUE x, VALUE y)
static VALUE fix_equal (VALUE x, VALUE y)
static VALUE fix_cmp (VALUE x, VALUE y)
static VALUE fix_gt (VALUE x, VALUE y)
static VALUE fix_ge (VALUE x, VALUE y)
static VALUE fix_lt (VALUE x, VALUE y)
static VALUE fix_le (VALUE x, VALUE y)
static VALUE fix_rev (VALUE num)
static VALUE bit_coerce (VALUE x)
static VALUE fix_and (VALUE x, VALUE y)
static VALUE fix_or (VALUE x, VALUE y)
static VALUE fix_xor (VALUE x, VALUE y)
static VALUE fix_lshift (long, unsigned long)
static VALUE fix_rshift (long, unsigned long)
static VALUE rb_fix_lshift (VALUE x, VALUE y)
static VALUE rb_fix_rshift (VALUE x, VALUE y)
static VALUE fix_aref (VALUE fix, VALUE idx)
static VALUE fix_to_f (VALUE num)
static VALUE fix_abs (VALUE fix)
static VALUE fix_size (VALUE fix)
static VALUE int_upto (VALUE from, VALUE to)
static VALUE int_downto (VALUE from, VALUE to)
static VALUE int_dotimes (VALUE num)
static VALUE int_round (int argc, VALUE *argv, VALUE num)
static VALUE fix_zero_p (VALUE num)
static VALUE fix_odd_p (VALUE num)
static VALUE fix_even_p (VALUE num)
void Init_Numeric (void)

Variables

const unsigned char rb_infinity [] = "\x00\x00\x80\x7f"
const unsigned char rb_nan [] = "\x00\x00\xc0\x7f"
static ID id_coerce
static ID id_to_i
static ID id_eq
VALUE rb_cNumeric
VALUE rb_cFloat
VALUE rb_cInteger
VALUE rb_cFixnum
VALUE rb_eZeroDivError
VALUE rb_eFloatDomainError

Define Documentation

#define DBL_DIG   15
#define DBL_EPSILON   2.2204460492503131e-16

Definition at line 64 of file numeric.c.

Referenced by Init_Numeric(), and ruby_float_step().

#define DBL_MANT_DIG   53

Definition at line 61 of file numeric.c.

Referenced by flo_to_s(), and Init_Numeric().

#define DBL_MAX   1.7976931348623157e+308

Definition at line 43 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MAX_10_EXP   308

Definition at line 55 of file numeric.c.

Referenced by BigDecimal_to_f(), Init_Numeric(), and ruby_strtod().

#define DBL_MAX_EXP   1024

Definition at line 49 of file numeric.c.

Referenced by big2dbl(), Init_Numeric(), ruby_hdtoa(), and ruby_strtod().

#define DBL_MIN   2.2250738585072014e-308

Definition at line 40 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MIN_10_EXP   (-307)

Definition at line 52 of file numeric.c.

Referenced by BigDecimal_to_f(), and Init_Numeric().

#define DBL_MIN_EXP   (-1021)

Definition at line 46 of file numeric.c.

Referenced by Init_Numeric().

#define DIGSPERLONG   (SIZEOF_LONG/SIZEOF_BDIGITS)
#define FIT_SQRT_LONG (   n)    (((n)<SQRT_LONG_MAX)&&((n)>=-SQRT_LONG_MAX))

Definition at line 2464 of file numeric.c.

Referenced by fix_mul(), and int_pow().

#define FLT_RADIX   2

Definition at line 34 of file numeric.c.

Referenced by float_rationalize(), float_to_r(), Init_Numeric(), and ruby_strtod().

#define FLT_ROUNDS   1

Definition at line 37 of file numeric.c.

Referenced by Init_Numeric().

#define LONG_MAX_PLUS_ONE   (2*(double)(LONG_MAX/2+1))

Definition at line 1809 of file numeric.c.

Referenced by rb_num2long().

#define LONG_MIN_MINUS_ONE   ((double)LONG_MIN-1)

Definition at line 1808 of file numeric.c.

Referenced by rb_num2long(), and rb_num2ulong().

#define NUMERR_NEGATIVE   2

Referenced by rb_num_to_uint().

#define NUMERR_TOOLARGE   3

Referenced by rb_num_to_uint().

#define NUMERR_TYPE   1

Referenced by rb_num_to_uint().

#define rb_intern (   str)    rb_intern_const(str)
#define SQRT_LONG_MAX   ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))

Definition at line 2462 of file numeric.c.

#define ULONG_MAX_PLUS_ONE   (2*(double)(ULONG_MAX/2+1))

Definition at line 1810 of file numeric.c.

Referenced by rb_num2ulong().


Function Documentation

static VALUE bit_coerce ( VALUE  x) [static]

Definition at line 2977 of file numeric.c.

References FIXNUM_P, rb_eTypeError, rb_raise(), rb_to_int(), T_BIGNUM, T_FLOAT, and TYPE.

Referenced by fix_and(), fix_or(), and fix_xor().

static VALUE coerce_body ( VALUE x) [static]

Definition at line 180 of file numeric.c.

References id_coerce, and rb_funcall().

Referenced by do_coerce().

static VALUE coerce_rescue ( VALUE x) [static]

Definition at line 186 of file numeric.c.

References Qnil, rb_eTypeError, rb_inspect(), rb_obj_classname(), rb_raise(), rb_special_const_p(), and RSTRING_PTR.

Referenced by do_coerce().

static VALUE dbl2ival ( double  d) [static]

Definition at line 886 of file numeric.c.

References FIXABLE, LONG2FIX, rb_dbl2big(), and round().

Referenced by fix_divmod(), flo_divmod(), and flo_round().

static int do_coerce ( VALUE x,
VALUE y,
int  err 
) [static]
static VALUE fix_abs ( VALUE  fix) [static]

Definition at line 3187 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

static VALUE fix_and ( VALUE  x,
VALUE  y 
) [static]

Definition at line 2996 of file numeric.c.

References bit_coerce(), FIX2LONG, FIXNUM_P, LONG2NUM, and rb_big_and().

Referenced by Init_Numeric().

static VALUE fix_aref ( VALUE  fix,
VALUE  idx 
) [static]

Definition at line 3130 of file numeric.c.

References CHAR_BIT, FIX2LONG, FIXNUM_P, INT2FIX, rb_big_norm(), rb_to_int(), and RBIGNUM_SIGN.

Referenced by Init_Numeric().

static VALUE fix_cmp ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_div ( VALUE  x,
VALUE  y 
) [static]

Definition at line 2622 of file numeric.c.

References fix_divide().

Referenced by Init_Numeric().

static VALUE fix_divide ( VALUE  x,
VALUE  y,
ID  op 
) [static]
static VALUE fix_divmod ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_equal ( VALUE  x,
VALUE  y 
) [static]

Definition at line 2821 of file numeric.c.

References FIX2LONG, FIXNUM_P, num_equal(), Qfalse, Qtrue, rb_big_eq(), RFLOAT_VALUE, T_BIGNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE fix_even_p ( VALUE  num) [static]

Definition at line 3415 of file numeric.c.

References Qfalse, and Qtrue.

Referenced by Init_Numeric().

static VALUE fix_fdiv ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_ge ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_gt ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_idiv ( VALUE  x,
VALUE  y 
) [static]

Definition at line 2635 of file numeric.c.

References fix_divide(), and rb_intern.

Referenced by Init_Numeric().

static VALUE fix_le ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_lshift ( long  val,
unsigned long  width 
) [static]

Definition at line 3070 of file numeric.c.

References CHAR_BIT, LONG2NUM, rb_big_lshift(), rb_int2big(), and ULONG2NUM().

Referenced by rb_fix_lshift(), and rb_fix_rshift().

static VALUE fix_lt ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_minus ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_mod ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_mul ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_odd_p ( VALUE  num) [static]

Definition at line 3399 of file numeric.c.

References Qfalse, and Qtrue.

Referenced by Init_Numeric().

static VALUE fix_or ( VALUE  x,
VALUE  y 
) [static]

Definition at line 3015 of file numeric.c.

References bit_coerce(), FIX2LONG, FIXNUM_P, LONG2NUM, and rb_big_or().

Referenced by Init_Numeric().

static VALUE fix_plus ( VALUE  x,
VALUE  y 
) [static]

Definition at line 2405 of file numeric.c.

References DBL2NUM, FIX2LONG, FIXNUM_P, LONG2NUM, rb_big_plus(), rb_num_coerce_bin(), RFLOAT_VALUE, T_BIGNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE fix_pow ( VALUE  x,
VALUE  y 
) [static]
static VALUE fix_rev ( VALUE  num) [static]

Definition at line 2971 of file numeric.c.

References FIXNUM_FLAG.

Referenced by Init_Numeric().

static VALUE fix_rshift ( long  val,
unsigned long  i 
) [static]

Definition at line 3103 of file numeric.c.

References CHAR_BIT, INT2FIX, and LONG2FIX.

Referenced by rb_fix_lshift(), and rb_fix_rshift().

static VALUE fix_size ( VALUE  fix) [static]

Definition at line 3211 of file numeric.c.

References INT2FIX.

Referenced by Init_Numeric().

static VALUE fix_succ ( VALUE  num) [static]

Definition at line 2159 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

static VALUE fix_to_f ( VALUE  num) [static]

Definition at line 3165 of file numeric.c.

References DBL2NUM, and FIX2LONG.

Referenced by Init_Numeric().

static VALUE fix_to_s ( int  argc,
VALUE argv,
VALUE  x 
) [static]

Definition at line 2380 of file numeric.c.

References NUM2INT, rb_fix2str(), and rb_scan_args().

Referenced by Init_Numeric().

static VALUE fix_uminus ( VALUE  num) [static]

Definition at line 2330 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

static VALUE fix_xor ( VALUE  x,
VALUE  y 
) [static]

Definition at line 3034 of file numeric.c.

References bit_coerce(), FIX2LONG, FIXNUM_P, LONG2NUM, and rb_big_xor().

Referenced by Init_Numeric().

static VALUE fix_zero_p ( VALUE  num) [static]

Definition at line 3383 of file numeric.c.

References FIX2LONG, Qfalse, and Qtrue.

Referenced by Init_Numeric().

static void fixdivmod ( long  x,
long  y,
long *  divp,
long *  modp 
) [static]

Definition at line 2522 of file numeric.c.

References div, mod, and rb_num_zerodiv().

Referenced by fix_divide(), fix_divmod(), and fix_mod().

static VALUE flo_abs ( VALUE  flt) [static]

Definition at line 1325 of file numeric.c.

References DBL2NUM, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_ceil ( VALUE  num) [static]

Definition at line 1458 of file numeric.c.

References FIXABLE, long, LONG2FIX, rb_dbl2big(), and RFLOAT_VALUE.

Referenced by Init_Numeric(), and num_ceil().

static VALUE flo_cmp ( VALUE  x,
VALUE  y 
) [static]
static VALUE flo_coerce ( VALUE  x,
VALUE  y 
) [static]

Definition at line 683 of file numeric.c.

References rb_assoc_new(), and rb_Float().

Referenced by Init_Numeric().

static VALUE flo_div ( VALUE  x,
VALUE  y 
) [static]

Definition at line 779 of file numeric.c.

References DBL2NUM, FIX2LONG, rb_big2dbl(), rb_num_coerce_bin(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_divmod ( VALUE  x,
VALUE  y 
) [static]
static VALUE flo_eq ( VALUE  x,
VALUE  y 
) [static]

Definition at line 1013 of file numeric.c.

References FIX2LONG, isnan, num_equal(), Qfalse, Qtrue, rb_big2dbl(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_eql ( VALUE  x,
VALUE  y 
) [static]

Definition at line 1285 of file numeric.c.

References isnan, Qfalse, Qtrue, RFLOAT_VALUE, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_floor ( VALUE  num) [static]

Definition at line 1432 of file numeric.c.

References FIXABLE, long, LONG2FIX, rb_dbl2big(), and RFLOAT_VALUE.

Referenced by Init_Numeric(), and num_floor().

static VALUE flo_ge ( VALUE  x,
VALUE  y 
) [static]
static VALUE flo_gt ( VALUE  x,
VALUE  y 
) [static]

Definition at line 1127 of file numeric.c.

References FIX2LONG, isnan, Qfalse, Qtrue, rb_big2dbl(), rb_num_coerce_relop(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_hash ( VALUE  num) [static]

Definition at line 1048 of file numeric.c.

References hash(), LONG2FIX, rb_memhash(), and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_is_finite_p ( VALUE  num) [static]

Definition at line 1404 of file numeric.c.

References finite(), isinf(), isnan, Qfalse, Qtrue, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_is_infinite_p ( VALUE  num) [static]

Definition at line 1382 of file numeric.c.

References INT2FIX, isinf(), Qnil, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_is_nan_p ( VALUE  num) [static]

Definition at line 1362 of file numeric.c.

References isnan, Qfalse, Qtrue, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_le ( VALUE  x,
VALUE  y 
) [static]
static VALUE flo_lt ( VALUE  x,
VALUE  y 
) [static]

Definition at line 1204 of file numeric.c.

References FIX2LONG, isnan, Qfalse, Qtrue, rb_big2dbl(), rb_num_coerce_relop(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_minus ( VALUE  x,
VALUE  y 
) [static]

Definition at line 733 of file numeric.c.

References DBL2NUM, FIX2LONG, rb_big2dbl(), rb_num_coerce_bin(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_mod ( VALUE  x,
VALUE  y 
) [static]
static VALUE flo_mul ( VALUE  x,
VALUE  y 
) [static]

Definition at line 756 of file numeric.c.

References DBL2NUM, FIX2LONG, rb_big2dbl(), rb_num_coerce_bin(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_plus ( VALUE  x,
VALUE  y 
) [static]

Definition at line 710 of file numeric.c.

References DBL2NUM, FIX2LONG, rb_big2dbl(), rb_num_coerce_bin(), RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, T_FLOAT, and TYPE.

Referenced by Init_Numeric().

static VALUE flo_pow ( VALUE  x,
VALUE  y 
) [static]
static VALUE flo_quo ( VALUE  x,
VALUE  y 
) [static]

Definition at line 806 of file numeric.c.

References rb_funcall().

Referenced by Init_Numeric().

static VALUE flo_round ( int  argc,
VALUE argv,
VALUE  num 
) [static]
static VALUE flo_to_f ( VALUE  num) [static]

Definition at line 1307 of file numeric.c.

Referenced by Init_Numeric().

static VALUE flo_to_s ( VALUE  flt) [static]
static VALUE flo_truncate ( VALUE  num) [static]

Definition at line 1601 of file numeric.c.

References FIXABLE, long, LONG2FIX, rb_dbl2big(), and RFLOAT_VALUE.

Referenced by flo_round(), Init_Numeric(), and num_truncate().

static VALUE flo_uminus ( VALUE  flt) [static]

Definition at line 696 of file numeric.c.

References DBL2NUM, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_zero_p ( VALUE  num) [static]

Definition at line 1340 of file numeric.c.

References Qfalse, Qtrue, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static void flodivmod ( double  x,
double  y,
double *  divp,
double *  modp 
) [static]

Definition at line 812 of file numeric.c.

References div, isinf(), isnan, mod, and rb_num_zerodiv().

Referenced by fix_divmod(), flo_divmod(), and ruby_float_mod().

void Init_Numeric ( void  )

Definition at line 3456 of file numeric.c.

References CLASS_OF, DBL2NUM, DBL_DIG, DBL_EPSILON, DBL_MANT_DIG, DBL_MAX, DBL_MAX_10_EXP, DBL_MAX_EXP, DBL_MIN, DBL_MIN_10_EXP, DBL_MIN_EXP, fix_abs(), fix_and(), fix_aref(), fix_cmp(), fix_div(), fix_divmod(), fix_equal(), fix_even_p(), fix_fdiv(), fix_ge(), fix_gt(), fix_idiv(), fix_le(), fix_lt(), fix_minus(), fix_mod(), fix_mul(), fix_odd_p(), fix_or(), fix_plus(), fix_pow(), fix_rev(), fix_size(), fix_succ(), fix_to_f(), fix_to_s(), fix_uminus(), fix_xor(), fix_zero_p(), flo_abs(), flo_ceil(), flo_cmp(), flo_coerce(), flo_div(), flo_divmod(), flo_eq(), flo_eql(), flo_floor(), flo_ge(), flo_gt(), flo_hash(), flo_is_finite_p(), flo_is_infinite_p(), flo_is_nan_p(), flo_le(), flo_lt(), flo_minus(), flo_mod(), flo_mul(), flo_plus(), flo_pow(), flo_quo(), flo_round(), flo_to_f(), flo_to_s(), flo_truncate(), flo_uminus(), flo_zero_p(), FLT_RADIX, FLT_ROUNDS, id_coerce, id_eq, id_to_i, INFINITY, INT2FIX, int_chr(), int_dotimes(), int_downto(), int_even_p(), int_int_p(), int_odd_p(), int_ord(), int_pred(), int_round(), int_succ(), int_to_i(), int_upto(), NAN, num_abs(), num_ceil(), num_cmp(), num_coerce(), num_div(), num_divmod(), num_eql(), num_fdiv(), num_floor(), num_imaginary(), num_init_copy(), num_int_p(), num_modulo(), num_nonzero_p(), num_quo(), num_real_p(), num_remainder(), num_round(), num_sadded(), num_step(), num_to_int(), num_truncate(), num_uminus(), num_uplus(), num_zero_p(), rb_cFixnum, rb_cFloat, rb_cInteger, rb_cNumeric, rb_cObject, rb_define_class(), rb_define_const(), rb_define_method(), rb_eFloatDomainError, rb_eRangeError, rb_eStandardError, rb_eZeroDivError, rb_fix_lshift(), rb_fix_rshift(), rb_include_module(), rb_intern, rb_mComparable, rb_undef_alloc_func(), and rb_undef_method().

static VALUE int_chr ( int  argc,
VALUE argv,
VALUE  num 
) [static]
static VALUE int_dotimes ( VALUE  num) [static]

Definition at line 3319 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, LONG2FIX, rb_funcall(), rb_yield(), RETURN_ENUMERATOR, and RTEST.

Referenced by Init_Numeric().

static VALUE int_downto ( VALUE  from,
VALUE  to 
) [static]

Definition at line 3276 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, LONG2FIX, NIL_P, rb_cmperr(), rb_funcall(), rb_yield(), and RETURN_ENUMERATOR.

Referenced by Init_Numeric().

static VALUE int_even_p ( VALUE  num) [static]

Definition at line 2139 of file numeric.c.

References INT2FIX, Qfalse, Qtrue, and rb_funcall().

Referenced by fix_pow(), and Init_Numeric().

static VALUE int_int_p ( VALUE  num) [static]

Definition at line 2110 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

static VALUE int_odd_p ( VALUE  num) [static]

Definition at line 2123 of file numeric.c.

References INT2FIX, Qfalse, Qtrue, and rb_funcall().

Referenced by Init_Numeric().

static VALUE int_ord ( VALUE  num) [static]

Definition at line 2298 of file numeric.c.

Referenced by Init_Numeric().

static VALUE int_pow ( long  x,
unsigned long  y 
) [static]

Definition at line 2705 of file numeric.c.

References FIT_SQRT_LONG, LONG2NUM, neg, POSFIXABLE, rb_big_mul(), rb_big_pow(), and rb_int2big().

Referenced by fix_pow(), and int_round_0().

static VALUE int_pred ( VALUE  num) [static]

Definition at line 2197 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, LONG2NUM, and rb_funcall().

Referenced by Init_Numeric().

static VALUE int_round ( int  argc,
VALUE argv,
VALUE  num 
) [static]

Definition at line 3357 of file numeric.c.

References int_round_0(), NUM2INT, rb_Float(), and rb_scan_args().

Referenced by Init_Numeric().

static VALUE int_round_0 ( VALUE  num,
int  ndigits 
) [static]

Definition at line 1474 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, int_pow(), long, LONG2NUM, neg, rb_funcall(), rb_intern, RTEST, SIGNED_VALUE, T_FLOAT, and TYPE.

Referenced by flo_round(), and int_round().

static VALUE int_succ ( VALUE  num) [static]

Definition at line 2177 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, LONG2NUM, and rb_funcall().

Referenced by Init_Numeric().

static VALUE int_to_i ( VALUE  num) [static]

Definition at line 2097 of file numeric.c.

Referenced by Init_Numeric().

static VALUE int_upto ( VALUE  from,
VALUE  to 
) [static]

Definition at line 3234 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, LONG2FIX, NIL_P, rb_cmperr(), rb_funcall(), rb_yield(), and RETURN_ENUMERATOR.

Referenced by Init_Numeric().

static VALUE num_abs ( VALUE  num) [static]

Definition at line 503 of file numeric.c.

References INT2FIX, rb_funcall(), rb_intern, and RTEST.

Referenced by Init_Numeric().

static VALUE num_ceil ( VALUE  num) [static]

Definition at line 1651 of file numeric.c.

References flo_ceil(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_cmp ( VALUE  x,
VALUE  y 
) [static]

Definition at line 987 of file numeric.c.

References INT2FIX, and Qnil.

Referenced by Init_Numeric().

static VALUE num_coerce ( VALUE  x,
VALUE  y 
) [static]

Definition at line 170 of file numeric.c.

References CLASS_OF, rb_assoc_new(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_div ( VALUE  x,
VALUE  y 
) [static]

Definition at line 364 of file numeric.c.

References INT2FIX, rb_equal(), rb_funcall(), rb_intern, and rb_num_zerodiv().

Referenced by Init_Numeric(), and num_divmod().

static VALUE num_divmod ( VALUE  x,
VALUE  y 
) [static]

Definition at line 457 of file numeric.c.

References num_div(), num_modulo(), and rb_assoc_new().

Referenced by Init_Numeric().

static VALUE num_eql ( VALUE  x,
VALUE  y 
) [static]

Definition at line 971 of file numeric.c.

References Qfalse, rb_equal(), and TYPE.

Referenced by Init_Numeric().

static VALUE num_equal ( VALUE  x,
VALUE  y 
) [static]

Definition at line 994 of file numeric.c.

References id_eq, Qtrue, and rb_funcall().

Referenced by fix_equal(), and flo_eq().

static VALUE num_fdiv ( VALUE  x,
VALUE  y 
) [static]

Definition at line 343 of file numeric.c.

References rb_Float(), and rb_funcall().

Referenced by Init_Numeric().

static VALUE num_floor ( VALUE  num) [static]

Definition at line 1629 of file numeric.c.

References flo_floor(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_imaginary ( VALUE  num) [static]

Definition at line 297 of file numeric.c.

References INT2FIX, and rb_complex_new().

Referenced by Init_Numeric().

static VALUE num_init_copy ( VALUE  x,
VALUE  y 
) [static]

Definition at line 268 of file numeric.c.

References Qnil, rb_eTypeError, rb_obj_classname(), and rb_raise().

Referenced by Init_Numeric().

static VALUE num_int_p ( VALUE  num) [static]

Definition at line 485 of file numeric.c.

References Qfalse.

Referenced by Init_Numeric().

static VALUE num_modulo ( VALUE  x,
VALUE  y 
) [static]

Definition at line 384 of file numeric.c.

References rb_funcall(), and rb_intern.

Referenced by Init_Numeric(), and num_divmod().

static VALUE num_nonzero_p ( VALUE  num) [static]

Definition at line 542 of file numeric.c.

References Qnil, rb_funcall(), rb_intern, and RTEST.

Referenced by Init_Numeric().

static VALUE num_quo ( VALUE  x,
VALUE  y 
) [static]

Definition at line 329 of file numeric.c.

References rb_funcall(), and rb_rational_raw1.

Referenced by Init_Numeric().

static VALUE num_real_p ( VALUE  num) [static]

Definition at line 471 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

static VALUE num_remainder ( VALUE  x,
VALUE  y 
) [static]

Definition at line 401 of file numeric.c.

References INT2FIX, rb_equal(), rb_funcall(), and RTEST.

Referenced by Init_Numeric().

static VALUE num_round ( int  argc,
VALUE argv,
VALUE  num 
) [static]

Definition at line 1667 of file numeric.c.

References flo_round(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_sadded ( VALUE  x,
VALUE  name 
) [static]
static VALUE num_step ( int  argc,
VALUE argv,
VALUE  from 
) [static]
static VALUE num_to_int ( VALUE  num) [static]

Definition at line 559 of file numeric.c.

References id_to_i, and rb_funcall().

Referenced by Init_Numeric().

static VALUE num_truncate ( VALUE  num) [static]

Definition at line 1682 of file numeric.c.

References flo_truncate(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_uminus ( VALUE  num) [static]

Definition at line 311 of file numeric.c.

References do_coerce(), INT2FIX, rb_funcall(), TRUE, and zero().

Referenced by Init_Numeric().

static VALUE num_uplus ( VALUE  num) [static]

Definition at line 283 of file numeric.c.

Referenced by Init_Numeric().

static VALUE num_zero_p ( VALUE  num) [static]

Definition at line 520 of file numeric.c.

References INT2FIX, Qfalse, Qtrue, and rb_equal().

Referenced by Init_Numeric().

VALUE rb_dbl_cmp ( double  a,
double  b 
)

Definition at line 1061 of file numeric.c.

References INT2FIX, isnan, and Qnil.

Referenced by big_op(), fix_cmp(), flo_cmp(), and rb_big_cmp().

VALUE rb_enc_uint_chr ( unsigned int  code,
rb_encoding enc 
)
long rb_fix2int ( VALUE  val)

Definition at line 1962 of file numeric.c.

References FIX2INT.

VALUE rb_fix2str ( VALUE  x,
int  base 
)
static VALUE rb_fix_lshift ( VALUE  x,
VALUE  y 
) [static]

Definition at line 3056 of file numeric.c.

References FIX2LONG, fix_lshift(), fix_rshift(), FIXNUM_P, NUM2LONG(), rb_big_lshift(), and rb_int2big().

Referenced by Init_Numeric().

static VALUE rb_fix_rshift ( VALUE  x,
VALUE  y 
) [static]

Definition at line 3088 of file numeric.c.

References FIX2LONG, fix_lshift(), fix_rshift(), FIXNUM_P, rb_big_rshift(), and rb_int2big().

Referenced by Init_Numeric().

VALUE rb_float_new ( double  d)
VALUE rb_num2fix ( VALUE  val)
long rb_num2int ( VALUE  val)

Definition at line 1956 of file numeric.c.

References rb_num2long().

SIGNED_VALUE rb_num2long ( VALUE  val)
VALUE rb_num2ulong ( VALUE  val)
VALUE rb_num_coerce_bin ( VALUE  x,
VALUE  y,
ID  func 
)
VALUE rb_num_coerce_cmp ( VALUE  x,
VALUE  y,
ID  func 
)

Definition at line 227 of file numeric.c.

References do_coerce(), FALSE, Qnil, and rb_funcall().

Referenced by BigDecimalCmp(), cmp_gen(), equal_gen(), fix_cmp(), flo_cmp(), nurat_cmp(), and rb_big_cmp().

VALUE rb_num_coerce_relop ( VALUE  x,
VALUE  y,
ID  func 
)
int rb_num_to_uint ( VALUE  val,
unsigned int *  ret 
)
void rb_num_zerodiv ( void  )

Definition at line 114 of file numeric.c.

References rb_eZeroDivError, and rb_raise().

Referenced by bigdivrem(), fix_divide(), fixdivmod(), flodivmod(), num_div(), quo(), wdivmod(), and wquo().

double round ( double  x)
double ruby_float_mod ( double  x,
double  y 
)

Definition at line 846 of file numeric.c.

References flodivmod(), and mod.

Referenced by fix_mod(), and flo_mod().

int ruby_float_step ( VALUE  from,
VALUE  to,
VALUE  step,
int  excl 
)

Definition at line 1689 of file numeric.c.

References DBL2NUM, DBL_EPSILON, err, FALSE, isinf(), NUM2DBL, rb_yield(), T_FLOAT, TRUE, and TYPE.

Referenced by num_step(), and range_step().


Variable Documentation

ID id_coerce [static]

Definition at line 103 of file numeric.c.

Referenced by coerce_body(), and Init_Numeric().

Definition at line 103 of file numeric.c.

Referenced by Init_Numeric(), and num_equal().

Definition at line 103 of file numeric.c.

Definition at line 108 of file numeric.c.

Definition at line 106 of file numeric.c.

Definition at line 107 of file numeric.c.

Definition at line 105 of file numeric.c.

Definition at line 111 of file numeric.c.

Definition at line 110 of file numeric.c.

const unsigned char rb_infinity[] = "\x00\x00\x80\x7f"

Definition at line 69 of file numeric.c.

const unsigned char rb_nan[] = "\x00\x00\xc0\x7f"

Definition at line 76 of file numeric.c.