Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals

numeric.c File Reference

#include "ruby.h"
#include "env.h"
#include <ctype.h>
#include <math.h>
#include <stdio.h>
#include <float.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

Functions

void rb_num_zerodiv ()
VALUE num_coerce (VALUE x, VALUE y)
VALUE coerce_body (VALUE *x)
VALUE coerce_rescue (VALUE *x)
int do_coerce (VALUE *x, VALUE *y, int err)
VALUE rb_num_coerce_bin (VALUE x, VALUE y)
VALUE rb_num_coerce_cmp (VALUE x, VALUE y)
VALUE rb_num_coerce_relop (VALUE x, VALUE y)
VALUE num_sadded (VALUE x, VALUE name)
VALUE num_init_copy (VALUE x, VALUE y)
VALUE num_uplus (VALUE num)
VALUE num_uminus (VALUE num)
VALUE num_quo (VALUE x, VALUE y)
VALUE num_div (VALUE x, VALUE y)
VALUE num_divmod (VALUE x, VALUE y)
VALUE num_modulo (VALUE x, VALUE y)
VALUE num_remainder (VALUE x, VALUE y)
VALUE num_int_p (VALUE num)
VALUE num_abs (VALUE num)
VALUE num_zero_p (VALUE num)
VALUE num_nonzero_p (VALUE num)
VALUE num_to_int (VALUE num)
VALUE rb_float_new (double d)
VALUE flo_to_s (VALUE flt)
VALUE flo_coerce (VALUE x, VALUE y)
VALUE flo_uminus (VALUE flt)
VALUE flo_plus (VALUE x, VALUE y)
VALUE flo_minus (VALUE x, VALUE y)
VALUE flo_mul (VALUE x, VALUE y)
VALUE flo_div (VALUE x, VALUE y)
void flodivmod (double x, double y, double *divp, double *modp)
VALUE flo_mod (VALUE x, VALUE y)
VALUE flo_divmod (VALUE x, VALUE y)
VALUE flo_pow (VALUE x, VALUE y)
VALUE num_eql (VALUE x, VALUE y)
VALUE num_cmp (VALUE x, VALUE y)
VALUE num_equal (VALUE x, VALUE y)
VALUE flo_eq (VALUE x, VALUE y)
VALUE flo_hash (VALUE num)
VALUE rb_dbl_cmp (double a, double b)
VALUE flo_cmp (VALUE x, VALUE y)
VALUE flo_gt (VALUE x, VALUE y)
VALUE flo_ge (VALUE x, VALUE y)
VALUE flo_lt (VALUE x, VALUE y)
VALUE flo_le (VALUE x, VALUE y)
VALUE flo_eql (VALUE x, VALUE y)
VALUE flo_to_f (VALUE num)
VALUE flo_abs (VALUE flt)
VALUE flo_zero_p (VALUE num)
VALUE flo_is_nan_p (VALUE num)
VALUE flo_is_infinite_p (VALUE num)
VALUE flo_is_finite_p (VALUE num)
VALUE flo_floor (VALUE num)
VALUE flo_ceil (VALUE num)
VALUE flo_round (VALUE num)
VALUE flo_truncate (VALUE num)
VALUE num_floor (VALUE num)
VALUE num_ceil (VALUE num)
VALUE num_round (VALUE num)
VALUE num_truncate (VALUE num)
VALUE num_step (int argc, VALUE *argv, VALUE from)
long rb_num2long (VALUE val)
unsigned long rb_num2ulong (VALUE val)
long rb_num2int (VALUE val)
long rb_fix2int (VALUE val)
VALUE rb_num2fix (VALUE val)
LONG_LONG rb_num2ll (VALUE val)
unsigned LONG_LONG rb_num2ull (VALUE val)
VALUE int_to_i (VALUE num)
VALUE int_int_p (VALUE num)
VALUE int_succ (VALUE num)
VALUE int_chr (VALUE num)
VALUE rb_fix_induced_from (VALUE klass, VALUE x)
VALUE rb_int_induced_from (VALUE klass, VALUE x)
VALUE rb_flo_induced_from (VALUE klass, VALUE x)
VALUE fix_uminus (VALUE num)
VALUE rb_fix2str (VALUE x, int base)
VALUE fix_to_s (int argc, VALUE *argv, VALUE x)
VALUE fix_plus (VALUE x, VALUE y)
VALUE fix_minus (VALUE x, VALUE y)
VALUE fix_mul (VALUE x, VALUE y)
void fixdivmod (long x, long y, long *divp, long *modp)
VALUE fix_quo (VALUE x, VALUE y)
VALUE fix_div (VALUE x, VALUE y)
VALUE fix_mod (VALUE x, VALUE y)
VALUE fix_divmod (VALUE x, VALUE y)
VALUE fix_pow (VALUE x, VALUE y)
VALUE fix_equal (VALUE x, VALUE y)
VALUE fix_cmp (VALUE x, VALUE y)
VALUE fix_gt (VALUE x, VALUE y)
VALUE fix_ge (VALUE x, VALUE y)
VALUE fix_lt (VALUE x, VALUE y)
VALUE fix_le (VALUE x, VALUE y)
VALUE fix_rev (VALUE num)
VALUE fix_and (VALUE x, VALUE y)
VALUE fix_or (VALUE x, VALUE y)
VALUE fix_xor (VALUE x, VALUE y)
VALUE fix_rshift (VALUE, VALUE)
VALUE fix_lshift (VALUE x, VALUE y)
VALUE fix_aref (VALUE fix, VALUE idx)
VALUE fix_to_f (VALUE num)
VALUE fix_abs (VALUE fix)
VALUE fix_id2name (VALUE fix)
VALUE fix_to_sym (VALUE fix)
VALUE fix_size (VALUE fix)
VALUE int_upto (VALUE from, VALUE to)
VALUE int_downto (VALUE from, VALUE to)
VALUE int_dotimes (VALUE num)
VALUE fix_zero_p (VALUE num)
void Init_Numeric ()

