Ruby  2.4.2p198(2017-09-14revision59899)
Macros | Functions | Variables
numeric.c File Reference
#include "internal.h"
#include "ruby/util.h"
#include "id.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
#include <stdio.h>
Include dependency graph for numeric.c:

Go to the source code of this file.

Macros

#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 id_to_i   idTo_i
 
#define id_eq   idEq
 
#define id_cmp   idCmp
 
#define NUMERR_TYPE   1
 
#define NUMERR_NEGATIVE   2
 
#define NUMERR_TOOLARGE   3
 
#define method_basic_p(klass)   rb_method_basic_definition_p(klass, mid)
 
#define FLOAT_OUT_OF_RANGE(val, type)
 
#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 LONG_MIN_MINUS_ONE_IS_LESS_THAN(n)
 
#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 double round_half_up (double x, double s)
 
static double round_half_down (double x, double s)
 
static double round_half_even (double x, double s)
 
static VALUE fix_uminus (VALUE num)
 
static VALUE fix_mul (VALUE x, VALUE y)
 
static VALUE fix_lshift (long, unsigned long)
 
static VALUE fix_rshift (long, unsigned long)
 
static VALUE int_pow (long x, unsigned long y)
 
static VALUE int_odd_p (VALUE x)
 
static VALUE int_even_p (VALUE x)
 
static int int_round_zero_p (VALUE num, int ndigits)
 
VALUE rb_int_floor (VALUE num, int ndigits)
 
VALUE rb_int_ceil (VALUE num, int ndigits)
 
static VALUE flo_to_i (VALUE num)
 
static int float_round_overflow (int ndigits, int binexp)
 
static int float_round_underflow (int ndigits, int binexp)
 
void rb_num_zerodiv (void)
 
enum ruby_num_rounding_mode rb_num_get_rounding_option (VALUE opts)
 
int rb_num_to_uint (VALUE val, unsigned int *ret)
 
static VALUE compare_with_zero (VALUE num, ID mid)
 
static int int_pos_p (VALUE num)
 
static int int_neg_p (VALUE num)
 
static int positive_int_p (VALUE num)
 
static int negative_int_p (VALUE num)
 
int rb_num_negative_p (VALUE num)
 
static VALUE num_funcall_op_0 (VALUE x, VALUE arg, int recursive)
 
static VALUE num_funcall0 (VALUE x, ID func)
 
static void num_funcall_op_1_recursion (VALUE x, ID func, VALUE y)
 
static VALUE num_funcall_op_1 (VALUE y, VALUE arg, int recursive)
 
static VALUE num_funcall1 (VALUE x, ID func, VALUE y)
 
static VALUE num_coerce (VALUE x, VALUE y)
 
static VALUE coerce_body (VALUE arg)
 
 NORETURN (static void coerce_failed(VALUE x, VALUE y))
 
static void coerce_failed (VALUE x, VALUE y)
 
static VALUE coerce_rescue (VALUE arg, VALUE errinfo)
 
static VALUE coerce_rescue_quiet (VALUE arg, VALUE errinfo)
 
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_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_finite_p (VALUE num)
 
static VALUE num_infinite_p (VALUE num)
 
static VALUE num_to_int (VALUE num)
 
static VALUE num_positive_p (VALUE num)
 
static VALUE num_negative_p (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)
 
VALUE rb_float_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)
 
VALUE rb_float_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_hash (double d)
 
VALUE rb_dbl_cmp (double a, double b)
 
static VALUE flo_cmp (VALUE x, VALUE y)
 
VALUE rb_float_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)
 
VALUE rb_float_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_next_float (VALUE vx)
 
static VALUE flo_prev_float (VALUE vx)
 
static VALUE flo_floor (int argc, VALUE *argv, VALUE num)
 
static VALUE flo_ceil (int argc, VALUE *argv, VALUE num)
 
static SIGNED_VALUE int_round_half_even (SIGNED_VALUE x, SIGNED_VALUE y)
 
static SIGNED_VALUE int_round_half_up (SIGNED_VALUE x, SIGNED_VALUE y)
 
static SIGNED_VALUE int_round_half_down (SIGNED_VALUE x, SIGNED_VALUE y)
 
static int int_half_p_half_even (VALUE num, VALUE n, VALUE f)
 
static int int_half_p_half_up (VALUE num, VALUE n, VALUE f)
 
static int int_half_p_half_down (VALUE num, VALUE n, VALUE f)
 
VALUE rb_int_round (VALUE num, int ndigits, enum ruby_num_rounding_mode mode)
 
VALUE rb_int_truncate (VALUE num, int ndigits)
 
static VALUE flo_round (int argc, VALUE *argv, VALUE num)
 
static VALUE flo_truncate (int argc, VALUE *argv, VALUE num)
 
static VALUE flo_positive_p (VALUE num)
 
static VALUE flo_negative_p (VALUE num)
 
static VALUE num_floor (int argc, VALUE *argv, VALUE num)
 
static VALUE num_ceil (int argc, VALUE *argv, VALUE num)
 
static VALUE num_round (int argc, VALUE *argv, VALUE num)
 
