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:
parent
b1c68cfa2e
commit
8691f8cafb
1 changed files with 5 additions and 12 deletions
17
rational.c
17
rational.c
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue