Ruby 1.9.2p290(2011-07-09revision32553)
Defines | Functions | Variables

rational.c File Reference

#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 Documentation

#define binop (   n,
  op 
)
Value:
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,
 
)    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)
#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,
 
)    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,
 
)    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,
 
)    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,
 
)    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,
 
)    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)
#define fun1 (   n)
Value:
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)
Value:
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)
#define get_dat2 (   x,
 
)
Value:
struct RRational *adat, *bdat;\
    adat = ((struct RRational *)(x));\
    bdat = ((struct RRational *)(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)
#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")
#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)

Function Documentation

binop ( mod  ,
'%'   
)

Definition at line 100 of file rational.c.

References FIX2LONG, FIXNUM_P, rb_funcall(), T_BIGNUM, TYPE, 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]

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().

static VALUE f_cmp ( VALUE  x,
VALUE  y 
) [inline, static]
static VALUE f_div ( VALUE  x,
VALUE  y 
) [inline, static]

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().

static VALUE f_format ( VALUE  self,
VALUE(*)(VALUE func 
) [static]

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().

static VALUE f_gcd ( VALUE  x,
VALUE  y 
) [inline, static]

Definition at line 268 of file rational.c.

References f_zero_p(), FIX2LONG, FIXNUM_P, i_gcd(), and LONG2NUM.

static VALUE f_gt_p ( VALUE  x,
VALUE  y 
) [inline, static]

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.

static VALUE f_kind_of_p ( VALUE  x,
VALUE  c 
) [inline, static]

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().

static VALUE f_lcm ( VALUE  x,
VALUE  y 
) [inline, static]

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().

static VALUE f_lt_p ( VALUE  x,
VALUE  y 
) [inline, static]

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().

static VALUE f_one_p ( VALUE  x) [inline, static]
static VALUE f_rational_new1 ( VALUE  klass,
VALUE  x 
) [inline, static]

Definition at line 501 of file rational.c.

References assert, k_rational_p(), nurat_s_canonicalize_internal(), and ONE.

static VALUE f_rational_new2 ( VALUE  klass,
VALUE  x,
VALUE  y 
) [inline, static]

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().

static VALUE f_rational_new_bang1 ( VALUE  klass,
VALUE  x 
) [inline, static]

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().

static VALUE f_rational_new_bang2 ( VALUE  klass,
VALUE  x,
VALUE  y 
) [inline, static]

Definition at line 392 of file rational.c.

References assert, f_nonzero_p, f_positive_p, and nurat_s_new_internal().

static VALUE f_rational_new_no_reduce1 ( VALUE  klass,
VALUE  x 
) [inline, static]

Definition at line 516 of file rational.c.

References assert, k_rational_p(), nurat_s_canonicalize_internal_no_reduce(), and ONE.

static VALUE f_rational_new_no_reduce2 ( VALUE  klass,
VALUE  x,
VALUE  y 
) [inline, static]
static VALUE f_round_common ( int  argc,
VALUE argv,
VALUE  self,
VALUE(*)(VALUE func 
) [static]
static VALUE f_sub ( VALUE  x,
VALUE  y 
) [inline, static]
static VALUE f_zero_p ( VALUE  x) [inline, static]
static void float_decode_internal ( VALUE  self,
VALUE rf,
VALUE rn 
) [static]

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().

static VALUE float_denominator ( VALUE  self) [static]

Definition at line 1770 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 1752 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]
static VALUE float_to_r ( VALUE  self) [static]

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  )
static VALUE integer_denominator ( VALUE  self) [static]

Definition at line 1734 of file rational.c.

References INT2FIX.

Referenced by Init_Rational().

static VALUE integer_numerator ( VALUE  self) [static]

Definition at line 1722 of file rational.c.

Referenced by Init_Rational().

static VALUE integer_rationalize ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 1829 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 1816 of file rational.c.

References rb_rational_new1.

Referenced by Init_Rational(), and integer_rationalize().

static VALUE k_float_p ( VALUE  x) [inline, static]

Definition at line 225 of file rational.c.

References f_kind_of_p(), and rb_cFloat.

static VALUE k_integer_p ( VALUE  x) [inline, static]

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().

static VALUE k_numeric_p ( VALUE  x) [inline, static]

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().

static VALUE k_rational_p ( VALUE  x) [inline, static]
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().

static VALUE nilclass_rationalize ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 1798 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 1785 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 1710 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 1698 of file rational.c.

References f_numerator, and f_to_r.

Referenced by Init_Rational().

static VALUE nurat_add ( VALUE  self,
VALUE  other 
) [static]

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().

static VALUE nurat_ceil ( VALUE  self) [static]

Definition at line 1132 of file rational.c.

References get_dat1.

Referenced by nurat_ceil_n().

static VALUE nurat_ceil_n ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 1262 of file rational.c.

References f_round_common(), and nurat_ceil().

Referenced by Init_Rational().

static VALUE nurat_cmp ( VALUE  self,
VALUE  other 
) [static]
static VALUE nurat_coerce ( VALUE  self,
VALUE  other 
) [static]
static VALUE nurat_denominator ( VALUE  self) [static]

