On Wed, 17 Jul 2024 13:57:06 GMT, fabioromano1 <[email protected]> wrote:
>> In fact, if you run this code:
>> `long limit = 1L << 32;
>> for (long n = 0; n < limit; n++) {
>> long x = n * n;
>> if (n != (long) Math.sqrt(x >= 0 ? x : x + 0x1p64)) {
>> System.out.println(n);
>> }
>> }`
>>
>> now you find a lot of counterexamples. The question is: why, until recently,
>> if I did run the same code I could not find a counterexample?
>
> I hope these errors are not due to an implementation change in the virtual
> machine instructions...
There are no counterexamples for perfect squares if you write `long s = (long)
Math.rint(Math.sqrt(x >= 0 ? x : x + 0x1p64));`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19710#discussion_r1681105600