Skip to the content.

Release 2.3.1

IMPORTANT

The big-math release 2.3.1 published on maven central (https://search.maven.org/) was accidentally built with uncommitted experimental changes.

DO NOT USE RELEASE 2.3.1 AND USE 2.3.2 instead.


API changes

BigRational implements now Serializable

The BigRational class implements now the Serializable interface and can be serialized with the standard Java approach using ObjectInputStream and deserialized using ObjectOutputStream.

BigRational extends now Number

The BigRational class extends now from Number and provides the following standard methods:

Bugfixes

BigRational.toFloat() and BigRational.toDouble() with large nominators/denominators

The methods BigRational.toFloat() and BigRational.toDouble() failed to convert large nominators/denominators into valid float, respectively double numbers.

For example:

BigRational x = BigRational.valueOf("8.804462619980757911125181749462772084351");
System.out.println("rational : " + x.toRationalString());
System.out.println("float    : " + x.toFloat());

would print:

rational : 8804462619980757911125181749462772084351/1000000000000000000000000000000000000000
float    : NaN

After the fix this example prints:

rational : 8804462619980757911125181749462772084351/1000000000000000000000000000000000000000
float    : 8.804462

BigRational.toIntegerRationalString() with small negative numbers

Negative rational numbers smaller than 1 where printed without - sign.

For example:

BigRational v = valueOf(-1, 2);
System.out.println("small negative rational toString(): " + v);
System.out.println("small negative rational toIntegerRationalString(): " + v);

would print:

small negative rational toString(): -0.5
small negative rational toIntegerRationalString(): 1/2

After the fix this example prints:

small negative rational toString(): -0.5
small negative rational toIntegerRationalString(): -1/2

BigDecimalMath.root(x, n) faster with large n

The BigDecimalMath.root(BigDecimal, BigDecimal, MathContext) function converged very slowly for larger values of n.

This was due to a bad initial value for the Newton-Raphson approximation.

Now the initial value for the Newton-Raphson approximation is calculated using double precision. If the initial value cannot be calculated using double precision the function pow(x, 1/n) is used to calculate the root.

Enhancements

No enhancements.

Examples

Note: The example code is available on github, but not part of the big-math library.

No changes in the examples.