RFR: 8334755: Asymptotically faster implementation of square root algorithm [v45]
Raffaello Giulietti
rgiulietti at openjdk.org
Sat Jul 27 14:57:38 UTC 2024
On Sat, 27 Jul 2024 14:44:15 GMT, fabioromano1 <duke at openjdk.org> wrote:
>> I have implemented the Zimmermann's square root algorithm, available in works [here](https://inria.hal.science/inria-00072854/en/) and [here](https://www.researchgate.net/publication/220532560_A_proof_of_GMP_square_root).
>>
>> The algorithm is proved to be asymptotically faster than the Newton's Method, even for small numbers. To get an idea of how much the Newton's Method is slow, consult my article [here](https://arxiv.org/abs/2406.07751), in which I compare Newton's Method with a version of classical square root algorithm that I implemented. After implementing Zimmermann's algorithm, it turns out that it is faster than my algorithm even for small numbers.
>
> fabioromano1 has updated the pull request incrementally with two additional commits since the last revision:
>
> - Correct test method name
> - Updated sqrt speed test benchmark
On my M1 Pro/32 GiB
Current
Benchmark Mode Cnt Score Error Units
BigIntegerSquareRoot.testBigSqrtAndRemainder avgt 15 45.655 ? 0.273 ns/op
BigIntegerSquareRoot.testHugeSqrtAndRemainder avgt 15 1200587.822 ? 7358.024 ns/op
BigIntegerSquareRoot.testLargeSqrtAndRemainder avgt 15 27.052 ? 0.143 ns/op
BigIntegerSquareRoot.testSmallSqrtAndRemainder avgt 15 33.098 ? 0.207 ns/op
New
Benchmark Mode Cnt Score Error Units
BigIntegerSquareRoot.testBigSqrtAndRemainder avgt 15 21.110 ? 0.151 ns/op
BigIntegerSquareRoot.testHugeSqrtAndRemainder avgt 15 21525.493 ? 36.219 ns/op
BigIntegerSquareRoot.testLargeSqrtAndRemainder avgt 15 14.897 ? 0.257 ns/op
BigIntegerSquareRoot.testSmallSqrtAndRemainder avgt 15 15.539 ? 0.146 ns/op
Nice!
-------------
PR Comment: https://git.openjdk.org/jdk/pull/19710#issuecomment-2254170586
More information about the core-libs-dev
mailing list