mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Expanded f_denominator
This commit is contained in:
parent
325d546d62
commit
34019a22eb
3 changed files with 16 additions and 5 deletions
14
complex.c
14
complex.c
|
@ -191,7 +191,17 @@ f_arg(VALUE x)
|
||||||
return rb_funcall(x, id_arg, 0);
|
return rb_funcall(x, id_arg, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
fun1(denominator)
|
inline static VALUE
|
||||||
|
f_denominator(VALUE x)
|
||||||
|
{
|
||||||
|
if (RB_TYPE_P(x, T_RATIONAL)) {
|
||||||
|
return RRATIONAL(x)->den;
|
||||||
|
}
|
||||||
|
if (RB_FLOAT_TYPE_P(x)) {
|
||||||
|
return rb_float_denominator(x);
|
||||||
|
}
|
||||||
|
return INT2FIX(1);
|
||||||
|
}
|
||||||
|
|
||||||
inline static VALUE
|
inline static VALUE
|
||||||
f_negate(VALUE x)
|
f_negate(VALUE x)
|
||||||
|
@ -1252,7 +1262,7 @@ nucomp_numerator(VALUE self)
|
||||||
|
|
||||||
get_dat1(self);
|
get_dat1(self);
|
||||||
|
|
||||||
cd = f_denominator(self);
|
cd = nucomp_denominator(self);
|
||||||
return f_complex_new2(CLASS_OF(self),
|
return f_complex_new2(CLASS_OF(self),
|
||||||
f_mul(f_numerator(dat->real),
|
f_mul(f_numerator(dat->real),
|
||||||
f_div(cd, f_denominator(dat->real))),
|
f_div(cd, f_denominator(dat->real))),
|
||||||
|
|
|
@ -2029,6 +2029,7 @@ VALUE rb_rational_abs(VALUE self);
|
||||||
VALUE rb_rational_cmp(VALUE self, VALUE other);
|
VALUE rb_rational_cmp(VALUE self, VALUE other);
|
||||||
VALUE rb_rational_pow(VALUE self, VALUE other);
|
VALUE rb_rational_pow(VALUE self, VALUE other);
|
||||||
VALUE rb_numeric_quo(VALUE x, VALUE y);
|
VALUE rb_numeric_quo(VALUE x, VALUE y);
|
||||||
|
VALUE rb_float_denominator(VALUE x);
|
||||||
|
|
||||||
/* re.c */
|
/* re.c */
|
||||||
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
|
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
|
||||||
|
|
|
@ -2080,8 +2080,8 @@ float_numerator(VALUE self)
|
||||||
*
|
*
|
||||||
* See also Float#numerator.
|
* See also Float#numerator.
|
||||||
*/
|
*/
|
||||||
static VALUE
|
VALUE
|
||||||
float_denominator(VALUE self)
|
rb_float_denominator(VALUE self)
|
||||||
{
|
{
|
||||||
double d = RFLOAT_VALUE(self);
|
double d = RFLOAT_VALUE(self);
|
||||||
VALUE r;
|
VALUE r;
|
||||||
|
@ -2778,7 +2778,7 @@ Init_Rational(void)
|
||||||
rb_define_method(rb_cInteger, "denominator", integer_denominator, 0);
|
rb_define_method(rb_cInteger, "denominator", integer_denominator, 0);
|
||||||
|
|
||||||
rb_define_method(rb_cFloat, "numerator", float_numerator, 0);
|
rb_define_method(rb_cFloat, "numerator", float_numerator, 0);
|
||||||
rb_define_method(rb_cFloat, "denominator", float_denominator, 0);
|
rb_define_method(rb_cFloat, "denominator", rb_float_denominator, 0);
|
||||||
|
|
||||||
rb_define_method(rb_cNilClass, "to_r", nilclass_to_r, 0);
|
rb_define_method(rb_cNilClass, "to_r", nilclass_to_r, 0);
|
||||||
rb_define_method(rb_cNilClass, "rationalize", nilclass_rationalize, -1);
|
rb_define_method(rb_cNilClass, "rationalize", nilclass_rationalize, -1);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue