Ruby  2.0.0p247(2013-06-27revision41674)
Defines | Functions | Variables
numeric.c File Reference
#include "ruby/ruby.h"
#include "ruby/encoding.h"
#include "ruby/util.h"
#include "internal.h"
#include "id.h"
#include <ctype.h>
#include <math.h>
#include <stdio.h>

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 method_basic_p(klass)   rb_method_basic_definition_p(klass, mid)
#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 VALUE_MSBMASK   ((VALUE)1 << ((sizeof(VALUE) * CHAR_BIT) - 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 int positive_int_p (VALUE num)
static int negative_int_p (VALUE num)
int rb_num_negative_p (VALUE num)
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_in_heap (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)
static double ruby_float_step_size (double beg, double end, double unit, int excl)
int ruby_float_step (VALUE from, VALUE to, VALUE step, int excl)
VALUE num_interval_step_size (VALUE from, VALUE to, VALUE step, int excl)
static VALUE num_step_size (VALUE from, VALUE args)
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)
void rb_out_of_short (SIGNED_VALUE num)
static void check_short (SIGNED_VALUE num)
static void check_ushort (VALUE num, int sign)
short rb_num2short (VALUE val)
short rb_fix2short (VALUE val)
unsigned short rb_num2ushort (VALUE val)
unsigned short rb_fix2ushort (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 int bit_coerce (VALUE *x, VALUE *y, int err)
VALUE rb_num_coerce_bit (VALUE x, VALUE y, ID func)
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_size (VALUE from, VALUE args)
static VALUE int_upto (VALUE from, VALUE to)
static VALUE int_downto_size (VALUE from, VALUE args)
static VALUE int_downto (VALUE from, VALUE to)
static VALUE int_dotimes_size (VALUE num)
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

static ID id_coerce
static ID id_to_i
static ID id_eq
static ID id_div
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 65 of file numeric.c.

Referenced by Init_Numeric(), and ruby_float_step_size().

#define DBL_MANT_DIG   53

Definition at line 62 of file numeric.c.

Referenced by flo_to_s(), and Init_Numeric().

#define DBL_MAX   1.7976931348623157e+308

Definition at line 44 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MAX_10_EXP   308

Definition at line 56 of file numeric.c.

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

#define DBL_MAX_EXP   1024

Definition at line 50 of file numeric.c.

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

#define DBL_MIN   2.2250738585072014e-308

Definition at line 41 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MIN_10_EXP   (-307)

Definition at line 53 of file numeric.c.

Referenced by BigDecimal_to_f(), and Init_Numeric().

#define DBL_MIN_EXP   (-1021)

Definition at line 47 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 2674 of file numeric.c.

Referenced by fix_mul(), and int_pow().

#define FLT_RADIX   2

Definition at line 35 of file numeric.c.

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

#define FLT_ROUNDS   1

Definition at line 38 of file numeric.c.

Referenced by Init_Numeric().

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

Definition at line 1941 of file numeric.c.

Referenced by rb_num2long().

#define LONG_MIN_MINUS_ONE   ((double)LONG_MIN-1)

Definition at line 1940 of file numeric.c.

Referenced by rb_num2long(), and rb_num2ulong().

#define method_basic_p (   klass)    rb_method_basic_definition_p(klass, mid)

Definition at line 154 of file numeric.c.

Referenced by negative_int_p(), and positive_int_p().

#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 2672 of file numeric.c.

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

Definition at line 1942 of file numeric.c.

Referenced by rb_num2ulong().

#define VALUE_MSBMASK   ((VALUE)1 << ((sizeof(VALUE) * CHAR_BIT) - 1))

Referenced by check_ushort().


Function Documentation

static int bit_coerce ( VALUE x,
VALUE y,
int  err 
) [static]
static void check_short ( SIGNED_VALUE  num) [static]

Definition at line 2108 of file numeric.c.

References rb_out_of_short(), and SIGNED_VALUE.

Referenced by rb_fix2short(), and rb_num2short().

static void check_ushort ( VALUE  num,
int  sign 
) [static]

Definition at line 2116 of file numeric.c.

References PRIdVALUE, PRIuVALUE, rb_eRangeError, rb_raise(), and VALUE_MSBMASK.

Referenced by rb_fix2ushort(), and rb_num2ushort().

static VALUE coerce_body ( VALUE x) [static]

Definition at line 221 of file numeric.c.

References id_coerce, and rb_funcall().

Referenced by do_coerce().

static VALUE coerce_rescue ( VALUE x) [static]

Definition at line 227 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 944 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 3423 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

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

Definition at line 3220 of file numeric.c.

References bit_coerce(), FIX2LONG, FIXNUM_P, LONG2NUM, rb_big_and(), rb_funcall(), rb_intern, RB_TYPE_P, T_BIGNUM, and TRUE.

Referenced by Init_Numeric().

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

Definition at line 3366 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 2829 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 3025 of file numeric.c.

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

Referenced by Init_Numeric().

static VALUE fix_even_p ( VALUE  num) [static]

Definition at line 3675 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 2842 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 3306 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 3659 of file numeric.c.

References Qfalse, and Qtrue.

Referenced by Init_Numeric().

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

Definition at line 3243 of file numeric.c.

References bit_coerce(), FIX2LONG, FIXNUM_P, LONG2NUM, rb_big_or(), rb_funcall(), rb_intern, RB_TYPE_P, T_BIGNUM, and TRUE.

Referenced by Init_Numeric().

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

Definition at line 2615 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 3182 of file numeric.c.

References FIXNUM_FLAG.

Referenced by Init_Numeric().

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

Definition at line 3339 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 3447 of file numeric.c.

References INT2FIX.

Referenced by Init_Numeric().

static VALUE fix_succ ( VALUE  num) [static]

Definition at line 2369 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

static VALUE fix_to_f ( VALUE  num) [static]

Definition at line 3401 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 2590 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 2540 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

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

Definition at line 3266 of file numeric.c.

References bit_coerce(), FIX2LONG, FIXNUM_P, LONG2NUM, rb_big_xor(), rb_funcall(), rb_intern, RB_TYPE_P, T_BIGNUM, and TRUE.

Referenced by Init_Numeric().

static VALUE fix_zero_p ( VALUE  num) [static]

Definition at line 3643 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 2729 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 1400 of file numeric.c.

References DBL2NUM, RFLOAT_VALUE, and val.

Referenced by Init_Numeric().

static VALUE flo_ceil ( VALUE  num) [static]

Definition at line 1533 of file numeric.c.

References f, FIXABLE, LONG2FIX, rb_dbl2big(), RFLOAT_VALUE, and val.

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 739 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 835 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 1076 of file numeric.c.

References isnan, num_equal(), Qfalse, Qtrue, rb_integer_float_eq(), 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 1360 of file numeric.c.

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

Referenced by Init_Numeric().

static VALUE flo_floor ( VALUE  num) [static]

Definition at line 1507 of file numeric.c.

References f, FIXABLE, LONG2FIX, rb_dbl2big(), RFLOAT_VALUE, and val.

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]
static VALUE flo_hash ( VALUE  num) [static]

