JDK 8 code review request for 7091682 "Move sun.misc.FpUtils code into java.lang.Math"

Joe Darcy joe.darcy at oracle.com
Mon Sep 19 01:15:12 UTC 2011


Hi Jeff.

I'll consider that for some possible future work.

Thanks,

-Joe

Jeff Hain wrote:
> Hi.
> There are some possible optimizations for some methods.
>
> For nextAfter(double,double) (same for float version), instead of 
> testing NaN-ity right away,
> we can test most common (or at least regular) cases first:
> public static double nextAfter(double start, double direction) {
>     // Balancing out by branching to going-down case first,
>     // for it is heavier than going-up case (test if start is +-0.0).
>     if (start > direction) {
>         // Going down.
>         if (start == 0.0d) {
>             // start is +0.0 or -0.0
>             return -Double.MIN_VALUE;
>         }
>         final long transducer = Double.doubleToRawLongBits(start);
>         assert transducer != 0L;
>         return Double.longBitsToDouble(transducer + ((transducer > 0L) 
> ? -1L:1L));
>     } else if (start < direction) {
>         // Going up.
>         // Add +0.0 to get rid of a -0.0 (+0.0 + -0.0 => +0.0)
>         // then bitwise convert start to integer.
>         final long transducer = Double.doubleToRawLongBits(start + 0.0d);
>         return Double.longBitsToDouble(transducer + ((transducer >= 
> 0L) ? 1L:-1L));
>     } else if (start == direction) {
>         return direction;
>     } else { // start and/or direction is NaN
>         return start + direction;
>     }
> }
>
> Same for nextUp(double) and float version (also, testing transducer >= 0L
> instead of d >= 0.0D seems to help):
> public static double nextUp(double d) {
>     if (d < Double.POSITIVE_INFINITY) {
>         final long transducer = Double.doubleToRawLongBits(d + 0.0D);
>         return Double.longBitsToDouble(transducer + ((transducer >= 
> 0L) ? 1L:-1L));
>     } else { // d is NaN or +Infinity
>         return d;
>     }
> }
>
> -Jeff
>
> ------------------------------------------------------------------------
> *De :* "joe.darcy at oracle.com" <joe.darcy at oracle.com>
> *À :* core-libs-dev <core-libs-dev at openjdk.java.net>
> *Envoyé le :* Samedi 17 Septembre 2011 3h52
> *Objet :* JDK 8 code review request for 7091682 "Move sun.misc.FpUtils 
> code into java.lang.Math"
>
> Hello.
>
> Please review the changes to address
>
>   7091682 "Move sun.misc.FpUtils code into java.lang.Math"
>   http://cr.openjdk.java.net/~darcy/7091682.0/ 
> <http://cr.openjdk.java.net/%7Edarcy/7091682.0/>
>
> As implied by the synopsis, where appropriate JDK-implementation code 
> used to provide functionality in java.lang.Math and 
> java.lang.StrictMath is moved out of sun.misc.* and into 
> java.lang.Math.  Uses of methods available in java.lang.Math and 
> switched to that entry point as opposed to the sun.misc one.  
> Additionally, the sun.misc methods whose implementation was moved were 
> also deprecated.
>
> Later in JDK 8, I will probably add some of the remaining 
> un-deprecated methods in sun.misc.FpUtils as java.lang.Math/StrictMath 
> methods.
>
> Thanks,
>
> -Joe
>
>




More information about the core-libs-dev mailing list