Defines | Functions | Variables

rational.c File Reference

#include "ruby.h"
#include <math.h>
#include <float.h>
#include <assert.h>
#include <ctype.h>
Include dependency graph for rational.c:

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,
  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)
#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)
#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,
  y 
)
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.

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

#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, and TYPE.

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

References assert, f_nonzero_p, and f_zero_p().

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

References assert, and LONG2NUM.

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, and f_zero_p().

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(), 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 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, 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(), and ONE.

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

VALUE a_dot_pat [static]

Definition at line 1958 of file rational.c.

VALUE an_e_pat [static]

Definition at line 1958 of file rational.c.

VALUE an_underscore [static]

Definition at line 1958 of file rational.c.

ID id_abs [static]

Definition at line 25 of file rational.c.

Referenced by Init_Rational().

ID id_cmp [static]

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

ID id_eqeq_p [static]

Definition at line 25 of file rational.c.

Referenced by f_one_p(), f_zero_p(), fun1(), and Init_Rational().

ID id_expt [static]

Definition at line 25 of file rational.c.

Referenced by Init_Rational(), and nurat_expt().

ID id_fdiv [static]

Definition at line 25 of file rational.c.

Referenced by Init_Rational().

ID id_floor [static]

Definition at line 25 of file rational.c.

Referenced by Init_Rational().

ID id_idiv [static]

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

ID id_negate [static]

Definition at line 25 of file rational.c.

Referenced by Init_Rational().

ID id_to_f [static]

Definition at line 25 of file rational.c.

Referenced by Init_Rational().

ID id_to_i [static]

Definition at line 25 of file rational.c.

Referenced by Init_Rational().

ID id_to_s [static]

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

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.