Definition at line 1108 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 1479 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 1457 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 1437 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]
static VALUE flo_minus ( VALUE  x,
VALUE  y 
) [static]

Definition at line 789 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 812 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 766 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 862 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 1382 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 1676 of file numeric.c.

References f, FIXABLE, LONG2FIX, rb_dbl2big(), RFLOAT_VALUE, and val.

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

static VALUE flo_uminus ( VALUE  flt) [static]

Definition at line 752 of file numeric.c.

References DBL2NUM, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_zero_p ( VALUE  num) [static]

Definition at line 1415 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 868 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 3716 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_div, 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_alias(), 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]
static VALUE int_dotimes_size ( VALUE  num) [static]

Definition at line 3548 of file numeric.c.

References FIXNUM_P, INT2FIX, NUM2LONG, rb_funcall(), and RTEST.

Referenced by int_dotimes().

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

Definition at line 3500 of file numeric.c.

References FALSE, INT2FIX, num_interval_step_size(), and RARRAY_PTR.

Referenced by int_downto().

static VALUE int_even_p ( VALUE  num) [static]

Definition at line 2349 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 2320 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

static VALUE int_odd_p ( VALUE  num) [static]

Definition at line 2333 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 2508 of file numeric.c.

Referenced by Init_Numeric().

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

Definition at line 2912 of file numeric.c.

References FIT_SQRT_LONG, LONG2NUM, MUL_OVERFLOW_FIXNUM_P, neg, 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 2407 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 3617 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]
static VALUE int_succ ( VALUE  num) [static]

Definition at line 2387 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 2307 of file numeric.c.

Referenced by Init_Numeric().

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

Definition at line 3453 of file numeric.c.

References FALSE, INT2FIX, num_interval_step_size(), and RARRAY_PTR.

Referenced by int_upto().

static int negative_int_p ( VALUE  num) [inline, static]
static VALUE num_abs ( VALUE  num) [static]

Definition at line 556 of file numeric.c.

References negative_int_p(), rb_funcall(), and rb_intern.

Referenced by Init_Numeric().

static VALUE num_ceil ( VALUE  num) [static]

Definition at line 1726 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 1048 of file numeric.c.

References INT2FIX, and Qnil.

Referenced by Init_Numeric().

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

Definition at line 211 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 415 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 508 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 1032 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 1055 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 394 of file numeric.c.

References rb_Float(), and rb_funcall().

Referenced by Init_Numeric().

static VALUE num_floor ( VALUE  num) [static]

Definition at line 1704 of file numeric.c.

