On Tue, 31 Jan 2023 02:52:45 GMT, Joe Darcy <da...@openjdk.org> wrote:
> Another day, another PR to port FDLBIM to Java, this time for the log1p > method. > > Other than using the two-argument form of the __HI method in Java > transliteration version rather than C macro, there are no appreciable > differences between the original C source in > > src/java.base/share/native/libfdlibm/s_log1p.c > > and the transliteration for testing purposes in > > test/jdk/java/lang/StrictMath/FdlibmTranslit.java > > The more idiomatic port in > > src/java.base/share/classes/java/lang/FdLibm.java > > has had a series of transformation applied layering on the transliteration. > The intermediate commits show the progress. > > The regression tests include probing around input values the implementation > uses to decided which branch to take. src/java.base/share/classes/java/lang/FdLibm.java line 785: > 783: private static double ivln10 = 0x1.bcb7b1526e50ep-2; // > 4.34294481903251816668e-01 > 784: > 785: private static double log10_2hi = 0x1.34413509f6p-2; // > 3.01029995663611771306e-01; Are this constants intentionally not `final` ? src/java.base/share/classes/java/lang/FdLibm.java line 911: > 909: k = 1; > 910: if (hx < 0x3FDA827A) { /* x < 0.41422 */ > 911: if(ax >= 0x3ff00000) { /* x <= -1.0 */ Suggestion: if (ax >= 0x3ff00000) { /* x <= -1.0 */ test/jdk/java/lang/StrictMath/Log1pTests.java line 235: > 233: > 234: // ... and just below subnormal threshold ... > 235: x = Math.nextDown(Double.MIN_NORMAL); Suggestion: x = Math.nextDown(Double.MIN_NORMAL); ------------- PR: https://git.openjdk.org/jdk/pull/12301