Variables

ID id_coerce
ID id_to_i
ID id_eq
VALUE rb_cNumeric
VALUE rb_cFloat
VALUE rb_cInteger
VALUE rb_cFixnum
VALUE rb_eZeroDivError
VALUE rb_eFloatDomainError


Define Documentation

#define DBL_DIG   15
 

Definition at line 57 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_EPSILON   2.2204460492503131e-16
 

Definition at line 63 of file numeric.c.

Referenced by Init_Numeric(), and num_step().

#define DBL_MANT_DIG   53
 

Definition at line 60 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MAX   1.7976931348623157e+308
 

Definition at line 42 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MAX_10_EXP   308
 

Definition at line 54 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MAX_EXP   1024
 

Definition at line 48 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MIN   2.2250738585072014e-308
 

Definition at line 39 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MIN_10_EXP   (-307)
 

Definition at line 51 of file numeric.c.

Referenced by Init_Numeric().

#define DBL_MIN_EXP   (-1021)
 

Definition at line 45 of file numeric.c.

Referenced by Init_Numeric().

#define FLT_RADIX   2
 

Definition at line 33 of file numeric.c.

Referenced by Init_Numeric().

#define FLT_ROUNDS   1
 

Definition at line 36 of file numeric.c.

Referenced by Init_Numeric().


Function Documentation

VALUE coerce_body VALUE x  )  [static]
 

Definition at line 109 of file numeric.c.

References id_coerce, rb_funcall(), and VALUE.

Referenced by do_coerce().

VALUE coerce_rescue VALUE x  )  [static]
 

Definition at line 116 of file numeric.c.

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

int do_coerce VALUE x,
VALUE y,
int  err
[static]
 

Definition at line 130 of file numeric.c.

References coerce_body(), Qfalse, Qtrue, RARRAY, rb_eTypeError, rb_raise(), rb_rescue(), T_ARRAY, TYPE, and VALUE.

Referenced by num_uminus(), rb_num_coerce_bin(), rb_num_coerce_cmp(), and rb_num_coerce_relop().

VALUE fix_abs VALUE  fix  )  [static]
 

Definition at line 2556 of file numeric.c.

References FIX2LONG, LONG2NUM, and VALUE.

Referenced by Init_Numeric().

VALUE fix_and VALUE  x,
VALUE  y
[static]
 

Definition at line 2377 of file numeric.c.

References FIX2LONG, LONG2NUM, NUM2LONG, rb_big_and(), T_BIGNUM, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_aref VALUE  fix,
VALUE  idx
[static]
 

Definition at line 2499 of file numeric.c.

References CHAR_BIT, FIX2LONG, FIXNUM_P, INT2FIX, NUM2LONG, rb_big_norm(), RBIGNUM, T_BIGNUM, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_cmp VALUE  x,
VALUE  y
[static]
 

