Proposal for Decimal64 and Decimal128 value-based classes

Brian Goetz brian.goetz at oracle.com
Tue Mar 30 20:03:47 UTC 2021


Overall, I'd be happy to see Decimal types that are aimed at "reasonable 
precision" in addition to the infinite precision that BD offers.  (After 
Valhalla, of course.)



On 3/29/2021 4:14 PM, Raffaello Giulietti wrote:
> Hello,
>
> I'm experimenting with an implementation of Decimal64 and Decimal128, 
> two standard IEEE 754-2019 formats supporting, well, decimal floating 
> point numbers of up to 16 resp 34 decimal digits.
>
> While BigDecimal can simulate most finite number computations on these 
> formats by passing MathContext.DECIMAL64 and MathContext.DECIMAL128, 
> resp., to the arithmetic operations, this approach has some 
> shortcomings wrt to the standard:
> * Like the binary formats (float and double in Java), the standard 
> mandates signed zeroes, signed infinities and NaNs for the decimal 
> formats as well, while BigDecimal has neither.
> * BigDecimal is not a final class, so is not (and can never be) 
> value-based.
> * BigDecimal needs support from BigInteger (another non final, non 
> value-based class).
>
> On the other hand, classes Decimal64 and Decimal128:
> * Are value-based and can be declared to be primitive in a future 
> version of OpenJDK, once Valhalla is completed.
> * Require 12 and 20 bytes, resp, of storage in the Valhalla model of 
> primitive objects and have no references to other identity or 
> primitive objects.
> * Support the signed zeroes, the infinities and the NaNs.
> * Currently support the 4 fundamental operations (+ - * /) according 
> to the standard and will support remainder, square root, comparisons, 
> etc. and the conversions listed in the standard.
> * Could be extended to support the (rather cumbersome) exceptions 
> handling of the standard.
> * There's no plan to support transcendental functions, as the aim is 
> to have numerical classes for business applications, not scientific or 
> engineering purposes.
> * Are faster than the (incomplete) simulation with BigDecimal, 1x-5x 
> in the current incarnations.
>
>
> I would be glad to contribute the code to the OpenJDK provided there 
> is a genuine interest from the community and a reviewer willing to 
> sponsor my effort. (I guess the best candidate for this role would be 
> Joe Darcy from what I can read in this mailing list.)
>
>
> Greetings
> Raffaello



More information about the core-libs-dev mailing list