On Wed, 17 Jul 2024 15:08:22 GMT, Raffaello Giulietti <rgiulie...@openjdk.org> 
wrote:

>> @rgiulietti  This is so strange... anyway, I tried also `long x = n * n`, 
>> `long s = Math.round(Math.sqrt(x >= 0 ? x : x + 0x1p64))` with the test `s < 
>> n`, which I think it's more mathematically natural, and also this never 
>> fails for perfect squares.
>
> Also, this avoids a test
> 
>             if (Long.compareUnsigned(x, s * s - 1) <= 0) {  // benign over- 
> and underflows
>                 s--;
>             }

Sorry, disregard the above as it doesn't work for x = 0.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19710#discussion_r1681234957

Reply via email to