static VALUE num_truncate (int argc, VALUE *argv, 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 ruby_num_interval_step_size (VALUE from, VALUE to, VALUE step, int excl)
 
static VALUE num_step_compare_with_zero (VALUE num)
 
static int num_step_negative_p (VALUE num)
 
static int num_step_scan_args (int argc, const VALUE *argv, VALUE *to, VALUE *step)
 
static VALUE num_step_size (VALUE from, VALUE args, VALUE eobj)
 
static VALUE num_step (int argc, VALUE *argv, VALUE from)
 
static char * out_of_range_float (char(*pbuf)[24], VALUE val)
 
long rb_num2long (VALUE val)
 
static unsigned long rb_num2ulong_internal (VALUE val, int *wrap_p)
 
unsigned long rb_num2ulong (VALUE val)
 
long rb_num2int (VALUE val)
 
long rb_fix2int (VALUE val)
 
 NORETURN (static void rb_out_of_short(SIGNED_VALUE num))
 
static void rb_out_of_short (SIGNED_VALUE num)
 
static void check_short (long num)
 
static void check_ushort (unsigned long 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)
 
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_int_uminus (VALUE num)
 
VALUE rb_fix2str (VALUE x, int base)
 
static VALUE int_to_s (int argc, VALUE *argv, VALUE x)
 
VALUE rb_int2str (VALUE x, int base)
 
static VALUE fix_plus (VALUE x, VALUE y)
 
VALUE rb_fix_plus (VALUE x, VALUE y)
 
VALUE rb_int_plus (VALUE x, VALUE y)
 
static VALUE fix_minus (VALUE x, VALUE y)
 
VALUE rb_int_minus (VALUE x, VALUE y)
 
VALUE rb_int_mul (VALUE x, VALUE y)
 
static double fix_fdiv_double (VALUE x, VALUE y)
 
double rb_int_fdiv_double (VALUE x, VALUE y)
 
VALUE rb_int_fdiv (VALUE x, VALUE y)
 
static VALUE fix_divide (VALUE x, VALUE y, ID op)
 
static VALUE fix_div (VALUE x, VALUE y)
 
VALUE rb_int_div (VALUE x, VALUE y)
 
static VALUE fix_idiv (VALUE x, VALUE y)
 
VALUE rb_int_idiv (VALUE x, VALUE y)
 
static VALUE fix_mod (VALUE x, VALUE y)
 
VALUE rb_int_modulo (VALUE x, VALUE y)
 
VALUE int_remainder (VALUE x, VALUE y)
 
static VALUE fix_divmod (VALUE x, VALUE y)
 
VALUE rb_int_divmod (VALUE x, VALUE y)
 
VALUE rb_int_positive_pow (long x, unsigned long y)
 
static VALUE fix_pow (VALUE x, VALUE y)
 
VALUE rb_int_pow (VALUE x, VALUE y)
 
static VALUE fix_equal (VALUE x, VALUE y)
 
VALUE rb_int_equal (VALUE x, VALUE y)
 
static VALUE fix_cmp (VALUE x, VALUE y)
 
VALUE rb_int_cmp (VALUE x, VALUE y)
 
static VALUE fix_gt (VALUE x, VALUE y)
 
VALUE rb_int_gt (VALUE x, VALUE y)
 
static VALUE fix_ge (VALUE x, VALUE y)
 
VALUE rb_int_ge (VALUE x, VALUE y)
 
static VALUE fix_lt (VALUE x, VALUE y)
 
static VALUE int_lt (VALUE x, VALUE y)
 
static VALUE fix_le (VALUE x, VALUE y)
 
static VALUE int_le (VALUE x, VALUE y)
 
static VALUE fix_comp (VALUE num)
 
static VALUE int_comp (VALUE num)
 
static VALUE num_funcall_bit_1 (VALUE y, VALUE arg, int recursive)
 
VALUE rb_num_coerce_bit (VALUE x, VALUE y, ID func)
 
static VALUE fix_and (VALUE x, VALUE y)
 
VALUE rb_int_and (VALUE x, VALUE y)
 
static VALUE fix_or (VALUE x, VALUE y)
 
static VALUE int_or (VALUE x, VALUE y)
 
static VALUE fix_xor (VALUE x, VALUE y)
 
static VALUE int_xor (VALUE x, VALUE y)
 
static VALUE rb_fix_lshift (VALUE x, VALUE y)
 
VALUE rb_int_lshift (VALUE x, VALUE y)
 
static VALUE rb_fix_rshift (VALUE x, VALUE y)
 
static VALUE rb_int_rshift (VALUE x, VALUE y)
 
static VALUE fix_aref (VALUE fix, VALUE idx)
 
static VALUE int_aref (VALUE num, VALUE idx)
 
static VALUE int_to_f (VALUE num)
 
static VALUE fix_abs (VALUE fix)
 
VALUE rb_int_abs (VALUE num)
 
static VALUE fix_size (VALUE fix)
 
static VALUE int_size (VALUE num)
 
static VALUE rb_fix_bit_length (VALUE fix)
 
static VALUE rb_int_bit_length (VALUE num)
 
static VALUE rb_fix_digits (VALUE fix, long base)
 
static VALUE rb_int_digits_bigbase (VALUE num, VALUE base)
 
static VALUE rb_int_digits (int argc, VALUE *argv, VALUE num)
 
static VALUE int_upto_size (VALUE from, VALUE args, VALUE eobj)
 
static VALUE int_upto (VALUE from, VALUE to)
 
static VALUE int_downto_size (VALUE from, VALUE args, VALUE eobj)
 
static VALUE int_downto (VALUE from, VALUE to)
 
static VALUE int_dotimes_size (VALUE num, VALUE args, VALUE eobj)
 
static VALUE int_dotimes (VALUE num)
 
static VALUE int_round (int argc, VALUE *argv, VALUE num)
 
static VALUE int_floor (int argc, VALUE *argv, VALUE num)
 
static VALUE int_ceil (int argc, VALUE *argv, VALUE num)
 
static VALUE int_truncate (int argc, VALUE *argv, VALUE num)
 
void Init_Numeric (void)
 
double rb_float_value (VALUE v)
 
VALUE rb_float_new (double d)
 

Variables

const union bytesequence4_or_float rb_infinity = {{0x00, 0x00, 0x80, 0x7f}}
 
const union bytesequence4_or_float rb_nan = {{0x00, 0x00, 0xc0, 0x7f}}
 
static ID id_coerce
 
static ID id_div
 
static ID id_divmod
 
VALUE rb_cNumeric
 
VALUE rb_cFloat
 
VALUE rb_cInteger
 
VALUE rb_eZeroDivError
 
VALUE rb_eFloatDomainError
 
static ID id_to
 
static ID id_by
 

Macro Definition Documentation

◆ DBL_DIG

#define DBL_DIG   15

◆ DBL_EPSILON

#define DBL_EPSILON   2.2204460492503131e-16

Definition at line 60 of file numeric.c.

Referenced by Init_Numeric(), main(), nextafter(), and ruby_float_step_size().

◆ DBL_MANT_DIG

#define DBL_MANT_DIG   53

Definition at line 57 of file numeric.c.

Referenced by flo_to_s(), and Init_Numeric().

◆ DBL_MAX

#define DBL_MAX   1.7976931348623157e+308

Definition at line 39 of file numeric.c.

Referenced by Init_Numeric(), and nextafter().

◆ DBL_MAX_10_EXP

#define DBL_MAX_10_EXP   308

Definition at line 51 of file numeric.c.

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

◆ DBL_MAX_EXP

#define DBL_MAX_EXP   1024

Definition at line 45 of file numeric.c.

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

◆ DBL_MIN

#define DBL_MIN   2.2250738585072014e-308

Definition at line 36 of file numeric.c.

Referenced by Init_Numeric(), main(), and nextafter().

◆ DBL_MIN_10_EXP

#define DBL_MIN_10_EXP   (-307)

Definition at line 48 of file numeric.c.

Referenced by BigDecimal_to_f(), and Init_Numeric().

◆ DBL_MIN_EXP

#define DBL_MIN_EXP   (-1021)

Definition at line 42 of file numeric.c.

Referenced by Init_Numeric(), and nextafter().

◆ FIT_SQRT_LONG

#define FIT_SQRT_LONG (   n)    (((n)<SQRT_LONG_MAX)&&((n)>=-SQRT_LONG_MAX))

Definition at line 3575 of file numeric.c.

Referenced by int_pow().

◆ FLOAT_OUT_OF_RANGE

#define FLOAT_OUT_OF_RANGE (   val,
  type 
)
Value:
do { \
char buf[24]; \
rb_raise(rb_eRangeError, "float %s out of range of "type, \
out_of_range_float(&buf, (val))); \
} while (0)
VALUE rb_eRangeError
Definition: error.c:766
#define val
unsigned char buf[MIME_BUF_SIZE]
Definition: nkf.c:4309
static char * out_of_range_float(char(*pbuf)[24], VALUE val)
Definition: numeric.c:2761

Definition at line 2771 of file numeric.c.

Referenced by rb_num2fix(), rb_num2long(), and rb_num2ulong_internal().

◆ FLT_RADIX

#define FLT_RADIX   2

Definition at line 30 of file numeric.c.

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

◆ FLT_ROUNDS

#define FLT_ROUNDS   1

Definition at line 33 of file numeric.c.

Referenced by Init_Numeric().

◆ id_cmp

#define id_cmp   idCmp

Definition at line 177 of file numeric.c.

Referenced by fix_cmp(), flo_cmp(), and ruby_num_interval_step_size().

◆ id_eq

#define id_eq   idEq

Definition at line 176 of file numeric.c.

Referenced by num_equal().

◆ id_to_i

#define id_to_i   idTo_i

Definition at line 175 of file numeric.c.

Referenced by num_to_int().

◆ int_pred

#define int_pred   rb_int_pred

Definition at line 3252 of file numeric.c.

Referenced by Init_Numeric().

◆ int_succ

#define int_succ   rb_int_succ

Definition at line 3227 of file numeric.c.

Referenced by Init_Numeric().

◆ LONG_MAX_PLUS_ONE

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

Definition at line 2778 of file numeric.c.

Referenced by rb_num2long().

◆ LONG_MIN_MINUS_ONE

#define LONG_MIN_MINUS_ONE   ((double)LONG_MIN-1)

Definition at line 2777 of file numeric.c.

◆ LONG_MIN_MINUS_ONE_IS_LESS_THAN

#define LONG_MIN_MINUS_ONE_IS_LESS_THAN (   n)
Value:
LONG_MIN <= (n): \
LONG_MIN_MINUS_ONE < (n))
#define LONG_MIN
Definition: ruby.h:193
#define LONG_MIN_MINUS_ONE
Definition: numeric.c:2777

Definition at line 2780 of file numeric.c.

Referenced by rb_num2long(), and rb_num2ulong_internal().

◆ method_basic_p

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

Definition at line 272 of file numeric.c.

Referenced by negative_int_p(), num_positive_p(), num_step_negative_p(), and positive_int_p().

◆ NUMERR_NEGATIVE

#define NUMERR_NEGATIVE   2

Referenced by rb_num_to_uint().

◆ NUMERR_TOOLARGE

#define NUMERR_TOOLARGE   3

Referenced by rb_num_to_uint().

◆ NUMERR_TYPE

#define NUMERR_TYPE   1

Referenced by rb_num_to_uint().

◆ rb_intern

#define rb_intern (   str)    rb_intern_const(str)

◆ SQRT_LONG_MAX

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

Definition at line 3573 of file numeric.c.

◆ ULONG_MAX_PLUS_ONE

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

Definition at line 2779 of file numeric.c.

Referenced by rb_num2ulong_internal().

Function Documentation

◆ check_short()

static void check_short ( long  num)
static

Definition at line 2955 of file numeric.c.

References rb_out_of_short().

Referenced by rb_fix2short(), and rb_num2short().

◆ check_ushort()

static void check_ushort ( unsigned long  num,
int  sign 
)
static

Definition at line 2963 of file numeric.c.

References rb_eRangeError, and rb_raise().

Referenced by rb_fix2ushort(), and rb_num2ushort().

◆ coerce_body()

static VALUE coerce_body ( VALUE  arg)
static

Definition at line 437 of file numeric.c.

References coerce_failed(), id_coerce, NORETURN(), and rb_funcall().

Referenced by do_coerce().

◆ coerce_failed()

static void coerce_failed ( VALUE  x,
VALUE  y 
)
static

◆ coerce_rescue()

static VALUE coerce_rescue ( VALUE  arg,
VALUE  errinfo 
)
static

Definition at line 458 of file numeric.c.

References coerce_failed(), and Qnil.

Referenced by do_coerce().

◆ coerce_rescue_quiet()

static VALUE coerce_rescue_quiet ( VALUE  arg,
VALUE  errinfo 
)
static

Definition at line 466 of file numeric.c.

References Qundef.

Referenced by do_coerce(), and num_step_negative_p().

◆ compare_with_zero()

static VALUE compare_with_zero ( VALUE  num,
ID  mid 
)
static

Definition at line 275 of file numeric.c.

References INT2FIX, Qundef, rb_check_funcall(), rb_cmperr(), and zero().

Referenced by negative_int_p(), num_positive_p(), and positive_int_p().

◆ dbl2ival()

static VALUE dbl2ival ( double  d)
static

Definition at line 1261 of file numeric.c.

References FIXABLE, LONG2FIX, and rb_dbl2big().

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

◆ do_coerce()

static int do_coerce ( VALUE x,
VALUE y,
int  err 
)
static

◆ fix_abs()

static VALUE fix_abs ( VALUE  fix)
static

Definition at line 4634 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by rb_int_abs().

◆ fix_and()

static VALUE fix_and ( VALUE  x,
VALUE  y 
)
static

Definition at line 4343 of file numeric.c.

References FIX2LONG, FIXNUM_P, LONG2NUM, rb_big_and(), rb_num_coerce_bit(), RB_TYPE_P, and T_BIGNUM.

Referenced by rb_int_and().

◆ fix_aref()

static VALUE fix_aref ( VALUE  fix,
VALUE  idx 
)
static

Definition at line 4552 of file numeric.c.

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

Referenced by int_aref().

◆ fix_cmp()

static VALUE fix_cmp ( VALUE  x,
VALUE  y 
)
static

◆ fix_comp()

static VALUE fix_comp ( VALUE  num)
static

Definition at line 4288 of file numeric.c.

References FIXNUM_FLAG.

Referenced by int_comp().

◆ fix_div()

static VALUE fix_div ( VALUE  x,
VALUE  y 
)
static

Definition at line 3723 of file numeric.c.

References fix_divide().

Referenced by rb_int_div().

◆ fix_divide()

static VALUE fix_divide ( VALUE  x,
VALUE  y,
ID  op 
)
static

◆ fix_divmod()

static VALUE fix_divmod ( VALUE  x,
VALUE  y 
)
static

◆ fix_equal()

static VALUE fix_equal ( VALUE  x,
VALUE  y 
)
static

Definition at line 4036 of file numeric.c.

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

Referenced by rb_int_equal().

◆ fix_fdiv_double()

static double fix_fdiv_double ( VALUE  x,
VALUE  y 
)
static

◆ fix_ge()

static VALUE fix_ge ( VALUE  x,
VALUE  y 
)
static

◆ fix_gt()

static VALUE fix_gt ( VALUE  x,
VALUE  y 
)
static

◆ fix_idiv()

static VALUE fix_idiv ( VALUE  x,
VALUE  y 
)
static

Definition at line 3750 of file numeric.c.

References fix_divide(), and id_div.

Referenced by rb_int_idiv().

◆ fix_le()

static VALUE fix_le ( VALUE  x,
VALUE  y 
)
static

◆ fix_lshift()

static VALUE fix_lshift ( long  val,
unsigned long  width 
)
static

Definition at line 4462 of file numeric.c.

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

Referenced by rb_fix_lshift(), rb_fix_rshift(), and round_half_even().

◆ fix_lt()

static VALUE fix_lt ( VALUE  x,
VALUE  y 
)
static

◆ fix_minus()

static VALUE fix_minus ( VALUE  x,
VALUE  y 
)
static

◆ fix_mod()

static VALUE fix_mod ( VALUE  x,
VALUE  y 
)
static

◆ fix_mul()

static VALUE fix_mul ( VALUE  x,
VALUE  y 
)
static

◆ fix_or()

static VALUE fix_or ( VALUE  x,
VALUE  y 
)
static

Definition at line 4378 of file numeric.c.

References FIX2LONG, FIXNUM_P, LONG2NUM, rb_big_or(), rb_num_coerce_bit(), RB_TYPE_P, and T_BIGNUM.

Referenced by int_or().

◆ fix_plus()

static VALUE fix_plus ( VALUE  x,
VALUE  y 
)
static

◆ fix_pow()

static VALUE fix_pow ( VALUE  x,
VALUE  y 
)
static

◆ fix_rshift()

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

Definition at line 4508 of file numeric.c.

References CHAR_BIT, INT2FIX, and LONG2FIX.

Referenced by rb_fix_lshift(), rb_fix_rshift(), and round_half_even().

◆ fix_size()

static VALUE fix_size ( VALUE  fix)
static

Definition at line 4671 of file numeric.c.

References INT2FIX.

Referenced by int_size().

◆ fix_uminus()

static VALUE fix_uminus ( VALUE  num)
static

Definition at line 3368 of file numeric.c.

References FIX2LONG, and LONG2NUM.

Referenced by rb_int_uminus(), and round_half_even().

◆ fix_xor()

static VALUE fix_xor ( VALUE  x,
VALUE  y 
)
static

Definition at line 4413 of file numeric.c.

References FIX2LONG, FIXNUM_P, LONG2NUM, rb_big_xor(), rb_num_coerce_bit(), RB_TYPE_P, and T_BIGNUM.

Referenced by int_xor().

◆ flo_ceil()

static VALUE flo_ceil ( int  argc,
VALUE argv,
VALUE  num 
)
static

◆ flo_cmp()

static VALUE flo_cmp ( VALUE  x,
VALUE  y 
)
static

