Explicitly change a floating point division with a constant into a
multiplication by its inverse. In optimized builds GCC does this on its own, but this may be useful when using other compilers. Review URL: http://codereview.chromium.org/11524 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@805 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
40cd237bae
commit
9ee294b302
@ -3163,9 +3163,9 @@ static Object* Runtime_Math_random(Arguments args) {
|
|||||||
// double in the range [0, RAND_MAX + 1) obtained by adding the
|
// double in the range [0, RAND_MAX + 1) obtained by adding the
|
||||||
// high-order bits in the range [0, RAND_MAX] with the low-order
|
// high-order bits in the range [0, RAND_MAX] with the low-order
|
||||||
// bits in the range [0, 1).
|
// bits in the range [0, 1).
|
||||||
double lo = static_cast<double>(random()) / (RAND_MAX + 1.0);
|
double lo = static_cast<double>(random()) * (1.0 / (RAND_MAX + 1.0));
|
||||||
double hi = static_cast<double>(random());
|
double hi = static_cast<double>(random());
|
||||||
double result = (hi + lo) / (RAND_MAX + 1.0);
|
double result = (hi + lo) * (1.0 / (RAND_MAX + 1.0));
|
||||||
ASSERT(result >= 0 && result < 1);
|
ASSERT(result >= 0 && result < 1);
|
||||||
return Heap::AllocateHeapNumber(result);
|
return Heap::AllocateHeapNumber(result);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user