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