◆ flo_coerce()

static VALUE flo_coerce ( VALUE  x,
VALUE  y 
)
static

Definition at line 1044 of file numeric.c.

References rb_assoc_new(), and rb_Float().

Referenced by Init_Numeric().

◆ flo_div()

static VALUE flo_div ( VALUE  x,
VALUE  y 
)
static

Definition at line 1142 of file numeric.c.

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

Referenced by Init_Numeric().

◆ flo_divmod()

static VALUE flo_divmod ( VALUE  x,
VALUE  y 
)
static

◆ flo_eq()

static VALUE flo_eq ( VALUE  x,
VALUE  y 
)
static

Definition at line 1403 of file numeric.c.

References isnan, num_equal(), Qfalse, Qtrue, rb_integer_float_eq(), RB_TYPE_P, RFLOAT_VALUE, T_BIGNUM, T_FIXNUM, and T_FLOAT.

Referenced by Init_Numeric().

◆ flo_eql()

static VALUE flo_eql ( VALUE  x,
VALUE  y 
)
static

Definition at line 1664 of file numeric.c.

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

Referenced by Init_Numeric().

◆ flo_floor()

static VALUE flo_floor ( int  argc,
VALUE argv,
VALUE  num 
)
static

◆ flo_ge()

static VALUE flo_ge ( VALUE  x,
VALUE  y 
)
static

◆ flo_hash()

static VALUE flo_hash ( VALUE  num)
static

Definition at line 1436 of file numeric.c.

References rb_dbl_hash(), and RFLOAT_VALUE.

Referenced by Init_Numeric().

◆ flo_is_finite_p()

static VALUE flo_is_finite_p ( VALUE  num)
static

Definition at line 1786 of file numeric.c.

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

Referenced by Init_Numeric().

◆ flo_is_infinite_p()

static VALUE flo_is_infinite_p ( VALUE  num)
static

Definition at line 1765 of file numeric.c.

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

Referenced by Init_Numeric().

◆ flo_is_nan_p()

static VALUE flo_is_nan_p ( VALUE  num)
static

Definition at line 1740 of file numeric.c.

References isnan, Qfalse, Qtrue, and RFLOAT_VALUE.

Referenced by Init_Numeric().

◆ flo_le()

static VALUE flo_le ( VALUE  x,
VALUE  y 
)
static

◆ flo_lt()

static VALUE flo_lt ( VALUE  x,
VALUE  y 
)
static

◆ flo_minus()

static VALUE flo_minus ( VALUE  x,
VALUE  y 
)
static

Definition at line 1094 of file numeric.c.

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

Referenced by Init_Numeric().

◆ flo_mod()

static VALUE flo_mod ( VALUE  x,
VALUE  y 
)
static

◆ flo_mul()

static VALUE flo_mul ( VALUE  x,
VALUE  y 
)
static

Definition at line 1118 of file numeric.c.

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

Referenced by Init_Numeric().

◆ flo_negative_p()

static VALUE flo_negative_p ( VALUE  num)
static

Definition at line 2382 of file numeric.c.

References f, Qfalse, Qtrue, and RFLOAT_VALUE.

Referenced by Init_Numeric().

◆ flo_next_float()

static VALUE flo_next_float ( VALUE  vx)
static

Definition at line 1854 of file numeric.c.

References DBL2NUM, INFINITY, nextafter(), and NUM2DBL.

Referenced by Init_Numeric().

◆ flo_plus()

static VALUE flo_plus ( VALUE  x,
VALUE  y 
)
static

Definition at line 1070 of file numeric.c.

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

Referenced by Init_Numeric().

◆ flo_positive_p()

static VALUE flo_positive_p ( VALUE  num)
static

Definition at line 2368 of file numeric.c.

References f, Qfalse, Qtrue, and RFLOAT_VALUE.

Referenced by Init_Numeric().

◆ flo_prev_float()

static VALUE flo_prev_float ( VALUE  vx)
static

Definition at line 1906 of file numeric.c.

References DBL2NUM, INFINITY, nextafter(), and NUM2DBL.

Referenced by Init_Numeric().

◆ flo_quo()

static VALUE flo_quo ( VALUE  x,
VALUE  y 
)
static

Definition at line 1172 of file numeric.c.

References num_funcall1().

Referenced by Init_Numeric().

◆ flo_round()

static VALUE flo_round ( int  argc,
VALUE argv,
VALUE  num 
)
static

◆ flo_to_f()

static VALUE flo_to_f ( VALUE  num)
static

Definition at line 1686 of file numeric.c.

Referenced by Init_Numeric().

◆ flo_to_i()

static VALUE flo_to_i ( VALUE  num)
static

Definition at line 2327 of file numeric.c.

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

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

◆ flo_to_s()

static VALUE flo_to_s ( VALUE  flt)
static

◆ flo_truncate()

static VALUE flo_truncate ( int  argc,
VALUE argv,
VALUE  num 
)
static

Definition at line 2352 of file numeric.c.

References flo_ceil(), flo_floor(), RFLOAT_VALUE, and signbit().

Referenced by Init_Numeric(), and num_truncate().

◆ flo_zero_p()

static VALUE flo_zero_p ( VALUE  num)
static

Definition at line 1719 of file numeric.c.

References Qfalse, Qtrue, and RFLOAT_VALUE.

Referenced by Init_Numeric().

◆ float_round_overflow()

static int float_round_overflow ( int  ndigits,
int  binexp 
)
static

Definition at line 2280 of file numeric.c.

References DBL_DIG, FALSE, and TRUE.

Referenced by flo_ceil(), flo_floor(), flo_round(), and round_half_even().

◆ float_round_underflow()

static int float_round_underflow ( int  ndigits,
int  binexp 
)
static

Definition at line 2308 of file numeric.c.

References FALSE, and TRUE.

Referenced by flo_ceil(), flo_floor(), flo_round(), and round_half_even().

◆ flodivmod()

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

Definition at line 1178 of file numeric.c.

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

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

◆ Init_Numeric()

void Init_Numeric ( void  )

Definition at line 5241 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, flo_ceil(), flo_cmp(), flo_coerce(), flo_div(), flo_divmod(), flo_eq(), flo_eql(), flo_floor(), flo_ge(), 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_negative_p(), flo_next_float(), flo_plus(), flo_positive_p(), flo_prev_float(), flo_quo(), flo_round(), flo_to_f(), flo_to_i(), flo_to_s(), flo_truncate(), flo_zero_p(), FLT_RADIX, FLT_ROUNDS, id_by, id_coerce, id_div, id_divmod, id_to, INFINITY, INT2FIX, int_aref(), int_ceil(), int_chr(), int_comp(), int_dotimes(), int_downto(), int_even_p(), int_floor(), int_int_p(), int_le(), int_lt(), int_odd_p(), int_or(), int_ord(), int_pred, int_remainder(), int_round(), int_size(), int_succ, int_to_f(), int_to_i(), int_to_s(), int_truncate(), int_upto(), int_xor(), NAN, num_abs(), num_ceil(), num_cmp(), num_coerce(), num_div(), num_divmod(), num_eql(), num_fdiv(), num_finite_p(), num_floor(), num_imaginary(), num_infinite_p(), num_init_copy(), num_int_p(), num_modulo(), num_negative_p(), num_nonzero_p(), num_positive_p(), 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_deprecate_constant(), rb_eFloatDomainError, rb_eRangeError, rb_eStandardError, rb_eZeroDivError, rb_float_abs(), rb_float_gt(), rb_float_pow(), rb_float_uminus(), rb_include_module(), rb_int_abs(), rb_int_and(), rb_int_bit_length(), rb_int_cmp(), rb_int_digits(), rb_int_div(), rb_int_divmod(), rb_int_equal(), rb_int_fdiv(), rb_int_ge(), rb_int_gt(), rb_int_idiv(), rb_int_lshift(), rb_int_minus(), rb_int_modulo(), rb_int_mul(), rb_int_plus(), rb_int_pow(), rb_int_rshift(), rb_int_uminus(), rb_intern, rb_mComparable, rb_undef_alloc_func(), and rb_undef_method().

