#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_gcd(), and 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.
#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(), and nurat_sub().
#define PATTERN "\\A" WS "([-+])?(" NUMERATOR ")(?:\\/(" DENOMINATOR "))?" WS |
Definition at line 1964 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 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 f_zero_p(), fun2(), nurat_cmp(), nurat_expt(), 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, and TYPE.
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 303 of file rational.c.
References assert, f_nonzero_p, and f_zero_p().
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 611 of file rational.c.
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, and f_zero_p().
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, 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, 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(), 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 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, 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, 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(), and ONE.
Referenced by float_rationalize(), and nurat_rationalize().
Definition at line 1166 of file rational.c.
References f_add(), get_dat1, 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(), 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.
VALUE an_underscore [static] |
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.
Referenced by f_cmp(), Init_Rational(), and nurat_cmp().
ID id_convert [static] |
Definition at line 25 of file rational.c.
Referenced by Init_Rational(), and nurat_f_rational().
Definition at line 25 of file rational.c.
Referenced by f_one_p(), f_zero_p(), fun1(), and Init_Rational().
Definition at line 25 of file rational.c.
Referenced by Init_Rational(), and nurat_expt().
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
ID id_inspect [static] |
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
ID id_integer_p [static] |
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
Definition at line 25 of file rational.c.
Referenced by Init_Rational().
ID id_truncate [static] |
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.
VALUE underscores_pat [static] |
Definition at line 1958 of file rational.c.