Ruby  2.0.0p481(2014-05-08revision45883)
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>
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 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 int_succ   rb_int_succ
#define int_pred   rb_int_pred
#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)
 NORETURN (static void coerce_failed(VALUE x, VALUE y))
static void coerce_failed (VALUE x, VALUE y)
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)
VALUE rb_int_succ (VALUE num)
VALUE rb_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 2688 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 int_pred   rb_int_pred

Definition at line 2428 of file numeric.c.

Referenced by Init_Numeric().

#define int_succ   rb_int_succ

Definition at line 2406 of file numeric.c.

Referenced by Init_Numeric().

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

Definition at line 1951 of file numeric.c.

Referenced by rb_num2long().

#define LONG_MIN_MINUS_ONE   ((double)LONG_MIN-1)

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

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

Definition at line 1952 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]

Definition at line 3202 of file numeric.c.

References coerce_failed(), do_coerce(), FALSE, FIXNUM_P, RB_TYPE_P, T_BIGNUM, and TRUE.

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

static void check_short ( SIGNED_VALUE  num) [static]

Definition at line 2118 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 2126 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 void coerce_failed ( VALUE  x,
VALUE  y 
) [static]

Definition at line 228 of file numeric.c.

References PRIsVALUE, rb_eTypeError, rb_inspect(), rb_obj_class(), rb_raise(), and rb_special_const_p().

Referenced by bit_coerce(), and coerce_rescue().

static VALUE coerce_rescue ( VALUE x) [static]

Definition at line 236 of file numeric.c.

References coerce_failed(), and Qnil.

Referenced by do_coerce().

static VALUE dbl2ival ( double  d) [static]

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

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

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

Definition at line 3230 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 3376 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 2843 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 3039 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 3685 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 2856 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 3316 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 3669 of file numeric.c.

References Qfalse, and Qtrue.

Referenced by Init_Numeric().

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

Definition at line 3253 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 2629 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 3196 of file numeric.c.

References FIXNUM_FLAG.

Referenced by Init_Numeric().

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

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

References INT2FIX.

Referenced by Init_Numeric().

static VALUE fix_succ ( VALUE  num) [static]

Definition at line 2379 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

static VALUE fix_to_f ( VALUE  num) [static]

Definition at line 3411 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 2604 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 2554 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

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

Definition at line 3276 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 3653 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 2743 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 1402 of file numeric.c.

References DBL2NUM, RFLOAT_VALUE, and val.

Referenced by Init_Numeric().

static VALUE flo_ceil ( VALUE  num) [static]

Definition at line 1535 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 741 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 837 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 1078 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 1362 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 1509 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 1110 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 1481 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 1459 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 1439 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 791 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 814 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 768 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 864 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 1384 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 1678 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 754 of file numeric.c.

References DBL2NUM, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_zero_p ( VALUE  num) [static]

Definition at line 1417 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 870 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 3726 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, 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(), 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 3558 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 3510 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 2359 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 2330 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

static VALUE int_odd_p ( VALUE  num) [static]

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

Referenced by Init_Numeric().

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

Definition at line 2926 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_round ( int  argc,
VALUE argv,
VALUE  num 
) [static]

Definition at line 3627 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_to_i ( VALUE  num) [static]

Definition at line 2317 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 3463 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]
NORETURN ( static void   coerce_failedVALUE x, VALUE y)
static VALUE num_abs ( VALUE  num) [static]

Definition at line 558 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 1728 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 1050 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 417 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 510 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 1034 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 1057 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 396 of file numeric.c.

References rb_Float(), and rb_funcall().

Referenced by Init_Numeric().

static VALUE num_floor ( VALUE  num) [static]

Definition at line 1706 of file numeric.c.

References flo_floor(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_imaginary ( VALUE  num) [static]

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

References PRIsVALUE, rb_eTypeError, rb_obj_class(), and rb_raise().

Referenced by Init_Numeric().

static VALUE num_int_p ( VALUE  num) [static]

Definition at line 540 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 437 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 597 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 382 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 524 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

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

Definition at line 454 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 1744 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 1856 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 617 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 1759 of file numeric.c.

References flo_truncate(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_uminus ( VALUE  num) [static]

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

Referenced by Init_Numeric().

static VALUE num_zero_p ( VALUE  num) [static]

Definition at line 575 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 1123 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 2104 of file numeric.c.

References FIX2INT.

short rb_fix2short ( VALUE  val)

Definition at line 2153 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 2171 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 3302 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 3334 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 640 of file numeric.c.

References NEWOBJ_OF, OBJ_FREEZE, rb_cFloat, and T_FLOAT.

Referenced by rb_float_new().

Definition at line 2419 of file numeric.c.

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

Definition at line 2397 of file numeric.c.

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

Referenced by enumerator_with_index_i().

long rb_num2int ( VALUE  val)

Definition at line 2098 of file numeric.c.

References rb_num2long().

short rb_num2short ( VALUE  val)

Definition at line 2144 of file numeric.c.

References check_short(), and rb_num2long().

Referenced by rb_num2short_inline().

unsigned short rb_num2ushort ( VALUE  val)

Definition at line 2162 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 3216 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 278 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 2111 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 905 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 1790 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 1765 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.