Apache Commons logo Apache Commons Numbers

Apache Commons Numbers Release Notes

Release History

Version Date Description
1.2 2024-08-12 New features, updates and bug fixes.
1.1 2022-11-01 New features, updates and bug fixes. Adds a commons-numbers-bom module.
1.0 2021-07-17 This is the first official release of Apache Commons Numbers (requires Java 8).
1.0-beta1 2020-04-08 This is a beta release of Apache Commons Numbers. No guarantees are made regarding the stability of the API or compatibility with future releases. Contains the following library modules: commons-numbers-angle; commons-numbers-arrays; commons-numbers-combinatorics; commons-numbers-complex; commons-numbers-core; commons-numbers-field; commons-numbers-fraction; commons-numbers-gamma; commons-numbers-primes; commons-numbers-quaternion; commons-numbers-rootfinder. Requires Java 8.

Release 1.2 – 2024-08-12

Type Changes By
Add "Selection": Add selection of the k-th ordered element from an array. Fixes NUMBERS-206. aherbert
Update "ArithmeticUtils": Improve performance of GCD for longs. Thanks to Matthias Langer. aherbert
Update "ArithmeticUtils": Improve performance of remainderUnsigned and divideUnsigned. Thanks to Sebb, Alex Herbert. aherbert
Add "Addition/Multiplication": Introduces isZero to Addition and isOne to Multiplication interfaces. Override the default implementation in implementing classes to avoid expensive equals(Object) operations. Fixes NUMBERS-205. Thanks to Harald Kirsch. aherbert
Add "DDField": Add a field for the DD number. Fixes NUMBERS-203. aherbert
Fix "Sum": Correct sub-normal round-off computation in sum of products. Fixes NUMBERS-204. aherbert
Add "DD": Add an extended precision floating-point number. A double-double (DD) number is an unevaluated sum of two IEEE double precision numbers capable of representing at least 106 bits of significand. Fixes NUMBERS-193. aherbert
Fix "FP64": Make equals consistent with hashCode. Fixes NUMBERS-201. aherbert
Fix "Sum": Avoid a NaN result when combining Sum instances with infinite sums of the same sign. Fixes NUMBERS-200. Thanks to Anirudh Joshi. aherbert
Update "Precision": Document inaccurate decimal value representation when converting to and from a double in the round method. Fixes NUMBERS-199. aherbert
Add "Sum": Add subtract(Sum) method. Fixes NUMBERS-192. aherbert
Add "Stirling": Compute Stirling numbers of the first kind. Fixes NUMBERS-191. aherbert
Add Add "Stirling" class to compute Stirling numbers of the second kind. Fixes NUMBERS-29. aherbert

Release 1.1 – 2022-11-01

Type Changes By
Add Add a user guide. Fixes NUMBERS-70. aherbert
Add Add a Bill of Materials (BOM) to aid in dependency management when referencing multiple Apache Commons Numbers artifacts. The BOM should be used to ensure all imported artifacts are compatible. Fixes NUMBERS-190. aherbert
Fix "Precision": Allow Precision.compareTo using a maxUlps to be used for sorting. This corrects handling of NaN comparisons. Fixes NUMBERS-185. aherbert
Update "Precision": Reduce number of operations in Precision.equals using a maxUlps. Fixes NUMBERS-184. aherbert
Add Updated support for the beta functions. "RegularizedBeta": Added the complement and derivative of the regularized beta function. Added "IncompleteBeta" and "Beta" classes. Functionality is ported from the Boost C++ library. Fixes NUMBERS-181. aherbert
Update Improve the binomial coefficient classes. Avoid recursive method calls. Avoid overflow for BinomialCoefficientDouble for large results close to infinity. Use precomputed factorials and the LogBeta function for efficiency. Fixes NUMBERS-183. aherbert
Fix "LogBeta": Avoid overflow for tiny arguments. Fixes NUMBERS-182. aherbert
Add "GammaRatio": Compute the ratio of two gamma functions. Fixes NUMBERS-180. aherbert
Fix "BrentSolver": Avoid overflow creating the initial value between the lower and upper. aherbert
Add "Erfcx": Compute a scaled complementary error function: erfcx(z) = erfc(z) * exp(z*z). Fixes NUMBERS-177. aherbert
Update "Factorial/FactorialDouble": Tabulate all factorials with exact 64-bit double representations of n! up to n=170. This change deprecates the FactorialDouble class and removes obsolete caching functionality. Fixes NUMBERS-178. aherbert
Update "ContinuedFraction": Update to use a shared implementation with GeneralizedContinuedFraction. Fixes NUMBERS-176. aherbert
Update "Gamma/LogGamma/RegularizedGamma": Update the gamma function implementations to increase accuracy and support for extreme values. Functionality is ported from the Boost C++ library. Fixes NUMBERS-174. aherbert
Add "GeneralizedContinuedFraction": A continued fraction class to compute using a generator. Allows evaluation of continued fractions from a regular series where coefficients can be computed iteratively from the previous coefficients. Fixes NUMBERS-175. aherbert
Fix "ContinuedFraction": Set a minimum bound on the relative error epsilon. Prevents an infinite loop when the epsilon is zero. Fixes NUMBERS-173. aherbert
Fix "FactorialDouble": Prevent caching values that are infinite. The cache will support factorials up to 170. aherbert
Update "Erf/Erfc": Use a rational function approximation accurate to 53-bits of precision. This replaces the use of the regularized gamma functions P and Q and increases accuracy at extreme limits of the function. Execution speed is improved. Functionality is ported from the Boost C++ library. Fixes NUMBERS-172. aherbert
Update "InverseErfc": Support full range of [0, 2]. This lowers the supported minimum value from 2^-53 to double min value. Execution speed is improved. Functionality is ported from the Boost C++ library. Fixes NUMBERS-171. aherbert
Fix "RegularizedBeta": Detect edge cases for arguments that can be evaluated by exploiting properties of the regularized beta function. Fixes NUMBERS-170. aherbert
Fix "BrentSolver": Identify brackets with small objective values. Fixes NUMBERS-168. aherbert
Fix Fix wrong javadoc. Thanks to Arturo Bernal. aherbert

Release 1.0 – 2021-07-17

Type Changes By
Update Combined "LinearCombination" and "Summation" into single "Sum" class. Fixes NUMBERS-163. Thanks to Matt Juntunen. mattjuntunen
Update Added SortInPlace utility, original from Commons Math. Fixes NUMBERS-164. Thanks to Gilles Sadowski. erans
Update Moved "Norms", "LinearCombination", and "Summation" from commons-numbers-arrays module to commons-numbers-core module. Moved "CosAngle" from commons-numbers-arrays module to commons-numbers-angle module. Fixes NUMBERS-159. Thanks to Matt Juntunen. mattjuntunen
Update Replaced "SafeNorm" with "Norms". Added "Summation" class for extended precision summation. Fixes NUMBERS-156. Thanks to Matt Juntunen. mattjuntunen
Update "Angle" replaces "PlaneAngle" and "PlaneAngleRadians". Fixes NUMBERS-161. Thanks to Gilles Sadowski. erans
Fix Use iterative implementation of "trigamma" function. Thanks to Dmitriy Golovashkin for reporting. Fixes NUMBERS-153. Thanks to Gilles Sadowski. erans
Update Replace angle normalize method with normalizer method that returns operator instance. Fixes NUMBERS-158. Thanks to Gilles Sadowski. erans
Update Adding Reduce operation originally from Commons Math to commons-numbers-angle module. Fixes NUMBERS-157. Thanks to Gilles Sadowski. erans
Update "LinearCombination": Update to use the dot2s algorithm. Avoids construction of an intermediate array for array dot products. Update the hi-lo splitting algorithm to use Dekker's split to ensure the product round-off is computed to exact precision. Fixes NUMBERS-142. Thanks to Alex Herbert. aherbert
Update Precision compareTo method now handles NaN properly to ensure consistent sorting. Fixes NUMBERS-154. Thanks to Gilles Sadowski. erans
Update "Fraction": Port tests from commons-lang Fraction to demonstrate functional compatibility between the lang and numbers implementation of Fraction. Fixes NUMBERS-149. Thanks to Jin Xu. aherbert
Update "ArithmeticUtils": Refine pow(int, int) and pow(long, int) for edge cases. Fixes NUMBERS-151. Thanks to Jin Xu. aherbert
Fix "Fraction/BigFraction": Fixed pow(int) to handle Integer.MIN_VALUE and throw ArithmeticException for negative exponents to a fraction of zero. Fixes NUMBERS-150. Thanks to Jin Xu. aherbert
Fix Fixed Fraction/BigFraction from(double, int) to support Integer.MIN_VALUE as max denominator. Fixes NUMBERS-147. Thanks to Alex Herbert. aherbert

Release 1.0-beta1 – 2020-04-08

No changes in this release.