Get rid of implicit expansion to long double
on ix86
This commit is contained in:
parent
395738e8a5
commit
7cc4e147fc
12
numeric.c
12
numeric.c
@ -2546,7 +2546,7 @@ double
|
|||||||
ruby_float_step_size(double beg, double end, double unit, int excl)
|
ruby_float_step_size(double beg, double end, double unit, int excl)
|
||||||
{
|
{
|
||||||
const double epsilon = DBL_EPSILON;
|
const double epsilon = DBL_EPSILON;
|
||||||
double n, err;
|
double d, n, err;
|
||||||
|
|
||||||
if (unit == 0) {
|
if (unit == 0) {
|
||||||
return HUGE_VAL;
|
return HUGE_VAL;
|
||||||
@ -2563,24 +2563,26 @@ ruby_float_step_size(double beg, double end, double unit, int excl)
|
|||||||
n = 0;
|
n = 0;
|
||||||
else
|
else
|
||||||
n = floor(n - err);
|
n = floor(n - err);
|
||||||
|
d = +((n + 1) * unit) + beg;
|
||||||
if (beg < end) {
|
if (beg < end) {
|
||||||
if ((n+1)*unit+beg < end)
|
if (d < end)
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
else if (beg > end) {
|
else if (beg > end) {
|
||||||
if ((n+1)*unit+beg > end)
|
if (d > end)
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (n<0) return 0;
|
if (n<0) return 0;
|
||||||
n = floor(n + err);
|
n = floor(n + err);
|
||||||
|
d = +((n + 1) * unit) + beg;
|
||||||
if (beg < end) {
|
if (beg < end) {
|
||||||
if ((n+1)*unit+beg <= end)
|
if (d <= end)
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
else if (beg > end) {
|
else if (beg > end) {
|
||||||
if ((n+1)*unit+beg >= end)
|
if (d >= end)
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user