On Wed, 17 Jul 2024 13:57:06 GMT, fabioromano1 <d...@openjdk.org> 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