Definition at line 2245 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, rb_num_coerce_cmp(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_div VALUE  x,
VALUE  y
[static]
 

Definition at line 2124 of file numeric.c.

References FIX2LONG, fixdivmod(), FIXNUM_P, LONG2NUM, rb_num_coerce_bin(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_divmod VALUE  x,
VALUE  y
[static]
 

Definition at line 2165 of file numeric.c.

References FIX2LONG, fixdivmod(), FIXNUM_P, LONG2NUM, rb_assoc_new(), rb_num_coerce_bin(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_equal VALUE  x,
VALUE  y
[static]
 

Definition at line 2224 of file numeric.c.

References FIX2LONG, FIXNUM_P, num_equal(), Qfalse, Qtrue, and VALUE.

Referenced by Init_Numeric().

VALUE fix_ge VALUE  x,
VALUE  y
[static]
 

Definition at line 2292 of file numeric.c.

References FIX2LONG, FIXNUM_P, Qfalse, Qtrue, rb_num_coerce_relop(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_gt VALUE  x,
VALUE  y
[static]
 

Definition at line 2269 of file numeric.c.

References FIX2LONG, FIXNUM_P, Qfalse, Qtrue, rb_num_coerce_relop(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_id2name VALUE  fix  )  [static]
 

Definition at line 2582 of file numeric.c.

References FIX2UINT, name, Qnil, rb_id2name(), rb_str_new2(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_le VALUE  x,
VALUE  y
[static]
 

Definition at line 2338 of file numeric.c.

References FIX2LONG, FIXNUM_P, Qfalse, Qtrue, rb_num_coerce_relop(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_lshift VALUE  x,
VALUE  y
[static]
 

Definition at line 2439 of file numeric.c.

References CHAR_BIT, fix_rshift(), LONG2FIX, LONG2NUM, NUM2LONG, rb_big_lshift(), rb_int2big(), and VALUE.

Referenced by fix_rshift(), and Init_Numeric().

VALUE fix_lt VALUE  x,
VALUE  y
[static]
 

Definition at line 2315 of file numeric.c.

References FIX2LONG, FIXNUM_P, Qfalse, Qtrue, rb_num_coerce_relop(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_minus VALUE  x,
VALUE  y
[static]
 

Definition at line 2004 of file numeric.c.

References FIX2LONG, FIXNUM_P, LONG2FIX, rb_big_minus(), rb_float_new(), rb_int2big(), rb_num_coerce_bin(), RFLOAT, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_mod VALUE  x,
VALUE  y
[static]
 

Definition at line 2146 of file numeric.c.

References FIX2LONG, fixdivmod(), FIXNUM_P, LONG2NUM, rb_num_coerce_bin(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_mul VALUE  x,
VALUE  y
[static]
 

Definition at line 2037 of file numeric.c.

References FIX2LONG, FIXNUM_P, LONG2FIX, rb_big_mul(), rb_float_new(), rb_int2big(), rb_num_coerce_bin(), RFLOAT, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_or VALUE  x,
VALUE  y
[static]
 

Definition at line 2397 of file numeric.c.

References FIX2LONG, LONG2NUM, NUM2LONG, rb_big_or(), T_BIGNUM, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_plus VALUE  x,
VALUE  y
[static]
 

Definition at line 1971 of file numeric.c.

References FIX2LONG, FIXNUM_P, LONG2FIX, rb_big_plus(), rb_float_new(), rb_int2big(), rb_num_coerce_bin(), RFLOAT, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_pow VALUE  x,
VALUE  y
[static]
 

Definition at line 2191 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, rb_big_pow(), rb_float_new(), rb_int2big(), rb_num_coerce_bin(), RFLOAT, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_quo VALUE  x,
VALUE  y
[static]
 

Definition at line 2104 of file numeric.c.

References FIX2LONG, FIXNUM_P, rb_float_new(), rb_num_coerce_bin(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_rev VALUE  num  )  [static]
 

Definition at line 2360 of file numeric.c.

References FIX2LONG, LONG2NUM, and VALUE.

Referenced by Init_Numeric().

VALUE fix_rshift VALUE  ,
VALUE 
[static]
 

Definition at line 2464 of file numeric.c.

References CHAR_BIT, FIX2LONG, fix_lshift(), INT2FIX, LONG2FIX, NUM2LONG, RSHIFT, and VALUE.

Referenced by fix_lshift(), and Init_Numeric().

VALUE fix_size VALUE  fix  )  [static]
 

Definition at line 2629 of file numeric.c.

References INT2FIX, and VALUE.

Referenced by Init_Numeric().

VALUE fix_to_f VALUE  num  )  [static]
 

Definition at line 2534 of file numeric.c.

References FIX2LONG, rb_float_new(), and VALUE.

Referenced by Init_Numeric().

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

Definition at line 1942 of file numeric.c.

References FIX2INT, NUM2INT, rb_big2str(), rb_fix2str(), rb_int2big(), rb_scan_args(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_to_sym VALUE  fix  )  [static]
 

Definition at line 2604 of file numeric.c.

References FIX2UINT, ID, ID2SYM, Qnil, rb_id2name(), and VALUE.

Referenced by Init_Numeric().

VALUE fix_uminus VALUE  num  )  [static]
 

Definition at line 1889 of file numeric.c.

References FIX2LONG, LONG2NUM, and VALUE.

Referenced by Init_Numeric().

VALUE fix_xor VALUE  x,
VALUE  y
[static]
 

Definition at line 2417 of file numeric.c.

References FIX2LONG, LONG2NUM, NUM2LONG, rb_big_xor(), T_BIGNUM, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE fix_zero_p VALUE  num  )  [static]
 

Definition at line 2761 of file numeric.c.

References FIX2LONG, Qfalse, Qtrue, and VALUE.

Referenced by Init_Numeric().

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

Definition at line 2063 of file numeric.c.

References rb_num_zerodiv().

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

VALUE flo_abs VALUE  flt  )  [static]
 

Definition at line 1110 of file numeric.c.

References rb_float_new(), RFLOAT, and VALUE.

Referenced by Init_Numeric().

VALUE flo_ceil VALUE  num  )  [static]
 

Definition at line 1249 of file numeric.c.

References FIXABLE, LONG2FIX, rb_dbl2big(), RFLOAT, and VALUE.

Referenced by Init_Numeric(), and num_ceil().

VALUE flo_cmp VALUE  x,
VALUE  y
[static]
 

Definition at line 892 of file numeric.c.

References FIX2LONG, rb_big2dbl(), rb_dbl_cmp(), rb_num_coerce_cmp(), RFLOAT, T_BIGNUM, T_FIXNUM, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE flo_coerce VALUE  x,
VALUE  y
[static]
 

Definition at line 524 of file numeric.c.

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

Referenced by Init_Numeric().

VALUE flo_div VALUE  x,
VALUE  y
[static]
 

Definition at line 625 of file numeric.c.

References FIX2LONG, rb_big2dbl(), rb_float_new(), rb_num_coerce_bin(), RFLOAT, T_BIGNUM, T_FIXNUM, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE flo_divmod VALUE  x,
VALUE  y
[static]
 

Definition at line 715 of file numeric.c.

References FIX2LONG, flodivmod(), rb_assoc_new(), rb_big2dbl(), rb_float_new(), rb_num_coerce_bin(), RFLOAT, T_BIGNUM, T_FIXNUM, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE flo_eq VALUE  x,
VALUE  y
[static]
 

Definition at line 822 of file numeric.c.

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

Referenced by Init_Numeric().

VALUE flo_eql VALUE  x,
VALUE  y
[static]
 

Definition at line 1071 of file numeric.c.

References isnan(), Qfalse, Qtrue, RFLOAT, T_FLOAT, TYPE, and VALUE.

Referenced by Init_Numeric().

VALUE flo_floor VALUE  num  )  [static]
 

Definition at line 1222 of file numeric.c.

References FIXABLE, LONG2FIX, rb_dbl2big(), RFLOAT, and VALUE.

Referenced by Init_Numeric(), and num_floor().

VALUE flo_ge VALUE  x,
VALUE  y
[static]
 

Definition at line 961 of file numeric.c.

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

Referenced by Init_Numeric().

VALUE flo_gt VALUE  x,
VALUE  y
[static]
 

Definition at line 925 of file numeric.c.

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

Referenced by Init_Numeric().

VALUE flo_hash VALUE  num  )  [static]
 

Definition at line 854 of file numeric.c.

References INT2FIX, RFLOAT, and VALUE.

Referenced by Init_Numeric().

VALUE flo_is_finite_p VALUE  num  )  [static]
 

Definition at line 1193 of file numeric.c.

References finite(), isinf(), isnan(), Qfalse, Qtrue, RFLOAT, and VALUE.

Referenced by Init_Numeric().

VALUE flo_is_infinite_p VALUE  num  )  [static]
 

Definition at line 1170 of file numeric.c.

References INT2FIX, isinf(), Qnil, RFLOAT, and VALUE.

Referenced by Init_Numeric().

VALUE flo_is_nan_p VALUE  num  )  [static]
 

Definition at line 1149 of file numeric.c.

References isnan(), Qfalse, Qtrue, RFLOAT, and VALUE.

Referenced by Init_Numeric().