RFR: 8339934: Simplify Math.scalb(double) method [v2]

Raffaello Giulietti rgiulietti at openjdk.org
Fri Sep 13 18:59:05 UTC 2024


On Fri, 13 Sep 2024 18:44:36 GMT, Joe Darcy <darcy at openjdk.org> wrote:

>> Raffaello Giulietti has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Slight improvement.
>
> src/java.base/share/classes/java/lang/Math.java line 3325:
> 
>> 3323:         if (scaleFactor > -DoubleConsts.EXP_BIAS) {
>> 3324:             if (scaleFactor <= DoubleConsts.EXP_BIAS) {
>> 3325:                 return d * longBitsToDouble((long) (scaleFactor + DoubleConsts.EXP_BIAS) << PRECISION - 1);
> 
> The longBitsToDouble call is basically an inline form of powerOfTwoD. I'd prefer to see that method used for clearer semantics. Optimization of  powerOfTwoD would be fine.

I considered using `powerOfTwoD` but it uses a `long` `+`, and performs an additional masking which seems useless or over-cautious and does not help if `n` is out of range (assuming the assert is not enabled).

What about a `private` similar method that just does the bare minimum and which could also be invoked by `powerOfTwoD`?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20948#discussion_r1759335507


More information about the core-libs-dev mailing list