JDK-8341402 : BigDecimal's square root optimization
  • Type: Enhancement
  • Component: core-libs
  • Sub-Component: java.math
  • Priority: P4
  • Status: In Progress
  • Resolution: Unresolved
  • OS: generic
  • CPU: generic
  • Submitted: 2024-10-02
  • Updated: 2024-10-04
Related Reports
Relates :  
Relates :  
Description
A DESCRIPTION OF THE PROBLEM :
After changing BigInteger.sqrt() algorithm, this can be also used to speed up BigDecimal.sqrt() implementation.

The main steps of the algorithm are as follows:
- First argument reduce the value to an integer using the following relations:

x = y * 10 ^ exp
sqrt(x) = sqrt(y) * 10^(exp / 2) if exp is even
sqrt(x) = sqrt(y*10) * 10^((exp-1)/2) is exp is odd

- Then use BigInteger.sqrt() on the reduced value to compute the numerical digits of the desired result.

- Finally, scale back to the desired exponent range and perform any adjustment to get the preferred scale in the representation.

Here is the PR: https://github.com/openjdk/jdk/pull/21301



Comments
A pull request was submitted for review. Branch: master URL: https://git.openjdk.org/jdk/pull/21301 Date: 2024-10-02 10:31:09 +0000
02-10-2024

Moving to JDK for further evaluation.
02-10-2024