On Fri, 12 Jul 2024 13:49:55 GMT, Raffaello Giulietti <rgiulie...@openjdk.org> 
wrote:

>> The proof has been made simply by exaustive experiment: for every long value 
>> `s` in [0, 2^32) such that `x == s * s`, it is true that `s == (long) 
>> Math.sqrt(x >= 0 ? x : x + 0x1p64)`. This can be verified directly by a Java 
>> program.
>> It means that Math.sqrt() returns the correct value for every perfect 
>> square, and so the value returned by Math.sqrt() for whatever long value in 
>> the range [0, 2^64) is either correct, or rounded up by one if the value is 
>> too high and too close to a perfect square.
>
> (Yes, I proved it to myself in this way.)
> 
> A similar explanation should be in a comment in the code, not here. The 
> source of truth is the code, not the comments on GitHub ;-)

I would keep zero as the only special case, so as not to have to modify `x > 0` 
with `x >= 0` in `Math.sqrt(x > 0 ? x : x + 0x1p64)`.

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

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

Reply via email to