1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

rational.c: canonicalization

* rational.c (canonicalization): define always regardless CANON,
  and remove unnecessary ifdefs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2016-12-29 09:05:59 +00:00
parent b1c68cfa2e
commit 8691f8cafb

View file

@ -445,6 +445,8 @@ nurat_canonicalization(int f)
{ {
canonicalization = f; canonicalization = f;
} }
#else
# define canonicalization 0
#endif #endif
inline static void inline static void
@ -489,10 +491,8 @@ nurat_s_canonicalize_internal(VALUE klass, VALUE num, VALUE den)
num = f_idiv(num, gcd); num = f_idiv(num, gcd);
den = f_idiv(den, gcd); den = f_idiv(den, gcd);
#ifdef CANON if (canonicalization && f_one_p(den))
if (f_one_p(den) && canonicalization)
return num; return num;
#endif
return nurat_s_new_internal(klass, num, den); return nurat_s_new_internal(klass, num, den);
} }
@ -501,10 +501,8 @@ nurat_s_canonicalize_internal_no_reduce(VALUE klass, VALUE num, VALUE den)
{ {
nurat_canonicalize(&num, &den); nurat_canonicalize(&num, &den);
#ifdef CANON if (canonicalization && f_one_p(den))
if (f_one_p(den) && canonicalization)
return num; return num;
#endif
return nurat_s_new_internal(klass, num, den); return nurat_s_new_internal(klass, num, den);
} }
@ -1957,13 +1955,10 @@ numeric_quo(VALUE x, VALUE y)
return rb_funcall(x, rb_intern("fdiv"), 1, y); return rb_funcall(x, rb_intern("fdiv"), 1, y);
} }
#ifdef CANON
if (canonicalization) { if (canonicalization) {
x = rb_rational_raw1(x); x = rb_rational_raw1(x);
} }
else else {
#endif
{
x = rb_convert_type(x, T_RATIONAL, "Rational", "to_r"); x = rb_convert_type(x, T_RATIONAL, "Rational", "to_r");
} }
return nurat_div(x, y); return nurat_div(x, y);
@ -2338,14 +2333,12 @@ read_num(const char **s, int numsign, int strict,
return 0; return 0;
{ {
VALUE l = f_expt10(INT2NUM(count)); VALUE l = f_expt10(INT2NUM(count));
#ifdef CANON
if (canonicalization) { if (canonicalization) {
*num = rb_int_mul(*num, l); *num = rb_int_mul(*num, l);
*num = rb_int_plus(*num, fp); *num = rb_int_plus(*num, fp);
*num = rb_rational_new2(*num, l); *num = rb_rational_new2(*num, l);
} }
else else
#endif
{ {
*num = nurat_mul(*num, l); *num = nurat_mul(*num, l);
*num = rb_rational_plus(*num, fp); *num = rb_rational_plus(*num, fp);