Ruby  2.0.0p594(2014-10-27revision48167)
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 73 of file numeric.c.

Referenced by Init_Numeric(), and ruby_float_step_size().

#define DBL_MANT_DIG   53

Definition at line 70 of file numeric.c.

Referenced by flo_to_s(), and Init_Numeric().

#define DBL_MAX   1.7976931348623157e+308

Definition at line 52 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MAX_10_EXP   308

Definition at line 64 of file numeric.c.

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

#define DBL_MAX_EXP   1024

Definition at line 58 of file numeric.c.

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

#define DBL_MIN   2.2250738585072014e-308

Definition at line 49 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MIN_10_EXP   (-307)

Definition at line 61 of file numeric.c.

Referenced by BigDecimal_to_f(), and Init_Numeric().

#define DBL_MIN_EXP   (-1021)

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

Referenced by fix_mul(), and int_pow().

#define FLT_RADIX   2

Definition at line 43 of file numeric.c.

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

#define FLT_ROUNDS   1

Definition at line 46 of file numeric.c.

Referenced by Init_Numeric().

#define int_pred   rb_int_pred

Definition at line 2436 of file numeric.c.

Referenced by Init_Numeric().

#define int_succ   rb_int_succ

Definition at line 2414 of file numeric.c.

Referenced by Init_Numeric().

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

Definition at line 1959 of file numeric.c.

Referenced by rb_num2long().

#define LONG_MIN_MINUS_ONE   ((double)LONG_MIN-1)

Definition at line 1958 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 162 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 2694 of file numeric.c.

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

Definition at line 1960 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 3210 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 2126 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 2134 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 229 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 236 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 244 of file numeric.c.

References coerce_failed(), and Qnil.

Referenced by do_coerce().

static VALUE dbl2ival ( double  d) [static]

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

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

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

Definition at line 3238 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 3384 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 2851 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 3047 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 3693 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 2864 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 3324 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 3677 of file numeric.c.

References Qfalse, and Qtrue.

Referenced by Init_Numeric().

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

Definition at line 3261 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 2637 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 3204 of file numeric.c.

References FIXNUM_FLAG.

Referenced by Init_Numeric().

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

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

References INT2FIX.

Referenced by Init_Numeric().

static VALUE fix_succ ( VALUE  num) [static]

Definition at line 2387 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

static VALUE fix_to_f ( VALUE  num) [static]

Definition at line 3419 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 2612 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 2562 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by Init_Numeric().

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

Definition at line 3284 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 3661 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 2751 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 1410 of file numeric.c.

References DBL2NUM, RFLOAT_VALUE, and val.

Referenced by Init_Numeric().

static VALUE flo_ceil ( VALUE  num) [static]

Definition at line 1543 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 749 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 845 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 1086 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 1370 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 1517 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 1118 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 1489 of file numeric.c.

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

Referenced by Init_Numeric().

static VALUE flo_is_infinite_p ( VALUE  num) [static]

Definition at line 1467 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 1447 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 799 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 822 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 776 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 872 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 1392 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 1686 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 762 of file numeric.c.

References DBL2NUM, and RFLOAT_VALUE.

Referenced by Init_Numeric().

static VALUE flo_zero_p ( VALUE  num) [static]

Definition at line 1425 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 878 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 3734 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 3566 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 3518 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 2367 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 2338 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

static VALUE int_odd_p ( VALUE  num) [static]

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

Referenced by Init_Numeric().

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

Definition at line 2934 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 3635 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 2325 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 3471 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 566 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 1736 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 1058 of file numeric.c.

References INT2FIX, and Qnil.

Referenced by Init_Numeric().

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

Definition at line 219 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 425 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 518 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 1042 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 1065 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 404 of file numeric.c.

References rb_Float(), and rb_funcall().

Referenced by Init_Numeric().

static VALUE num_floor ( VALUE  num) [static]

Definition at line 1714 of file numeric.c.

References flo_floor(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_imaginary ( VALUE  num) [static]

Definition at line 358 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 328 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 548 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 445 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 605 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 390 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 532 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

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

Definition at line 462 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 1752 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 1864 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 625 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 1767 of file numeric.c.

References flo_truncate(), and rb_Float().

Referenced by Init_Numeric().

static VALUE num_uminus ( VALUE  num) [static]

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

Referenced by Init_Numeric().

static VALUE num_zero_p ( VALUE  num) [static]

Definition at line 583 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 1131 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 2112 of file numeric.c.

References FIX2INT.

short rb_fix2short ( VALUE  val)

Definition at line 2161 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 2179 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 3310 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 3342 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 648 of file numeric.c.

References NEWOBJ_OF, OBJ_FREEZE, rb_cFloat, and T_FLOAT.

Referenced by rb_float_new().

Definition at line 2427 of file numeric.c.

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

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

References rb_num2long().

short rb_num2short ( VALUE  val)

Definition at line 2152 of file numeric.c.

References check_short(), and rb_num2long().

Referenced by rb_num2short_inline().

unsigned short rb_num2ushort ( VALUE  val)

Definition at line 2170 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 3224 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 286 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 197 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 2119 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 913 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 1798 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 1773 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 112 of file numeric.c.

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

ID id_div [static]

Definition at line 112 of file numeric.c.

Referenced by Init_Numeric(), and num_interval_step_size().

ID id_eq [static]

Definition at line 112 of file numeric.c.

Referenced by Init_Numeric(), and num_equal().

ID id_to_i [static]

Definition at line 112 of file numeric.c.

Referenced by Init_Numeric(), and num_to_int().

Definition at line 117 of file numeric.c.

Definition at line 115 of file numeric.c.

Definition at line 116 of file numeric.c.

Definition at line 114 of file numeric.c.

Definition at line 120 of file numeric.c.

Definition at line 119 of file numeric.c.