Closed
Bug 1070517
Opened 10 years ago
Closed 8 years ago
Math.log2 should be exact for exact powers of 2
Categories
(Core :: JavaScript: Standard Library, defect)
Core
JavaScript: Standard Library
Tracking
()
RESOLVED
FIXED
mozilla52
Tracking | Status | |
---|---|---|
firefox52 | --- | fixed |
People
(Reporter: anba, Assigned: arai)
References
Details
Attachments
(1 file)
(deleted),
patch
|
till
:
review+
|
Details | Diff | Splinter Review |
From es-discuss: https://mail.mozilla.org/pipermail/es-discuss/2014-September/039470.html
Related v8 issue: https://code.google.com/p/v8/issues/detail?id=3579
Expected: No output
Actual: 441 powers of two have inexact results, e.g. `Math.log2(Math.pow(2, 124))` outputs `124.00000000000001` instead of `124`
Reproducible on Win7 32bit, Fx32. Depends on whether or not log2 is supported by the compiler, see jsmath.cpp.
for (var k = -1074; k <= 1023; ++k) {
if (Math.log2(Math.pow(2, k)) != k) {
console.log("Math.log2(2^" + k + "): "+ Math.log2(Math.pow(2, k)))
}
}
// extracts the exponent from the double value
Math.getExponent = function (x) {
var e = Math.floor(Math.log(x) / Math.log(2) + 0.5);
return Math.pow(2, e) > x ? e - 1 : e;
};
Math.log2 = function (x) {
if (x === 0) {
return -1 / 0;
}
if (x === 1 / 0) {
return 1 / 0;
}
var e = Math.getExponent(x);
if (e < 0) {
e += 1;
}
return Math.log(x / Math.pow(2, e)) / Math.log(2) + e;
};
Assignee | ||
Comment 2•8 years ago
|
||
Now the testcase in comment #0 don't show anything, on Winxp 32bit nightly (2016-07-04),
as bug 933257 changed the implementation to fdlibm.
we could add the testcase and close this bug :)
Assignee | ||
Comment 3•8 years ago
|
||
Just increased the range.
it passes on all archs
https://treeherder.mozilla.org/#/jobs?repo=try&revision=b247807c029b
Assignee: nobody → arai.unmht
Attachment #8769297 -
Flags: review?(jorendorff)
Assignee | ||
Updated•8 years ago
|
Attachment #8769297 -
Flags: review?(jorendorff) → review?(till)
Comment 4•8 years ago
|
||
Comment on attachment 8769297 [details] [diff] [review]
Increase the testing range for Math.log2 + Math.pow.
Review of attachment 8769297 [details] [diff] [review]:
-----------------------------------------------------------------
Bleh, sorry for the long delay - I somehow didn't see this :(
Attachment #8769297 -
Flags: review?(till) → review+
Assignee | ||
Comment 5•8 years ago
|
||
https://hg.mozilla.org/integration/mozilla-inbound/rev/016d82db1c6b20bdefeb8093e6320bc10b8c0f37
Bug 1070517 - Increase the testing range for Math.log2 + Math.pow. r=till
Comment 6•8 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox52:
--- → fixed
Flags: in-testsuite+
Resolution: --- → FIXED
Target Milestone: --- → mozilla52
You need to log in
before you can comment on or make changes to this bug.
Description
•