#include "ruby.h"#include "internal.h"#include <math.h>#include <float.h>#include <assert.h>#include <ctype.h>Go to the source code of this file.
Defines | |
| #define | NDEBUG |
| #define | ZERO INT2FIX(0) |
| #define | ONE INT2FIX(1) |
| #define | TWO INT2FIX(2) |
| #define | GMP_GCD_DIGITS 1 |
| #define | f_boolcast(x) ((x) ? Qtrue : Qfalse) |
| #define | f_inspect rb_inspect |
| #define | f_to_s rb_obj_as_string |
| #define | binop(n, op) |
| #define | fun1(n) |
| #define | fun2(n) |
| #define | f_expt10(x) f_expt(INT2FIX(10), x) |
| #define | f_positive_p(x) (!f_negative_p(x)) |
| #define | f_nonzero_p(x) (!f_zero_p(x)) |
| #define | k_exact_p(x) (!k_float_p(x)) |
| #define | k_inexact_p(x) k_float_p(x) |
| #define | k_exact_zero_p(x) (k_exact_p(x) && f_zero_p(x)) |
| #define | k_exact_one_p(x) (k_exact_p(x) && f_one_p(x)) |
| #define | get_dat1(x) |
| #define | get_dat2(x, y) |
| #define | rb_raise_zerodiv() rb_raise(rb_eZeroDivError, "divided by 0") |
| #define | id_ceil rb_intern("ceil") |
| #define | f_ceil(x) rb_funcall((x), id_ceil, 0) |
| #define | id_quo rb_intern("quo") |
| #define | f_quo(x, y) rb_funcall((x), id_quo, 1, (y)) |
| #define | f_reciprocal(x) f_quo(ONE, (x)) |
| #define | id_numerator rb_intern("numerator") |
| #define | f_numerator(x) rb_funcall((x), id_numerator, 0) |
| #define | id_denominator rb_intern("denominator") |
| #define | f_denominator(x) rb_funcall((x), id_denominator, 0) |
| #define | id_to_r rb_intern("to_r") |
| #define | f_to_r(x) rb_funcall((x), id_to_r, 0) |
| #define | id_lshift rb_intern("<<") |
| #define | f_lshift(x, n) rb_funcall((x), id_lshift, 1, (n)) |
| #define | rb_intern(str) rb_intern_const(str) |
Functions | |
| static VALUE | f_add (VALUE x, VALUE y) |
| static VALUE | f_cmp (VALUE x, VALUE y) |
| static VALUE | f_div (VALUE x, VALUE y) |
| static VALUE | f_lt_p (VALUE x, VALUE y) |
| binop (mod, '%') | |
| static VALUE | f_sub (VALUE x, VALUE y) |
| fun1 (abs) | |
| static VALUE | f_to_f (VALUE x) |
| static VALUE | f_eqeq_p (VALUE x, VALUE y) |
| fun2 (expt) | |
| static VALUE | f_zero_p (VALUE x) |
| static VALUE | f_one_p (VALUE x) |
| static VALUE | f_minus_one_p (VALUE x) |
| static VALUE | f_kind_of_p (VALUE x, VALUE c) |
| static VALUE | k_numeric_p (VALUE x) |
| static VALUE | k_integer_p (VALUE x) |
| static VALUE | k_float_p (VALUE x) |
| static VALUE | k_rational_p (VALUE x) |
| static long | i_gcd (long x, long y) |
| static VALUE | f_gcd_normal (VALUE x, VALUE y) |
| VALUE | rb_gcd_normal (VALUE x, VALUE y) |
| static VALUE | f_gcd (VALUE x, VALUE y) |
| static VALUE | f_lcm (VALUE x, VALUE y) |
| static VALUE | nurat_s_new_internal (VALUE klass, VALUE num, VALUE den) |
| static VALUE | nurat_s_alloc (VALUE klass) |
| static VALUE | f_rational_new_bang1 (VALUE klass, VALUE x) |
| static void | nurat_int_check (VALUE num) |
| static VALUE | nurat_int_value (VALUE num) |
| static VALUE | nurat_s_canonicalize_internal (VALUE klass, VALUE num, VALUE den) |
| static VALUE | nurat_s_canonicalize_internal_no_reduce (VALUE klass, VALUE num, VALUE den) |
| static VALUE | nurat_s_new (int argc, VALUE *argv, VALUE klass) |
| static VALUE | f_rational_new2 (VALUE klass, VALUE x, VALUE y) |
| static VALUE | f_rational_new_no_reduce2 (VALUE klass, VALUE x, VALUE y) |
| static VALUE | nurat_f_rational (int argc, VALUE *argv, VALUE klass) |
| static VALUE | nurat_numerator (VALUE self) |
| static VALUE | nurat_denominator (VALUE self) |
| static VALUE | f_imul (long a, long b) |
| static VALUE | f_addsub (VALUE self, VALUE anum, VALUE aden, VALUE bnum, VALUE bden, int k) |
| static VALUE | nurat_add (VALUE self, VALUE other) |
| static VALUE | nurat_sub (VALUE self, VALUE other) |
| static VALUE | f_muldiv (VALUE self, VALUE anum, VALUE aden, VALUE bnum, VALUE bden, int k) |
| static VALUE | nurat_mul (VALUE self, VALUE other) |
| static VALUE | nurat_div (VALUE self, VALUE other) |
| static VALUE | nurat_fdiv (VALUE self, VALUE other) |
| static VALUE | f_odd_p (VALUE integer) |
| static VALUE | nurat_expt (VALUE self, VALUE other) |
| static VALUE | nurat_cmp (VALUE self, VALUE other) |
| static VALUE | nurat_eqeq_p (VALUE self, VALUE other) |
| static VALUE | nurat_coerce (VALUE self, VALUE other) |
| static VALUE | nurat_floor (VALUE self) |
| static VALUE | nurat_ceil (VALUE self) |
| static VALUE | nurat_truncate (VALUE self) |
| static VALUE | nurat_round (VALUE self) |
| static VALUE | f_round_common (int argc, VALUE *argv, VALUE self, VALUE(*func)(VALUE)) |
| static VALUE | nurat_floor_n (int argc, VALUE *argv, VALUE self) |
| static VALUE | nurat_ceil_n (int argc, VALUE *argv, VALUE self) |
| static VALUE | nurat_truncate_n (int argc, VALUE *argv, VALUE self) |
| static VALUE | nurat_round_n (int argc, VALUE *argv, VALUE self) |
| static VALUE | nurat_to_f (VALUE self) |
| static VALUE | nurat_to_r (VALUE self) |
| static void | nurat_rationalize_internal (VALUE a, VALUE b, VALUE *p, VALUE *q) |
| static VALUE | nurat_rationalize (int argc, VALUE *argv, VALUE self) |
| static VALUE | nurat_hash (VALUE self) |
| static VALUE | f_format (VALUE self, VALUE(*func)(VALUE)) |
| static VALUE | nurat_to_s (VALUE self) |
| static VALUE | nurat_inspect (VALUE self) |
| static VALUE | nurat_dumper (VALUE self) |
| static VALUE | nurat_loader (VALUE self, VALUE a) |
| static VALUE | nurat_marshal_dump (VALUE self) |
| static VALUE | nurat_marshal_load (VALUE self, VALUE a) |
| VALUE | rb_rational_reciprocal (VALUE x) |
| VALUE | rb_gcd (VALUE self, VALUE other) |
| VALUE | rb_lcm (VALUE self, VALUE other) |
| VALUE | rb_gcdlcm (VALUE self, VALUE other) |
| VALUE | rb_rational_raw (VALUE x, VALUE y) |
| VALUE | rb_rational_new (VALUE x, VALUE y) |
| static VALUE | nurat_s_convert (int argc, VALUE *argv, VALUE klass) |
| VALUE | rb_Rational (VALUE x, VALUE y) |
| static VALUE | numeric_numerator (VALUE self) |
| static VALUE | numeric_denominator (VALUE self) |
| static VALUE | numeric_quo (VALUE x, VALUE y) |
| static VALUE | integer_numerator (VALUE self) |
| static VALUE | integer_denominator (VALUE self) |
| static VALUE | float_numerator (VALUE self) |
| static VALUE | float_denominator (VALUE self) |
| static VALUE | nilclass_to_r (VALUE self) |
| static VALUE | nilclass_rationalize (int argc, VALUE *argv, VALUE self) |
| static VALUE | integer_to_r (VALUE self) |
| static VALUE | integer_rationalize (int argc, VALUE *argv, VALUE self) |
| static void | float_decode_internal (VALUE self, VALUE *rf, VALUE *rn) |
| static VALUE | float_to_r (VALUE self) |
| VALUE | rb_flt_rationalize_with_prec (VALUE flt, VALUE prec) |
| VALUE | rb_flt_rationalize (VALUE flt) |
| static VALUE | float_rationalize (int argc, VALUE *argv, VALUE self) |
| static int | issign (int c) |
| static int | read_sign (const char **s) |
| static int | isdecimal (int c) |
| static int | read_digits (const char **s, int strict, VALUE *num, int *count) |
| static int | islettere (int c) |
| static int | read_num (const char **s, int numsign, int strict, VALUE *num) |
| static int | read_den (const char **s, int strict, VALUE *num) |
| static int | read_rat_nos (const char **s, int sign, int strict, VALUE *num) |
| static int | read_rat (const char **s, int strict, VALUE *num) |
| static void | skip_ws (const char **s) |
| static int | parse_rat (const char *s, int strict, VALUE *num) |
| static VALUE | string_to_r_strict (VALUE self) |
| static VALUE | string_to_r (VALUE self) |
| VALUE | rb_cstr_to_rat (const char *s, int strict) |
| void | Init_Rational (void) |
Variables | |
| VALUE | rb_cRational |
| static ID | id_abs |
| static ID | id_cmp |
| static ID | id_convert |
| static ID | id_eqeq_p |
| static ID | id_expt |
| static ID | id_fdiv |
| static ID | id_idiv |
| static ID | id_integer_p |
| static ID | id_negate |
| static ID | id_to_f |
| static ID | id_to_i |
| static ID | id_truncate |
| static ID | id_i_num |
| static ID | id_i_den |
| #define binop | ( | n, | |||
| op | ) |
Value:
inline static VALUE \ f_##n(VALUE x, VALUE y)\ {\ return rb_funcall(x, (op), 1, y);\ }
Definition at line 41 of file rational.c.
| #define f_boolcast | ( | x | ) | ((x) ? Qtrue : Qfalse) |
Definition at line 37 of file rational.c.
| #define f_ceil | ( | x | ) | rb_funcall((x), id_ceil, 0) |
Definition at line 1442 of file rational.c.
| #define f_denominator | ( | x | ) | rb_funcall((x), id_denominator, 0) |
Definition at line 1780 of file rational.c.
Referenced by nucomp_denominator(), nucomp_expt(), nucomp_numerator(), and numeric_denominator().
| #define f_expt10 | ( | x | ) | f_expt(INT2FIX(10), x) |
Referenced by f_round_common(), and read_num().
| #define f_inspect rb_inspect |
Definition at line 38 of file rational.c.
| #define f_lshift | ( | x, | |||
| n | ) | rb_funcall((x), id_lshift, 1, (n)) |
| #define f_nonzero_p | ( | x | ) | (!f_zero_p(x)) |
Definition at line 196 of file rational.c.
| #define f_numerator | ( | x | ) | rb_funcall((x), id_numerator, 0) |
Definition at line 1777 of file rational.c.
Referenced by nucomp_expt(), nucomp_numerator(), and numeric_numerator().
| #define f_positive_p | ( | x | ) | (!f_negative_p(x)) |
Definition at line 177 of file rational.c.
| #define f_quo | ( | x, | |||
| y | ) | rb_funcall((x), id_quo, 1, (y)) |
Definition at line 1445 of file rational.c.
| #define f_reciprocal | ( | x | ) | f_quo(ONE, (x)) |
Definition at line 1447 of file rational.c.
Referenced by nucomp_expt(), and nurat_rationalize_internal().
| #define f_to_r | ( | x | ) | rb_funcall((x), id_to_r, 0) |
Definition at line 1783 of file rational.c.
| #define f_to_s rb_obj_as_string |
Definition at line 39 of file rational.c.
| #define fun1 | ( | n | ) |
Value:
inline static VALUE \ f_##n(VALUE x)\ {\ return rb_funcall(x, id_##n, 0);\ }
Definition at line 48 of file rational.c.
| #define fun2 | ( | n | ) |
Value:
inline static VALUE \ f_##n(VALUE x, VALUE y)\ {\ return rb_funcall(x, id_##n, 1, y);\ }
Definition at line 55 of file rational.c.
| #define get_dat1 | ( | x | ) |
Value:
Definition at line 398 of file rational.c.
| #define get_dat2 | ( | x, | |||
| y | ) |
Value:
Definition at line 402 of file rational.c.
| #define GMP_GCD_DIGITS 1 |
| #define id_ceil rb_intern("ceil") |
Definition at line 1441 of file rational.c.
Referenced by check_rounding_mode(), and Init_bigdecimal().
| #define id_denominator rb_intern("denominator") |
| #define id_lshift rb_intern("<<") |
Definition at line 1978 of file rational.c.
| #define id_numerator rb_intern("numerator") |
| #define id_quo rb_intern("quo") |
Definition at line 1444 of file rational.c.
Referenced by Init_Complex(), Init_Time(), nucomp_div(), quo(), and wquo().
| #define id_to_r rb_intern("to_r") |
Definition at line 1782 of file rational.c.
Referenced by GetVpValueWithPrec(), Init_bigdecimal(), and Init_Complex().
| #define k_exact_one_p | ( | x | ) | (k_exact_p(x) && f_one_p(x)) |
Definition at line 270 of file rational.c.
| #define k_exact_p | ( | x | ) | (!k_float_p(x)) |
Definition at line 266 of file rational.c.
| #define k_exact_zero_p | ( | x | ) | (k_exact_p(x) && f_zero_p(x)) |
Definition at line 269 of file rational.c.
| #define k_inexact_p | ( | x | ) | k_float_p(x) |
Definition at line 267 of file rational.c.
| #define NDEBUG |
Definition at line 17 of file rational.c.
| #define ONE INT2FIX(1) |
Definition at line 26 of file rational.c.
| #define rb_intern | ( | str | ) | rb_intern_const(str) |
| #define rb_raise_zerodiv | ( | ) | rb_raise(rb_eZeroDivError, "divided by 0") |
Definition at line 424 of file rational.c.
| #define TWO INT2FIX(2) |
Definition at line 27 of file rational.c.
| #define ZERO INT2FIX(0) |
Definition at line 25 of file rational.c.
| binop | ( | mod | , | |
| '%' | ||||
| ) |
Definition at line 102 of file rational.c.
References FIX2LONG, FIXNUM_P, rb_funcall(), RB_TYPE_P, T_BIGNUM, and ZERO.
| static VALUE f_add | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
| static VALUE f_addsub | ( | VALUE | self, | |
| VALUE | anum, | |||
| VALUE | aden, | |||
| VALUE | bnum, | |||
| VALUE | bden, | |||
| int | k | |||
| ) | [inline, static] |
| static VALUE f_cmp | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 73 of file rational.c.
References FIX2LONG, FIXNUM_P, id_cmp, INT2FIX, and rb_funcall().
| static VALUE f_div | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
| static VALUE f_eqeq_p | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 156 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, id_eqeq_p, and rb_funcall().
| static VALUE f_format | ( | VALUE | self, | |
| VALUE(*)(VALUE) | func | |||
| ) | [static] |
Definition at line 1591 of file rational.c.
References get_dat1, rb_str_cat2(), and rb_str_concat().
| static VALUE f_gcd | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 362 of file rational.c.
References f_gcd_normal(), GMP_GCD_DIGITS, RB_TYPE_P, RBIGNUM_LEN, and T_BIGNUM.
Referenced by f_addsub(), f_lcm(), f_muldiv(), nurat_s_canonicalize_internal(), rb_gcd(), and rb_gcdlcm().
| static VALUE f_gcd_normal | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 324 of file rational.c.
References f_mod, f_negate, f_negative_p(), f_zero_p(), FIX2LONG, FIXNUM_P, i_gcd(), LONG2NUM, and VALUE.
Referenced by f_gcd(), and rb_gcd_normal().
| static VALUE f_imul | ( | long | a, | |
| long | b | |||
| ) | [inline, static] |
Definition at line 652 of file rational.c.
References LONG2NUM, MUL_OVERFLOW_LONG_P, rb_big_mul(), rb_int2big(), VALUE, and ZERO.
Referenced by f_addsub(), f_muldiv(), and nurat_cmp().
| static VALUE f_kind_of_p | ( | VALUE | x, | |
| VALUE | c | |||
| ) | [inline, static] |
| static VALUE f_lcm | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 391 of file rational.c.
References f_abs, f_div, f_gcd(), f_mul, f_zero_p(), and ZERO.
Referenced by rb_gcdlcm(), and rb_lcm().
| static VALUE f_lt_p | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 95 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, and rb_funcall().
| static VALUE f_minus_one_p | ( | VALUE | x | ) | [inline, static] |
Definition at line 218 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, id_eqeq_p, INT2FIX, Qfalse, rb_funcall(), RB_TYPE_P, RRATIONAL, T_BIGNUM, T_FIXNUM, T_RATIONAL, and VALUE.
Referenced by nurat_expt().
| static VALUE f_muldiv | ( | VALUE | self, | |
| VALUE | anum, | |||
| VALUE | aden, | |||
| VALUE | bnum, | |||
| VALUE | bden, | |||
| int | k | |||
| ) | [inline, static] |
Definition at line 814 of file rational.c.
References CLASS_OF, f_gcd(), f_idiv, f_imul(), f_mul, f_negate, f_negative_p(), f_rational_new_no_reduce2(), FIX2LONG, FIXNUM_P, i_gcd(), and VALUE.
Referenced by nurat_div(), and nurat_mul().
| static VALUE f_odd_p | ( | VALUE | integer | ) | [inline, static] |
Definition at line 961 of file rational.c.
References INT2FIX, Qfalse, Qtrue, and rb_funcall().
Referenced by nurat_expt().
| static VALUE f_one_p | ( | VALUE | x | ) | [inline, static] |
Definition at line 199 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, id_eqeq_p, ONE, Qfalse, rb_funcall(), RB_TYPE_P, RRATIONAL, T_BIGNUM, T_FIXNUM, T_RATIONAL, and VALUE.
| static VALUE f_rational_new2 | ( | VALUE | klass, | |
| VALUE | x, | |||
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 564 of file rational.c.
References assert, k_rational_p(), and nurat_s_canonicalize_internal().
Referenced by nurat_expt(), and nurat_rationalize().
| static VALUE f_rational_new_bang1 | ( | VALUE | klass, | |
| VALUE | x | |||
| ) | [inline, static] |
Definition at line 461 of file rational.c.
References nurat_s_new_internal(), and ONE.
Referenced by f_round_common(), nurat_cmp(), nurat_coerce(), and nurat_expt().
| static VALUE f_rational_new_no_reduce2 | ( | VALUE | klass, | |
| VALUE | x, | |||
| VALUE | y | |||
| ) | [inline, static] |
Definition at line 572 of file rational.c.
References assert, k_rational_p(), and nurat_s_canonicalize_internal_no_reduce().
Referenced by f_addsub(), f_muldiv(), nurat_div(), and rb_rational_reciprocal().
| static VALUE f_round_common | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self, | |||
| VALUE(*)(VALUE) | func | |||
| ) | [static] |
Definition at line 1276 of file rational.c.
References CLASS_OF, f_div, f_expt10, f_lt_p, f_mul, f_rational_new_bang1(), f_to_i, k_float_p(), k_integer_p(), k_rational_p(), ONE, rb_eTypeError, rb_raise(), rb_scan_args(), and ZERO.
Referenced by nurat_ceil_n(), nurat_floor_n(), nurat_round_n(), and nurat_truncate_n().
| static VALUE f_sub | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [inline, static] |
| static VALUE f_to_f | ( | VALUE | x | ) | [inline, static] |
Definition at line 148 of file rational.c.
References DBL2NUM, id_to_f, rb_funcall(), rb_str_to_dbl(), RB_TYPE_P, and T_STRING.
| static VALUE f_zero_p | ( | VALUE | x | ) | [inline, static] |
Definition at line 180 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, id_eqeq_p, Qfalse, rb_funcall(), RB_TYPE_P, RRATIONAL, T_BIGNUM, T_FIXNUM, T_RATIONAL, VALUE, and ZERO.
| static void float_decode_internal | ( | VALUE | self, | |
| VALUE * | rf, | |||
| VALUE * | rn | |||
| ) | [static] |
Definition at line 1955 of file rational.c.
References DBL_MANT_DIG, f, INT2FIX, rb_dbl2big(), and RFLOAT_VALUE.
Referenced by float_to_r(), and rb_flt_rationalize().
| static VALUE float_denominator | ( | VALUE | self | ) | [static] |
Definition at line 1891 of file rational.c.
References INT2FIX, isinf(), isnan, rb_call_super(), and RFLOAT_VALUE.
Referenced by Init_Rational().
| static VALUE float_numerator | ( | VALUE | self | ) | [static] |
Definition at line 1873 of file rational.c.
References isinf(), isnan, rb_call_super(), and RFLOAT_VALUE.
Referenced by Init_Rational().
| static VALUE float_rationalize | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 2088 of file rational.c.
References f_abs, f_negate, f_negative_p(), rb_flt_rationalize(), rb_flt_rationalize_with_prec(), rb_scan_args(), and VALUE.
Referenced by Init_Rational().
| static VALUE float_to_r | ( | VALUE | self | ) | [static] |
Definition at line 1998 of file rational.c.
References f, f_expt, f_lshift, f_mul, f_to_r, FIX2LONG, float_decode_internal(), FLT_RADIX, INT2FIX, ONE, rb_rational_new2, and VALUE.
Referenced by Init_Rational().
| fun1 | ( | abs | ) |
Definition at line 136 of file rational.c.
References id_to_i, rb_funcall(), rb_str_to_inum(), RB_TYPE_P, and T_STRING.
| fun2 | ( | expt | ) |
Definition at line 163 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, rb_funcall(), and ZERO.
| static long i_gcd | ( | long | x, | |
| long | y | |||
| ) | [inline, static] |
Definition at line 303 of file rational.c.
Referenced by f_addsub(), f_gcd_normal(), and f_muldiv().
| void Init_Rational | ( | void | ) |
Definition at line 2488 of file rational.c.
References assert, CLASS_OF, float_denominator(), float_numerator(), float_rationalize(), float_to_r(), id_abs, id_cmp, id_convert, id_eqeq_p, id_expt, id_fdiv, id_i_den, id_i_num, id_idiv, id_integer_p, id_negate, id_to_f, id_to_i, id_truncate, integer_denominator(), integer_numerator(), integer_rationalize(), integer_to_r(), nilclass_rationalize(), nilclass_to_r(), numeric_denominator(), numeric_numerator(), numeric_quo(), nurat_add(), nurat_ceil_n(), nurat_cmp(), nurat_coerce(), nurat_denominator(), nurat_div(), nurat_dumper(), nurat_eqeq_p(), nurat_expt(), nurat_f_rational(), nurat_fdiv(), nurat_floor_n(), nurat_hash(), nurat_inspect(), nurat_loader(), nurat_marshal_dump(), nurat_marshal_load(), nurat_mul(), nurat_numerator(), nurat_rationalize(), nurat_round_n(), nurat_s_alloc(), nurat_s_convert(), nurat_s_new(), nurat_sub(), nurat_to_f(), nurat_to_r(), nurat_to_s(), nurat_truncate(), nurat_truncate_n(), rb_cFloat, rb_cInteger, rb_cNilClass, rb_cNumeric, rb_cObject, rb_cRational, rb_cString, rb_define_alloc_func(), rb_define_class(), rb_define_class_under(), rb_define_global_function(), rb_define_method(), rb_define_private_method(), rb_gcd(), rb_gcdlcm(), rb_intern, rb_lcm(), rb_marshal_define_compat(), rb_undef_method(), string_to_r(), and VALUE.
| static VALUE integer_denominator | ( | VALUE | self | ) | [static] |
| static VALUE integer_numerator | ( | VALUE | self | ) | [static] |
| static VALUE integer_rationalize | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 1948 of file rational.c.
References integer_to_r(), NULL, and rb_scan_args().
Referenced by Init_Rational().
| static VALUE integer_to_r | ( | VALUE | self | ) | [static] |
Definition at line 1935 of file rational.c.
References rb_rational_new1.
Referenced by Init_Rational(), and integer_rationalize().
| static int isdecimal | ( | int | c | ) | [inline, static] |
Definition at line 2126 of file rational.c.
| static int islettere | ( | int | c | ) | [inline, static] |
Definition at line 2176 of file rational.c.
| static int issign | ( | int | c | ) | [inline, static] |
Definition at line 2108 of file rational.c.
| static VALUE k_float_p | ( | VALUE | x | ) | [inline, static] |
| static VALUE k_integer_p | ( | VALUE | x | ) | [inline, static] |
Definition at line 249 of file rational.c.
References f_kind_of_p(), and rb_cInteger.
Referenced by f_round_common(), nurat_expt(), nurat_int_value(), and nurat_s_convert().
| static VALUE k_numeric_p | ( | VALUE | x | ) | [inline, static] |
| static VALUE k_rational_p | ( | VALUE | x | ) | [inline, static] |
| static VALUE nilclass_rationalize | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 1919 of file rational.c.
References nilclass_to_r(), NULL, and rb_scan_args().
Referenced by Init_Rational().
| static VALUE nilclass_to_r | ( | VALUE | self | ) | [static] |
Definition at line 1906 of file rational.c.
References INT2FIX, and rb_rational_new1.
Referenced by Init_Rational(), and nilclass_rationalize().
| static VALUE numeric_denominator | ( | VALUE | self | ) | [static] |
Definition at line 1804 of file rational.c.
References f_denominator, and f_to_r.
Referenced by Init_Rational().
| static VALUE numeric_numerator | ( | VALUE | self | ) | [static] |
Definition at line 1792 of file rational.c.
References f_numerator, and f_to_r.
Referenced by Init_Rational().
| static VALUE numeric_quo | ( | VALUE | x, | |
| VALUE | y | |||
| ) | [static] |
Definition at line 1819 of file rational.c.
References rb_convert_type(), rb_funcall(), rb_rational_raw1, RB_TYPE_P, T_FLOAT, and T_RATIONAL.
Referenced by Init_Rational().
| static VALUE nurat_add | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 744 of file rational.c.
References f_add, f_addsub(), f_to_f(), get_dat1, get_dat2, ONE, rb_num_coerce_bin(), RB_TYPE_P, T_BIGNUM, T_FIXNUM, T_FLOAT, and T_RATIONAL.
Referenced by Init_Rational().
| static VALUE nurat_ceil | ( | VALUE | self | ) | [static] |
Definition at line 1221 of file rational.c.
References f_idiv, f_negate, and get_dat1.
Referenced by nurat_ceil_n().
| static VALUE nurat_ceil_n | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 1354 of file rational.c.
References f_round_common(), and nurat_ceil().
Referenced by Init_Rational().
| static VALUE nurat_cmp | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 1067 of file rational.c.
References CLASS_OF, f_cmp(), f_imul(), f_mul, f_rational_new_bang1(), f_sub, f_to_f(), FIX2LONG, FIXNUM_P, get_dat1, get_dat2, id_cmp, rb_num_coerce_cmp(), RB_TYPE_P, T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, VALUE, and ZERO.
Referenced by Init_Rational().
| static VALUE nurat_coerce | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 1156 of file rational.c.
References CLASS_OF, f_rational_new_bang1(), f_to_f(), INT2FIX, k_exact_zero_p, Qnil, rb_assoc_new(), rb_Complex(), rb_eTypeError, rb_obj_classname(), rb_raise(), RB_TYPE_P, RCOMPLEX, T_BIGNUM, T_COMPLEX, T_FIXNUM, T_FLOAT, and T_RATIONAL.
Referenced by Init_Rational().
| static VALUE nurat_denominator | ( | VALUE | self | ) | [static] |
| static VALUE nurat_div | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 907 of file rational.c.
References CLASS_OF, f_muldiv(), f_one_p(), f_rational_new_no_reduce2(), f_to_f(), f_zero_p(), get_dat1, get_dat2, ONE, rb_funcall(), rb_num_coerce_bin(), rb_raise_zerodiv, RB_TYPE_P, T_BIGNUM, T_FIXNUM, T_FLOAT, and T_RATIONAL.
Referenced by Init_Rational().
| static VALUE nurat_dumper | ( | VALUE | self | ) | [static] |
| static VALUE nurat_eqeq_p | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 1117 of file rational.c.
References f_boolcast, f_eqeq_p(), f_to_f(), f_zero_p(), FIX2LONG, FIXNUM_P, get_dat1, get_dat2, Qfalse, Qtrue, RB_TYPE_P, T_BIGNUM, T_FIXNUM, T_FLOAT, and T_RATIONAL.
Referenced by Init_Rational().
| static VALUE nurat_expt | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 983 of file rational.c.
References CLASS_OF, f_cmp(), f_expt, f_minus_one_p(), f_negate, f_odd_p(), f_one_p(), f_rational_new2(), f_rational_new_bang1(), f_to_f(), f_zero_p(), FIX2INT, get_dat1, id_expt, INT2FIX, k_exact_p, k_exact_zero_p, k_integer_p(), k_numeric_p(), k_rational_p(), ONE, rb_num_coerce_bin(), rb_raise_zerodiv, RB_TYPE_P, rb_warn(), T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, VALUE, and ZERO.
Referenced by Init_Rational().
| static VALUE nurat_f_rational | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | klass | |||
| ) | [static] |
Definition at line 605 of file rational.c.
References id_convert, rb_cRational, and rb_funcall2.
Referenced by Init_Rational().
| static VALUE nurat_fdiv | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 953 of file rational.c.
References f_div, f_to_f(), and f_zero_p().
Referenced by Init_Rational().
| static VALUE nurat_floor | ( | VALUE | self | ) | [static] |
Definition at line 1214 of file rational.c.
References f_idiv, and get_dat1.
Referenced by nurat_floor_n().
| static VALUE nurat_floor_n | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 1330 of file rational.c.
References f_round_common(), and nurat_floor().
Referenced by Init_Rational().
| static VALUE nurat_hash | ( | VALUE | self | ) | [static] |
Definition at line 1576 of file rational.c.
References get_dat1, LONG2FIX, NUM2LONG, rb_hash(), rb_memhash(), and VALUE.
Referenced by Init_Rational().
| static VALUE nurat_inspect | ( | VALUE | self | ) | [static] |
Definition at line 1630 of file rational.c.
References f_format(), f_inspect, rb_str_cat2(), rb_str_concat(), rb_usascii_str_new2, and VALUE.
Referenced by Init_Rational().
| static void nurat_int_check | ( | VALUE | num | ) | [inline, static] |
Definition at line 481 of file rational.c.
References k_numeric_p(), rb_eTypeError, rb_raise(), RB_TYPE_P, T_BIGNUM, and T_FIXNUM.
Referenced by nurat_int_value().
| static VALUE nurat_int_value | ( | VALUE | num | ) | [inline, static] |
Definition at line 490 of file rational.c.
References f_to_i, k_integer_p(), and nurat_int_check().
Referenced by nurat_s_new(), rb_gcd(), rb_gcdlcm(), and rb_lcm().
| static VALUE nurat_loader | ( | VALUE | self, | |
| VALUE | a | |||
| ) | [static] |
Definition at line 1650 of file rational.c.
References get_dat1, id_i_den, id_i_num, rb_ivar_get(), RRATIONAL_SET_DEN, and RRATIONAL_SET_NUM.
Referenced by Init_Rational().
| static VALUE nurat_marshal_dump | ( | VALUE | self | ) | [static] |
Definition at line 1662 of file rational.c.
References get_dat1, rb_assoc_new(), rb_copy_generic_ivar(), and VALUE.
Referenced by Init_Rational().
| static VALUE nurat_marshal_load | ( | VALUE | self, | |
| VALUE | a | |||
| ) | [static] |
Definition at line 1674 of file rational.c.
References Check_Type, f_zero_p(), id_i_den, id_i_num, RARRAY_AREF, RARRAY_LEN, rb_check_frozen, rb_check_trusted, rb_eArgError, rb_ivar_set(), rb_raise(), rb_raise_zerodiv, and T_ARRAY.
Referenced by Init_Rational().
| static VALUE nurat_mul | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 865 of file rational.c.
References f_mul, f_muldiv(), f_to_f(), get_dat1, get_dat2, ONE, rb_num_coerce_bin(), RB_TYPE_P, T_BIGNUM, T_FIXNUM, T_FLOAT, and T_RATIONAL.
Referenced by Init_Rational().
| static VALUE nurat_numerator | ( | VALUE | self | ) | [static] |
| static VALUE nurat_rationalize | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 1552 of file rational.c.
References CLASS_OF, f_abs, f_add, f_eqeq_p(), f_negate, f_negative_p(), f_rational_new2(), f_sub, nurat_rationalize_internal(), rb_scan_args(), and VALUE.
Referenced by Init_Rational().
| static void nurat_rationalize_internal | ( | VALUE | a, | |
| VALUE | b, | |||
| VALUE * | p, | |||
| VALUE * | q | |||
| ) | [static] |
Definition at line 1509 of file rational.c.
References f_add, f_ceil, f_lt_p, f_mul, f_reciprocal, f_sub, ONE, VALUE, and ZERO.
Referenced by nurat_rationalize(), rb_flt_rationalize(), and rb_flt_rationalize_with_prec().
| static VALUE nurat_round | ( | VALUE | self | ) | [static] |
Definition at line 1252 of file rational.c.
References f_add, f_idiv, f_mul, f_negate, f_negative_p(), get_dat1, neg, TWO, and VALUE.
Referenced by nurat_round_n().
| static VALUE nurat_round_n | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 1403 of file rational.c.
References f_round_common(), and nurat_round().
Referenced by Init_Rational().
| static VALUE nurat_s_alloc | ( | VALUE | klass | ) | [static] |
Definition at line 419 of file rational.c.
References nurat_s_new_internal(), ONE, and ZERO.
Referenced by Init_Rational().
| static VALUE nurat_s_canonicalize_internal | ( | VALUE | klass, | |
| VALUE | num, | |||
| VALUE | den | |||
| ) | [inline, static] |
Definition at line 499 of file rational.c.
References f_cmp(), f_gcd(), f_idiv, f_negate, f_one_p(), FIX2INT, nurat_s_new_internal(), rb_raise_zerodiv, VALUE, and ZERO.
Referenced by f_rational_new2(), nurat_s_new(), and rb_rational_new().
| static VALUE nurat_s_canonicalize_internal_no_reduce | ( | VALUE | klass, | |
| VALUE | num, | |||
| VALUE | den | |||
| ) | [inline, static] |
Definition at line 525 of file rational.c.
References f_cmp(), f_negate, f_one_p(), FIX2INT, nurat_s_new_internal(), rb_raise_zerodiv, and ZERO.
Referenced by f_rational_new_no_reduce2().
| static VALUE nurat_s_convert | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | klass | |||
| ) | [static] |
Definition at line 2386 of file rational.c.
References f_div, f_to_r, k_exact_one_p, k_exact_zero_p, k_integer_p(), k_numeric_p(), NIL_P, nurat_s_new(), rb_backref_get(), rb_backref_set(), rb_convert_type(), rb_eTypeError, rb_match_busy(), rb_raise(), rb_scan_args(), RB_TYPE_P, RCOMPLEX, string_to_r_strict(), T_COMPLEX, T_FLOAT, T_RATIONAL, T_STRING, and VALUE.
Referenced by Init_Rational(), and rb_Rational().
| static VALUE nurat_s_new | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | klass | |||
| ) | [static] |
Definition at line 545 of file rational.c.
References nurat_int_value(), nurat_s_canonicalize_internal(), ONE, rb_scan_args(), and VALUE.
Referenced by Init_Rational(), and nurat_s_convert().
| static VALUE nurat_s_new_internal | ( | VALUE | klass, | |
| VALUE | num, | |||
| VALUE | den | |||
| ) | [inline, static] |
Definition at line 408 of file rational.c.
References FL_WB_PROTECTED, NEWOBJ_OF, RGENGC_WB_PROTECTED_RATIONAL, RRATIONAL_SET_DEN, RRATIONAL_SET_NUM, T_RATIONAL, and VALUE.
Referenced by f_rational_new_bang1(), nurat_s_alloc(), nurat_s_canonicalize_internal(), nurat_s_canonicalize_internal_no_reduce(), and rb_rational_raw().
| static VALUE nurat_sub | ( | VALUE | self, | |
| VALUE | other | |||
| ) | [static] |
Definition at line 785 of file rational.c.
References f_addsub(), f_sub, f_to_f(), get_dat1, get_dat2, ONE, rb_num_coerce_bin(), RB_TYPE_P, T_BIGNUM, T_FIXNUM, T_FLOAT, and T_RATIONAL.
Referenced by Init_Rational().
| static VALUE nurat_to_f | ( | VALUE | self | ) | [static] |
| static VALUE nurat_to_r | ( | VALUE | self | ) | [static] |
| static VALUE nurat_to_s | ( | VALUE | self | ) | [static] |
Definition at line 1614 of file rational.c.
References f_format(), and f_to_s.
Referenced by Init_Rational().
| static VALUE nurat_truncate | ( | VALUE | self | ) | [static] |
Definition at line 1243 of file rational.c.
References f_idiv, f_negate, f_negative_p(), and get_dat1.
Referenced by Init_Rational(), and nurat_truncate_n().
| static VALUE nurat_truncate_n | ( | int | argc, | |
| VALUE * | argv, | |||
| VALUE | self | |||
| ) | [static] |
Definition at line 1378 of file rational.c.
References f_round_common(), and nurat_truncate().
Referenced by Init_Rational().
| static int parse_rat | ( | const char * | s, | |
| int | strict, | |||
| VALUE * | num | |||
| ) | [static] |
Definition at line 2277 of file rational.c.
References read_rat(), and skip_ws().
Referenced by rb_cstr_to_rat(), string_to_r(), and string_to_r_strict().
| VALUE rb_cstr_to_rat | ( | const char * | s, | |
| int | strict | |||
| ) |
Definition at line 2374 of file rational.c.
References parse_rat(), rb_eFloatDomainError, rb_raise(), RB_TYPE_P, T_FLOAT, and VALUE.
Referenced by str2num().
| VALUE rb_flt_rationalize | ( | VALUE | flt | ) |
Definition at line 2036 of file rational.c.
References f, f_add, f_eqeq_p(), f_expt, f_lshift, f_mul, f_positive_p, f_sub, f_to_r, f_zero_p(), float_decode_internal(), FLT_RADIX, INT2FIX, nurat_rationalize_internal(), ONE, rb_rational_new1, rb_rational_new2, TWO, and VALUE.
Referenced by float_rationalize().
| VALUE rb_flt_rationalize_with_prec | ( | VALUE | flt, | |
| VALUE | prec | |||
| ) |
Definition at line 2020 of file rational.c.
References f_abs, f_add, f_eqeq_p(), f_sub, f_to_r, nurat_rationalize_internal(), rb_rational_new2, and VALUE.
Referenced by float_rationalize().
| VALUE rb_gcd | ( | VALUE | self, | |
| VALUE | other | |||
| ) |
Definition at line 1712 of file rational.c.
References f_gcd(), and nurat_int_value().
Referenced by Init_Rational().
| VALUE rb_gcd_normal | ( | VALUE | x, | |
| VALUE | y | |||
| ) |
| VALUE rb_gcdlcm | ( | VALUE | self, | |
| VALUE | other | |||
| ) |
Definition at line 1747 of file rational.c.
References f_gcd(), f_lcm(), nurat_int_value(), and rb_assoc_new().
Referenced by Init_Rational().
| VALUE rb_lcm | ( | VALUE | self, | |
| VALUE | other | |||
| ) |
Definition at line 1730 of file rational.c.
References f_lcm(), and nurat_int_value().
Referenced by Init_Rational(), and nucomp_denominator().
| VALUE rb_Rational | ( | VALUE | x, | |
| VALUE | y | |||
| ) |
Definition at line 1768 of file rational.c.
References nurat_s_convert(), rb_cRational, and VALUE.
Referenced by BigDecimal_to_r().
| VALUE rb_rational_new | ( | VALUE | x, | |
| VALUE | y | |||
| ) |
Definition at line 1760 of file rational.c.
References nurat_s_canonicalize_internal(), and rb_cRational.
Referenced by parser_yylex().
| VALUE rb_rational_raw | ( | VALUE | x, | |
| VALUE | y | |||
| ) |
| VALUE rb_rational_reciprocal | ( | VALUE | x | ) |
Definition at line 1694 of file rational.c.
References CLASS_OF, f_rational_new_no_reduce2(), and get_dat1.
Referenced by fix_divide().
| static int read_den | ( | const char ** | s, | |
| int | strict, | |||
| VALUE * | num | |||
| ) | [inline, static] |
| static int read_digits | ( | const char ** | s, | |
| int | strict, | |||
| VALUE * | num, | |||
| int * | count | |||
| ) | [static] |
Definition at line 2132 of file rational.c.
References ALLOCV_END, ALLOCV_N, isdecimal(), rb_cstr_to_inum(), strlen(), VALUE, and ZERO.
| static int read_num | ( | const char ** | s, | |
| int | numsign, | |||
| int | strict, | |||
| VALUE * | num | |||
| ) | [static] |
Definition at line 2182 of file rational.c.
References count, f_add, f_div, f_expt10, f_mul, f_negate, INT2NUM, islettere(), NIL_P, NULL, ONE, Qnil, rb_rational_new2, read_digits(), read_sign(), VALUE, and ZERO.
| static int read_rat | ( | const char ** | s, | |
| int | strict, | |||
| VALUE * | num | |||
| ) | [static] |
| static int read_rat_nos | ( | const char ** | s, | |
| int | sign, | |||
| int | strict, | |||
| VALUE * | num | |||
| ) | [static] |
Definition at line 2240 of file rational.c.
References f_div, FIX2LONG, FIXNUM_P, read_den(), read_num(), and VALUE.
| static int read_sign | ( | const char ** | s | ) | [static] |
| static void skip_ws | ( | const char ** | s | ) | [inline, static] |
Definition at line 2270 of file rational.c.
| static VALUE string_to_r | ( | VALUE | self | ) | [static] |
Definition at line 2348 of file rational.c.
References parse_rat(), rb_eFloatDomainError, rb_must_asciicompat(), rb_raise(), rb_str_modify(), RB_TYPE_P, RSTRING_LEN, RSTRING_PTR, T_FLOAT, and VALUE.
Referenced by Init_Rational().
| static VALUE string_to_r_strict | ( | VALUE | self | ) | [static] |
Definition at line 2292 of file rational.c.
References f_inspect, parse_rat(), rb_eArgError, rb_eFloatDomainError, rb_must_asciicompat(), rb_raise(), rb_str_modify(), RB_TYPE_P, RSTRING_LEN, RSTRING_PTR, StringValuePtr, T_FLOAT, and VALUE.
Referenced by nurat_s_convert().
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
ID id_convert [static] |
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
Referenced by Init_Rational(), nurat_loader(), and nurat_marshal_load().
Definition at line 33 of file rational.c.
Referenced by Init_Rational(), nurat_loader(), and nurat_marshal_load().
ID id_integer_p [static] |
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
Definition at line 33 of file rational.c.
ID id_truncate [static] |
Definition at line 33 of file rational.c.
| VALUE rb_cRational |
Definition at line 31 of file rational.c.
1.4.7