Apache Commons logo Apache Commons Numbers

Apache Commons Numbers Release Notes

Release History

Version Date Description
1.1 2022-11-01 New features, updates and bug fixes. Adds a commons-numbers-bom module. Requires Java 8.
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.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.