Definition at line 577 of file rational.c.

References get_dat1.

Referenced by Init_Rational().

static VALUE nurat_div ( VALUE  self,
VALUE  other 
) [static]
static VALUE nurat_eqeq_p ( VALUE  self,
VALUE  other 
) [static]

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().

static VALUE nurat_expt ( VALUE  self,
VALUE  other 
) [static]
static VALUE nurat_f_rational ( int  argc,
VALUE argv,
VALUE  klass 
) [static]

Definition at line 537 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 897 of file rational.c.

References f_div(), and f_zero_p().

Referenced by Init_Rational().

static VALUE nurat_floor ( VALUE  self) [static]

Definition at line 1125 of file rational.c.

References get_dat1.

Referenced by nurat_floor_n().

static VALUE nurat_floor_n ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 1236 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 1494 of file rational.c.

References get_dat1, LONG2FIX, NUM2LONG(), rb_hash(), and rb_memhash().

Referenced by Init_Rational().

static VALUE nurat_inspect ( VALUE  self) [static]

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().

static VALUE nurat_int_value ( VALUE  num) [inline, static]

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().

static VALUE nurat_marshal_dump ( VALUE  self) [static]

Definition at line 1565 of file rational.c.

References get_dat1, rb_assoc_new(), and rb_copy_generic_ivar().

Referenced by Init_Rational().

static VALUE nurat_marshal_load ( VALUE  self,
VALUE  a 
) [static]

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().

static VALUE nurat_mul ( VALUE  self,
VALUE  other 
) [static]

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().

static VALUE nurat_numerator ( VALUE  self) [static]

Definition at line 556 of file rational.c.

References get_dat1.

Referenced by Init_Rational().

static VALUE nurat_rationalize ( int  argc,
VALUE argv,
VALUE  self 
) [static]

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().

static void nurat_rationalize_internal ( VALUE  a,
VALUE  b,
VALUE p,
VALUE q 
) [static]

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().

static VALUE nurat_round ( VALUE  self) [static]

Definition at line 1166 of file rational.c.

References f_add(), get_dat1, neg, and TWO.

Referenced by nurat_round_n().

static VALUE nurat_round_n ( int  argc,
VALUE argv,
VALUE  self 
) [static]

Definition at line 1315 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 344 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]
static VALUE nurat_s_canonicalize_internal_no_reduce ( VALUE  klass,
VALUE  num,
VALUE  den 
) [inline, static]
static VALUE nurat_s_convert ( int  argc,
VALUE argv,
VALUE  klass 
) [static]
static VALUE nurat_s_new ( int  argc,
VALUE argv,
VALUE  klass 
) [static]

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().

static VALUE nurat_s_new_internal ( VALUE  klass,
VALUE  num,
VALUE  den 
) [inline, static]
static VALUE nurat_sub ( VALUE  self,
VALUE  other 
) [static]

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().

static VALUE nurat_to_f ( VALUE  self) [static]

Definition at line 1334 of file rational.c.

References get_dat1.

Referenced by Init_Rational().

static VALUE nurat_to_r ( VALUE  self) [static]

Definition at line 1352 of file rational.c.

Referenced by Init_Rational().

static VALUE nurat_to_s ( VALUE  self) [static]

Definition at line 1534 of file rational.c.

References f_format().

Referenced by Init_Rational().

static VALUE nurat_truncate ( VALUE  self) [static]

Definition at line 1157 of file rational.c.

References 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 1288 of file rational.c.

References f_round_common(), and nurat_truncate().

Referenced by Init_Rational().

VALUE rb_gcd ( VALUE  self,
VALUE  other 
)

Definition at line 1614 of file rational.c.

References f_gcd, and nurat_int_value().

Referenced by Init_Rational().

VALUE rb_gcdlcm ( VALUE  self,
VALUE  other 
)

Definition at line 1653 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 1634 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 1674 of file rational.c.

References nurat_s_convert(), and rb_cRational.

Referenced by BigDecimal_to_r().

VALUE rb_rational_new ( VALUE  x,
VALUE  y 
)

Definition at line 1666 of file rational.c.

References nurat_s_canonicalize_internal(), and rb_cRational.

VALUE rb_rational_raw ( VALUE  x,
VALUE  y 
)

Definition at line 1660 of file rational.c.

References nurat_s_new_internal(), and rb_cRational.

VALUE rb_rational_reciprocal ( VALUE  x)

Definition at line 1594 of file rational.c.

References CLASS_OF, f_rational_new_no_reduce2(), and get_dat1.

Referenced by fix_divide().

static VALUE string_to_r ( VALUE  self) [static]
static VALUE string_to_r_internal ( VALUE  self) [static]
static VALUE string_to_r_strict ( VALUE  self) [static]

Variable Documentation

Definition at line 1958 of file rational.c.

Definition at line 1958 of file rational.c.

Definition at line 1958 of file rational.c.

ID id_abs [static]

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().

VALUE rat_pat [static]

Definition at line 1958 of file rational.c.

Definition at line 23 of file rational.c.

Definition at line 1958 of file rational.c.