RFR: 8334755: Asymptotically faster implementation of square root algorithm [v30]
fabioromano1
duke at openjdk.org
Thu Jul 18 15:04:36 UTC 2024
On Thu, 18 Jul 2024 14:50:00 GMT, Raffaello Giulietti <rgiulietti at openjdk.org> wrote:
>> I mean only restricted to unsigned `long` perfect squares, something like the following, but written as a proper test
>>
>>
>> long i = 0;
>> for (; i < 1L << 32; ++i) {
>> long x = i * i;
>> long s = (long) Math.sqrt(x >= 0 ? x : x + 0x1p64);
>> if (!(s + 1 == i || s == i)) {
>> System.out.format("oops... i=%d, but s=%d%n", i, s);
>> System.exit(1);
>> }
>> }
>
> It takes about 5 s on my laptop.
> I mean only restricted to unsigned `long` perfect squares, something like the following, but written as a proper test
>
> ```
> long i = 0;
> for (; i < 1L << 32; ++i) {
> long x = i * i;
> long s = (long) Math.sqrt(x >= 0 ? x : x + 0x1p64);
> if (!(s + 1 == i || s == i)) {
> System.out.format("oops... i=%d, but s=%d%n", i, s);
> System.exit(1);
> }
> }
> ```
So, it is okay although the code does not test directly BigInteger.sqrt()?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/19710#discussion_r1683009907
More information about the core-libs-dev
mailing list