◆ int_aref()

static VALUE int_aref ( VALUE  num,
VALUE  idx 
)
static

Definition at line 4579 of file numeric.c.

References fix_aref(), FIXNUM_P, Qnil, rb_big_aref(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ int_ceil()

static VALUE int_ceil ( int  argc,
VALUE argv,
VALUE  num 
)
static

Definition at line 5097 of file numeric.c.

References NUM2INT, rb_check_arity, rb_Float(), and rb_int_ceil().

Referenced by Init_Numeric().

◆ int_chr()

static VALUE int_chr ( int  argc,
VALUE argv,
VALUE  num 
)
static

◆ int_comp()

static VALUE int_comp ( VALUE  num)
static

Definition at line 4294 of file numeric.c.

References fix_comp(), FIXNUM_P, Qnil, rb_big_comp(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ int_dotimes()

static VALUE int_dotimes ( VALUE  num)
static

◆ int_dotimes_size()

static VALUE int_dotimes_size ( VALUE  num,
VALUE  args,
VALUE  eobj 
)
static

Definition at line 4978 of file numeric.c.

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

Referenced by int_dotimes().

◆ int_downto()

static VALUE int_downto ( VALUE  from,
VALUE  to 
)
static

◆ int_downto_size()

static VALUE int_downto_size ( VALUE  from,
VALUE  args,
VALUE  eobj 
)
static

Definition at line 4931 of file numeric.c.

References FALSE, INT2FIX, RARRAY_AREF, and ruby_num_interval_step_size().

Referenced by int_downto().

◆ int_even_p()

static VALUE int_even_p ( VALUE  x)
static

Definition at line 3183 of file numeric.c.

References FIXNUM_P, INT2FIX, Qfalse, Qtrue, rb_big_even_p(), rb_funcall(), RB_TYPE_P, and T_BIGNUM.

Referenced by fix_pow(), Init_Numeric(), and round_half_even().

◆ int_floor()

static VALUE int_floor ( int  argc,
VALUE argv,
VALUE  num 
)
static

Definition at line 5065 of file numeric.c.

References NUM2INT, rb_check_arity, rb_Float(), and rb_int_floor().

Referenced by Init_Numeric().

◆ int_half_p_half_down()

static int int_half_p_half_down ( VALUE  num,
VALUE  n,
VALUE  f 
)
static

Definition at line 2088 of file numeric.c.

References int_neg_p().

◆ int_half_p_half_even()

static int int_half_p_half_even ( VALUE  num,
VALUE  n,
VALUE  f 
)
static

Definition at line 2076 of file numeric.c.

References int_odd_p(), and rb_int_idiv().

◆ int_half_p_half_up()

static int int_half_p_half_up ( VALUE  num,
VALUE  n,
VALUE  f 
)
static

Definition at line 2082 of file numeric.c.

References int_pos_p().

◆ int_int_p()

static VALUE int_int_p ( VALUE  num)
static

Definition at line 3146 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

◆ int_le()

static VALUE int_le ( VALUE  x,
VALUE  y 
)
static

Definition at line 4260 of file numeric.c.

References fix_le(), FIXNUM_P, Qnil, rb_big_le(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ int_lt()

static VALUE int_lt ( VALUE  x,
VALUE  y 
)
static

Definition at line 4220 of file numeric.c.

References fix_lt(), FIXNUM_P, Qnil, rb_big_lt(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ int_neg_p()

static int int_neg_p ( VALUE  num)
inlinestatic

◆ int_odd_p()

static VALUE int_odd_p ( VALUE  x)
static

◆ int_or()

static VALUE int_or ( VALUE  x,
VALUE  y 
)
static

Definition at line 4393 of file numeric.c.

References fix_or(), FIXNUM_P, Qnil, rb_big_or(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ int_ord()

static VALUE int_ord ( VALUE  num)
static

Definition at line 3348 of file numeric.c.

Referenced by Init_Numeric().

◆ int_pos_p()

static int int_pos_p ( VALUE  num)
inlinestatic

Definition at line 286 of file numeric.c.

References BIGNUM_POSITIVE_P, FIXNUM_P, FIXNUM_POSITIVE_P, rb_eTypeError, rb_raise(), RB_TYPE_P, and T_BIGNUM.

Referenced by int_half_p_half_up().

◆ int_pow()

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

◆ int_remainder()

VALUE int_remainder ( VALUE  x,
VALUE  y 
)

Definition at line 3833 of file numeric.c.

References FIXNUM_P, num_remainder(), Qnil, rb_big_remainder(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ int_round()

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

Definition at line 5030 of file numeric.c.

References NUM2INT, rb_Float(), rb_int_round(), rb_num_get_rounding_option(), and rb_scan_args().

Referenced by Init_Numeric(), and rb_int_round().

◆ int_round_half_down()

static SIGNED_VALUE int_round_half_down ( SIGNED_VALUE  x,
SIGNED_VALUE  y 
)
static

Definition at line 2070 of file numeric.c.

◆ int_round_half_even()

static SIGNED_VALUE int_round_half_even ( SIGNED_VALUE  x,
SIGNED_VALUE  y 
)
static

Definition at line 2054 of file numeric.c.

References SIGNED_VALUE.

◆ int_round_half_up()

static SIGNED_VALUE int_round_half_up ( SIGNED_VALUE  x,
SIGNED_VALUE  y 
)
static

Definition at line 2064 of file numeric.c.

References SIGNED_VALUE.

◆ int_round_zero_p()

static int int_round_zero_p ( VALUE  num,
int  ndigits 
)
static

◆ int_size()

static VALUE int_size ( VALUE  num)
static

Definition at line 4677 of file numeric.c.

References fix_size(), FIXNUM_P, Qnil, rb_big_size_m(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ int_to_f()

static VALUE int_to_f ( VALUE  num)
static

◆ int_to_i()

static VALUE int_to_i ( VALUE  num)
static

Definition at line 3133 of file numeric.c.

Referenced by Init_Numeric().

◆ int_to_s()

static VALUE int_to_s ( int  argc,
VALUE argv,
VALUE  x 
)
static

Definition at line 3446 of file numeric.c.

References NUM2INT, rb_check_arity, and rb_int2str().

Referenced by Init_Numeric().

◆ int_truncate()

static VALUE int_truncate ( int  argc,
VALUE argv,
VALUE  num 
)
static

Definition at line 5129 of file numeric.c.

References NUM2INT, rb_check_arity, rb_Float(), and rb_int_truncate().

Referenced by Init_Numeric().

◆ int_upto()

static VALUE int_upto ( VALUE  from,
VALUE  to 
)
static

◆ int_upto_size()

static VALUE int_upto_size ( VALUE  from,
VALUE  args,
VALUE  eobj 
)
static

Definition at line 4885 of file numeric.c.

References FALSE, INT2FIX, RARRAY_AREF, and ruby_num_interval_step_size().

Referenced by int_upto().

◆ int_xor()

static VALUE int_xor ( VALUE  x,
VALUE  y 
)
static

Definition at line 4428 of file numeric.c.

References fix_xor(), FIXNUM_P, Qnil, rb_big_xor(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ negative_int_p()

static int negative_int_p ( VALUE  num)
inlinestatic

◆ NORETURN() [1/2]

NORETURN ( static void   coerce_failedVALUE x, VALUE y)

Referenced by coerce_body(), and rb_fix2int().

◆ NORETURN() [2/2]

NORETURN ( static void   rb_out_of_shortSIGNED_VALUE num)

◆ num_abs()

static VALUE num_abs ( VALUE  num)
static

Definition at line 784 of file numeric.c.

References idUMinus, negative_int_p(), and num_funcall0().

Referenced by Init_Numeric().

◆ num_ceil()

static VALUE num_ceil ( int  argc,
VALUE argv,
VALUE  num 
)
static

Definition at line 2425 of file numeric.c.

References flo_ceil(), and rb_Float().

Referenced by Init_Numeric().

◆ num_cmp()

static VALUE num_cmp ( VALUE  x,
VALUE  y 
)
static

Definition at line 1372 of file numeric.c.

References INT2FIX, and Qnil.

Referenced by Init_Numeric().

◆ num_coerce()

static VALUE num_coerce ( VALUE  x,
VALUE  y 
)
static

Definition at line 427 of file numeric.c.

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

Referenced by Init_Numeric().

◆ num_div()

static VALUE num_div ( VALUE  x,
VALUE  y 
)
static

Definition at line 642 of file numeric.c.

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

Referenced by Init_Numeric(), num_divmod(), and rb_int_idiv().

◆ num_divmod()

static VALUE num_divmod ( VALUE  x,
VALUE  y 
)
static

Definition at line 735 of file numeric.c.

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

Referenced by Init_Numeric().

◆ num_eql()

static VALUE num_eql ( VALUE  x,
VALUE  y 
)
static

Definition at line 1352 of file numeric.c.

References Qfalse, rb_big_eql(), rb_equal(), RB_TYPE_P, T_BIGNUM, and TYPE.

Referenced by Init_Numeric().

◆ num_equal()

static VALUE num_equal ( VALUE  x,
VALUE  y 
)
static

Definition at line 1379 of file numeric.c.

References id_eq, num_funcall1(), Qfalse, Qtrue, result, and RTEST.

Referenced by fix_equal(), and flo_eq().

◆ num_fdiv()

static VALUE num_fdiv ( VALUE  x,
VALUE  y 
)
static

Definition at line 623 of file numeric.c.

References rb_Float(), and rb_funcall().

Referenced by Init_Numeric().

◆ num_finite_p()

static VALUE num_finite_p ( VALUE  num)
static

Definition at line 850 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

◆ num_floor()

static VALUE num_floor ( int  argc,
VALUE argv,
VALUE  num 
)
static

Definition at line 2402 of file numeric.c.

References flo_floor(), and rb_Float().

Referenced by Init_Numeric().

◆ num_funcall0()

static VALUE num_funcall0 ( VALUE  x,
ID  func 
)
static

Definition at line 370 of file numeric.c.

References num_funcall_op_0(), and rb_exec_recursive().

Referenced by num_abs(), num_nonzero_p(), num_to_int(), and rb_int_uminus().

◆ num_funcall1()

static VALUE num_funcall1 ( VALUE  x,
ID  func,
VALUE  y 
)
static

◆ num_funcall_bit_1()

static VALUE num_funcall_bit_1 ( VALUE  y,
VALUE  arg,
int  recursive 
)
static

Definition at line 4306 of file numeric.c.

References func, num_funcall_op_1_recursion(), and rb_check_funcall().

Referenced by rb_num_coerce_bit().

◆ num_funcall_op_0()

static VALUE num_funcall_op_0 ( VALUE  x,
VALUE  arg,
int  recursive 
)
static

Definition at line 348 of file numeric.c.

References func, ID2SYM, ISALNUM, name, PRIsVALUE, rb_funcall(), rb_id2name(), and rb_name_error().

Referenced by num_funcall0().

◆ num_funcall_op_1()

static VALUE num_funcall_op_1 ( VALUE  y,
VALUE  arg,
int  recursive 
)
static

Definition at line 390 of file numeric.c.

References func, num_funcall_op_1_recursion(), and rb_funcall().

Referenced by num_funcall1().

◆ num_funcall_op_1_recursion()

static void num_funcall_op_1_recursion ( VALUE  x,
ID  func,
VALUE  y 
)
static

Definition at line 376 of file numeric.c.

References ID2SYM, ISALNUM, name, PRIsVALUE, rb_id2name(), and rb_name_error().

Referenced by num_funcall_bit_1(), and num_funcall_op_1().

◆ num_imaginary()

static VALUE num_imaginary ( VALUE  num)
static

Definition at line 591 of file numeric.c.

References INT2FIX, and rb_complex_new().

Referenced by Init_Numeric().

◆ num_infinite_p()

static VALUE num_infinite_p ( VALUE  num)
static

Definition at line 866 of file numeric.c.

References Qnil.

Referenced by Init_Numeric().

◆ num_init_copy()

static VALUE num_init_copy ( VALUE  x,
VALUE  y 
)
static

Definition at line 562 of file numeric.c.

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

Referenced by Init_Numeric().

◆ num_int_p()

static VALUE num_int_p ( VALUE  num)
static

Definition at line 764 of file numeric.c.

References Qfalse.

Referenced by Init_Numeric().

◆ num_modulo()

static VALUE num_modulo ( VALUE  x,
VALUE  y 
)
static

Definition at line 661 of file numeric.c.

References id_div, num_funcall1(), and rb_funcall().

Referenced by Init_Numeric(), num_divmod(), and rb_int_modulo().

◆ num_negative_p()

static VALUE num_negative_p ( VALUE  num)
static

Definition at line 919 of file numeric.c.

References negative_int_p(), Qfalse, and Qtrue.

Referenced by Init_Numeric().

◆ num_nonzero_p()

static VALUE num_nonzero_p ( VALUE  num)
static

Definition at line 835 of file numeric.c.

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

Referenced by Init_Numeric().

◆ num_positive_p()

static VALUE num_positive_p ( VALUE  num)
static

◆ num_real_p()

static VALUE num_real_p ( VALUE  num)
static

Definition at line 748 of file numeric.c.

References Qtrue.

Referenced by Init_Numeric().

◆ num_remainder()

static VALUE num_remainder ( VALUE  x,
VALUE  y 
)
static

Definition at line 678 of file numeric.c.

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

Referenced by Init_Numeric(), and int_remainder().

◆ num_round()

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

Definition at line 2444 of file numeric.c.

References flo_round(), and rb_Float().

Referenced by Init_Numeric().

◆ num_sadded()

static VALUE num_sadded ( VALUE  x,
VALUE  name 
)
static

◆ num_step()

static VALUE num_step ( int  argc,
VALUE argv,
VALUE  from 
)
static

◆ num_step_compare_with_zero()

static VALUE num_step_compare_with_zero ( VALUE  num)
static

Definition at line 2571 of file numeric.c.

References INT2FIX, rb_check_funcall(), and zero().

Referenced by num_step_negative_p().

◆ num_step_negative_p()

static int num_step_negative_p ( VALUE  num)
static

◆ num_step_scan_args()

static int num_step_scan_args ( int  argc,
const VALUE argv,
VALUE to,
VALUE step 
)
static

◆ num_step_size()

static VALUE num_step_size ( VALUE  from,
VALUE  args,
VALUE  eobj 
)
static

Definition at line 2640 of file numeric.c.

References argc, argv, FALSE, num_step_scan_args(), RARRAY_CONST_PTR, RARRAY_LENINT, and ruby_num_interval_step_size().

Referenced by num_step().

◆ num_to_int()

static VALUE num_to_int ( VALUE  num)
static

Definition at line 883 of file numeric.c.

References id_to_i, and num_funcall0().

Referenced by Init_Numeric().

◆ num_truncate()

static VALUE num_truncate ( int  argc,
VALUE argv,
VALUE  num 
)
static

Definition at line 2460 of file numeric.c.

References flo_truncate(), and rb_Float().

Referenced by Init_Numeric().

◆ num_uminus()

static VALUE num_uminus ( VALUE  num)
static

Definition at line 605 of file numeric.c.

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

Referenced by Init_Numeric().

◆ num_uplus()

static VALUE num_uplus ( VALUE  num)
static

Definition at line 577 of file numeric.c.

Referenced by Init_Numeric().

◆ num_zero_p()

static VALUE num_zero_p ( VALUE  num)
static

Definition at line 801 of file numeric.c.

References FIXNUM_P, FIXNUM_ZERO_P, INT2FIX, Qfalse, Qtrue, rb_bigzero_p(), rb_equal(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ out_of_range_float()

static char* out_of_range_float ( char(*)  pbuf[24],
VALUE  val 
)
static

Definition at line 2761 of file numeric.c.

References buf, RFLOAT_VALUE, snprintf, and strchr().

◆ positive_int_p()

static int positive_int_p ( VALUE  num)
inlinestatic

◆ rb_dbl_cmp()

VALUE rb_dbl_cmp ( double  a,
double  b 
)

Definition at line 1448 of file numeric.c.

References INT2FIX, isnan, and Qnil.

Referenced by flo_cmp(), nurat_eqeq_p(), and rb_rational_cmp().

◆ rb_dbl_hash()

VALUE rb_dbl_hash ( double  d)

Definition at line 1442 of file numeric.c.

References LONG2FIX, and rb_dbl_long_hash().

Referenced by flo_hash().

◆ rb_enc_uint_chr()

VALUE rb_enc_uint_chr ( unsigned int  code,
rb_encoding enc 
)

◆ rb_fix2int()

long rb_fix2int ( VALUE  val)

Definition at line 2940 of file numeric.c.

References FIX2INT, NORETURN(), rb_out_of_short(), and SIGNED_VALUE.

Referenced by rb_num2ulong().

◆ rb_fix2short()

short rb_fix2short ( VALUE  val)

Definition at line 2987 of file numeric.c.

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

Referenced by rb_num2short_inline().

◆ rb_fix2str()

VALUE rb_fix2str ( VALUE  x,
int  base 
)

◆ rb_fix2ushort()

unsigned short rb_fix2ushort ( VALUE  val)

Definition at line 3006 of file numeric.c.

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

◆ rb_fix_bit_length()

static VALUE rb_fix_bit_length ( VALUE  fix)
static

Definition at line 4740 of file numeric.c.

References bit_length, FIX2LONG, and LONG2FIX.

Referenced by rb_int_bit_length().

◆ rb_fix_digits()

static VALUE rb_fix_digits ( VALUE  fix,
long  base 
)
static

◆ rb_fix_lshift()

static VALUE rb_fix_lshift ( VALUE  x,
VALUE  y 
)
static

Definition at line 4448 of file numeric.c.

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

Referenced by rb_int_lshift().

◆ rb_fix_plus()

VALUE rb_fix_plus ( VALUE  x,
VALUE  y 
)

Definition at line 3508 of file numeric.c.

References fix_plus().

Referenced by ary_inject_op(), enum_sum(), rb_ary_sum(), and sum_iter().

◆ rb_fix_rshift()

static VALUE rb_fix_rshift ( VALUE  x,
VALUE  y 
)
static

Definition at line 4493 of file numeric.c.

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

Referenced by rb_int_rshift().

◆ rb_float_abs()

VALUE rb_float_abs ( VALUE  flt)

Definition at line 1704 of file numeric.c.

References DBL2NUM, RFLOAT_VALUE, and val.

Referenced by Init_Numeric(), and numeric_polar().

◆ rb_float_gt()

VALUE rb_float_gt ( VALUE  x,
VALUE  y 
)

◆ rb_float_new()

VALUE rb_float_new ( double  d)

Definition at line 5517 of file numeric.c.

References rb_float_new_inline().

◆ rb_float_new_in_heap()

VALUE rb_float_new_in_heap ( double  d)

Definition at line 941 of file numeric.c.

References FL_WB_PROTECTED, NEWOBJ_OF, OBJ_FREEZE, rb_cFloat, RGENGC_WB_PROTECTED_FLOAT, and T_FLOAT.

Referenced by rb_float_new_inline().

◆ rb_float_pow()

VALUE rb_float_pow ( VALUE  x,
VALUE  y 
)

◆ rb_float_uminus()

VALUE rb_float_uminus ( VALUE  flt)

Definition at line 1057 of file numeric.c.

References DBL2NUM, and RFLOAT_VALUE.

Referenced by Init_Numeric().

◆ rb_float_value()

double rb_float_value ( VALUE  v)

Definition at line 5510 of file numeric.c.

References rb_float_value_inline().

Referenced by any_hash(), and rb_ident_hash().

◆ rb_int2str()

VALUE rb_int2str ( VALUE  x,
int  base 
)

Definition at line 3458 of file numeric.c.

References FIXNUM_P, rb_any_to_s(), rb_big2str(), rb_fix2str(), RB_TYPE_P, and T_BIGNUM.

Referenced by int_to_s(), and rb_str_format().

◆ rb_int_abs()

VALUE rb_int_abs ( VALUE  num)

Definition at line 4644 of file numeric.c.

References fix_abs(), FIXNUM_P, Qnil, rb_big_abs(), RB_TYPE_P, and T_BIGNUM.

Referenced by f_abs(), Init_Numeric(), numeric_polar(), and rb_rational_abs().

◆ rb_int_and()

VALUE rb_int_and ( VALUE  x,
VALUE  y 
)

Definition at line 4358 of file numeric.c.

References fix_and(), FIXNUM_P, Qnil, rb_big_and(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric(), and nurat_round_half_even().

◆ rb_int_bit_length()

static VALUE rb_int_bit_length ( VALUE  num)
static

Definition at line 4749 of file numeric.c.

References FIXNUM_P, Qnil, rb_big_bit_length(), rb_fix_bit_length(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ rb_int_ceil()

VALUE rb_int_ceil ( VALUE  num,
int  ndigits 
)

◆ rb_int_cmp()

VALUE rb_int_cmp ( VALUE  x,
VALUE  y 
)

◆ rb_int_digits()

static VALUE rb_int_digits ( int  argc,
VALUE argv,
VALUE  num 
)
static

◆ rb_int_digits_bigbase()

static VALUE rb_int_digits_bigbase ( VALUE  num,
VALUE  base 
)
static

◆ rb_int_div()

VALUE rb_int_div ( VALUE  x,
VALUE  y 
)

Definition at line 3729 of file numeric.c.

References fix_div(), FIXNUM_P, Qnil, rb_big_div(), RB_TYPE_P, and T_BIGNUM.

Referenced by f_div(), Init_Numeric(), and read_rat_nos().

◆ rb_int_divmod()

VALUE rb_int_divmod ( VALUE  x,
VALUE  y 
)

◆ rb_int_equal()

VALUE rb_int_equal ( VALUE  x,
VALUE  y 
)

Definition at line 4052 of file numeric.c.

References fix_equal(), FIXNUM_P, Qnil, rb_big_eq(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric(), and nurat_eqeq_p().

◆ rb_int_fdiv()

VALUE rb_int_fdiv ( VALUE  x,
VALUE  y 
)

Definition at line 3671 of file numeric.c.

References DBL2NUM, Qnil, rb_int_fdiv_double(), and RB_INTEGER_TYPE_P.

Referenced by Init_Numeric().

◆ rb_int_fdiv_double()

double rb_int_fdiv_double ( VALUE  x,
VALUE  y 
)

◆ rb_int_floor()

VALUE rb_int_floor ( VALUE  num,
int  ndigits 
)

◆ rb_int_ge()

VALUE rb_int_ge ( VALUE  x,
VALUE  y 
)

Definition at line 4182 of file numeric.c.

References fix_ge(), FIXNUM_P, Qnil, rb_big_ge(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric(), and int_range_sum().

◆ rb_int_gt()

VALUE rb_int_gt ( VALUE  x,
VALUE  y 
)

Definition at line 4142 of file numeric.c.

References fix_gt(), FIXNUM_P, Qnil, rb_big_gt(), RB_TYPE_P, and T_BIGNUM.

Referenced by f_gt_p(), and Init_Numeric().

◆ rb_int_idiv()

VALUE rb_int_idiv ( VALUE  x,
VALUE  y 
)

◆ rb_int_lshift()

VALUE rb_int_lshift ( VALUE  x,
VALUE  y 
)

Definition at line 4473 of file numeric.c.

References FIXNUM_P, Qnil, rb_big_lshift(), rb_fix_lshift(), RB_TYPE_P, and T_BIGNUM.

Referenced by float_to_r(), Init_Numeric(), and rb_flt_rationalize().

◆ rb_int_minus()

VALUE rb_int_minus ( VALUE  x,
VALUE  y 
)

◆ rb_int_modulo()

VALUE rb_int_modulo ( VALUE  x,
VALUE  y 
)

◆ rb_int_mul()

VALUE rb_int_mul ( VALUE  x,
VALUE  y 
)

◆ rb_int_plus()

VALUE rb_int_plus ( VALUE  x,
VALUE  y 
)

◆ rb_int_positive_pow()

VALUE rb_int_positive_pow ( long  x,
unsigned long  y 
)

Definition at line 3949 of file numeric.c.

References int_pow().

Referenced by date_zone_to_diff(), parse_rational(), and rb_str_format().

◆ rb_int_pow()

VALUE rb_int_pow ( VALUE  x,
VALUE  y 
)

Definition at line 4011 of file numeric.c.

References fix_pow(), FIXNUM_P, Qnil, rb_big_pow(), RB_TYPE_P, and T_BIGNUM.

Referenced by float_to_r(), Init_Numeric(), nurat_expt(), and rb_flt_rationalize().

◆ rb_int_pred()

VALUE rb_int_pred ( VALUE  num)

Definition at line 3240 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, LONG2NUM, num_funcall1(), rb_big_minus(), RB_TYPE_P, and T_BIGNUM.

◆ rb_int_round()

VALUE rb_int_round ( VALUE  num,
int  ndigits,
enum ruby_num_rounding_mode  mode 
)

◆ rb_int_rshift()

static VALUE rb_int_rshift ( VALUE  x,
VALUE  y 
)
static

Definition at line 4519 of file numeric.c.

References FIXNUM_P, Qnil, rb_big_rshift(), rb_fix_rshift(), RB_TYPE_P, and T_BIGNUM.

Referenced by Init_Numeric().

◆ rb_int_succ()

VALUE rb_int_succ ( VALUE  num)

Definition at line 3215 of file numeric.c.

References FIX2LONG, FIXNUM_P, INT2FIX, LONG2NUM, num_funcall1(), rb_big_plus(), RB_TYPE_P, and T_BIGNUM.

Referenced by enumerator_with_index_i().

◆ rb_int_truncate()

VALUE rb_int_truncate ( VALUE  num,
int  ndigits 
)

◆ rb_int_uminus()

VALUE rb_int_uminus ( VALUE  num)

◆ rb_num2fix()

VALUE rb_num2fix ( VALUE  val)

◆ rb_num2int()

long rb_num2int ( VALUE  val)

Definition at line 2934 of file numeric.c.

References rb_num2long().

Referenced by rb_num2ulong().

◆ rb_num2long()

long rb_num2long ( VALUE  val)

◆ rb_num2short()

short rb_num2short ( VALUE  val)

Definition at line 2978 of file numeric.c.

References check_short(), and rb_num2long().

Referenced by rb_num2short_inline().

◆ rb_num2ulong()

unsigned long rb_num2ulong ( VALUE  val)

◆ rb_num2ulong_internal()

static unsigned long rb_num2ulong_internal ( VALUE  val,
int *  wrap_p 
)
static

◆ rb_num2ushort()

unsigned short rb_num2ushort ( VALUE  val)

Definition at line 2996 of file numeric.c.

References check_ushort(), and rb_num2ulong_internal().

Referenced by rb_fix2ushort().

◆ rb_num_coerce_bin()

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

◆ rb_num_coerce_bit()

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

◆ rb_num_coerce_cmp()

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

◆ rb_num_coerce_relop()

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

◆ rb_num_get_rounding_option()

enum ruby_num_rounding_mode rb_num_get_rounding_option ( VALUE  opts)

◆ rb_num_negative_p()

int rb_num_negative_p ( VALUE  num)

◆ rb_num_to_uint()

int rb_num_to_uint ( VALUE  val,
unsigned int *  ret 
)

◆ rb_num_zerodiv()

void rb_num_zerodiv ( void  )

◆ rb_out_of_short()

static void rb_out_of_short ( SIGNED_VALUE  num)
static

Definition at line 2948 of file numeric.c.

References PRIdVALUE, rb_eRangeError, and rb_raise().

Referenced by check_short(), and rb_fix2int().

◆ round()

double round ( double  x)

◆ round_half_down()

static double round_half_down ( double  x,
double  s 
)
static

Definition at line 114 of file numeric.c.

References f, and round().

◆ round_half_even()

static double round_half_even ( double  x,
double  s 
)
static

◆ round_half_up()

static double round_half_up ( double  x,
double  s 
)
static

Definition at line 96 of file numeric.c.

References f, and round().

◆ ruby_float_mod()

double ruby_float_mod ( double  x,
double  y 
)

Definition at line 1221 of file numeric.c.

References flodivmod(), and mod.

Referenced by fix_mod(), and flo_mod().

◆ ruby_float_step()

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

Definition at line 2494 of file numeric.c.

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

Referenced by num_step(), and range_step().

◆ ruby_float_step_size()

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

Definition at line 2466 of file numeric.c.

References DBL_EPSILON, err, INFINITY, and isinf().

Referenced by ruby_float_step(), and ruby_num_interval_step_size().

◆ ruby_num_interval_step_size()

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

Variable Documentation

◆ id_by

ID id_by
static

Definition at line 189 of file numeric.c.

Referenced by Init_Numeric(), and num_step_scan_args().

◆ id_coerce

ID id_coerce
static

Definition at line 174 of file numeric.c.

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

◆ id_div

ID id_div
static

Definition at line 174 of file numeric.c.

Referenced by fix_idiv(), Init_Numeric(), num_modulo(), and ruby_num_interval_step_size().

◆ id_divmod

ID id_divmod
static

Definition at line 174 of file numeric.c.

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

◆ id_to

ID id_to
static

Definition at line 189 of file numeric.c.

Referenced by Init_Numeric(), and num_step_scan_args().

◆ rb_cFloat

VALUE rb_cFloat

Definition at line 180 of file numeric.c.

Referenced by Init_Numeric(), and rb_float_new_in_heap().

◆ rb_cInteger

VALUE rb_cInteger

◆ rb_cNumeric

VALUE rb_cNumeric

Definition at line 179 of file numeric.c.

Referenced by Init_Numeric().

◆ rb_eFloatDomainError

VALUE rb_eFloatDomainError

Definition at line 187 of file numeric.c.

Referenced by Init_Numeric().

◆ rb_eZeroDivError

VALUE rb_eZeroDivError

Definition at line 186 of file numeric.c.

Referenced by Init_Numeric(), and rb_num_zerodiv().

◆ rb_infinity

const union bytesequence4_or_float rb_infinity = {{0x00, 0x00, 0x80, 0x7f}}

Definition at line 65 of file numeric.c.

◆ rb_nan

const union bytesequence4_or_float rb_nan = {{0x00, 0x00, 0xc0, 0x7f}}

Definition at line 72 of file numeric.c.