RFR: 8313875: Make fields final in java.util.Math: twoToTheDoubleScaleUp, twoToTheDoubleScaleDown

Raffaello Giulietti rgiulietti at openjdk.org
Mon Aug 7 18:02:31 UTC 2023


On Mon, 7 Aug 2023 17:35:34 GMT, Andrey Turbanov <aturbanov at openjdk.org> wrote:

>> src/java.base/share/classes/java/lang/Math.java line 3425:
>> 
>>> 3423:     // Constants used in scalb
>>> 3424:     private static final double twoToTheDoubleScaleUp = powerOfTwoD(512);
>>> 3425:     private static final double twoToTheDoubleScaleDown = powerOfTwoD(-512);
>> 
>> Aren't these the _literals_ `0x1p512` and `0x1p-512`, respectively?
>
> Whoa. You are right.
> 
>     public static void main(String[] args) {
>         System.out.println(twoToTheDoubleScaleUp);
>         System.out.println(twoToTheDoubleScaleDown);
>         System.out.println(0x1p512);
>         System.out.println(0x1p-512);
> 
>         System.out.println(twoToTheDoubleScaleUp == 0x1p512);
>         System.out.println(twoToTheDoubleScaleDown == 0x1p-512);
>     }
> 
> 
> 
> 1.3407807929942597E154
> 7.458340731200207E-155
> 1.3407807929942597E154
> 7.458340731200207E-155
> true
> true

These static fields seem to be used just once each, so we might as well just replace the usages with the literals and get rid of the fields.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/14875#discussion_r1286221538


More information about the core-libs-dev mailing list