Class: Numeric

Inherits:
Object
  • Object
show all
Defined in:
(unknown)

Instance Method Summary collapse

Instance Method Details

#to_fraction(*args) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'ext/fraction/fraction.c', line 62

VALUE fraction_create_fraction_from(int argc, VALUE * argv, VALUE self)
{
   VALUE fraction = rb_class_new_instance(0, NULL, rb_cFraction);

   VALUE res = rb_ary_new2(3);
   VALUE maxdenr;
   long maxden = 10; // the default
   rb_scan_args(argc, argv, "01", &maxdenr);
   if (!NIL_P(maxdenr))
     maxden = NUM2INT(maxdenr);
   double x = NUM2DBL(self);
   long n, d;
   double e;
   core_fraction(x, maxden, &n, &d, &e);

   VALUE numer1 = INT2NUM(n);
   VALUE denom1 = INT2NUM(d);
   VALUE err1 = rb_float_new(e);

   rb_iv_set(fraction, "@numerator", numer1);
   rb_iv_set(fraction, "@denominator", denom1);
   rb_iv_set(fraction, "@error", err1);

   return fraction;
}