References flo_floor(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_imaginary ( VALUE  num) [static]

Definition at line 348 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 318 of file numeric.c.

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

Referenced by Init_Numeric().

static VALUE num_int_p ( VALUE  num) [static]

Definition at line 538 of file numeric.c.

References Qfalse.

Referenced by Init_Numeric().

VALUE num_interval_step_size ( VALUE  from,
VALUE  to,
VALUE  step,
int  excl 
)
static VALUE num_modulo ( VALUE  x,
VALUE  y 
) [static]

Definition at line 435 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 595 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 380 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 522 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

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

Definition at line 452 of file numeric.c.

References INT2FIX, negative_int_p(), positive_int_p(), rb_equal(), and rb_funcall().

Referenced by Init_Numeric().

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

Definition at line 1742 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_step_size ( VALUE  from,
VALUE  args 
) [static]

Definition at line 1846 of file numeric.c.

References FALSE, INT2FIX, num_interval_step_size(), RARRAY_LEN, and RARRAY_PTR.

Referenced by num_step().

static VALUE num_to_int ( VALUE  num) [static]

Definition at line 615 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 1757 of file numeric.c.

References flo_truncate(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_uminus ( VALUE  num) [static]

Definition at line 362 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 334 of file numeric.c.

Referenced by Init_Numeric().

static VALUE num_zero_p ( VALUE  num) [static]

Definition at line 573 of file numeric.c.

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

Referenced by Init_Numeric().

static int positive_int_p ( VALUE  num) [inline, static]
VALUE rb_dbl_cmp ( double  a,
double  b 
)

Definition at line 1121 of file numeric.c.

References INT2FIX, isnan, and Qnil.

Referenced by flo_cmp().

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

Definition at line 2094 of file numeric.c.

References FIX2INT.

short rb_fix2short ( VALUE  val)

Definition at line 2143 of file numeric.c.

References check_short(), FIX2LONG, FIXNUM_P, and rb_num2long().

VALUE rb_fix2str ( VALUE  x,
int  base 
)
unsigned short rb_fix2ushort ( VALUE  val)

Definition at line 2161 of file numeric.c.

References check_ushort(), FIX2ULONG, FIXNUM_P, negative_int_p(), and rb_num2ushort().

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

Definition at line 3292 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 3324 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_in_heap ( double  d)

Definition at line 638 of file numeric.c.

References NEWOBJ_OF, OBJ_FREEZE, rb_cFloat, and T_FLOAT.

Referenced by rb_float_new().

long rb_num2int ( VALUE  val)

Definition at line 2088 of file numeric.c.

References rb_num2long().

short rb_num2short ( VALUE  val)

Definition at line 2134 of file numeric.c.

References check_short(), and rb_num2long().

Referenced by rb_num2short_inline().

unsigned short rb_num2ushort ( VALUE  val)

Definition at line 2152 of file numeric.c.

References check_ushort(), negative_int_p(), and rb_num2ulong().

Referenced by rb_fix2ushort().

VALUE rb_num_coerce_bin ( VALUE  x,
VALUE  y,
ID  func 
)
VALUE rb_num_coerce_bit ( VALUE  x,
VALUE  y,
ID  func 
)

Definition at line 3206 of file numeric.c.

References bit_coerce(), rb_funcall(), and TRUE.

Referenced by rb_big_and(), rb_big_or(), and rb_big_xor().

VALUE rb_num_coerce_cmp ( VALUE  x,
VALUE  y,
ID  func 
)

Definition at line 276 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_negative_p ( VALUE  num)

Definition at line 189 of file numeric.c.

References negative_int_p().

Referenced by rb_random_ulong_limited().

int rb_num_to_uint ( VALUE  val,
unsigned int *  ret 
)
void rb_num_zerodiv ( void  )

Definition at line 115 of file numeric.c.

References rb_eZeroDivError, and rb_raise().

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

Definition at line 2101 of file numeric.c.

References PRIdVALUE, rb_eRangeError, and rb_raise().

Referenced by check_short().

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

Definition at line 903 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 1788 of file numeric.c.

References DBL2NUM, FALSE, isinf(), NUM2DBL, RB_TYPE_P, rb_yield(), ruby_float_step_size(), T_FLOAT, and TRUE.

Referenced by num_step(), and range_step().

static double ruby_float_step_size ( double  beg,
double  end,
double  unit,
int  excl 
) [static]

Definition at line 1763 of file numeric.c.

References DBL_EPSILON, err, and isinf().

Referenced by num_interval_step_size(), and ruby_float_step().


Variable Documentation

ID id_coerce [static]

Definition at line 104 of file numeric.c.

Referenced by coerce_body(), do_coerce(), and Init_Numeric().

ID id_div [static]

Definition at line 104 of file numeric.c.

Referenced by Init_Numeric(), and num_interval_step_size().

ID id_eq [static]

Definition at line 104 of file numeric.c.

Referenced by Init_Numeric(), and num_equal().

ID id_to_i [static]

Definition at line 104 of file numeric.c.

Referenced by Init_Numeric(), and num_to_int().

Definition at line 109 of file numeric.c.

Definition at line 107 of file numeric.c.

Definition at line 108 of file numeric.c.

Definition at line 106 of file numeric.c.

Definition at line 112 of file numeric.c.

Definition at line 111 of file numeric.c.