|
Ruby 1.9.2p290(2011-07-09revision32553)
|
#include "ruby.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 | f_boolcast(x) ((x) ? Qtrue : Qfalse) |
| #define | binop(n, op) |
| #define | fun1(n) |
| #define | fun2(n) |
| #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 | f_gcd f_gcd_orig |
| #define | get_dat1(x) |
| #define | get_dat2(x, y) |
| #define | rb_raise_zerodiv() rb_raise(rb_eZeroDivError, "divided by 0") |
| #define | f_imul f_imul_orig |
| #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 | WS "\\s*" |
| #define | DIGITS "(?:[0-9](?:_[0-9]|[0-9])*)" |
| #define | NUMERATOR "(?:" DIGITS "?\\.)?" DIGITS "(?:[eE][-+]?" DIGITS ")?" |
| #define | DENOMINATOR DIGITS |
| #define | PATTERN "\\A" WS "([-+])?(" NUMERATOR ")(?:\\/(" DENOMINATOR "))?" WS |
| #define | id_match rb_intern("match") |
| #define | f_match(x, y) rb_funcall(x, id_match, 1, y) |
| #define | id_aref rb_intern("[]") |
| #define | f_aref(x, y) rb_funcall(x, id_aref, 1, y) |
| #define | id_post_match rb_intern("post_match") |
| #define | f_post_match(x) rb_funcall(x, id_post_match, 0) |
| #define | id_split rb_intern("split") |
| #define | f_split(x, y) rb_funcall(x, id_split, 1, y) |
| #define | id_gsub rb_intern("gsub") |
| #define | f_gsub(x, y, z) rb_funcall(x, id_gsub, 2, y, z) |
| #define | id_to_r rb_intern("to_r") |
| #define | f_to_r(x) rb_funcall(x, id_to_r, 0) |
| #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_gt_p (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) | |
| fun2 (expt) | |
| static VALUE | f_zero_p (VALUE x) |
| static VALUE | f_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 (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 VALUE | f_rational_new_bang2 (VALUE klass, VALUE x, VALUE y) |
| 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_new1 (VALUE klass, VALUE x) |
| static VALUE | f_rational_new2 (VALUE klass, VALUE x, VALUE y) |
| static VALUE | f_rational_new_no_reduce1 (VALUE klass, VALUE x) |
| 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 | 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_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 | 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) |
| static VALUE | float_rationalize (int argc, VALUE *argv, VALUE self) |
| static void | make_patterns (void) |
| static VALUE | string_to_r_internal (VALUE self) |
| static VALUE | string_to_r_strict (VALUE self) |
| static VALUE | string_to_r (VALUE self) |
| 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_floor |
| static ID | id_idiv |
| static ID | id_inspect |
| static ID | id_integer_p |
| static ID | id_negate |
| static ID | id_to_f |
| static ID | id_to_i |
| static ID | id_to_s |
| static ID | id_truncate |
| static VALUE | rat_pat |
| static VALUE | an_e_pat |
| static VALUE | a_dot_pat |
| static VALUE | underscores_pat |
| static VALUE | an_underscore |
| #define binop | ( | n, | |
| op | |||
| ) |
inline static VALUE \ f_##n(VALUE x, VALUE y)\ {\ return rb_funcall(x, op, 1, y);\ }
Definition at line 31 of file rational.c.
| #define DENOMINATOR DIGITS |
Definition at line 1963 of file rational.c.
| #define DIGITS "(?:[0-9](?:_[0-9]|[0-9])*)" |
Definition at line 1961 of file rational.c.
| #define f_aref | ( | x, | |
| y | |||
| ) | rb_funcall(x, id_aref, 1, y) |
Definition at line 1997 of file rational.c.
Referenced by string_to_r_internal().
| #define f_boolcast | ( | x | ) | ((x) ? Qtrue : Qfalse) |
Definition at line 29 of file rational.c.
Referenced by f_gt_p(), f_lt_p(), f_one_p(), f_zero_p(), fun1(), fun2(), and nurat_eqeq_p().
| #define f_ceil | ( | x | ) | rb_funcall(x, id_ceil, 0) |
Definition at line 1358 of file rational.c.
Referenced by nurat_rationalize_internal().
| #define f_denominator | ( | x | ) | rb_funcall(x, id_denominator, 0) |
Definition at line 1686 of file rational.c.
Referenced by nucomp_denominator(), nucomp_expt(), nucomp_numerator(), and numeric_denominator().
| #define f_gcd f_gcd_orig |
Definition at line 243 of file rational.c.
Referenced by f_addsub(), f_lcm(), f_muldiv(), nurat_s_canonicalize_internal(), rb_gcd(), and rb_gcdlcm().
| #define f_gsub | ( | x, | |
| y, | |||
| z | |||
| ) | rb_funcall(x, id_gsub, 2, y, z) |
Definition at line 2091 of file rational.c.
Referenced by string_to_r().
| #define f_imul f_imul_orig |
Definition at line 584 of file rational.c.
Referenced by f_addsub(), f_muldiv(), and nurat_cmp().
| #define f_lshift | ( | x, | |
| n | |||
| ) | rb_funcall(x, id_lshift, 1, n) |
Definition at line 1860 of file rational.c.
Referenced by float_rationalize(), and float_to_r().
| #define f_match | ( | x, | |
| y | |||
| ) | rb_funcall(x, id_match, 1, y) |
Definition at line 1994 of file rational.c.
Referenced by string_to_r_internal().
| #define f_nonzero_p | ( | x | ) | (!f_zero_p(x)) |
Definition at line 184 of file rational.c.
Referenced by f_rational_new_bang2().
| #define f_numerator | ( | x | ) | rb_funcall(x, id_numerator, 0) |
Definition at line 1683 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 164 of file rational.c.
Referenced by f_rational_new_bang2(), and float_rationalize().
| #define f_post_match | ( | x | ) | rb_funcall(x, id_post_match, 0) |
Definition at line 2000 of file rational.c.
Referenced by string_to_r_internal().
| #define f_quo | ( | x, | |
| y | |||
| ) | rb_funcall(x, id_quo, 1, y) |
Definition at line 1361 of file rational.c.
Referenced by f_reciprocal(), and nucomp_div().
| #define f_reciprocal | ( | x | ) | f_quo(ONE, x) |
Definition at line 1363 of file rational.c.
Referenced by nurat_rationalize_internal().
| #define f_split | ( | x, | |
| y | |||
| ) | rb_funcall(x, id_split, 1, y) |
Definition at line 2003 of file rational.c.
Referenced by string_to_r_internal().
| #define f_to_r | ( | x | ) | rb_funcall(x, id_to_r, 0) |
Definition at line 2135 of file rational.c.
| #define f_to_r | ( | x | ) | rb_funcall(x, id_to_r, 0) |
Definition at line 2135 of file rational.c.
Referenced by float_rationalize(), float_to_r(), nucomp_to_r(), numeric_denominator(), numeric_numerator(), nurat_s_convert(), and string_to_c_internal().
| #define fun1 | ( | n | ) |
inline static VALUE \ f_##n(VALUE x)\ {\ return rb_funcall(x, id_##n, 0);\ }
Definition at line 38 of file rational.c.
| #define fun2 | ( | n | ) |
inline static VALUE \ f_##n(VALUE x, VALUE y)\ {\ return rb_funcall(x, id_##n, 1, y);\ }
Definition at line 45 of file rational.c.
| #define get_dat1 | ( | x | ) |
Definition at line 322 of file rational.c.
Referenced by f_format(), nurat_add(), nurat_ceil(), nurat_cmp(), nurat_denominator(), nurat_div(), nurat_eqeq_p(), nurat_expt(), nurat_floor(), nurat_hash(), nurat_marshal_dump(), nurat_marshal_load(), nurat_mul(), nurat_numerator(), nurat_round(), nurat_sub(), nurat_to_f(), nurat_truncate(), and rb_rational_reciprocal().
| #define get_dat2 | ( | x, | |
| y | |||
| ) |
Definition at line 326 of file rational.c.
Referenced by nurat_add(), nurat_cmp(), nurat_div(), nurat_eqeq_p(), nurat_mul(), and nurat_sub().
| #define id_aref rb_intern("[]") |
Definition at line 1996 of file rational.c.
| #define id_ceil rb_intern("ceil") |
Definition at line 1357 of file rational.c.
| #define id_denominator rb_intern("denominator") |
Definition at line 1685 of file rational.c.
| #define id_gsub rb_intern("gsub") |
Definition at line 2090 of file rational.c.
| #define id_lshift rb_intern("<<") |
Definition at line 1859 of file rational.c.
| #define id_match rb_intern("match") |
Definition at line 1993 of file rational.c.
| #define id_numerator rb_intern("numerator") |
Definition at line 1682 of file rational.c.
| #define id_post_match rb_intern("post_match") |
Definition at line 1999 of file rational.c.
| #define id_quo rb_intern("quo") |
Definition at line 1360 of file rational.c.
Referenced by Init_Complex(), Init_Time(), nucomp_div(), quo(), and wquo().
| #define id_split rb_intern("split") |
Definition at line 2002 of file rational.c.
| #define id_to_r rb_intern("to_r") |
Definition at line 2134 of file rational.c.
| #define id_to_r rb_intern("to_r") |
Definition at line 2134 of file rational.c.
| #define k_exact_one_p | ( | x | ) | (k_exact_p(x) && f_one_p(x)) |
Definition at line 240 of file rational.c.
Referenced by nurat_s_convert().
| #define k_exact_p | ( | x | ) | (!k_float_p(x)) |
Definition at line 236 of file rational.c.
| #define k_exact_zero_p | ( | x | ) | (k_exact_p(x) && f_zero_p(x)) |
Definition at line 239 of file rational.c.
Referenced by nurat_coerce(), nurat_expt(), and nurat_s_convert().
| #define k_inexact_p | ( | x | ) | k_float_p(x) |
Definition at line 237 of file rational.c.
| #define NDEBUG |
Definition at line 16 of file rational.c.
| #define NUMERATOR "(?:" DIGITS "?\\.)?" DIGITS "(?:[eE][-+]?" DIGITS ")?" |
Definition at line 1962 of file rational.c.
| #define ONE INT2FIX(1) |
Definition at line 20 of file rational.c.
Referenced by f_one_p(), f_rational_new1(), f_rational_new_bang1(), f_rational_new_no_reduce1(), f_round_common(), float_rationalize(), float_to_r(), nurat_add(), nurat_div(), nurat_expt(), nurat_mul(), nurat_rationalize_internal(), nurat_s_alloc(), nurat_s_new(), and nurat_sub().
| #define PATTERN "\\A" WS "([-+])?(" NUMERATOR ")(?:\\/(" DENOMINATOR "))?" WS |
Definition at line 1964 of file rational.c.
Referenced by make_patterns().
| #define rb_intern | ( | str | ) | rb_intern_const(str) |
| #define rb_raise_zerodiv | ( | ) | rb_raise(rb_eZeroDivError, "divided by 0") |
Definition at line 349 of file rational.c.
Referenced by nurat_div(), nurat_marshal_load(), nurat_s_canonicalize_internal(), and nurat_s_canonicalize_internal_no_reduce().
| #define TWO INT2FIX(2) |
Definition at line 21 of file rational.c.
Referenced by float_rationalize(), and nurat_round().
| #define WS "\\s*" |
Definition at line 1960 of file rational.c.
| #define ZERO INT2FIX(0) |
Definition at line 19 of file rational.c.
Referenced by binop(), f_imul(), f_lcm(), f_zero_p(), fun2(), nurat_cmp(), nurat_expt(), nurat_rationalize_internal(), nurat_s_alloc(), nurat_s_canonicalize_internal(), and nurat_s_canonicalize_internal_no_reduce().
| binop | ( | mod | , |
| '%' | |||
| ) |
Definition at line 100 of file rational.c.
References FIX2LONG, FIXNUM_P, rb_funcall(), T_BIGNUM, TYPE, and ZERO.
Definition at line 53 of file rational.c.
References FIX2LONG, FIXNUM_P, and rb_funcall().
Referenced by f_addsub(), float_rationalize(), nurat_add(), nurat_rationalize(), nurat_rationalize_internal(), nurat_round(), and string_to_r_internal().
| static VALUE f_addsub | ( | VALUE | self, |
| VALUE | anum, | ||
| VALUE | aden, | ||
| VALUE | bnum, | ||
| VALUE | bden, | ||
| int | k | ||
| ) | [inline, static] |
Definition at line 620 of file rational.c.
References CLASS_OF, f_add(), f_gcd, f_imul, f_rational_new_no_reduce2(), f_sub(), FIX2LONG, FIXNUM_P, i_gcd(), and LONG2NUM.
Referenced by nurat_add(), and nurat_sub().
Definition at line 63 of file rational.c.
References FIX2LONG, FIXNUM_P, id_cmp, INT2FIX, and rb_funcall().
Referenced by nurat_cmp(), nurat_expt(), nurat_s_canonicalize_internal(), and nurat_s_canonicalize_internal_no_reduce().
Definition at line 77 of file rational.c.
References FIX2LONG, FIXNUM_P, and rb_funcall().
Referenced by f_lcm(), f_round_common(), nurat_fdiv(), nurat_s_convert(), and string_to_r_internal().
Definition at line 1509 of file rational.c.
References func, get_dat1, rb_str_cat2(), and rb_str_concat().
Referenced by nurat_inspect(), and nurat_to_s().
Definition at line 268 of file rational.c.
References f_zero_p(), FIX2LONG, FIXNUM_P, i_gcd(), and LONG2NUM.
Definition at line 85 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, and rb_funcall().
| static VALUE f_imul | ( | long | a, |
| long | b | ||
| ) | [inline, static] |
Definition at line 588 of file rational.c.
References LONG2NUM, NUM2LONG(), rb_big_mul(), rb_int2big(), and ZERO.
Definition at line 207 of file rational.c.
References rb_obj_is_kind_of().
Referenced by k_float_p(), k_integer_p(), k_numeric_p(), and k_rational_p().
Definition at line 315 of file rational.c.
References f_div(), f_gcd, f_zero_p(), and ZERO.
Referenced by rb_gcdlcm(), and rb_lcm().
Definition at line 93 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, and rb_funcall().
Referenced by f_round_common(), and nurat_rationalize_internal().
| static VALUE f_muldiv | ( | VALUE | self, |
| VALUE | anum, | ||
| VALUE | aden, | ||
| VALUE | bnum, | ||
| VALUE | bden, | ||
| int | k | ||
| ) | [inline, static] |
Definition at line 753 of file rational.c.
References CLASS_OF, f_gcd, f_imul, f_rational_new_no_reduce2(), FIX2LONG, FIXNUM_P, and i_gcd().
Referenced by nurat_div(), and nurat_mul().
Definition at line 187 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, id_eqeq_p, ONE, Qfalse, rb_funcall(), RRATIONAL, T_BIGNUM, T_FIXNUM, T_RATIONAL, and TYPE.
Referenced by nurat_div(), nurat_expt(), nurat_s_canonicalize_internal(), and nurat_s_canonicalize_internal_no_reduce().
Definition at line 501 of file rational.c.
References assert, k_rational_p(), nurat_s_canonicalize_internal(), and ONE.
Definition at line 508 of file rational.c.
References assert, k_rational_p(), and nurat_s_canonicalize_internal().
Referenced by nurat_expt(), and nurat_rationalize().
Definition at line 386 of file rational.c.
References nurat_s_new_internal(), and ONE.
Referenced by f_round_common(), nurat_cmp(), nurat_coerce(), and nurat_expt().
Definition at line 392 of file rational.c.
References assert, f_nonzero_p, f_positive_p, and nurat_s_new_internal().
Definition at line 516 of file rational.c.
References assert, k_rational_p(), nurat_s_canonicalize_internal_no_reduce(), and ONE.
Definition at line 523 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().
Definition at line 1190 of file rational.c.
References CLASS_OF, f_div(), f_lt_p(), f_rational_new_bang1(), func, INT2FIX, k_integer_p(), ONE, rb_eTypeError, rb_raise(), and rb_scan_args().
Referenced by nurat_ceil_n(), nurat_floor_n(), nurat_round_n(), and nurat_truncate_n().
Definition at line 127 of file rational.c.
References FIX2LONG, FIXNUM_P, and rb_funcall().
Referenced by f_addsub(), float_rationalize(), nurat_cmp(), nurat_rationalize(), nurat_rationalize_internal(), and nurat_sub().
Definition at line 167 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, id_eqeq_p, Qfalse, rb_funcall(), RRATIONAL, T_BIGNUM, T_FIXNUM, T_RATIONAL, TYPE, and ZERO.
Referenced by f_gcd(), f_lcm(), float_rationalize(), nurat_div(), nurat_eqeq_p(), nurat_fdiv(), and nurat_marshal_load().
Definition at line 1836 of file rational.c.
References DBL_MANT_DIG, INT2FIX, rb_dbl2big(), and RFLOAT_VALUE.
Referenced by float_rationalize(), and float_to_r().
Definition at line 1770 of file rational.c.
References INT2FIX, isinf(), isnan, rb_call_super(), and RFLOAT_VALUE.
Referenced by Init_Rational().
Definition at line 1752 of file rational.c.
References isinf(), isnan, rb_call_super(), and RFLOAT_VALUE.
Referenced by Init_Rational().
Definition at line 1915 of file rational.c.
References f_add(), f_lshift, 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, rb_scan_args(), and TWO.
Referenced by Init_Rational().
Definition at line 1879 of file rational.c.
References f_lshift, f_to_r, FIX2LONG, float_decode_internal(), FLT_RADIX, INT2FIX, ONE, and rb_rational_new2.
Referenced by Init_Rational().
| fun1 | ( | abs | ) |
Definition at line 134 of file rational.c.
References f_boolcast, FIX2LONG, FIXNUM_P, id_eqeq_p, and rb_funcall().
| fun2 | ( | expt | ) |
Definition at line 152 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 247 of file rational.c.
Referenced by f_addsub(), f_gcd(), and f_muldiv().
| void Init_Rational | ( | void | ) |
Definition at line 2252 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_floor, id_idiv, id_inspect, id_integer_p, id_negate, id_to_f, id_to_i, id_to_s, id_truncate, integer_denominator(), integer_numerator(), integer_rationalize(), integer_to_r(), make_patterns(), nilclass_rationalize(), nilclass_to_r(), numeric_denominator(), numeric_numerator(), nurat_add(), nurat_ceil_n(), nurat_cmp(), nurat_coerce(), nurat_denominator(), nurat_div(), nurat_eqeq_p(), nurat_expt(), nurat_f_rational(), nurat_fdiv(), nurat_floor_n(), nurat_hash(), nurat_inspect(), 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_cRational, rb_cString, rb_define_alloc_func(), rb_define_class(), rb_define_global_function(), rb_define_method(), rb_define_private_method(), rb_gcd(), rb_gcdlcm(), rb_intern, rb_lcm(), rb_undef_method(), and string_to_r().
Definition at line 1722 of file rational.c.
Referenced by Init_Rational().
Definition at line 1829 of file rational.c.
References integer_to_r(), NULL, and rb_scan_args().
Referenced by Init_Rational().
Definition at line 1816 of file rational.c.
References rb_rational_new1.
Referenced by Init_Rational(), and integer_rationalize().
Definition at line 225 of file rational.c.
References f_kind_of_p(), and rb_cFloat.
Definition at line 219 of file rational.c.
References f_kind_of_p(), and rb_cInteger.
Referenced by f_round_common(), nurat_int_value(), and nurat_s_convert().
Definition at line 213 of file rational.c.
References f_kind_of_p(), and rb_cNumeric.
Referenced by nurat_int_check(), and nurat_s_convert().
Definition at line 231 of file rational.c.
References f_kind_of_p(), and rb_cRational.
Referenced by f_rational_new1(), f_rational_new2(), f_rational_new_no_reduce1(), f_rational_new_no_reduce2(), and nurat_expt().
| static void make_patterns | ( | void | ) | [static] |
Definition at line 1967 of file rational.c.
References PATTERN, rb_gc_register_mark_object(), rb_reg_new(), and rb_usascii_str_new2().
Referenced by Init_Rational().
Definition at line 1798 of file rational.c.
References nilclass_to_r(), NULL, and rb_scan_args().
Referenced by Init_Rational().
Definition at line 1785 of file rational.c.
References INT2FIX, and rb_rational_new1.
Referenced by Init_Rational(), and nilclass_rationalize().
Definition at line 1710 of file rational.c.
References f_denominator, and f_to_r.
Referenced by Init_Rational().
Definition at line 1698 of file rational.c.
References f_numerator, and f_to_r.
Referenced by Init_Rational().
Definition at line 683 of file rational.c.
References f_add(), f_addsub(), get_dat1, get_dat2, ONE, rb_num_coerce_bin(), T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, and TYPE.
Referenced by Init_Rational().
Definition at line 1262 of file rational.c.
References f_round_common(), and nurat_ceil().
Referenced by Init_Rational().
Definition at line 981 of file rational.c.
References CLASS_OF, f_cmp(), f_imul, f_rational_new_bang1(), f_sub(), FIX2LONG, FIXNUM_P, get_dat1, get_dat2, id_cmp, rb_num_coerce_cmp(), T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, TYPE, and ZERO.
Referenced by Init_Rational().
Definition at line 1070 of file rational.c.
References CLASS_OF, f_rational_new_bang1(), k_exact_zero_p, Qnil, rb_assoc_new(), rb_eTypeError, rb_obj_classname(), rb_raise(), RCOMPLEX, T_BIGNUM, T_COMPLEX, T_FIXNUM, T_FLOAT, T_RATIONAL, and TYPE.
Referenced by Init_Rational().
Definition at line 849 of file rational.c.
References CLASS_OF, f_muldiv(), f_one_p(), f_rational_new_no_reduce2(), f_zero_p(), get_dat1, get_dat2, ONE, rb_funcall(), rb_num_coerce_bin(), rb_raise_zerodiv, T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, and TYPE.
Referenced by Init_Rational().
Definition at line 1032 of file rational.c.
References f_boolcast, f_zero_p(), FIX2LONG, FIXNUM_P, get_dat1, get_dat2, Qfalse, Qtrue, T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, and TYPE.
Referenced by Init_Rational().
Definition at line 920 of file rational.c.
References CLASS_OF, f_cmp(), f_one_p(), f_rational_new2(), f_rational_new_bang1(), FIX2INT, get_dat1, id_expt, k_exact_zero_p, k_rational_p(), ONE, rb_num_coerce_bin(), rb_warn(), T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, TYPE, and ZERO.
Referenced by Init_Rational().
Definition at line 537 of file rational.c.
References id_convert, rb_cRational, and rb_funcall2().
Referenced by Init_Rational().
Definition at line 897 of file rational.c.
References f_div(), and f_zero_p().
Referenced by Init_Rational().
Definition at line 1236 of file rational.c.
References f_round_common(), and nurat_floor().
Referenced by Init_Rational().
Definition at line 1494 of file rational.c.
References get_dat1, LONG2FIX, NUM2LONG(), rb_hash(), and rb_memhash().
Referenced by Init_Rational().
Definition at line 1552 of file rational.c.
References f_format(), rb_str_cat2(), rb_str_concat(), and rb_usascii_str_new2().
Referenced by Init_Rational().
| static void nurat_int_check | ( | VALUE | num | ) | [inline, static] |
Definition at line 414 of file rational.c.
References k_numeric_p(), rb_eTypeError, rb_raise(), T_BIGNUM, T_FIXNUM, and TYPE.
Referenced by nurat_int_value().
Definition at line 427 of file rational.c.
References k_integer_p(), and nurat_int_check().
Referenced by nurat_s_new(), rb_gcd(), rb_gcdlcm(), and rb_lcm().
Definition at line 1565 of file rational.c.
References get_dat1, rb_assoc_new(), and rb_copy_generic_ivar().
Referenced by Init_Rational().
Definition at line 1577 of file rational.c.
References Check_Type, f_zero_p(), get_dat1, RARRAY_PTR, rb_copy_generic_ivar(), rb_raise_zerodiv, and T_ARRAY.
Referenced by Init_Rational().
Definition at line 806 of file rational.c.
References f_muldiv(), get_dat1, get_dat2, ONE, rb_num_coerce_bin(), T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, and TYPE.
Referenced by Init_Rational().
Definition at line 1470 of file rational.c.
References CLASS_OF, f_add(), f_rational_new2(), f_sub(), nurat_rationalize_internal(), and rb_scan_args().
Referenced by Init_Rational().
Definition at line 1425 of file rational.c.
References f_add(), f_ceil, f_lt_p(), f_reciprocal, f_sub(), ONE, and ZERO.
Referenced by float_rationalize(), and nurat_rationalize().
Definition at line 1166 of file rational.c.
References f_add(), get_dat1, neg, and TWO.
Referenced by nurat_round_n().
Definition at line 1315 of file rational.c.
References f_round_common(), and nurat_round().
Referenced by Init_Rational().
Definition at line 344 of file rational.c.
References nurat_s_new_internal(), ONE, and ZERO.
Referenced by Init_Rational().
Definition at line 436 of file rational.c.
References f_cmp(), f_gcd, f_one_p(), FIX2INT, nurat_s_new_internal(), rb_raise_zerodiv, and ZERO.
Referenced by f_rational_new1(), 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 462 of file rational.c.
References f_cmp(), f_one_p(), FIX2INT, nurat_s_new_internal(), rb_raise_zerodiv, and ZERO.
Referenced by f_rational_new_no_reduce1(), and f_rational_new_no_reduce2().
Definition at line 2138 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(), RCOMPLEX, string_to_r_strict(), T_BIGNUM, T_COMPLEX, T_FIXNUM, T_FLOAT, T_RATIONAL, T_STRING, and TYPE.
Referenced by Init_Rational(), and rb_Rational().
Definition at line 482 of file rational.c.
References nurat_int_value(), nurat_s_canonicalize_internal(), ONE, and rb_scan_args().
Referenced by Init_Rational(), and nurat_s_convert().
Definition at line 332 of file rational.c.
References NEWOBJ, OBJSETUP, and T_RATIONAL.
Referenced by f_rational_new_bang1(), f_rational_new_bang2(), nurat_s_alloc(), nurat_s_canonicalize_internal(), nurat_s_canonicalize_internal_no_reduce(), and rb_rational_raw().
Definition at line 725 of file rational.c.
References f_addsub(), f_sub(), get_dat1, get_dat2, ONE, rb_num_coerce_bin(), T_BIGNUM, T_FIXNUM, T_FLOAT, T_RATIONAL, and TYPE.
Referenced by Init_Rational().
Definition at line 1352 of file rational.c.
Referenced by Init_Rational().
Definition at line 1157 of file rational.c.
References get_dat1.
Referenced by Init_Rational(), and nurat_truncate_n().
Definition at line 1288 of file rational.c.
References f_round_common(), and nurat_truncate().
Referenced by Init_Rational().
Definition at line 1614 of file rational.c.
References f_gcd, and nurat_int_value().
Referenced by Init_Rational().
Definition at line 1653 of file rational.c.
References f_gcd, f_lcm(), nurat_int_value(), and rb_assoc_new().
Referenced by Init_Rational().
Definition at line 1634 of file rational.c.
References f_lcm(), and nurat_int_value().
Referenced by Init_Rational(), and nucomp_denominator().
Definition at line 1674 of file rational.c.
References nurat_s_convert(), and rb_cRational.
Referenced by BigDecimal_to_r().
Definition at line 1666 of file rational.c.
References nurat_s_canonicalize_internal(), and rb_cRational.
Definition at line 1660 of file rational.c.
References nurat_s_new_internal(), and rb_cRational.
Definition at line 1594 of file rational.c.
References CLASS_OF, f_rational_new_no_reduce2(), and get_dat1.
Referenced by fix_divide().
Definition at line 2117 of file rational.c.
References f_gsub, INT2FIX, NIL_P, RARRAY_PTR, rb_backref_get(), rb_backref_set(), rb_match_busy(), rb_rational_new1, and string_to_r_internal().
Referenced by Init_Rational().
Definition at line 2008 of file rational.c.
References count, f_add(), f_aref, f_div(), f_match, f_post_match, f_split, INT2FIX, LONG2NUM, NIL_P, Qnil, RARRAY_LEN, RARRAY_PTR, rb_assoc_new(), rb_isdigit(), rb_rational_new1, rb_usascii_str_new2(), RSTRING_LEN, and StringValuePtr.
Referenced by string_to_r(), and string_to_r_strict().
Definition at line 2079 of file rational.c.
References NIL_P, RARRAY_PTR, rb_eArgError, rb_raise(), RSTRING_LEN, string_to_r_internal(), and StringValuePtr.
Referenced by nurat_s_convert().
Definition at line 1958 of file rational.c.
Definition at line 1958 of file rational.c.
Definition at line 1958 of file rational.c.
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 1958 of file rational.c.
Definition at line 23 of file rational.c.
Definition at line 1958 of file rational.c.
1.7.3