RFR: 8366478: BigDecimal roots [v4]
fabioromano1
duke at openjdk.org
Thu Oct 16 19:39:42 UTC 2025
On Thu, 16 Oct 2025 16:25:40 GMT, Raffaello Giulietti <rgiulietti at openjdk.org> wrote:
>> fabioromano1 has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Comment for error analysis
>
> src/java.base/share/classes/java/math/BigDecimal.java line 2160:
>
>> 2158: *
>> 2159: * <p>The preferred scale of the returned result is equal to
>> 2160: * {@code this.scale()/n}. The value of the returned result is
>
> I think the preferred scale should be ceiling(this.scale() / n).
> The IEEE 754 standard has a preferred exponent (negated scale) of floor(exp(this) / n).
Yes, but this is inconsistent with the definition of _preferred scale_ for `BigDecimal.sqrt()`.
> src/java.base/share/classes/java/math/BigDecimal.java line 2181:
>
>> 2179: * @param mc the context to use.
>> 2180: * @return the {@code n}<sup>th</sup> root of {@code this}.
>> 2181: * @throws ArithmeticException if {@code n == 0 || n == Integer.MIN_VALUE}.
>
> Just out of curiosity, is there a technical reason for the restriction on MIN_VALUE?
Yes, `|Integer.MIN_VALUE|` is out of range of `int`s, so it cannot be used as a degree for `BigInteger.nthRoot(int)`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27148#discussion_r2437243194
PR Review Comment: https://git.openjdk.org/jdk/pull/27148#discussion_r2437253304
More information about the core-libs-dev
mailing list