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

Reply via email to