Hi Andrew,

On 12/19/2016 7:24 AM, Andrew Haley wrote:
On 15/12/16 20:25, joe darcy wrote:
Hello,

Next up in porting fdlibm to Java after cbrt (JDK-8136799), pow
(JDK-8134795) and hypot (JDK-7130085) earlier in JDK 9 is exp:

      JDK-8139688 Port fdlibm exp to Java
      http://cr.openjdk.java.net/~darcy/8139688.5/

Same methodology followed as when porting the earlier functions.
As discussed, this test is pointless because it is always true:

+                if(huge+x>one) return one+x;/* trigger inexact */

I understand that we intend to leave the code untouched, but the
inexact flag has no effect in Java code.  Does it really make sense
to translate the code to Java but include such cruft?


It may not be clearly evident from the code reviews, but I take an iterative approach to porting the fdlibm C code to Java. The first iteration is the "transliteration" step where code as close to the C code is used and checked into the regression tests as a reference. I test the regression tests at this point by running them against JDK 8 which is still using the C version of fdlibm.

Once that is done, I'll make a number of passes over a copy of the transliterated code in the core area to get it closer to idiomatic Java, sane whitespace and indenting, use of hex floating-point constants for specific values, preferring floating-point vs integer-based value checks, etc. One of those passes is removing "extraneous" computations which are present to set the IEEE floating-point flags, which as you point out, are outside of the Java and JVM model of computation.

With deadlines looming, I didn't get to all the cruft removal passes for exp, but that can be done as future work.

Cheers,

-Joe

Reply via email to