On Tue, 31 Jan 2023 02:52:45 GMT, Joe Darcy <[email protected]> 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