Reviewers: William Hesse,

Description:
Speculative fix for computing Math.pow(2, -1074) on win32 where
the overloaded pow(double, int) function from math.h produces the
wrong answer.

[email protected]

Please review this at http://codereview.chromium.org/131022

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
   M     src/runtime.cc


Index: src/runtime.cc
===================================================================
--- src/runtime.cc      (revision 2213)
+++ src/runtime.cc      (working copy)
@@ -4170,7 +4170,9 @@
          // internal precision in the pow() implementation would have
          // given us a finite p. This happens very rarely.
          double result = 1.0 / p;
-        return (result == 0 && isinf(p)) ? pow(x, y) : result;
+        return (result == 0 && isinf(p))
+            ? pow(x, static_cast<double>(y))  // Avoid pow(double, int).
+            : result;
        } else {
          return p;
        }



--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to