Apache Commons logo Commons Math

Apache Commons Math Release Notes

Release History

Version Date Description
3.6.1 2016-03-21 This is a minor bug fix release. It incorporates three bug fixes since version 3.6. The minimum version of the Java platform required to compile and use Commons Math 3.6.1 is Java 5.
3.6 2016-01-05 This is a minor release: It combines bug fixes and new features. Changes to existing features were made in a backwards-compatible way such as to allow drop-in replacement of the v3.x JAR file. Most notable among the new features are: field-based version of Ordinary Differential Equations framework, numerous improvements in distributions, statistics and neuralnet packages, refactored implementation of microsphere interpolation algorithm, explicit specification of rotation convention to use (both vector operator and frame transform conventions are now available). The minimum version of the Java platform required to compile and use Commons Math is Java 5. Users are encouraged to upgrade to this version as this release not only includes bug fixes but also deprecates numerous classes and methods that will be deleted from the next major release (4.0). Caveat: 1. The implementation of the BOBYQA optimization algorithm is in alpha state (cf. MATH-621): Many code paths are untested, and we are looking for volunteers to improve the code readability, robustness and performance and to extend the unit tests suite. 2. A few methods in the FastMath class are in fact slower that their counterpart in either Math or StrictMath (cf. MATH-740 and MATH-901).
3.5 2015-04-17 This is a minor release: It combines bug fixes and new features. Changes to existing features were made in a backwards-compatible way such as to allow drop-in replacement of the v3.4.1 JAR file. Most notable among the new features are: getQuadraticMean method added to DescriptiveStatistics SummaryStatistics which calculates the root mean square, and a way to build polyhedrons sets from list of vertices and the facets they belong too. There have been numerous bug fixes. See below for a full list. The minimum version of the Java platform required to compile and use Apache Commons Math is Java 5. Users are encouraged to upgrade to this version as this release not only includes bug fixes but also deprecates numerous classes and methods that will be deleted from the next major release (4.0). Caveat: 1. The implementation of the BOBYQA optimization algorithm is in alpha state (cf. MATH-621): Many code paths are untested, and we are looking for volunteers to improve the code readability, robustness and performance and to extend the unit tests suite. 2. A few methods in the FastMath class are in fact slower that their counterpart in either Math or StrictMath (cf. MATH-740 and MATH-901).
3.4.1 2015-01-11 This is a maintenance release: It fixes issue MATH-1188.
3.4 2014-12-26 This is a minor release: It combines bug fixes and new features. Changes to existing features were made in a backwards-compatible way such as to allow drop-in replacement of the v3.3 JAR file. Most notable among the new features are: new distributions (Gumbel, Laplace, Logistic, Nakagami), and improvements on percentiles algorithms (better handling for NaNs in the regular algorithm, plus a new storeless implementation). Bicubic and tricubic interpolators have been fixed and new implementations added. There have been numerous bug fixes and several improvements on performances or robustness. See below for a full list. The minimum version of the Java platform required to compile and use Apache Commons Math is Java 5. Users are encouraged to upgrade to this version as this release not only includes bug fixes but also deprecates numerous classes and methods that will be deleted from the next major release (4.0). Caveat: 1. The implementation of the BOBYQA optimization algorithm is in alpha state (cf. MATH-621): Many code paths are untested, and we are looking for volunteers to improve the code readability, robustness and performance and to extend the unit tests suite. 2. A few methods in the FastMath class are in fact slower that their counterpart in either Math or StrictMath (cf. MATH-740 and MATH-901).
3.3 2014-05-05 This is a minor release: It combines bug fixes and new features. Changes to existing features were made in a backwards-compatible way such as to allow drop-in replacement of the v3.x JAR file. Most notable among the new features are: Framework for creating artificial neural nets, self organizing feature maps, computational geometry algorithms (convex hull, enclosing ball), performance improvements of the linear simplex solver, refactoring of curve fitters, low-discrepancy random generators (sobol, halton), least-squares fitting. The minimum version of the Java platform required to compile and use Commons Math is Java 5. Users are encouraged to upgrade to this version as this release not only includes bug fixes but also deprecates numerous classes and methods that will be deleted from the next major release (4.0). Caveat: 1. The implementation of the BOBYQA optimization algorithm is in alpha state (cf. MATH-621): Many code paths are untested, and we are looking for volunteers to improve the code readability, robustness and performance and to extend the unit tests suite. 2. A few methods in the FastMath class are in fact slower that their counterpart in either Math or StrictMath (cf. MATH-740 and MATH-901). 3. A few methods/constructors in the package o.a.c.m.geometry.partitioning have changed their signature in a non backwards-compatible way. The respective classes are intended to be package private only and are not supposed to be used for other purposes.
3.2 2013-04-06 This is a minor release: It combines bug fixes and new features. Changes to existing features were made in a backwards-compatible way such as to allow drop-in replacement of the v3.1[.1] JAR file. Most notable among the new features are: Framework for automatic differentiation, Lévy distribution, prime numbers, enumerated distributions, real field allowing to use several algorithms (solvers, linear algebra, 3D geometry) with different real-like classes (high accuracy or automatic differentiation), spherical coordinates with gradients and Hessians, reorganized clustering package with different distance implementations. The minimum version of the Java platform required to compile and use Commons Math is Java 5. Users are encouraged to upgrade to this version as this release not only includes bug fixes but also deprecates numerous classes and methods that will be deleted from the next major release (4.0). Caveat: 1. The implementation of the BOBYQA optimization algorithm is in alpha state (cf. MATH-621): Many code paths are untested, and we are looking for volunteers to improve the code readability, robustness and performance and to extend the unit tests suite. 2. A few methods in the FastMath class are in fact slower that their counterpart in either Math or StrictMath (cf. MATH-740 and MATH-901).
3.1.1 2013-01-14 This is a point release: It fixes a bug that renders version 3.1 unusable in some situations (see details below).
3.1 2012-12-23 This is a minor release: It combines bug fixes and new features. Changes to existing features were made in a backwards-compatible way such as to allow drop-in replacement of the v3.0 JAR file. Most notable among the new features are: Framework for automatic differentiation, multivariate mixture model distribution, quaternions, Gauss integration framework, Hermite polynomial interpolation, eigenvalue decomposition of non-symmetric matrices, DBSCAN clustering. Most notable among the changes are: Greatly improved precision in the implementation of the Gamma and Beta special functions, optimizers API, deprecation of the sparse vector implementation. The minimal version of the Java platform required to compile and use Commons Math is Java 5. Users are encouraged to upgrade to this version as this release not only includes bug fixes but also deprecates numerous classes and methods that will be deleted from the next major release (4.0). Caveat: 1. The implementation of the BOBYQA optimization algorithm is in alpha state (cf. MATH-621): Many code paths are untested, and we are looking for volunteers to improve the code readability, robustness and performance and to extend the unit tests suite. 2. A few methods in the FastMath class are in fact slower that their counterpart in either Math or StrictMath (cf. MATH-740 and MATH-901).
3.0 2012-03-07 This is a major release: It combines bug fixes, new features and changes to existing features. Most notable among the new features are: Iterative solvers, Kalman filter, ISAAC RNG, Illinois and Pegasus root finders, enhanced ODE framework, refactored geometry package, Binary Space Partition trees. Most notable among the changes are: Exclusive use of unchecked exceptions, removal of interfaces for which a single implementation is assumed to exist, improved coding and API consistency across packages, performance (matrix product, FFT) and robustness (SVD). Because of the base package name change, this release can be used together with earlier versions of Commons Math. The minimal version of the Java platform required to compile and use Commons Math is Java 5. Users are encouraged to upgrade to this version as, in addition to new features, this release includes numerous bug fixes. Users of Commons Math 2.0-2 should recompile their code against the 3.0 JAR file and must adjust the import statements to use the appropriate org.apache.commons.math3 base package. Most of the compilation errors users will encounter after the switch will be due to moved or deleted classes/interfaces resulting from package reorganization. Caveat: 1. The implementation of the BOBYQA optimization algorithm is in alpha state (cf. MATH-621): Many code paths are untested, and we are looking for volunteers to improve the code readability, robustness and performance and to extend the unit tests suite. 2. A few methods in the FastMath class are in fact slower that their counterpart in either Math or StrictMath (cf. MATH-740).
2.2 2011-03-02 This is primarily a maintenance release, but it also includes new features and enhancements. Users of version 2.1 are encouraged to upgrade to 2.2, as this release includes some important bug fixes. See the detailed list of changes below for full description of all bug fixes and enhancements. This release contains some minor compatibility breaks with version 2.1 in some internal classes but none of them are in APIs likely to be accessed by user code: the MessagesResources_fr class has been removed (replaced by a properties file); the arguments of the EventState.reinitializeBegin method have changed; some protected fields which already had public accessors in AbstractStepInterpolator have been replaced. There is a behavior change that users of the multiple regression classes should be aware of. In version 2.1, there was no way to estimate models without intercept terms, and, while this was not clear from the documentation, design (X) matrices needed to include initial unitary columns. In 2.2, initial unitary columns are not necessary and whether or not models include intercept terms is configurable. See the change log and javadoc for the classes in org.apache.commons.math3.stat.regression for details. The major new features are: a new FastMath class, both faster, more accurate and with a few additional functions than StrictMath and Math; a new package for floating point arbitrary precision computing, including high level functions like exponential, sine, square root ...; new linear and tricubic interpolators; a new Gaussian curve fitter; a new erfc function; characteristic support for distributions; a set of new Well Equidistributed Long-period Linear (WELL) random generators.
2.1 2010-04-02 This is primarily a maintenance release, but it also includes new features and enhancements. Users of version 2.0 are encouraged to upgrade to 2.1, as this release includes some important bug fixes. See the detailed list of changes below for full description of all bug fixes and enhancements. This release contains some minor API compatibility breaks with version 2.0: the return type of RealVector.copy() has been changed to AbstractRealVector; the no-argument constructor of MatrixUtils() has been made private; the mapXxxToSelf methods of OpenMapRealVector have been removed and some method return types have been changed in this class; new methods have been added to the RealVector interface; several fields in AdaptiveStepSizeIntegrator have been made final; DummyStepInterpolator requires an additional argument for one of its constructors; some protected fields have been removed from AbstractLeastSquaresOptimizer, AbstractScalarDifferentiableOptimizer and AbstractLinearOptimizer; and the isOptimal(SimplexTableau) method has been removed from SimplexSolver.
2.0 2009-08-03 This is a major release. It combines bug fixes, new features and changes to existing features. Most notable among the new features are: decomposition algorithms in the linear algebra package (LU, QR, Cholesky, SVD, eigen decomposition) which are based on the popular JAMA API (but much faster); support for sparse matrices and vectors; support for any field-based matrix (Complex, Fraction ...); support for genetic algorithms; several new optimization algorithms (Dantzig's simplex for linear constrained problems, conjugate gradient, Brent); support for curve fitting with special cases for harmonic and polynomial functions; support for state derivative in ODE step handlers; new multistep integrators (Adams-Bashforth and Adams-Moulton) with variable stepsize; regression algorithms; rank transformations; Mersenne twister pseudo random number generator. This release is NOT source and binary compatible with earlier versions of Commons Math. Starting with version 2.0 of the library, the minimal version of the Java platform required to compile and use Commons Math is Java 5. Users are encouraged to upgrade to this version, as in addition to new features, this release includes numerous bug fixes. Users of Commons Math 1.0-1.2 should recompile their code against the 2.0 jar. Most of the compilation errors users will encounter after the switch will be due to classes moved due to package reorganization. These errors are simply solved by adjusting the import statements in users code.
1.2 2008-02-24 This release combines bug fixes and new features. Most notable among the new features are the estimation, optimization, geometry and ode packages added from the Mantissa library. Implementations of fast Fourier transform, QR decomposition and several numerical integration algorithms have also been added, along with enhancements and extensions to packages included in Commons Math 1.1. This release is source and binary compatible with earlier versions of Commons Math.
1.1 2005-12-17 This is a maintenance release containing bug fixes and enhancements. All API changes are binary compatible with version 1.0. The enhancements include some new probability distributions, a Fraction class, new matrix and numerical utilities, and a PRNG pluggability framework making it possible to replace the JDK-supplied random number generator in Commons Math (and elsewhere) with alternative PRNG implementations.
1.0 2004-12-06 Apache Commons Math 1.0 - Initial Release

Release TBD – TBD

No changes in this release.

Release 4.0 – XXXX-XX-XX

Type Changes By
Fix Add context to "OutOfRangeException". Fixes MATH-1565. Thanks to Randy Strauss. erans
Update Add "Automatic-Module-Name" entry to JAR manifest file. Fixes MATH-1562. Thanks to Frank Ulbricht. erans
Fix "MidPointIntegrator": Fix iterative procedure in order to actually benefit from evaluations performed at earlier stages. Fixes MATH-1558. Thanks to Sam Ritchie. erans
Fix "Atan2": Documentation issue. Fixes MATH-1555. Thanks to Laurent Galluccio. erans
Add "Percentile": Partial support for weighted data. Fixes MATH-1551. Thanks to Allen Yu. erans
Update Remove package "o.a.c.math4.geometry". Fixes MATH-1554. erans
Fix "SimplexTableau": Internally "scale down" the problem definition when the constraints are defined with large numbers, in order to avoid spurious exceptions caused by floating-point accuracy errors. Fixes MATH-1549. Thanks to Mohammad Rezaei. erans
Fix Avoid inefficiencies in computing the standard quality measures of a SOFM. Fixes MATH-1548. erans
Update More flexible ranking of SOFM. Fixes MATH-1547. erans
Fix Clean-up (typos and unused "import" statements). Fixes MATH-1537. Thanks to Jin Xu. erans
Fix "EmpiricalDistribution": Workaround to avoid spurious exception. Fixes MATH-1531. erans
Update "SplineInterpolator": Improved performance. Fixes MATH-1530. Thanks to Yassine Damerdji. erans
Add "AkimaSplineInterpolator": Option to use alternative weights. Fixes MATH-1529. erans
Add Add "MiniBatchKMeansClusterer" clustering algorithm. Fixes MATH-1509. Thanks to Chen Tao. erans
Update Code reuse. Fixes MATH-1524. Thanks to Chen Tao. erans
Fix Issue in site generation and developers documentation. Fixes MATH-1511. erans
Update Remove generic parameter in clustering evaluator interfaces. Fixes MATH-1522. Thanks to Chen Tao. erans
Add Add "Calinski-Harabsz" clustering evaluator. Fixes MATH-1519. Thanks to Chen Tao. erans
Update Abstract class "ClusterEvaluator" replaced by an interface. Fixes MATH-1523. erans
Fix Remove code duplication by moving method to class "Cluster". Fixes MATH-1518. erans
Add Interface for ranking a list of clusters. Fixes MATH-1516. erans
Update Do not use exceptions for control flow. Fixes MATH-1408. kinow
Fix Avoid overflow. Fixes MATH-1388. erans
Update Removed deprecated class "Incrementor" (replaced by "IntegerSequence.Incrementor"). Fixes MATH-1362. erans
Update Removed class "MultidimensionalCounter" (ported to "Commons Numbers"). Fixes MATH-1506. erans
Update Removed class "BigFraction" (ported to "Commons Numbers"). Fixes MATH-1504. erans
Update Removed class "Fraction" (ported to "Commons Numbers"). Fixes MATH-1446. erans
Update Removed most codes in package "o.a.c.m.geometry". "Commons Math" now depends on "Commons Geometry". Fixes MATH-1469. erans
Update "SobolSequenceGenerator": Update data file. Fixes MATH-1481. Thanks to Théophile Charmont. erans
Fix "ClopperPearsonInterval": Missing cases. Fixes MATH-1401. Thanks to Michele De Stefano. erans
Add "MillerUpdatingRegression": Fixed "ArrayIndexOutOfBounds" exception. Fixes MATH-1477. Thanks to Chee Sing Lee. erans
Fix "IntegerSequence.incrementor": Throw "NoSuchElementException" from "next" method. Fixes MATH-1463. erans
Add Create a way to automatically calculate a Jacobian matrix using a differentiator. Fixes MATH-1459. Thanks to Adrian Porter. erans
Fix "SimpsonIntegrator": Fixed iteration. Fixes MATH-1458. Thanks to Alex Herbert. erans
Add "DescriptiveStatistics": allow "Double[]" as initializer. Fixes MATH-1426. Thanks to Karl Richter. erans
Fix "PolynomialSplineFunction": incorrect usage of exception. Fixes MATH-1419. Thanks to Hang Park. erans
Fix add generics to the Frequency class. Fixes MATH-1413. kinow
Fix "RRQRDecomposition": bug in method "performHouseholderReflection". Fixes MATH-1417. Thanks to Jean-Francois Lecomte. erans
Fix BinomialTest P-value > 1. Fixes MATH-1381. Thanks to Kexin Xie. kinow
Fix "MultivariateNormalDistribution": performance improvement (by removing unnecessary copying). Fixes MATH-1382. Thanks to Stefan Bunk. erans
Fix "KolmogorovSmirnovTest": bug in "fixTies". Fixes MATH-1405. Thanks to Daniil Finkel. erans
Update Performance improvement for Array2DRowRealMatrix.getSubMatrix(). Fixes MATH-1389. Thanks to Christoph Dibak. ebourg
Add Dependency toward the "Commons Rng" component. Fixes MATH-1383. erans
Update "SimplexOptimizer": Slight performance improvement. Fixes MATH-1377. erans
Fix "SimplexOptimizer": Wrong value of iteration number was passed to the convergence checker. Fixes MATH-1376. Thanks to Thomas Weise. erans
Fix Major refactoring of package "o.a.c.m.random". Fixes MATH-1319. erans
Fix Removed obsolete RNG API (replaced by classes under "o.a.c.m.rng"). Fixes MATH-1366. erans
Add Gauss-Laguerre quadrature. Fixes MATH-1015. Thanks to Thomas Neidhart. erans
Update "o.a.c.m.special.Gamma.digamma": Improved performance (through the use of the reflection formula for negative arguments). Fixes MATH-1318. Thanks to Eric Prescott-Gagnon. erans
Add Improved code coverage (unit tests). Fixes MATH-1350. Thanks to Rob Tompkins. erans
Add New 64-bits RNG implementations. On 64-bits systems, they are ~35% faster than "java.util.Random" for generating "long" or "double" values. They also guarantee much better randomness than "Random" (cf. MATH-1327). Fixes MATH-1336. erans
Add Refactoring of uniform random number generator functionality: new API implemented in package "o.a.c.m.rng". Fixes MATH-1335. erans
Fix Avoid exception swallowing (in class "TestUtils"). Fixes MATH-1340. erans
Fix Avoid redundant object creation. Fixes MATH-1339. erans
Add Adaptor class from new API ("o.a.c.m.rng.RandomSource") to old API ("o.a.c.m.random.RandomGenerator"). Fixes MATH-1337. erans
Add Report on performance and correctness of the new RNG implementations. Fixes MATH-1327. erans
Add Javadoc of the new RNG API ("o.a.c.m.rng") mentions the "seed problem". Fixes MATH-1314. erans
Add New interface for sampling from distribution (package "o.a.c.m.distribution"). Fixes MATH-1158. erans
Fix "HypergeometricDistribution": Handle special cases that produced NaN. Fixes MATH-1356. erans
Add New sampler API for "MultivariateRealDistribution". Fixes MATH-1351. erans
Add Adaptor for using one of the new RNG implementations where an instance of "java.util.Random" is required. Fixes MATH-1348. erans
Fix "BetaDistribution": Removed unnecessary recomputation. Fixes MATH-1343. erans
Fix "JDKRandomGenerator": Method "nextInt(int)" now throws a "NotStrictlyPositiveException". The class now delegates to (rather inherits from) "java.util.Random". Fixes MATH-1124. erans
Update "AbstractRandomGenerator" and "BitsStreamGenerator": Slight performance improvement of the "nextBytes" method (particularly when the number of requested bytes is a multiple of 4). Fixes MATH-1305. Thanks to Rostislav Krasny. erans
Fix "AbstractRandomGenerator" and "BitsStreamGenerator": Remove a redundant call to the random data provider. Fixes MATH-1300. Thanks to Rostislav Krasny. erans
Add "FactorialLog": Cache-based computation of the "log factorial" function (implemented as an inner class of "CombinatoricsUtils" in package "o.a.c.m.util"). Fixes MATH-1295. Thanks to Aleksei Dievskii. erans
Add Added divideUnsigned and remainderUnsigned to ArithmeticUtils. Fixes MATH-1271. Thanks to Qualtagh. luc
Fix Lifted unnecessary restriction on constructor's argument of "MicrosphereInterpolator" (package "o.a.c.m.analysis.interpolation"). Fixes MATH-1231. erans
Fix The "SimplexSolver" will now throw a "DimensionMismatchException" when calling "optimize(...)" with linear constraints whose dimension does not match the dimension of the objective function. Fixes MATH-1230. tn
Add Added a fast implementation of IEEEremainder in FastMath. luc
Fix Use Double.isNaN rather than x != x in FastMath. Fixes MATH-1222. Thanks to Benedikt Ritter. luc
Fix Added helper methods to FunctionUtils for univariate and multivariate differentiable functions conversion. Fixes MATH-1143. luc
Fix Removed unused package private class PollardRho in package primes. Fixes MATH-964. tn
Fix Improve performance of "ZipfDistribution" by caching the nth generalized harmonic. Fixes MATH-1221. tn
Update "MathRuntimeException" is now the base class for all commons-math exceptions (except for "NullArgumentException" which extends "NullPointerException"). Fixes MATH-853. tn
Remove Removed methods "test(...)" from "AbstractUnivariateStatistic". The already existing methods "MathArrays#verifyValues(...)" shall be used instead. Fixes MATH-1205. tn
Update The abstract class "AbstractStorelessUnivariateStatistic" does not extend anymore from "AbstractUnivariateStatistic". Fixes MATH-1205. tn
Update Default implementation of "AbstractStorelessUnivariateStatistic#equals(Object)" will only return true if both instances have the same type. Previously different statistics were considered to be equal if their current state happened to be equal. Fixes MATH-1205. tn
Update Default implementations of "AbstractStorelessUnivariateStatistic#evaluate(...)" do not alter the internal state anymore. Instead a temporary copy of the statistic is created for evaluation purposes. Fixes MATH-1205. tn
Fix Methods "evaluate(...)" of class "Variance" changed the internal state although it was stated differently in the javadoc. Fixes MATH-1205. tn
Fix Fixed ignored method parameters in QRDecomposition protected methods. Fixes MATH-1191. luc
Fix Changed javadoc as the RandomDataGenerator class does not implement an interface anymore (the previous interface has been deprecated in 3.X and removed in 4.0). Fixes MATH-1212. luc
Update Added new API methods in "LeastSquaresProblem.Evaluation" (package "o.a.c.m.fitting.leastsquares"). Fixes MATH-1206. erans
Update "QRDecomposition": include information about the condition that triggers a "SingularMatrixException". Fixes MATH-1210. erans
Update Removed broken synchronization support in "ResizableDoubleArray". Fixes MATH-757. tn
Add Added method "T log10()" to interface "RealFieldElement". Fixes MATH-945. tn
Update "SpearmansCorrelation" will now throw an "MathIllegalArgumentException" if provided with a "NaturalRanking" instance that uses "REMOVED" as "NaNStrategy". Fixes MATH-869. tn
Update "NullArgumentException" extends now "java.lang.NullPointerException" instead of "MathIllegalArgumentException". Fixes MATH-869. tn
Update Renamed "cumulativeProbability(double, double)" to "probability(double, double)" in "IntegerDistribution" and "RealDistribution". Fixes MATH-839. Thanks to Gilles Sadowski. tn
Add Added logDensity(double) to RealDistribution and logProbability(int) to IntegerDistribution interface. The implementations have already been updated in release 3.3. Fixes MATH-1039. Thanks to Aleksei Dievskii. tn
Update WELL type pseudo-random number generators have been refactored: the cached indirection index tables per instance are now stored in a static instance. This reduces the initialization cost when creating a new instance. Fixes MATH-1155. tn
Remove Removed "ArithmeticUtils#pow(int, long)" and "ArithmeticUtils#pow(long, long)". Fixes MATH-1050. tn
Update Method "LaguerreSolver#laguerre(...)" has been made private. Fixes MATH-825. Thanks to Gilles Sadowski. tn
Update Field "windowSize" in "DescriptiveStatistics" has been made private. Fixes MATH-760. Thanks to sebb. tn

Release 3.6.1 – 2016-03-21

Type Changes By
Update Add uniformity unit tests to "RandomGeneratorAbstractTest". Fixes MATH-1317. psteitz
Fix Fix code example in User Guide > Statistics > Multiple linear regression. Fixes MATH-1316. psteitz
Fix Fix ODE integrators when multiple events are nearly simultaneous. Fixes MATH-1342. evan

Release 3.6 – 2016-01-05

Type Changes By
Fix Improved performance and accuracy of 2-sample KolmogorovSmirnov tests. Fixes MATH-1310. psteitz
Fix Detect start failures with multi-step ODE integrators. Fixes MATH-1297. luc
Add Added a RotationConvention enumerate to allow specifying the semantics or axis/angle for rotations. This enumerate has two values: VECTOR_OPERATOR and FRAME_TRANSFORM. Fixes MATH-1302,MATH-1303. luc
Fix Fixed stability issues with Adams-Bashforth and Adams-Moulton ODE integrators. The integrators did not estimate the local error properly and were sometimes stuck attempting to reduce indefinitely the step size as they thought the error was too high. Thanks to Julien Queyrel. luc
Add Added a field-based version of Ordinary Differential Equations framework. This allows integrating ode that refer to RealField elements instead of primitive double, hence opening the way to use DerivativeStructure to compute partial differential without using variational equations, or to solve ode with extended precision using Dfp. Fixes MATH-1288. luc
Fix Increased default value for number of allowed evaluations in "o.a.c.m.optim.univariate.BracketFinder". Fixes MATH-1295. Thanks to Luke Lindsay. erans
Update Modified 2-sample KolmogorovSmirnovTest to handle ties in sample data. By default, ties are broken by adding random jitter to input data. Also added bootstrap method analogous to ks.boot in R Matching package. Fixes MATH-1246. psteitz
Fix Fixed potential race condition in PolynomialUtils#buildPolynomial in case polynomials are generated from multiple threads. Furthermore, the synchronization is now performed on the coefficient list instead of the class. Fixes MATH-1294. Thanks to Kamil Włodarczyk. tn
Update Added bootstrap method to KolmogorovSmirnov test. Fixes MATH-1246. psteitz
Update Added constructors taking sample data as arguments to enumerated real and integer distributions. Fixes MATH-1287. psteitz
Fix Fixed FastMath.exp that potentially returned NaN for non-NaN argument. Fixes MATH-1269. oertl
Add Added a nth order Brent solver for general real fields, replacing the former solver that was restricted to Dfp fields only. luc
Add New "Range" inner class of "o.a.c.m.util.IntegerSequence". Fixes MATH-1286. erans
Fix Updated reference in ZipfDistribution's javadoc. Fixes MATH-1285. Thanks to Pim van der Hoorn. oertl
Fix Fixed "Gamma#gamma(double)" for negative values smaller than -20. Fixes MATH-1283. Thanks to Jean Noel Delavalade. tn
Fix Fixed javadoc of methods {floorDiv,floorMod} in class "FastMath". Fixes MATH-1237. Thanks to Ken Williams. tn
Add "AggregateSummaryStatistics" can now aggregate any kind of "StatisticalSummary". Fixes MATH-837. tn
Fix Check precondition (class "o.a.c.m.random.EmpiricalDistribution"). Fixes MATH-1279. erans
Add Deep copy of "Network" (package "o.a.c.m.ml.neuralnet") to allow evaluation of of intermediate states during training. Fixes MATH-1278. erans
Update Improved performance of sampling and inverse cumulative probability calculation for geometric distributions. Fixes MATH-1276. oertl
Fix Fixed incorrect Kendall's tau coefficient calculation due to internal integer overflow. Fixes MATH-1277. Thanks to Marc Rosen. oertl
Update Representation of Kolmogorov-Smirnov statistic as integral value. Fixes MATH-1274. oertl
Add Added negative zero support in FastMath.pow. Fixes MATH-1273. Thanks to Qualtagh. luc
Add Various SOFM visualizations (in package "o.a.c.m.ml.neuralnet.twod.util"): Unified distance matrix, hit histogram, smoothed data histograms, topographic error, quantization error. Fixes MATH-1270. erans
Add New interfaces to be implemented by algorithms that visualizes properties of a "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod.util"). Fixes MATH-1268. erans
Add Reimplemented pow(double, double) in FastMath, for better accuracy in integral power cases and trying to fix erroneous JIT optimization again. luc
Add Added a pow(double, long) method in FastMath. luc
Fix Fixed split/side inconsistencies in BSP trees. Fixes MATH-1266. luc
Add "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod") implements "Iterable". Fixes MATH-1265. erans
Add "MapUtils" (package "o.a.c.m.ml.neuralnet"): Method to sort units according to distance from a given vector. Fixes MATH-1264. erans
Add Accessor (class "o.a.c.m.ml.neuralnet.twod.NeuronSquareMesh2D"). Fixes MATH-1263. erans
Add New "IntegerSequence" class (in package "o.a.c.m.util") with "Incrementor" inner class. Fixes MATH-1259. erans
Update Faster generation of Zipf distributed random numbers by using rejection-inversion sampling. Fixes MATH-1220. oertl
Update Improved performance of sort-in-place methods by avoiding boxing. Fixes MATH-990. oertl
Fix Avoid overflow in "Fraction" (multiplication or division by an int). Fixes MATH-1261. Thanks to Osamu Ikeuchi. erans
Fix Added check for equal array lengths to distance measure functions. Fixes MATH-1258. Thanks to Gunel Jahangirova. oertl
Fix Better accuracy in computation of cumulative probability of "NormalDistribution" (package "o.a.c.m.distribution"). Fixes MATH-1257. Thanks to Bill Murphy. erans
Fix Boundary check to construct an "Interval" (package "o.a.c.m.geometry.euclidean.oned"). Fixes MATH-1256. erans
Fix Wrong neighbourhood size in class "KohonenUpdateAction" (package "o.a.c.m.ml.neuralnet.sofm"). Fixes MATH-1255. erans
Fix ResizableDoubleArray constructor does not work with double array of size 1. Fixes MATH-1252. Thanks to John Bay. psteitz
Fix Fixed initial value of "number of calls" counter in class "KohonenUpdateAction" (package "o.a.c.m.ml.neuralnet.sofm"). Fixes MATH-1251. erans
Add "Neuron" class (package "o.a.c.m.ml.neuralnet"): added methods that can be used to assess concurrency performance. Fixes MATH-1250. erans
Fix Removed unnecessary allocations in "BigFraction" (package "o.a.c.m.fraction"). Fixes MATH-1248. Thanks to Chris Popp. erans
Fix Fixed error in computing discrete distribution of D statistics for small-sample 2-sample Kolmogorov-Smirnov tests. Error was causing incorrect p-values returned by exactP and monteCarloP methods (used by default for small, mid-size samples). Fixes MATH-1245. psteitz
Update Refactored implementation of the "miscrosphere projection" interpolation algorithm. New classes: "MicrosphereProjectionInterpolator", "InterpolatingMicrosphere" and "InterpolatingMicrosphere2D" replace "MicrosphereInterpolator" and "MicrosphereInterpolatingFunction". (package "o.a.c.m.analysis.interpolation"). Fixes MATH-1243. erans
Add Method "cosAngle" in "o.a.c.m.util.MathArrays". Fixes MATH-1244. erans
Fix "KolmogorovSmirnovTest#ksSum(...)" returned wrong result in case the provided t-parameters was zero. This affected the calculation of "approximateP(...)" for identical samples. Fixes MATH-1240. tn
Fix Improved performance to calculate the two-sample Kolmogorov-Smirnov test via monte carlo simulation ("KolmogorovSmirnovTets#monteCarloP(...)"). Fixes MATH-1242. Thanks to Otmar Ertl. tn
Fix A "StackOverflowException" was thrown when passing Double.NaN or infinity to "Gamma#digamma(double)" or "Gamma#trigamma(double)". Now the input value is propagated to the output if it is not a real number. Fixes MATH-1241. Thanks to Aleksei Dievskii. tn
Fix Improved performance of calculating the two-sample Kolmogorov-Smirnov test statistic. Fixes MATH-1232. Thanks to Otmar Ertl. tn
Fix Fixed error message for unknown parameter name in ODE. Fixes MATH-1232. luc
Fix Fixed wrong event detection in case of close events pairs. Fixes MATH-1226. luc
Fix Fix potential branching errors in "FastMath#pow(double, double)" when passing special values, i.e. infinity, due to erroneous JIT optimization. tn
Fix Fixed equals/hashcode contract failure for Dfp. Fixes MATH-1118. luc
Fix Fixed wrong splitting of huge number in extended accuracy algorithms. Fixes MATH-1223. luc
Fix Improve performance of "BetaDistribution#sample()" by using Cheng's algorithm. Fixes MATH-1153. Thanks to Sergei Lebedev. tn
Fix Computation of 2-sample Kolmogorov-Smirnov statistic in case of ties was not correct. Fixes MATH-1197. tn

Release 3.5 – 2015-04-17

Type Changes By
Fix Moved FastMathTestPerformance out of the main test tree, as is is a benchmark rather than a test. Fixes MATH-1195. luc
Add Added a way to build polyhedrons sets from a list of vertices and facets specified using vertices indices. luc
Update Added Laguerre complex solve methods taking maxEval parameters. Fixes MATH-1213. psteitz
Fix Fixed ignored method parameters in QRDecomposition protected methods. Fixes MATH-1191. luc
Fix Fixed wrong selection of line/polyhedron intersection point. Fixes MATH-1211. Thanks to Mike Zimmerman. luc
Fix Improved fix for corner cases in BSP-tree merging, when cut sub-hyperplanes vanish. Fixes MATH-1162. luc
Fix Fixed link to algorithm description in "PoissonDistribution#sample()". Fixes MATH-1209. Thanks to Jonathan Ogilvie. tn
Fix EmpiricalDistribution cumulativeProbability can return NaN when evaluated within a constant bin. Fixes MATH-1208. psteitz
Fix EmpiricalDistribution getKernel fails for buckets with only multiple instances of the same value. Fixes MATH-1203. psteitz
Fix "UnivariateSolverUtils#bracket(...)" sometimes failed to bracket if a reached the lower bound. Fixes MATH-1204. evanward
Add Simplified "FastMath#exp(double)" in order to avoid a potential Java 1.5 JIT bug when calling with negative infinity as argument. Fixes MATH-1198. sebb
Add Added method "getQuadraticMean()" to "DescriptiveStatistics" and "SummaryStatistics" which calculates the root mean square. Fixes MATH-1199. erans

Release 3.4.1 – 2015-01-11

Type Changes By
Fix Fixed non-Java1.5 code in BesselJ. Fixes MATH-1188. sebb

Release 3.4 – 2014-12-26

Type Changes By
Add Added Bessel functions of the first kind, based on NetLib implementation. Fixes MATH-1066. Thanks to Brian Wignall. psteitz
Fix Improve performance of kalman gain calculation in "KalmanFilter" by directly solving a linear system rather than computing the matrix inverse. Fixes MATH-1142. Thanks to Arne Schwarz. tn
Fix Fixed integer overflow in KolmogorovSmirnovTest causing 2-sample test to use exact method when the product of the sample sizes exceeds Integer.MAX_VALUE, resulting in effectively hung execution. Fixes MATH-1181. psteitz
Add Method to create a sequence of integers (in "o.a.c.m.util.MathArrays"). Fixes MATH-1180. erans
Add New class "SimpleCurveFitter": Boiler-plate code to allow fitting of a user-defined parametric function. Fixes MATH-1172. erans
Add New classes "TricubicInterpolatingFunction" and "TricubicInterpolator" to replace "TricubicSplineInterpolatingFunction" and "TricubicSplineInterpolator". Fixes MATH-1173. erans
Fix Fixed example in userguide ("stat" section). Fixes MATH-1178. Thanks to Dmitriy. erans
Fix Fixed inverse cumulative probability of 0 in "LaplaceDistribution". Fixes MATH-1175. Thanks to Karsten Loesing. erans
Add New classes "BicubicInterpolatingFunction" and "BicubicInterpolator" to replace "BicubicSplineInterpolatingFunction" and "BicubicSplineInterpolator". Fixes MATH-1166. erans
Update Spurious vertices in the middle of otherwise straight edges are now filtered out when rebuilding polygons boundaries from BSP trees. luc
Fix Fixed a problem with too thin polygons considered to have infinite size. Fixes MATH-1174. luc
Add Boundary attributes in regions now provides the BSP tree nodes that were used to split the sub-hyperplane forming the boundary part of the facet. luc
Fix Fixed a problem with vanishing cut sub-hyperplanes during BSP tree merging. Fixes MATH-1162. luc
Fix "o.a.c.m.stat.regression.OLSMultipleLinearRegression": Use threshold when performing "QRDecomposition". Fixes MATH-1167. Thanks to Neil Ireson. erans
Fix "FuzzyKMeansClusterer" has thrown an exception in case one of the data points was equal to a cluster center. Fixes MATH-1165. Thanks to Pashutan Modaresi. tn
Add Interface to allow parameter validation in "o.a.c.m.fitting.leastsquares": the point computed by by the optimizer can be modified before evaluation. Fixes MATH-1144. erans
Fix Provide access to state derivatives in ContinuousOutputModel. Fixes MATH-1160. luc
Fix Fixed bicubic spline interpolator, using Akima splines. Fixes MATH-1138. Thanks to Hank Grabowski. luc
Add Changed classes in the inference package that instantiate distributions to pass null RandomGenerators to avoid initialization overhead for the default generator. Fixes MATH-1154. psteitz
Add Added all Java 8 StrictMath methods to FastMath, so FastMath remains compatible with newer Java versions. Fixes MATH-1156. luc
Add Added Gumbel, Laplace, Logistic and Nakagami distributions. Fixes MATH-1139. Thanks to Alexey Volkov. tn
Fix Added statistics missing from toString method in SummaryStatistics. Fixes MATH-1147. psteitz
Fix Improved performance of "EnumeratedDistribution#sample()" by caching the cumulative probabilities and using binary rather than a linear search. Fixes MATH-1152. Thanks to Andras Sereny. tn
Fix "MonotoneChain" did not take the tolerance factor into account when sorting the input points. In case of collinear points this could result in a "ConvergenceException" when computing the hull. Fixes MATH-1148. Thanks to Guillaume Marceau. tn
Fix Interface "ValueAndJacobianFunction" is a precondition for lazy evaluation (in "o.a.c.m.fitting.leastsquares"). Fixes MATH-1151. erans
Fix Fix potential integer overflows in "MannWhitneyUTest" when providing large sample arrays. Fixes MATH-1145. Thanks to Anders Conbere. tn
Fix Fixed potential null pointer dereferencing in constructor of "DummyStepInterpolator(DummyStepInterpolator)". Fixes MATH-1149. Thanks to M Kim. tn
Fix Fixed BinomialDistribution to deal with degenerate cases correctly. Fixes MATH-1136. Thanks to Aleksei Dievskii. psteitz
Fix "MonotoneChain" failed to generate a convex hull if only a minimal hull shall be created (includeCollinearPoints=false) and collinear hull points were present in the input. Fixes MATH-1135. Thanks to Guillaume Marceau. tn
Fix Improve performance of "KolmogorovSmirnovTest#kolmogorovSmirnovTest(...)" for large samples. Also changed implementation for large n to use Pelz-Good approximation. Fixes MATH-1131. Thanks to Schalk W. Cronjé. psteitz
Fix "BicubicSplineInterpolatingFunction": all fields made final and initialized in the constructor. Added flag to request initialization, or not, of the internal data needed for partial derivatives. Fixes MATH-1134. erans
Fix Constrained EmpiricalDistribution sample/getNextValue methods to return values within the range of the data; correctly linked RandomGenerator to superclass so that RealDistribution reseedRandomGenerator method works. Fixes MATH-984. psteitz
Add Added several different estimation types and NaN handling strategies for Percentile. Fixes MATH-1120. Thanks to Venkatesha Murthy. luc
Add Added implementation of PSquare algorithm to estimate percentiles without storing data in memory (i.e. as StorelessUnivariateStatistic). Fixes MATH-418. Thanks to Venkatesha Murthy. psteitz
Fix "Percentile": wrong sorting in the presence of NaN. Fixes MATH-1129. erans
Update Added lazy evaluation to "LeastSquaresFactory" (in "o.a.c.m.fitting.leastsquares") to avoid evaluating the model when the optimization algorithm does not actually require it. Fixes MATH-1128. erans
Fix Fixed overflow in Precision.equals with ulps (both double and float versions). Fixes MATH-1127. luc
Fix Performance improvements for Student's t-distribution. Fixes MATH-1125. Thanks to Ajo Fod. tn
Fix Fixed NullPointerException when chopping-off a sub-hyperplane that is exactly at a region boundary. Fixes MATH-1123. Thanks to Aurélien Labrosse. luc
Fix "BrentOptimizer": increment base class iteration counter. Fixes MATH-1121. Thanks to Ajo Fod. erans

Release 3.3 – 2014-05-05

Type Changes By
Add Added new constructor to "OLSMultipleLinearRegression" to be able to specify a custom singularity threshold for QR decomposition. Fixes MATH-1110. Thanks to Edward Segall. tn
Fix Extracted class "LineSearch" from "PowellOptimizer", to be used in "NonLinearConjugateGradientOptimizer" (in place of the implementation that triggered this issue). Fixes MATH-1092. erans
Fix Build properly empty polyhedrons set when given equal min/max boundaries. Also explained better in the javadoc about some wrong usage of PolyhedronsSet constructor. Fixes MATH-1115. luc
Fix Build properly empty polygons set when given equal min/max boundaries. Also explained better in the javadoc about some wrong usage of PolygonsSet constructor. Fixes MATH-1117. luc
Add Added a fast single-step method for fixed-step Runge-Kutta integrators. Fixes MATH-1119. luc
Fix "Complex": Fixed compatibility of "equals(Object)" with "hashCode()". Added new methods for testing floating-point equality between the real (resp. imaginary) parts of two complex numbers. Fixes MATH-1118. erans
Add Added an order 6 fixed-step ODE integrator designed by H. A. Luther in 1968. luc
Update Bracketing utility for univariate root solvers returns a tighter interval than before. It also allows choosing the search interval expansion rate, supporting both linear and asymptotically exponential rates. luc
Fix Prevent penalties to grow multiplicatively in CMAES for out of bounds points. Fixes MATH-1107. Thanks to Bruce A Johnson. luc
Update Added KolmogorovSmirnovTest class, deprecating KolmogorovSmirnovDistribution. Fixes MATH-437. psteitz
Add Improved documentation of QR decomposition handling of singular matrices. Fixes MATH-1101. luc
Add QR decomposition can compute pseudo-inverses for tall matrices. Fixes MATH-1053. Thanks to Sean Owen. luc
Add Field vectors now implement the visitor pattern just like real vectors. Fixes MATH-820. luc
Fix Un-deprecated RealVector.sparseIterator, documenting explicitly that entries not iterated above are the zero ones. Fixes MATH-875. luc
Fix Relaxed specification for function mapping on vectors, thus allowing straightforward implementation for sparse vectors. Fixes MATH-821. luc
Update Make QR the default in GaussNewtonOptimizer. Fixes MATH-1099. Thanks to Evan Ward. luc
Update Add Cholesky option to GaussNewtonOptimizer. Fixes MATH-1099. Thanks to Evan Ward. luc
Update Make QR in GaussNewton faster and more accurate. Fixes MATH-1099. Thanks to Evan Ward. luc
Update The sparse vector and matrix classes have been un-deprecated. This is a reversal of a former decision, as we now think we should adopt a generally accepted behavior which is ... to ignore the problems of NaNs and infinities in sparse linear algebra entities. Fixes MATH-870. luc
Add Added MonotoneChain algorithm to compute the convex hull of a collection of points in 2D. Additionally, the AklToussaintHeuristic can be used to speed up the generation. Fixes MATH-749. tn
Fix Calculating the inverse cumulative probability of an "EnumeratedRealDistribution" will now return the correct result according to the selected enumerated probability mass function. Fixes MATH-1065. Thanks to matteodg. tn
Update Deprecated "ArithmeticUtils#pow(int, long)" and "ArithmeticUtils#pow(long, long)" in favor of corresponding methods "ArithmeticUtils#pow(..., int)". Fixes MATH-1050. erans
Fix Create additional artifact "commons-math3-x.y.z-tools.jar" as part of the release process. This artifact contains useful tools, e.g. for performance testing. Fixes MATH-976. erans
Fix Improved performance of "MathArrays#sortInPlace(...)". Fixes MATH-990. erans
Fix Clarify javadoc of "DecompositionSolver#getInverse()" and corresponding implementations wrt the actually returned inverse. Several decomposition implementations are able to return a pseudo-inverse in case of a singular matrix. Fixes MATH-1044. Thanks to Sean Owen. tn
Add Added Emo Welzl algorithm to find the smallest enclosing ball of a collection of points. Fixes MATH-1095. luc
Fix Fixed an indexing problem in "BicubicSplineInterpolatingFunction" which resulted in wrong interpolations. Fixes MATH-985. Thanks to Johnathan Kool. erans
Add Added a constructor to "AbstractListChromosome" that does not copy the input argument. Fixes MATH-1072. tn
Add BSP tree now provides an API to compute a global signed distance from a test point to the region. The distance is positive if the point is outside of the region, negative if the point is inside, and zero when the point is at the boundary. The distance is continuous everywhere, so it can be used with a root solver to identify accurately boundary crossings. This API is available for all BSP trees, in Euclidean and spherical geometries, and in all dimensions. Fixes MATH-1091. luc
Add Added new geometry sub-packages: spherical.oned which deals with geometry on the 1-sphere (i.e. the circle) and spherical.twod which deals with the 2-sphere (i.e. the regular sphere). BSP trees can be used in these new spaces, so one can build arcs sets and spherical polygons sets with all the regular operations (inside/outside/boundary checks, union, intersection, symetric difference, complement ...). luc
Add IntervalsSet now implements Iterable<double[]>, so one can iterate over the sub-intervals without building a full list containing a copy of everything beforehand. Fixes MATH-1090. luc
Fix "Precision#round(double, ...)" will now return negative zero for negative values rounded to zero, similar to the float variant. Fixes MATH-1089. tn
Fix The iterator returned by "MultiDimensionalCounter#iterator()" will now correctly throw a "NoSuchElementException" when calling "next()" and the iterator is already exhausted. Fixes MATH-1088. erans
Fix Fixed an issue with noisy functions for ODE events detection. luc
Add Utilities for creating artificial neural networks (package "o.a.c.m.ml.neuralnet"). Implementation of Kohonen's Self-Organizing Feature Map (SOFM). Fixes MATH-923. erans
Fix The cutOff mechanism of the "SimplexSolver" in package o.a.c.math3.optim.linear could lead to invalid solutions. The mechanism has been improved in a way that the tableau does not need to be updated anymore. Additionally, a new check will prevent impossible solutions to be returned as valid. Fixes MATH-1082. tn
Fix Improved performance of "SimplexSolver" in package o.a.c.math3.optim.linear by directly performing row operations and keeping track of the current basic variables. Fixes MATH-1079. tn
Update The "LinearConstraintSet" will now return the enclosed collection of "LinearConstraint" objects in the same order as they have been added. Fixes MATH-1080. tn
Fix Added support for different pivot selection rules to the "SimplexSolver" by introducing the new "OptimizationData" class "PivotSelectionRule". Currently supported rules are: Dantzig (default) and Bland (avoids cycles). Fixes MATH-842. tn
Fix Fix "Precision#round(float, int, int)" when using rounding mode "BigDecimal.ROUND_UP" and the discarded fraction is zero. Fixes MATH-1070. Thanks to Oleksandr Muliarevych. tn
Fix Use "FastMath" instead of "Math" within Commons Math. Fixes MATH-1059. tn
Fix Avoid overflow when calculating Kendall's correlation for large arrays. Fixes MATH-1068. Thanks to Gal Lalouche. tn
Fix Avoid infinite recursion in "Beta.regularizedBeta" (package "o.a.c.m.special");. Fixes MATH-1067. Thanks to Florian Erhard. erans
Add Refactoring of curve fitters (package "o.a.c.m.fitting"). Fixes MATH-1014. erans
Add Added possibility to retrieve the best found solution of the "SimplexSolver" in case the iteration limit has been reached. The "optimize(OptimizationData...)" method now supports a "SolutionCallback" which provides access to the best solution if a feasible solution could be found (phase 2 of the Two-Phase simplex method has been reached). Fixes MATH-970. tn
Update Added new class "ClusterEvaluator" to evaluate the result of a clustering algorithm and refactored existing evaluation code in "MultiKMeansPlusPlusClusterer" into separate class "SumOfClusterVariances". Fixes MATH-1031. Thanks to Thorsten Schäfer. tn
Add Added InsufficientDataException. Fixes MATH-1061. psteitz
Fix Fixed unintended integer division error in PoissonDistribution sampling method. Fixes MATH-1056. Thanks to Sean Owen. psteitz
Fix Fixed failing unit tests for "BOBYQAOptimizer" when executed with a Oracle/Sun JVM 1.5. Fixes MATH-1057. tn
Fix A call to "KalmanFilter#correct(...)" may have resulted in "NonSymmetricMatrixException" as the internally used matrix inversion method was using a too strict symmetry check. Fixes MATH-1062. tn
Fix Precision improvements (for small values of the argument) in "Beta" function and in "LogNormalDistribution" and "WeibullDistribution". Fixes MATH-1058. Thanks to Sean Owen. erans
Fix Fixed some invalid links inside javadoc and added missing deprecated annotations. Fixes MATH-1055. Thanks to Sean Owen. tn
Add Added a graphical overview of available continuous distributions to the userguide. Fixes MATH-983. tn
Add Added Kendall's tau correlation (KendallsCorrelation). Fixes MATH-1051. Thanks to Matt Adereth,devl. tn
Fix "EigenDecomposition" may have failed to compute the decomposition for certain non-symmetric matrices. Port of the respective bugfix in Jama-1.0.3. Fixes MATH-1051. tn
Fix Check for overflow in methods "pow" (class "o.a.c.m.util.ArithmeticUtils"). Fixes MATH-1047. erans
Fix "EigenDecomposition": Using tolerance for detecting whether a matrix is singular. Fixes MATH-1045. Thanks to Sean Owen. erans
Add Added SparseGradient to deal efficiently with first derivatives when the number of variables is very large but most computations depend only on a few of the variables. Fixes MATH-1036. Thanks to Ajo Fod. luc
Update Added logDensity methods to AbstractReal/IntegerDistribution with naive default implementations and improved implementations for some current distributions. Fixes MATH-1039. Thanks to Aleksei Dievskii. psteitz
Add Added ConfidenceInterval class and BinomialConfidenceInterval providing several estimators for confidence intervals for binomial probabilities. Fixes MATH-1038. Thanks to Thorsten Schäfer. psteitz
Fix Simplified and improved performance of "ArithmeticUtils#addAndCheck(long, long)". Fixes MATH-1035. Thanks to derphead. tn
Add Added new methods to compute the inverse of a matrix to "DiagonalMatrix" and "MatrixUtils". Fixes MATH-1004. Thanks to Ajo Fod. tn
Fix The "BigFraction" constructor will throw a "FractionConversionException" also in case negative values are provided which exceed the allowed range (+/- Integer.MAX_VALUE). Fixes MATH-1029. tn
Add "Pair": added factory method and "toString" method. Fixes MATH-1041. Thanks to Sean Owen. erans
Add "AbstractUnivariateStatistic.test(...)" methods have uses outside subclasses; implementation moved to MathArrays.verifyValues(...). Fixes MATH-1002. sebb
Fix The "KalmanFilter" wrongly enforced a column dimension of 1 for the provided control and measurement noise matrix. Fixes MATH-1033. Thanks to Yuan Qu. tn
Fix Fix a typo in the test class of "GeometricDistribution" and ensure that a meaningful tolerance value is used when comparing test results with expected values. Fixes MATH-1037. Thanks to Aleksei Dievskii. tn
Add Added exact binomial test implementation. Fixes MATH-1034. Thanks to Thorsten Schäfer. psteitz
Add Added overloaded constructors for subclasses of "RealDistribution" implementations which do not require an explicit "inverseCumulativeAccuracy". The default accuracy will be used instead. Fixes MATH-1018. Thanks to Ajo Fod. tn
Add Added overloaded methods for "Frequency#incrementValue(Comparable, long)" with int, long and char primitive arguments. Fixes MATH-1001. Thanks to sebb. tn
Add Added a section to the userguide for the new package o.a.c.m.ml with an overview of available clustering algorithms and a code example. Fixes MATH-1030. Thanks to Thorsten Schäfer. tn
Fix Creating a "Fraction" or "BigFraction" object with a maxDenominator parameter does not throw a "FractionConversionException" anymore in case the value is very close to fraction. Fixes MATH-996. Thanks to Tim Allison. tn
Add Added new distance metric "EarthMoversDistance". Fixes MATH-1028. Thanks to Thorsten Schäfer. tn
Fix Improve performance of "DiagonalMatrix#preMultiply(RealVector)". Fixes MATH-999. Thanks to Ajo Fod. tn
Add Added CombinatoricsUtils to the util package, moving binomial coefficients, factorials and Stirling numbers there and adding a combinations iterator. Fixes MATH-1025. psteitz
Add "PolynomialSplineFunction": added method "isValidPoint" that checks whether a point is within the interpolation range. Fixes MATH-991. erans
Add "BicubicSplineInterpolatingFunction": added method "isValidPoint" that checks whether a point is within the interpolation range. Fixes MATH-989. erans
Fix Fixed overflow in "HypergeometricDistribution". Fixes MATH-1021. Thanks to Brian Bloniarz. erans
Fix Fixed "nextPermutation" method (in "o.a.c.m.random.RandomDataGenerator"). This bug does not affect applications using a previous version of Commons Math. Fixes MATH-1020. erans
Fix Buggy (private) method "shuffle" in "o.a.c.m.random.RandomDataGenerator" superseded by "MathArrays.shuffle" (cf. MATH-1010). Fixes MATH-1019. erans
Add Utility to shuffle an array. Fixes MATH-1010. erans
Fix Created "RandomGeneratorFactory" (package "o.a.c.m.random") to reduce code duplication in "RandomDataGenerator". Fixes MATH-1012. erans
Add Created package ("o.a.c.m.fitting.leastsquares") for least-squares fitting, with implementations of "LevenbergMarquardtOptimizer" and "GaussNewtonOptimizer" adapted to a new ("fluent") API. Fixes MATH-1008. erans
Update Improved implementation of "sample" method of "UniformIntegerDistribution". Fixes MATH-1011. erans
Add Add mode function to StatUtils class. Fixes MATH-1007. sebb
Update Enabled LaTeX expressions in javadoc and site docs via MathJax. Fixes MATH-1006. psteitz
Add Add mode function to Frequency class. Fixes MATH-1000. sebb
Fix Fixed "MathArrays.linearCombination" when array length is 1. Fixes MATH-1005. Thanks to Roman Werpachowski. erans
Add Implemented Gauss-Hermite quadrature scheme (in package "o.a.c.m.analysis.integration.gauss"). Fixes MATH-997. erans
Update Documented limitation of "IterativeLegendreGaussIntegrator" (added warning about potential wrong usage). Fixes MATH-995. erans
Fix In "GaussNewtonOptimizer", check for convergence before updating the parameters estimation for the next iteration. Fixes MATH-993. erans
Add Added midpoint integration method. Fixes MATH-967. Thanks to Oleksandr Kornieiev. luc
Fix Fixed NullPointerException in 2D and 3D sub-line intersections. Fixes MATH-988. Thanks to Andreas Huber. luc
Update Added append method to SimpleRegression, making this class map/reducible. Fixes MATH-987. Thanks to Ajo Fod. psteitz
Update Added append method to StorelessCovariance, making this class map/reducible. Fixes MATH-978. Thanks to Ajo Fod. psteitz
Add Added method "MathArrays#convolve(double[], double[])" to compute the discrete, linear convolution of two sequences. Fixes MATH-851. Thanks to Clemens Novak. tn
Add Added low-discrepancy random generator "HaltonSequenceGenerator". Fixes MATH-977. tn
Add Added low-discrepancy random generator "SobolSequenceGenerator". Fixes MATH-826. Thanks to Sam Halliday. tn
Add Added "GeometricDistribution" to "o.a.c.m.distribution" package. Fixes MATH-973. Thanks to Mauro Tortonesi. tn
Add Added "ParetoDistribution" to "o.a.c.m.distribution" package. Fixes MATH-968. Thanks to Alex Gryzlov. tn
Fix Added clarification to the javadoc of "VectorFormat" and derived classes in case "," is used as a separator. Fixes MATH-962. tn
Add Added "FuzzyKMeansClusterer" to "o.a.c.m.ml.clustering" package. Fixes MATH-898. tn
Fix Fixed inconsistent dimensions preventing use of secondary states in ODE events. Fixes MATH-965. luc

Release 3.2 – 2013-04-06

Type Changes By
Fix Fixed wrong array dimensions in secondary equations handling in some cases. Fixes MATH-961. luc
Fix Fixed missing side effects of secondary equations on main state in Ordinary Differential Equations integration. Fixes MATH-960. luc
Fix Fixed inverse cumulative probability for uniform distribution. Fixes MATH-957. Thanks to Evan Ward. luc
Add All contents of package "o.a.c.m.stat.clustering" refactored into new package "o.a.c.m.ml.clustering" and added support for additional distance measures in package "o.a.c.m.ml.distance": "CanberraDistance", "ChebyshevDistance", "EuclideanDistance" and "ManhattanDistance". Fixes MATH-917,MATH-918,MATH-919,MATH-920. Thanks to Reid Hochstedler. tn
Fix "SpearmansCorrelation" now works correctly in case of a provided "NaturalRanking" with a "NaNStrategy.REMOVED" strategy and the input data contains NaN values. From version 4.0 onwards this strategy will not be supported anymore. Fixes MATH-891. tn
Update Replaced hard-coded numbers in "LevenbergMarquardtOptimizer". Fixes MATH-956. erans
Update Fixed loading of test file when path contains a space. Fixes MATH-955. Thanks to Evan Ward. luc
Update Improved speed of FastMath.abs methods for all signatures, by removing branching. Fixes MATH-954. Thanks to Charles Cooper. luc
Update Improved speed of several FastMath methods. Fixes MATH-953. Thanks to Charles Cooper. luc
Fix Fixed Complex.reciprocal() for zero argument. Fixes MATH-934. luc
Update Improved speed of FastMath copysign methods. Fixes MATH-951. Thanks to Charles Cooper. luc
Add Added Multivariate Normal Mixture Model Fitting by Expectation Maximization. Fixes MATH-817. Thanks to Jared Becksfort. erans
Fix AbstractRealMatrix will now check for rectangular input arrays in its copySubMatrix methods. Fixes MATH-862. tn
Fix Increment iteration counter in optimization algorithms. Fixes MATH-949. erans
Add Added a way to trigger only increasing or decreasing events in ODE integration. Fixes MATH-811. luc
Fix Fixed missing update in ODE event handlers, when a RESET_STATE is triggered. Fixes MATH-950. luc
Update Made EmpiricalDisribution smoothing kernel pluggable. Fixes MATH-671. psteitz
Add Added array-scaling methods to MathArrays. Fixes MATH-946. Thanks to Jared Becksfort. psteitz
Update Allow direct use of SummaryStatistics in one-way ANOVA. Fixes MATH-877. Thanks to Peter Andrews. luc
Fix Fixed infinite loop when NaN occurs in singular value decomposition. Fixes MATH-947. luc
Add Added the Lévy distribution. Fixes MATH-460. Thanks to Andrew Waterman. luc
Update Normal distribution now uses a direct implementation of the inverse error function to compute inverse cumulative probability instead of relying on a numerical solver. This is much faster, more accurate and does not need convergence threshold. luc
Add Implementations for inverse error function and inverse complementary error functions have been added. Fixes MATH-948. luc
Fix Extended ranges for FastMath performance tests. Fixes MATH-580. luc
Fix Finalized implementation of diagonal matrix. Fixes MATH-925. luc
Fix Added rank revealing QR decomposition. Fixes MATH-630. Thanks to Christopher Nix. luc
Fix ArrayFieldVector can now be constructed from any FieldVector. Fixes MATH-570. Thanks to Arne Plöse. luc
Fix Improved checking of null vector elements. Fixes MATH-861. Thanks to Sébastien Brisard. luc
Add Added utilities for prime numbers. Fixes MATH-845. Thanks to Sébastien Riou. luc
Fix Fixed generation of long random numbers between two bounds. Fixes MATH-936. luc
Fix Fixed creation of generic array. Fixes MATH-942. Thanks to Piotr Wydrych. luc
Add Check bounds in multi-start vector optimizers. Fixes MATH-914. luc
Add Added discrete distributions. Fixes MATH-941. Thanks to Piotr Wydrych. luc
Fix Fixed abstract test class naming that broke ant builds. Fixes MATH-940. Thanks to Piotr Wydrych. luc
Fix Allow covariance to be computed for one-dimensional variables. Fixes MATH-939. Thanks to Piotr Wydrych. luc
Fix Fixed accuracy of 3D Line.revert(). Fixes MATH-938. luc
Fix Improved javadoc to explain how switching functions should behave across events in ODE events detection. Fixes MATH-937. luc
Add Added Hermite interpolator for RealFieldElement instances. luc
Add Added RealFieldElement interface to represent anything that is real number like, implemented by both Decimal64, Dfp and DerivativeStructure. luc
Add Added partial derivatives computation for 3D vectors and rotations. luc
Fix Fixed DerivativeStructure.atan2 for special cases when both arguments are +/-0. Fixes MATH-935. luc
Add Added accurate linear combination of DerivativeStructure instances, avoiding cancellation. luc
Update Throw "MathUnsupportedOperationException" from optimizers that do not support constraints (previous behaviour was to silently ignore the "SimpleBounds" argument). Fixes MATH-933. erans
Add Added conversion of gradients and Hessians from spherical to Cartesian coordinates in 3D. luc
Update Greater efficiency in "UnitSphereRandomVectorGenerator". Fixes MATH-931. Thanks to Sean Owen. erans
Fix Improved class javadoc wrt convergence criteria and added additional constructors to override the default epsilon and cut-off values in class "SimplexSolver". Fixes MATH-930. tn
Fix Fixed truncated value in "MultivariateNormalDistribution". Fixes MATH-929. Thanks to Piotr Wydrych. erans
Fix Made "BitStreamGenerator" implement the "Serializable" interface. Fixes MATH-927. Thanks to Dennis Hendriks. erans

Release 3.1.1 – 2013-01-14

Type Changes By
Fix Added a (minimal) "DiagonalMatrix" implementation, such that the case of a large number of uncorrelated observations is handled efficiently. Fixes MATH-924. erans

Release 3.1 – 2012-12-23

Type Changes By
Add All contents of package "o.a.c.m.optimization" refactored into new packages "o.a.c.m.optimization" and "o.a.c.m.fitting". Fixes MATH-874. erans
Update Added methods to EmpiricalDistribution to implement the RealDistribution interface. Fixes MATH-672. psteitz
Add DBSCAN clustering algorithm (in package "o.a.c.m.stat.clustering"). Fixes MATH-897. Thanks to Reid Hochstedler. tn
Add Added element-by-element addition, subtraction, multiplication and division (in class "o.a.c.m.util.MathArrays"). Fixes MATH-910. erans
Fix Fixed "pow" method in class "FastMath". Fixes MATH-904. Thanks to Jeff Hain. erans
Update Created a "maximum number of iterations" stopping criterion in the convergence checkers (package "o.a.c.m.optimization") that allows the optimizers to return the "current best point" even if the convergence criteria are not met. Fixes MATH-902. Thanks to Bruce A. Johnson. erans
Fix Fixed overflow in "sinh" and "cosh" methods in class "FastMath". Fixes MATH-905. Thanks to Jeff Hain. erans
Update Accuracy improvements of Gamma.logGamma, and implementation of Gamma.gamma. Both new implementations are based on the NSWC Library of Mathematical Functions. Fixes MATH-849. celestin
Add New constructor in the custom checker classes (package "o.a.c.m.optimization") for passing the number of iterations after which the "convergence test" will return true. This allows an algorithm to return the best solution found (after the user-defined number of iterations) even if it does not meet the other convergence criteria. Fixes MATH-902. erans
Update Use "NaNStrategy#FAILED" as default strategy in "NaturalRanking". Fixes MATH-906. Thanks to Patrick Meyer. tn
Add Added a new "SynchronizedRandomGenerator" that wraps another "RandomGenerator" with all methods being synchronized, thus rendering the code thread-safe (at some efficiency cost). Fixes MATH-899. erans
Add Add new "NaNStrategy": FAILED, used in "RankingAlgorithm" implementations. Any encountered input value that succeeds a "Double#isNaN" check, results in a "NotANumberException". Fixes MATH-893. Thanks to Patrick Meyer. tn
Add Add new constructor to "SpearmansCorrelation" class which allows to specify the "RankingAlgorithm" to be used. Fixes MATH-892. tn
Fix Fixed naming inconsistencies between Interval and IntervalsSet classes. Fixes MATH-890. luc
Add Added a method to check points in the Interval class, with a tolerance for boundary. Fixes MATH-889. luc
Add Added G-test statistics. Fixes MATH-878. Thanks to Radoslav Tsvetkov. psteitz
Add New "getSquareRoot" method in class "EigenDecomposition" (package "o.a.c.m.linear"). Fixes MATH-883. erans
Update Added "isSymmetric" and "checkSymmetric" in "MatrixUtils" (package "o.a.c.m.linear"). Fixes MATH-884. erans
Update Moved private array argument validation methods from ChiSquareTest to MathArrays. Fixes MATH-885. psteitz
Add New class for generic multivariate mixture model distributions. Fixes MATH-816. Thanks to Jared Becksfort. erans
Fix Use getter/setter methods of super class for access to field "windowSize" in "ListUnivariateImpl". Fixes MATH-759. Thanks to sebb. tn
Fix Improved construction of polygons with an additional constructor, more robust numerically. Fixes MATH-880. luc
Add Added new methods "merge(Frequency)", "merge(Collection<Frequency>)", "incrementValue(Comparable<?>, long)" and "entrySetIterator()" to the "Frequency" class. Fixes MATH-474. Thanks to Dan Checkoway. tn
Fix Allow unlimited input values for "Dfp#multiply(int)". Fixes MATH-778. Thanks to Sébastien Brisard. tn
Fix Added distance to point to 2D Line and Segment. Fixes MATH-641. Thanks to Curtis Jensen. luc
Fix "PowellOptimizer" (package "o.a.c.m.optimization.direct") uses "BrentOptimizer" as its internal line search optimizer. The fix forces the convergence criterion of "BrentOptimizer" to use function values (instead of domain values). Fixes MATH-783. erans
Fix Numerical accuracy problems arose in "CMAESOptimizer" (in package "o.a.c.m.optimization.direct") when large finite boundaries were specified, because the interval of allowed values was mapped to [0, 1]. This mapping was not necessary and its removal allows finite and infinite boundaries to be used together. Fixes MATH-865,MATH-867,MATH-868. Thanks to Nikolaus Hansen, Frank Hess. erans
Fix Fixed some issues in nth root derivatives at 0. luc
Fix Fixed transformation to a Schur matrix for certain input matrices. Fixes MATH-848. tn
Add Added matrix "block inversion" (in "o.a.c.m.linear.MatrixUtils"). Fixes MATH-860. erans
Fix "CMAESOptimizer": Solution was not constrained to lie within the provided boundaries. Fixes MATH-864. Thanks to Frank Hess. erans
Add New "Quaternion" class (package "o.a.c.m.complex"). Fixes MATH-863. Thanks to Julien Anxionnat. erans
Add Added method to test for floating-point numbers equality with a relative tolerance (class "o.a.c.m.util.Precision"). Fixes MATH-866. Thanks to Yannick Tanguy. erans
Fix Deprecated "FieldVector#getData()" in favor of "toArray()". Fixes MATH-666. tn
Fix Fixed an error in rectangular Cholesky decomposition. Fixes MATH-789. luc
Update Clarified definition of isSupportXxxBoundInclusive in RealDistribution interface, made code consistent with the definition, and deprecated these methods, marking for removal in 4.0. Fixes MATH-859. psteitz
Update Performance improvement in computation of the greatest common divisor (in class "o.a.c.m.util.ArithmeticUtils"). Fixes MATH-841. Thanks to Sebastien Riou. erans
Fix Added a check so that the returned point will always be the best one. Fixes MATH-855. erans
Add Added a NewtonRaphsonSolver that uses the new differentiation package to define the function to solve. This class is intended to replace the former NewtonSolver which is deprecated. luc
Update Added RandomDataGenerator to replace RandomDataImpl and deprecated RandomData interface and RandomDataImpl class. Deprecated nextInversionDeviate methods from RandomDataImpl class. Ensured that all nextXxx methods in RandomDataImpl/RandomDataGenerator use the configured RandomGenerator. Fixes MATH-850. psteitz
Fix Generate an exception for rare ill-conditioned cases in "HarmonicFitter" guessing procedure (package "o.a.c.m.optimization.fitting"). Fixes MATH-844. erans
Add New interface for multivariate distributions. Added multivariate normal distribution. Fixes MATH-815. Thanks to Jared Becksfort. erans
Add Added a utility method to compute Stirling numbers of the second kind. luc
Add Added a new package dealing with differentials, for one or more free parameters and derivation order 1 or higher. luc
Add Added additional crossover policies: "CycleCrossover", "NPointCrossover", "OrderedCrossover" and "UniformCrossover". Fixes MATH-777. Thanks to Reid Hochstedler. tn
Fix Improved numerical stability of "SimplexSolver" by introducing Bland's rule to prevent cycling and a cutoff threshold to zero out very small values. Fixes MATH-828. tn
Fix Fixed overflow detection for negative values in constructor of class "Fraction". Fixes MATH-836. Thanks to Baste Nesse Buanes. tn
Fix Fixed overflow in method "percentageValue" in class "Fraction". Fixes MATH-835. Thanks to Baste Nesse Buanes. erans
Fix Raised (to 10) the default number of fractional digits to print out. Fixes MATH-622. erans
Fix Removed duplicate code. Fixes MATH-762. erans
Add Added a new "RealMatrixFormat" class for input/output of RealMatrix instances. Default formatter instances for commons-math and octave have been added to "MatrixUtils". Fixes MATH-831. tn
Add New "IterativeLegendreGaussIntegrator" that performs the same automatic subdivision of the integration interval as "LegendreGaussIntegrator", but uses the classes from package "o.a.c.m.analysis.integration.gauss" to perform the Gauss integration on the sub-interval. Deprecated "LegendreGaussIntegrator". Fixes MATH-827. erans
Fix Improve performance of quantile evaluation in "Percentile" class for cases with lots of equal values. Fixes MATH-578. tn
Add New framework for Gauss integration schemes (in package "o.a.c.m.analysis.integration.gauss"). Gauss-Legendre quadrature rules (of unlimited order) implemented in double precision, and high precision (using "BigDecimal"). Fixes MATH-797. erans
Add For all distribution classes (in package "o.a.c.m.distribution"), a new constructor takes a "RandomGenerator" parameter. The "RandomDataImpl" instance has been superseded by this RNG. All "sample()" methods have been modified to use this RNG instead of delegating to the methods in "RandomData". Fixes MATH-764,MATH-823. erans
Add Added support for real asymmetric matrices to "EigenDecomposition". Fixes MATH-235. tn
Add Re-instated methods to find all complex roots of a polynomial (class "LaguerreSolver" in package "o.a.c.m.analysis.solvers"). Fixes MATH-768. erans
Add Added accessors to the "Pair" class (package "o.a.c.m.util"). Fixes MATH-810. erans
Add Added new constructors in "EigenDecomposition" and deprecated two constructors with unused parameters. Fixes MATH-822. Thanks to Jared Becksfort. tn
Fix Added overridden method in "PolynomialFitter" (package "o.a.c.m.optimization.fitting") to limit the number of evaluations. Fixes MATH-798. erans
Add Added a new constructor to o.a.c.m.utils.IterationManager, allowing for the specification of a callback function in case the maximum number of iteration is reached. Fixes MATH-807. celestin
Add A new HermiteInterpolator class allows interpolation of vector-valued functions using both values and derivatives of the function at sample points. luc
Fix Parameterized "CurveFitter" class (package "o.a.c.m.optimization.fitting") with the type of the fitting function. Updated subclasses "PolynomialFitter", "HarmonicFitter", "GaussianFitter". Fixes MATH-804. erans
Fix Fixed a problem when building rotations from two pairs of vectors. In very rare cases, due to numerical inaccuracies the computed quaternion was not normalized (some examples went as high as 1.0e8) and even after normalization, the quaternion was plain wrong. Fixes MATH-801. luc
Remove Removed unused fields LocalizedFormats.ALPHA and LocalizedFormats.BETA. This is an acceptable compatibility break, as these fields are only meant for internal use. Fixes MATH-796. celestin
Fix Fix computation of upperCumulativeProbability in "HypergeometricDistribution" and cleanup of duplicate probability mass function. Fixes MATH-644. Thanks to marzieh. tn
Fix In GammaDistribution, deprecated getAlpha() and getBeta(). Replaced with getShape() and getScale(), respectively. Fixes MATH-791. celestin
Fix Use inline computation for OrderedTuple hash code. Fixes MATH-793. Thanks to Sebb. luc
Fix Use modified Lentz-Thompson algorithm for continued fraction evaluation to avoid underflows. Fixes MATH-718. tn
Fix Fixed a wrong assumption on BSP tree attributes when boundary collapses to a too small polygon at a non-leaf node. Fixes MATH-780. luc
Fix Put serialization back for PointValuePair and PointVectorValuePair. Fixes MATH-787. luc
Fix Avoid superfluous null check when using iterators in RealVector and ArrayRealVector. Fixes MATH-627. Thanks to Arne Plöse. tn
Fix Use epsilon instead of ulp in floating-point comparison when dropping columns after phase 1 in SimplexSolver. Fixes MATH-781. Thanks to Scheiber Ernő. tn
Fix Added a workaround for an OpenJDK issue on sparc solaris with too small constants. Fixes MATH-721. luc
Fix Fixed ListPopulation#iterator to return an unmodifiable iterator. Fixes MATH-779. Thanks to Reid Hochstedler. tn
Fix Cleanup of ListPopulation to consistently enforce the population limit. Fixes MATH-775. Thanks to Reid Hochstedler. tn
Fix Use same range check in constructor for ElitisticListPopulation as in corresponding setter. Fixes MATH-776. Thanks to Reid Hochstedler. tn
Fix Fixed unbalanced use of code tags in javadoc of several classes. Fixes MATH-767. Thanks to Dennis Hendriks. tn
Add Added class FixedElapsedTime (new StoppingCondition for evolution of generations) to genetics package. Fixes MATH-773. Thanks to Reid Hochstedler. tn
Add Added classes Decimal64 and Decimal64Field, which are wrapper classes around primitive doubles. These classes implement FieldElement and Field, respectively. Fixes MATH-756. celestin

Release 3.0 – 2012-03-07

Type Changes By
Add Added statistical hypothesis tests "MannWhitneyUTest" and "WilcoxonSignedRankTest". Fixes MATH-431. mikl
Update Classes "CMAESOptimizer" and "BOBYQAOptimizer" inherit from "BaseAbstractMultivariateSimpleBoundsOptimizer" (in package "o.a.c.m.optimization.direct"). Fixes MATH-698. erans
Fix Added pre-computed arrays to speed up initial loading time for FastMath. Fixes MATH-650. sebb
Update Resources for error messages translations have been moved out of META-INF folder in the jar, to avoid interferences with some build systems. luc
Fix Fixed "doubleValue" and "floatValue" method in "BigFraction" when numerator and denominator are larger than the range of the corresponding primitive type. Fixes MATH-744. Thanks to Thundre. erans
Update Removed "MathException" (from package "o.a.c.math"). Fixes MATH-488. erans
Update Removed "MathRuntimeException" (from package "o.a.c.math"). Fixes MATH-459. erans
Fix Merged interface and implementation of statistical tests in o.a.c.m.stat.inference package. Fixes MATH-739. tn
Update Merged interface and implementation of EmpiricalDistribution. Fixes MATH-670. tn
Fix Relaxed test for equality in UnivariateStatisticAbstractTest. Fixes MATH-588. tn
Update Modified the genetics package to use localized exception messages. Fixes MATH-575. tn
Fix Fixed a faulty test for zero in TridiagonalTransformer. Fixes MATH-652. Thanks to Greg Sterijevski. tn
Fix Changed algorithm in computation of the covariance matrix in "AbstractLeastSquares" (package "optimization.general"), from "LUDecomposition" to "QRDecomposition". Fixes MATH-664. erans
Fix Fixed rounding error in RandomDataImpl nextInt, nextLong methods causing lower endpoints to be excluded when negative. Also improved robustness of nextUniform for extreme values and changed its contract to throw IAE when provided bounds are infinite or NaN. Fixes MATH-724. Thanks to Dennis Hendriks. psteitz
Fix Fixed "offset by one" bug in "BOBYQAOptimizer". Fixes MATH-728. Thanks to Bruce A. Johnson. erans
Fix Check first step size in embedded Runge-Kutta integrators, and truncate it if needed. Fixes MATH-727. luc
Fix Modified setSeed methods in Bitstream generators (MersenneTwister and Well generators) to clear the cache of normal deviates used by nextGaussian. Fixes MATH-723. psteitz
Fix Fixed bracketing interval balancing in BracketingNthOrderBrentSolver. Fixes MATH-716. luc
Fix Removed unused or duplicate utility methods from "MathUtils". Math functions with "double" arguments were moved to class "FastMath". Fixes MATH-690. erans
Fix Broke up bloated "MathUtils" class into "MathArrays", "Precision", "ArithmeticUtils" classes. Fixes MATH-689. erans
Fix Fixed array indexing error in Variance evaluate method for computing the weighted variance of an array segment. Fixes MATH-704. Thanks to Thomas Neidhart. psteitz
Fix Fixed case of unconstrained variables that still occur in the objective function in simplex solver. Fixes MATH-713. Thanks to Thomas Neidhart. luc
Add The fast cryptographically secure pseudorandom number generator ISAAC has been added. Fixes MATH-710. Thanks to Eldar Agalarov. luc
Add The reset method in StepHandler interface has been renamed init and is provided more information on the integration by the calling integrator. A similar init method has been added to the EventHandler interface. Fixes MATH-714. luc
Fix Improved accuracy of Runge-Kutta based step interpolators near step start. Fixes MATH-705. luc
Fix Fixed errors in SummaryStatistics addValue causing variance, mean, or geometric mean statistics not to be updated if they have been overridden using instances of commons-math supplied implementations. Fixes MATH-691. psteitz
Update Removed First, Third, Fourth moments from the public API. These internally used statistics have non-standard definitions. The classes remain, but now have package scope. Fixes MATH-694. psteitz
Update Added support for population variance in StatUtils, SummaryStatistics and DescriptiveStatistics and clarified javadoc to make it clear that 'variance' means sample variance. Fixes MATH-693. psteitz
Fix Fixed BigFraction percentage method which did not work at all. Fixes MATH-709. luc
Update Added interface and abstract class for supporting optimizers classes that can take simple constraints into account. Fixes MATH-697. erans
Fix Fixed a bad interaction between step handlers and event handlers in ODE integrators. Thanks to MATH-706. luc
Add Added array constructor and getter for Vector2D and Vector3D. Thanks to Jan Kotek. luc
Add Added applyTo and applyInverseTo methods in the Rotation class that handle directly arrays instead of Vector3D instances. Thanks to Jan Kotek. luc
Fix Added adapters for simple bound constraints optimization that can be used for all direct optimization methods, including the ones that do not support constraints by themselves. Fixes MATH-196. luc
Fix CMA-ES optimizer input sigma is now consistent with boundaries range units. Fixes MATH-702. luc
Add Added stable random generator based on Chambers-Mallows-Stuck method. Fixes MATH-462. Thanks to Pavel Ryzhof. psteitz
Update Changed the default seed used for RandomDataImpl, AbstractWell and MersenneTwister PRNGs to add the system identity hash code of the instance to the current system time, so generators initialized with default seeds within system clock resolution will generate different sequences. Changed the default non-secure generator used by RandomDataImpl to Well19937c. Fixes MATH-701. psteitz
Fix Fixed an event resetting issue in ODE. Fixes MATH-695. luc
Update Default implementation for "addToEntry" and "multiplyEntry" in "AbstractRealMatrix". Fixes MATH-696. erans
Add Method "addToEntry" in "RealVector". Fixes MATH-685. erans
Update Replaced temporary matrices and entry mutators with double[][] arrays to speed computation in loops within QRDecomposition, Bi- and TriDiagonalTransformer implementations. Fixes MATH-612. Thanks to Christopher Nix. psteitz
Fix Fixed an integer overflow in OpenMapRealMatrix. Fixes MATH-679. Thanks to Christopher Berner. luc
Fix "FastMath": Use constant fields instead of recomputing them at method call. Fixes MATH-688. erans
Add Added Jacobi polynomials. Fixes MATH-687. Thanks to Romain di Costanzo. luc
Add Added "shift" method to compute the coefficients of a new polynomial whose values are the same as those of another polynomial but computed at a shifted point. Fixes MATH-683. Thanks to Romain di Costanzo. erans
Fix Faster "multiply" method in "Array2DRowRealMatrix". Code inspired from the Jama project. Fixes MATH-676. erans
Fix Replaced package.html with package-info.java for package documentation. Fixes MATH-445. luc
Fix Added a getRuntimeClass method to the Field interface allowing to use a complete hierarchy of fields sharing a common interface. Fixes MATH-284. Thanks to Klaus Hartlage. luc
Fix The last remaining uses of OptimizationException have been replaced by unchecked exceptions (UnboundSolutionException, NoFeasibleSolutionException, MaxCountExceededException ...). Fixes MATH-457. luc
Fix The checked ConvergenceException has been replaced by an unchecked ConvergenceException. Fixes MATH-487. luc
Fix ODE step interpolation with Jacobians is now fully merged with classical step interpolation. Fixes MATH-381. Thanks to Pascal Parraud. luc
Fix Completely revamped the computation of Jacobians in ODE. This computation is now included in the mainstream class hierarchy, not in a separate package anymore, and it allows adding other types of equations to a main ODE, not only variational equations for Jacobians computation. Fixes MATH-380. Thanks to Pascal Parraud. luc
Update SimpleRegression implements UpdatingMultipleLinearRegression interface. Fixes MATH-607. gregs
Update Added isMonotone methods in MathUtils. Optimized checkOrder method. Fixes MATH-675. gregs
Fix In class "AbstractLeastSquaresOptimizer": Allow to specify a singularity threshold in call to "getCovariances" method. Fixes MATH-664. erans
Update Added the ability to suppress the estimation of the intercept in SimpleRegression. Fixes MATH-649. gregs
Fix Dead code in FastMath.pow(double, double) and some improvement in test coverage. Fixes MATH-658. Thanks to Yannick TANGUY. sebb
Fix Removed "getData()" method from "RealVector" as it was redundant with "toArray()". Fixes MATH-663. erans
Update Removed completely MathUserException. Fixes MATH-195. luc
Update Use the refactored exceptions framework for ODE. Fixes MATH-488. luc
Add Added a getter to allow retrieving the exception related to an exception context provider. luc
Update Added erf(double,double) to Erf and used this to improve tail probability accuracy in NormalDistributionImpl. Fixes MATH-364. Thanks to Christian Winter. psteitz
Fix Enabled reseeding of the random generators used by EmpiricalDistributionImpl and ValueServer. Modified ValueServer to pass its RandomData instance to the EmpiricalDistributionImpl that it creates when used in DIGEST_MODE, so reseeding ValueServer works as expected. Fixes MATH-654. psteitz
Fix Renamed "AbstractRealVector" to "RealVector". The interface was removed in favour of its unique (abstract) implementation. Also removed several methods with double[] arguments from AbstractRealVector. Fixes MATH-653. erans
Add Unmodifiable view of a "RealVector". Fixes MATH-646. Thanks to Sébastien Brisard. erans
Fix Refactored integration API for consistency with solvers API. Now the main convergence parameters are set in the constructor and remain fixed. Fixes MATH-501. luc
Fix Added a maximal number of function evaluations to the integration method, similar to what is done in the solvers API. Fixes MATH-464. luc
Update Added storeless covariance implementation. Fixes MATH-449. Thanks to Patrick Meyer. psteitz
Update Eliminated extraneous constructor from SimpleRegression. Fixes MATH-648. psteitz
Update Eliminated pluggability of ChiSquaredDistribution used by ChiSquaredDistributionTest. Fixes MATH-506. psteitz
Update Made RandomGenerator configurable and reseedable in EmpiricalDistributionImpl. Fixes MATH-634. psteitz
Add Added a 3D SubLine class. Fixes MATH-593. luc
Fix Fixed exceptions generated by "ebeMultiply" and "ebeDivide" in "OpenMapRealVector". Fixes MATH-645. erans
Add In "SingularValueDecompositionImpl", added accessor for the inverse of the condition number. Fixes MATH-602. Thanks to Greg Serijevski. erans
Fix Made pseudo-inverse consistent with rank computation in SingularValueDecompositionImpl. Fixes MATH-601. Thanks to Chris Nix and Greg Serijevski. psteitz
Update Added methods to solve upper and lower triangular systems to MatrixUtils. Fixes MATH-624. Thanks to Greg Sterijevski. psteitz
Update Improved performance of nextInt(int) in BitsStreamGenerator. Fixes MATH-642. psteitz
Fix Fixed a wrong detection of rotation axis versus vectors plane in Rotation constructor using two vectors pairs. Fixes MATH-639. luc
Add Added a few linearCombination utility methods in MathUtils to compute accurately linear combinations a1.b1 + a2.b2 + ... + an.bn taking great care to compensate for cancellation effects. This both improves and simplify several methods in euclidean geometry classes, including linear constructors, dot product and cross product. luc
Fix Fixed bugs in AbstractRandomGenerator nextInt() and nextLong() default implementations. Prior to the fix for this issue, these methods generated only positive values. Fixes MATH-640. psteitz
Add Simple benchmark utility (new class "PerfTestUtils" added to test sources in src/test). Fixes MATH-637. erans
Add Added a solver for Dfp-based (i.e. high accuracy) functions. Fixes MATH-636. luc
Add Added a Brent-like solver that has higher (user specified) order and does bracket selection on the result: BracketingNthOrderBrentSolver. Fixes MATH-635. luc
Add Added a few shortcut methods and predicates to Dfp (abs, isZero, negativeOrNull, strictlyNegative, positiveOrNull, strictlyPositive). luc
Add "AbstractRealMatrix" inherits from "RealLinearOperator". Fixes MATH-633. Thanks to Sébastien Brisard. erans
Add Linear combination of vectors: "RealVector" interface updated, implemented in "AbstractRealVector" and "ArrayRealVector". Fixes MATH-613. Thanks to Sébastien Brisard. erans
Update Slightly more efficient implementation of basic operations in "ArrayRealVector". Fixes MATH-623. Thanks to Arne Plöse. erans
Add Overloaded methods (add, subtract, multiply, divide) to take a "double" parameter (as a complex number with zero imaginary part). Code and Javadoc cleanup. Added "valueOf" methods. Fixes MATH-577. Thanks to Arne Plöse. erans
Fix Implemented faster generation of random gamma distributed values with algorithm from Ahrens and Dieter (1972) for shape < 1 and Marsaglia and Tsang (2001) otherwise. Fixes MATH-585. mikl
Fix Allow discrete events to be detected by ODE solvers also at step start. Fixes MATH-605. Thanks to Dennis Hendriks. luc
Fix Rewritten SVD decomposition based on JAMA code. Fixes MATH-327,MATH-383,MATH-465,MATH-583,MATH-611. Thanks to Christopher Nix. luc
Fix Complex add javadoc says that if either addend has NaN parts, the result should be Complex.NaN. Prior to the fix for this issue, NaNs were propagated only in real and imaginary parts individually. Fixes MATH-618. Thanks to Arne Plose. psteitz
Add Framework for iterative linear solvers. Fixes MATH-581. Thanks to Sébastien Brisard. erans
Update Improved efficiency in RandomDataImpl, LaguerreSolver, FastMath and OutlineExtractor by moving conditional code into blocks where it is needed. Fixes MATH-609. Thanks to Dave Brosius. psteitz
Fix Prevent step normalizer to output twice the last point in MULTIPLES mode. Fixes MATH-603. Thanks to Dennis Hendriks. luc
Fix Removed the requiresDenseOutput method from the StepHandler interface. Now integrators always consider dense output is required and set up the appropriate state interpolators, so step handlers can rely on them. Fixes MATH-596,MATH-604. luc
Add Modified "SecantSolver" to comply with the original algorithm. Added several secant-based solvers. Added a way to select the side of the root with bracketing solvers. Fixes MATH-599. Thanks to Dennis Hendriks. erans
Fix Fixed javadoc for ODEIntegrator interface. Fixes MATH-600. luc
Fix Extended StepNormalizer with normalization mode and bounds settings. Fixes MATH-595. Thanks to Dennis Hendriks. luc
Fix Implemented faster generation of random exponential distributed values with algorithm from Ahrens and Dieter (1972): Computer methods for sampling from the exponential and normal distributions. Fixes MATH-597. mikl
Add K-means++ clustering can now run multiple trials. Fixes MATH-548. luc
Add Added a way to compute sub-lines intersections, considering sub-lines either as open sets or closed sets. Fixes MATH-591. luc
Add Added a way to build a sub-line from its endpoints, and to retrieve the endpoints from a sub-line. Fixes MATH-592. luc
Fix Javadoc fixes in ODE. Fixes MATH-594. Thanks to Dennis Hendriks. luc
Fix Added a way to specify a custom root solver to find events in ODE integration. Fixes MATH-586. Thanks to Dennis Hendriks. luc
Fix Fixed error in javadoc describing Integer distribution inverse cumulative probability API. Fixes MATH-540. psteitz
Fix Fixed error in javadoc describing the behavior of the Percentile algorithm for small percentiles in small datasets. Fixes MATH-582. Thanks to Christopher Nix. psteitz
Add New "filter" package. Initial implementation of Kalman filter. Fixes MATH-485. Thanks to Thomas Neidhart. erans
Fix Improved k-means++ clustering performances and initial cluster center choice. Fixes MATH-584. Thanks to Randall Scarberry. luc
Fix Fixed tricube function implementation in Loess interpolator. Fixes MATH-504. Thanks to X. B.. luc
Fix Fixed documentation of statistics examples. Fixes MATH-568. Thanks to Christoph M. Friedrich. luc
Fix Improved documentation of general optimization with a thorough example. Fixes MATH-507. Thanks to Ole Ersoy. luc
Fix Replaced NullPointerException by NullArgumentException. Fixes MATH-403. luc
Add Added a consistent classes hierarchy for Euclidean spaces in dimension 1, 2 and 3. luc
Fix Improved javadoc for FastMath explaining the overhead at class loading and the targeted use cases. Fixes MATH-579. luc
Fix Allow outer product of vectors of different sizes. Fixes MATH-574. erans
Add A complete generic implementation of Binary Space Partitioning Trees (BSP trees) has been added. A few specializations of this implementation are also provided for 1D, 2D and 3D Euclidean geometry. This allows support for arbitrary intervals sets (1D), polygons sets (2D) and polyhedrons sets (3D) with all sets operations (union, intersection, symmetric difference, difference, complement), with predicates (point inside/outside/on boundary, emptiness, other region contained), with geometrical computation (barycenter, size, boundary size) and with conversions from and to boundary representation. Fixes MATH-576. luc
Fix Avoid some array copying in add and subtract ArrayFieldVector. Fixes MATH-573. luc
Fix Fixed an unused constructor parameter in ArrayFieldVector. Fixes MATH-572. luc
Add Created an "ExceptionContext" class: It provides the customization feature of "MathRuntimeException" without imposing a singly rooted hierarchy of the Comons Math exceptions. Thus, those exceptions now inherit from their Java standard counterparts (e.g. "MathIllegalArgumentException" inherits from "IllegalArgumentException"). Fixes MATH-566. erans
Add Fixed conversion problems to/from 0 in Decimal Floating Point (Dfp) class. Fixes MATH-567. Thanks to Michel. luc
Fix Fixed initialization of multistep ODE integrators. Relying on the interpolation model of the starter integrator inside only one step was wrong. The model may have a too low order to compute high degrees derivatives in the Nordsieck vector. Now we use several steps and use only grid points instead of interpolated points. luc
Add Added solve methods using double[][] to linear algebra decomposition solvers. Fixes MATH-564. luc
Add Added an interpolator adapter for data with known period. Fixes MATH-562. erans
Add Added a "rectangular" Cholesky decomposition for positive semidefinite matrices. Fixes MATH-541. luc
Add Added setters allowing to change the step size control parameters of adaptive step size ODE integrators. Fixes MATH-563. luc
Add Added a compareTo method to MathUtils that uses a number of ulps as a tolerance error, and works well on all numbers, including normals, subnormals, signed zeroes, infinities and NaNs. Fixes MATH-557. luc
Fix Fixed two errors in simplex solver when entries are close together or when variables are not restricted to non-negative. Fixes MATH-434. Thanks to Thomas Neidhart. luc
Fix Improved robustness of k-means++ algorithm, by tracking changes in points assignments to clusters. Fixes MATH-547. Thanks to Thomas Neidhart. luc
Update Changed MathUtils.round(double,int,int) to propagate rather than wrap runtime exceptions. Instead of MathRuntimeException, this method now throws IllegalArgumentException or ArithmeticException under the conditions specified in the javadoc. Fixes MATH-555. psteitz
Fix Reduced cancellation errors in Vector3D.crossProduct. Fixes MATH-554. luc
Fix Fixed bug in "MultidimensionalCounter". Fixes MATH-552. Thanks to James Bence. erans
Fix All unit tests have been converted to Junit 4. They need at least Junit 4.5 to run (the ant and maven build systems are currently set to use Junit 4.8.2). Fixes MATH-423. Thanks to Gilles Sadowski. luc
Fix Removed the ConvergingAlgorithm interface and ConvergingAlgorithmImpl class. Fixes MATH-500. Thanks to Gilles Sadowski. luc
Add Added a consistency check for number of points with respect to the number of clusters in Kmeans++ clustering. Fixes MATH-436. Thanks to Thomas Neidhart. luc
Add Added two sided Kolmogorov-Smirnov distribution using modified Marsaglia et al. (2003) implementation and quick decisions for certain parameter areas according to Simard et al. (2011). Fixes MATH-437. mikl
Add Added "power" method in "RealMatrix" and "FieldMatrix<T>" interfaces and their default implementations in "AbstractRealMatrix" and "AbstractFieldMatrix". Fixes MATH-435. mikl
Update Added "cosine" method in "RealVector" interface and default implementation in "AbstractRealVector". Fixes MATH-545. erans
Fix Fixed bug in "KMeansPlusPlusClusterer". Fixes MATH-546. Thanks to Nate Paymer. erans
Update All exceptions defined in Commons Math provide a context and a compound message list. Fixes MATH-542. erans
Update Refactored "PolynomialFitter" (in package "optimization.fitting"). Added parametric function in "PolynomialFunction" (in package "analysis.polynomials"). Fixes MATH-534. erans
Fix Removed "HarmonicFunction" (in package "optimization.fitting"); superseded by class "HarmonicOscillator" (in package "analysis.function"). Fixes MATH-518. erans
Update Refactored "HarmonicFitter" (in package "optimization.fitting"). "HarmonicCoefficientsGuesser" removed. Fixes MATH-517. erans
Fix Removed "GaussianFunction" and "GaussianDerivativeFunction" (in package "optimization.fitting"); functionality moved to class "Gaussian" (in package "analysis.function"). Fixes MATH-516. erans
Fix Removed "ParametricGaussianFunction" (in package "optimization.fitting"); functionality moved to class "Gaussian" (in package "analysis.function"). Fixes MATH-514. erans
Update Refactored "GaussianFitter" (in package "optimization.fitting"). The class now really fits a Gaussian function (whereas previously it was fitting the sum of a constant and a Gaussian). Fixes MATH-512. Thanks to Ole Ersoy. erans
Fix Implementation of the CMA-ES optimization algorithm. Fixes MATH-442. Thanks to Dietmar Wolz. erans
Fix The interface "ParametricRealFunction" (in package "optimization.fitting") has been renamed to "ParametricUnivariateRealFunction" and moved to package "analysis". Fixes MATH-513. erans
Fix TestUtils is thread-hostile. Remove getters and setters, and make static variables final. Fixes MATH-505. sebb
Update Create FastMath copySign methods. Fixes MATH-496. sebb
Fix FastMath atan2 does not agree with StrictMath for special cases. Fixes MATH-494. sebb
Fix Removed checked "MaxIterationsExceededException" (superseded by "MaxCountExceededException" from package "exception"). Fixes MATH-492. erans
Fix Removed checked "DimensionMismatchException". Replaced all occurrences by its equivalent from package "exception". Fixes MATH-491. erans
Fix FastMath acos fails when input abs value is less than about 5.7851920321187236E-300 - returns NaN. Fixes MATH-489. sebb
Fix FastMath toRadian and toDegree don't handle large double numbers well. Fixes MATH-486. sebb
Fix FastMath does not handle all special cases correctly. Fixes MATH-483. sebb
Fix Fix ulp(Infinity) to return Infinity rather than NaN. Fixes MATH-480. sebb
Fix FastMath.signum(-0.0) does not agree with Math.signum(-0.0). Fixes MATH-479. sebb
Fix FastMath is not an exact replacement for StrictMath (partially fixed) Add signum(float), ulp(float). Fixes MATH-478. sebb
Fix FastMath.max(50.0f, -50.0f) => -50.0f; should be +50.0f Fixed FastMath.max(float, float) so it returns correct value. Fixes MATH-482. sebb
Fix MATH-491 MathUtils.equals(double, double) does not work properly for floats - add equivalent (float, float) methods and basic tests. Fixes MATH-471. sebb
Fix Removed "MathException" from the "throws" clause of the "interpolate" method of the interpolators interfaces (package "analysis.interpolation"). Fixes MATH-458. erans
Fix In order to comply with the new runtime exceptions policy, the classes "RealVectorFormat", "ComplexFormat", "Vector3DFormat" and "CompositeFormat" do not inherit anymore from the Java standard "Format" class. Failed parsing will result in the throwing of a "MathParseException". "CompositeFormat" is now a utility class ("private" constructor). Fixes MATH-461. erans
Fix By policy, all Commons Math exceptions must inherit from class "MathRuntimeException". Fixes MATH-447. erans
Fix For optimizers (package "optimization"), the number of allowed function evaluations is passed as a parameter to the "optimize" method. Fixes MATH-454. erans
Fix For solvers (package "analysis.solvers"), the number of allowed function evaluations is passed as a parameter to the "solve" method. Fixes MATH-451. erans
Fix Created a "MathRuntimeException" to serve as a base class for exception types that need to wrap another (lower-level) exception. Fixes MATH-447. erans
Update Replaced "ComposableFunction" and "BinaryFunction" (in package "analysis") by a set of utilities in the new class "FunctionUtils" together with independent function objects in the new "analysis.function" package. Removed redundant "mapXxx" and "mapXxxToSelf" methods in "RealVector" and "AbstractRealVector" (in package "linear"). Fixes MATH-430. erans
Update Refactoring of the "analysis.solvers" package. Fixes MATH-439. erans
Fix Removed the ode.jacobians package. Fixes MATH-380. luc
Update Removed classes "FunctionEvaluationException", "MatrixVisitorException" and "DerivativeException" (superseded by the new "MathUserException"). Fixes MATH-440. erans
Fix Created a generic "Pair" class to replace the "AbstractMap.SimpleEntry" that is only available in Java 6 and later. Fixes MATH-432. erans
Fix Class "DirectSearchOptimizer" (and subclasses "NelderMead" and "MultiDirectional") was refactored into new classes: "SimplexOptimizer" and "AbstractSimplex" (and subclasses "NelderMeadSimplex" and "MultiDirectionalSimplex"). The old classes were deprecated and removed. Fixes MATH-428. erans
Update Created "MatrixDimensionMismatchException" to replace "InvalidMatrixException" (when the latter is used to signal that matrices are not compatible for some operation). Replaced "MatrixIndexException" with "OutOfRangeException" (when the former is used to signal a row or column dimension mismatch). Fixes MATH-425. erans
Update Made "sample" methods part of the "IntegerDistribution" and "ContinuousDistribution" interfaces. Fixes MATH-310. erans
Fix All distribution classes (in package "distribution") are immutable. Fixes MATH-349. erans
Update Created an unchecked "FunctionEvaluationException". Modified the "UnivariateRealFunction" interface: Removed the checked "FunctionEvaluationException" from the signature of the "value" method. Fixes MATH-195. erans
Update Modified semantics: "equals" methods now consider that NaNs are not equal (compliant with IEEE754). Also, two adjacent floating point numbers are considered equal (this is consistent with the fact that all real numbers between them can be represented by either of the two). One consequence of that is that "equals" is not transitive. Fixes MATH-370. erans
Update Removed methods referring to the concept of "iteration". Removed interface methods to access the number of evaluations of the gradient and Jacobian. Added new "Incrementor" utility to be used as a bounded counter for objective function evaluations. Removed all references to "OptimizationException" (replaced by "ConvergenceException"). Fixes MATH-397. erans
Update Modified "AbstractUnivariateRealOptimizer" to make it more similar to "BaseAbstractScalarOptimizer". Added utility methods in "ConvergingAlgorithmImpl". Fixes MATH-397. erans
Update Refactoring of some classes in package "optimization.general" to remove code duplication and to allow the implementation of optimization algorithms that do not use derivatives. Created interface "BaseMultivariateRealOptimizer". Created classes "BaseAbstractScalarOptimizer" and "AbstractScalarOptimizer". "MultivariateRealOptimizer" and "DifferentiableMultivariateRealOptimizer" both extend "BaseMultivariateRealOptimizer". "AbstractScalarOptimizer" extends "BaseAbstractScalarOptimizer" and "AbstractScalarDifferentiableOptimizer" inherits from "AbstractScalarOptimizer". Fixes MATH-389. erans

Release 2.2 – 2011-03-02

Type Changes By
Fix FastMath is not an exact replacement for StrictMath (partially fixed) added scalb(double, int), scalb(float, int). Fixes MATH-498. luc
Fix FastMath is not an exact replacement for StrictMath (partially fixed) added hypot(double, double), nextAfter(double, double) and nextAfter(float,double) (beware of the strange double second argument) so that they handle special values in the way as StrictMath. Fixes MATH-478. luc
Fix FastMath is not an exact replacement for StrictMath (partially fixed) added getExponent(double) and getExponent(float). Fixes MATH-497. luc
Fix FastMath is not an exact replacement for StrictMath (partially fixed) Add copySign(double), copySign(float). Fixes MATH-496. sebb
Fix separate discrete event detection from adaptive step size handling in ODE solvers, thus improving robustness, maintainability and speed. Fixes MATH-484. luc
Fix Fixed an awkward statement that triggered a false positive warning. Fixes MATH-467. luc
Update Added complementary error function, erfc. Fixes MATH-364. Thanks to Christian Winter. psteitz
Fix Modified erf (and erfc) to return extreme values for x with abs(x) > 40. For these arguments, the true value is indistinguishable from an extrema as a double. Fixes MATH-456. psteitz
Update Added characteristic support to distributions, including methods to return numerical estimates of the mean and variance and upper and lower bounds of support. In version 2.2, methods returning distribution characteristics have been added only to the implementation classes. In version 3, supporting methods have been added to the abstract base classes and distribution interfaces. Fixes MATH-385. mikkel
Update Added a constructor and addValues(double[]) methods allowing DescriptiveStatistics to be initialized with values from a double[] array. Similarly enhanced ResizeableDoubleArray. Fixes MATH-384. mikkel
Update Added a getUniqueCount() method to Frequency to return the number of unique values included in the frequency table. Fixes MATH-448. Thanks to Patrick Meyer. psteitz
Fix Modified NormalDistributionImpl.cumulativeProbability to return 0 or 1, respectively for values more than 40 standard deviations from the mean. For these values, the actual probability is indistinguishable from 0 or 1 as a double. Top coding improves performance for extreme values and prevents convergence exceptions. Fixes MATH-414. psteitz
Update Added toString() override to StatisticalSummaryValues. Fixes MATH-420. psteitz
Fix Deprecated the whole ode.jacobians package. It is clumsy and difficult to use. It will be replaced by a completely rewritten implementation in 3.0, which will be more tightly bound to the top level ode package. Fixes MATH-380. luc
Fix Added a normalization feature to transform samples so they have zero mean and unit standard deviation. Fixes MATH-426. Thanks to Erik van Ingen. luc
Add Created "MathUserException" class to convey cause of failure between layers of user code separated by a layer of Commons Math code. Deprecated classes "FunctionEvaluationException", "MatrixVisitorException" and "DerivativeException". Fixes MATH-440. erans
Fix Fixed k-means++ to add several strategies to deal with empty clusters that may appear during iterations. Fixes MATH-429. luc
Update Improved Percentile performance by using a selection algorithm instead of a complete sort, and by allowing caching data array and pivots when several different percentiles are desired. Fixes MATH-417. luc
Fix Fixed an error preventing zero length vectors to be built by some constructors. Fixes MATH-391. luc
Fix Fixed an error preventing ODE solvers to be restarted after they have been stopped by a discrete event. Fixes MATH-421. luc
Add Added new random number generators from the Well Equidistributed Long-period Linear (WELL). Fixes MATH-419. luc
Update Made intercept / no intercept configurable in multiple regression classes. By default, regression models are estimated with an intercept term. When the "noIntercept" property is set to true, regression models are estimated without intercepts. Fixes MATH-409. psteitz
Fix Fixed lost cause in MathRuntimeException.createInternalError. Note that the message is still the default message for internal errors asking to report a bug to Commons Math JIRA tracker. In order to retrieve the message from the root cause, one has to get the cause itself by getCause(). Fixes MATH-415. luc
Fix Modified multiple regression newSample methods to ensure that by default in all cases, regression models are estimated with intercept terms. Prior to the fix for this issue, newXSampleData(double[][]), newSampleData(double[], double[][]) and newSampleData(double[], double[][], double[][]) all required columns of "1's" to be inserted into the x[][] arrays to create a model with an intercept term; while newSampleData(double[], int, int) created a model including an intercept term without requiring the unitary column. All methods have been changed to eliminate the need for users to add unitary columns to specify regression models. Users of OLSMultipleLinearRegression or GLSMultipleLinearRegression versions 2.0 or 2.1 should either verify that their code either does not use the first set of data loading methods above or set the noIntercept property on estimated models to get the previous behavior. Fixes MATH-411. psteitz
Fix Added the dfp library providing arbitrary precision floating point computation in the spirit of IEEE 854-1987 (not exactly as it uses base 1000 instead of base 10). In addition to finite numbers, infinities and NaNs are available (but there are no subnormals). All IEEE 854-1987 rounding modes and signaling flags are supported. The available operations are +, -, *, / and the available functions are sqrt, sin, cos, tan, asin, acos, atan, exp, log. Fixes MATH-412. Thanks to Bill Rossi. luc
Fix Added faster and more accurate version of traditional mathematical functions in a FastMath class intended to be a drop-in replacement for java.util.Math at source-level. Some functions still directly delegates to Math but this will improve with time. Some functions like exp may be twice as fast (even 3 times faster on some processors). Sine, cosine or power functions show typical speedups of 1.5 times faster or more. Fixes MATH-375. Thanks to Bill Rossi. luc
Fix Added R-squared and adjusted R-squared statistics to OLSMultipleLinearRegression. Fixes MATH-386. psteitz
Fix Corrected the formula used for Y variance returned by calculateYVariance and associated methods in multiple regression classes (AbstractMultipleLinearRegression, OLSMultipleLinearRegression, GLSMultipleLinearRegression). These methods previously returned estimates of the variance in the model error term. New "calulateErrorVariance" methods have been added to compute what was previously returned by calculateYVariance. Fixes MATH-392. Thanks to Mark Devaney. psteitz
Fix Bug fixed in Levenberg-Marquardt (handling of weights). Fixes MATH-406. dimpbx
Fix Bug fixed in Levenberg-Marquardt (consistency of current). Fixes MATH-405. dimpbx
Fix Bug fixed in chi-square computation in AbstractLeastSquaresOptimizer. Fixes MATH-377. dimpbx
Add Added support for Gaussian curve fitting. Fixes MATH-400. Thanks to J. Lewis Muir. luc
Fix Fixed several bugs in "BrentOptimizer". Fixes MATH-395. erans
Fix Fixed inconsistency in return values in "MultiStartUnivariateRealOptimizer". Fixes MATH-393. erans
Add Added a feature allowing error estimation to be computed only on a subset of Ordinary Differential Equations, considered as the main set, the remaining equations being considered only as an extension set that should not influence the ODE integration algorithm. Fixes MATH-388. luc
Fix Fixed bug in precondition check (method "setMicrosphereElements"). Fixes MATH-382. erans
Add Created "MultidimensionalCounter" class. Fixes MATH-379. erans
Add Created package "exception" to contain the new exceptions hierarchy. Created package "exception.util": utilities for the exception classes (e.g. managing the localization of error messages). Default policy for dealing with invalid null references: raise a "NullArgumentException" (subclass of "IllegalArgumentException"). Fixes MATH-361. erans
Add Implementation of linear interpolation. Fixes MATH-378. Thanks to Matthew Rowles. erans
Fix Improved localization of error messages. Fixes MATH-361. luc
Fix Allow multiple optimizations with a default simplex. Fixes MATH-376. erans
Update Added new "equalsIncludingNaN" methods that have the same semantics as the old "equals" methods. These are deprecated, and their semantics will be modified (in the next major release) such that NaNs are not considered equal (to be more compliant with IEEE754). Fixes MATH-370. erans
Fix Added a setQRRankingThreshold method to Levenberg-Marquardt optimizer to improve robustness of rank determination. Fixes MATH-352. luc
Update Added random data generation methods to RandomDataImpl for the remaining distributions in the distributions package. Added a generic nextInversionDeviate method that takes a discrete or continuous distribution as argument and generates a random deviate from the distribution. Also added sampling methods based on the implementations in RandomDataImpl to distributions. Fixes MATH-310. psteitz
Fix Fixed Levenberg-Marquardt optimizer that did not use the vectorial convergence checker. Now this optimizer can use either the general vectorial convergence checker or its own specialized convergence settings. Fixes MATH-362. luc
Fix Fixed loss of significance error in PersonsCorrelation p-value computation causing p-values smaller than the machine epsilon (~1E-16) to be reported as 0. Fixes MATH-371. Thanks to Kevin Childs. psteitz
Fix Fix NullPointerException in BisectionSolver.solve(f, min, max, initial). Fixes MATH-369. Thanks to Sasun Pundev. luc
Fix Fix spelling of getSparcity [sic] method of OpenMapRealVector. Fixes MATH-368. billbarker
Fix Fix problem with the default sparseIterator when a RealVector has exactly one non-zero entry. Fixes MATH-367. Thanks to Albert Huang. billbarker
Add Implementation of tricubic interpolation. Fixes MATH-366. erans
Update Deprecated SmoothingBicubicSplineInterpolator and SmoothingBicubicSplineInterpolatorTest. Added BicubicSplineInterpolator and BicubicSplineInterpolatorTest. Added SmoothingPolynomialBicubicSplineInterpolator and SmoothingPolynomialBicubicSplineInterpolatorTest. Added method to clear the list of observations in PolynomialFitter. Fixes MATH-365. erans

Release 2.1 – 2010-04-02

Type Changes By
Fix Fix use of wrong variable in SmoothingBicubicSplineInterpolatorTest.testPreconditions(). Fixes MATH-360. sebb
Update Added method to clear the list of observations in CurveFitter. Fixes MATH-356. erans
Add Implementation of bicubic interpolation. Fixes MATH-357. erans
Update Added density functions to remaining continuous distributions (F, T, Weibull, Cauchy). As of Math 2.1, all continuous distributions implement density functions. The HasDensity interface has been deprecated and in version 3.0, density(double) will be added to the ContinuousDistribution interface. Fixes MATH-332. Thanks to Mikkel Meyer Andersen. psteitz
Update Changed equals() methods to use instanceof check rather than catching ClassCastException; this also allows some null checks to be omitted. Fixes MATH-337. sebb
Update Removed unnecessary null checks in equals methods. Fixes MATH-336. sebb
Fix Fraction.hashCode() implementation was not fully consistent with Fraction.equals(). Changed hashCode() to use fields directly to agree with equals(). Fixes MATH-335. sebb
Fix Resolved multiple problems leading to inaccuracy and/or failure to compute Normal, ChiSquare and Poisson probabilities, Erf and Gamma functions. Made Brent solver absolute accuracy configurable for all continuous distributions. Fixes MATH-282. psteitz
Fix Fixed too stringent interval check in Brent solver: initial guess is now allowed to be at either interval end. Fixes MATH-347. luc
Add Added a way to compute both the final state in an Initial Value Problem (IVP) for Ordinary Differential Equations (ODE) and its derivatives with respect to initial state and with respect to some problem parameters. This allows wrapping ODE solvers into optimization or root finding algorithms, which in turn can be used to solve Boundary Value Problems (BVP). There are no implementations (yet) of BVP solvers in the library. luc
Fix Fixed an error in events handling in ODE solvers. In some rare cases, events occurring close to a step start were handled without truncating the step, making them appear as is they occurred close to the step end. Fixes MATH-358. luc
Fix Fixed a problem with getInterpolatedDerivatives returning zero derivatives when an ODE step handler is configured to not use interpolation. It now returns a constant but non-zero value consistent with at least one point inside the step luc
Fix Fixed wrong return values when enpoints are roots in Brent solver with a user provided initial guess. Fixes MATH-344. luc
Fix Fixed a missing bracketing check of initial interval in Brent solver. Fixes MATH-343. luc
Fix In SVD, the matrices passed to EigenDecomposition are now symmetric by construction (rather than simply by definition). In EigenDecomposition, once the tridiagonal form is obtained, the non-significant elements are set to 0. Fixes MATH-342. dimpbx
Fix A EigenDecompositionImpl simplified makes it possible to compute the SVD of a singular matrix (with the right number of elements in the diagonal matrix) or a matrix with singular value(s) of multiplicity greater than 1. Fixes MATH-333. dimpbx
Add Added SemiVariance statistic. Fixes MATH-323. Thanks to Larry Diamond. psteitz
Add Added a warning in the getCoefficients method documentation for PolynomialFunctionLagrangeForm. Computation may be ill-conditioned so this method should be used with care. Fixes MATH-341. luc
Add Fixed an error in BigFraction multiplication for large numerators that don't fit in a primitive int. Fixes MATH-340. luc
Fix Fixed a spurious exception in EigenDecompositionImpl when a 3x3 block had two identical eigenvalues. luc
Add Added min/max getters for real vectors (not yet in the RealVector interface for compatibility purposes, but in the AbstractRealVector abstract class). Fixes MATH-334. luc
Fix Fixed automatic step initialization in embedded Runge-Kutta integrators. The relative tolerance setting was never used, only the absolute tolerance was used. Fixes MATH-338. Thanks to Vincent Morand. luc
Fix Fixed regression in Frequency.getPct(Object) introduced in 2.0. Cumulative percent was being returned for Object arguments in place of percent. Fixes MATH-329. psteitz
Add Singular Value Decomposition now computes either the compact SVD (using only positive singular values) or truncated SVD (using a user-specified maximal number of singular values). Fixes MATH-321. luc
Fix Fixed Singular Value Decomposition solving of singular systems. Fixes MATH-320. luc
Update Added MathUtils methods to compute gcd and lcm for long arguments. Fixes MATH-239. Thanks to Christian Semrau. psteitz
Update Added support for weighted univariate statistics. Fixes MATH-287. Thanks to Matthew Rowles. psteitz
Fix Fixed a wrong implementation of the Linf norm in vectors. Fixes MATH-326. Thanks to Jake Mannix. luc
Fix Fixed a convergence discrepancy with respect to theory in Gragg-Bulirsch-Stoer integrator. Fixes MATH-324. Thanks to Vincent Morand. luc
Fix Fixed a wrong dimension check in SVD solver. Thanks to Dimitri Pourbaix. luc
Fix Added composition features for real functions. Fixes MATH-313. Thanks to Jake Mannix. luc
Fix Added mapping and iteration methods to vectors. Provided a default implementation for the numerous simple methods in the RealVectorInterface. Fixes MATH-312. Thanks to Jake Mannix. luc
Fix Fixed an error in handling very close events in ODE integration. Fixes MATH-322. luc
Fix Fixed an overflow error in MathUtils.distance that was causing KMeansPlusPlusClusterer to fail with a NullPointerException when component distances between points exceeded Integer.MAXVALUE. Fixes MATH-305. Thanks to Erik van Ingen. psteitz
Update Added generationsEvolved property to GeneticAlgorithm to track the number of generations evolved by the evolve() method before reaching the StoppingCondition. Fixes MATH-315. Thanks to Mikkel Meyer Andersen. psteitz
Fix Fixed an index computation error in eigen decomposition. Once again, kudos to Dimitri for debugging this. Fixes MATH-318. Thanks to Dimitri Pourbaix. luc
Fix Fixed an ArrayIndexOutOfBoundsException in eigen decomposition. Kudos to Dimitri for debugging this, it was really difficult. Fixes MATH-308. Thanks to Dimitri Pourbaix. luc
Fix Fixed parameter test in RandomDataImpl#nextExponential. The method now throws IllegalArgumentException for mean = 0. Fixes MATH-309. Thanks to Mikkel Meyer Andersen. psteitz
Update Changed probability calculations for Binomial, Poisson, and Hypergeometric distributions to use Catherine Loader's saddle point approximations. Fixes MATH-311. Thanks to Nipun Jawalkar. brentworden
Fix Removed dead code from Complex#divide. Fixes MATH-306. Thanks to Joerg Huber. psteitz
Fix Fixed implementation of RandomDataImpl#nextPoisson by implementing an alternative algorithm for large means. Fixes MATH-294. psteitz
Add Added support for multidimensional interpolation using the robust microsphere algorithm. Fixes MATH-300. Thanks to Gilles Sadowski. psteitz
Fix Fixed implementation of EmpiricalDistributionImpl#getUpperBounds to match interface contract. Added getGeneratorUpperBounds method to EmpiricalDistributionImpl providing previous behavior. Fixes MATH-298. psteitz
Fix Fixed wrong results on Loess interpolation, also added a way to set weights for smoothing and to ignore zero weights for coefficients computation. Fixes MATH-296. Thanks to Eugene Kirpichov. luc
Fix Fixed a OutOfBoundException in simplex solver when some constraints are tight. Fixes MATH-293. Thanks to Benjamin McCann. luc
Fix Fixed misleading number formats in error messages for adaptive stepsize integrators. Fixes MATH-291. Thanks to Sebb. luc
Add Added support for weighted descriptive statistics. Fixes MATH-287. Thanks to Matthew Rowles. psteitz
Add Added normalizeArray method to MathUtils. psteitz
Fix Fixed a NullPointerException in simplex solver when no solution is possible and some constraints are negative. Fixes MATH-290. Thanks to Benjamin McCann. luc
Fix Removed an unused argument in a private method in simplex solver. Fixes MATH-289. luc
Fix Fixed an error induced by entries set to 0 in simplex solver. Fixes MATH-288. Thanks to Benjamin McCann. luc
Fix Fixed an error leading the simplex solver to compute the right solution but return another one. Fixes MATH-286. Thanks to Benjamin McCann. luc
Fix Prevent infinite loops in multi-directional direct optimization method when the start point is exactly at the optimal point. Fixes MATH-283. Thanks to Michael Nischt. luc
Fix Prevent possible zero divides on eigenvectors of indefinite matrices. Fixes MATH-297. Thanks to Axel Kramer. billbarker

Release 2.0 – 2009-08-03

Type Changes By
Fix Fixed an error in RealMatrix javadoc. Fixes MATH-281. Thanks to Albert Huang. luc
Add Added an implementation of the Mersenne twister pseudo random number generator from Makoto Matsumoto and Takuji Nishimura luc
Update Changed the return type of the various interpolation algorithms to the specific implementation of UnivariateRealFunction each one uses Thanks to Gilles Sadowski. luc
Fix The behavior of the bracket method in UnivariateRealSolverUtils has been changed to return successfully when a tentative bracketing interval has a root exactly at one of its end points. Previously, such intervals triggered an exception. Fixes MATH-280. luc
Add Added a check for too few rows with respect to the number of predictors in linear regression. Fixes MATH-279. Thanks to Michael Bjorkegren. luc
Add Added a getCovariance method to singular value decomposition Thanks to Dimitri Pourbaix. luc
Add Added robust locally weighted regression (Loess). Fixes MATH-278. Thanks to Eugene Kirpichov. luc
Add Added a scalar multiply to the Complex class. Fixes MATH-277. Thanks to Mark Anderson. luc
Add Added curve fitting with a general case and two specific cases (polynomial and harmonic). luc
Update Optimized Complex isNaN(), isInfinite() by moving computation to constructor. Fixes MATH-276. Thanks to Mark Anderson. psteitz
Fix Added Genetic Algorithm implementation. Fixes MATH-207. Thanks to David Stefka. psteitz
Fix Fixed detection of not positive definite matrices in Cholesky decomposition. Fixes MATH-274. luc
Fix Fixed a wrong check for basic variables. Fixes MATH-273. Thanks to Benjamin McCann. luc
Fix Fixed a problem when setting some variables (several variables were set instead of only one). Fixes MATH-272. Thanks to Benjamin McCann. luc
Add Added a way to limit the number of functions evaluations in optimizers (the number of iterations could already be limited) Thanks to Gilles Sadowski. luc
Add Added digamma function. Fixes MATH-267. Thanks to Ted Dunning. psteitz
Add Added Spearman's rank correlation (SpearmansCorrelation). Fixes MATH-136. Thanks to John Gant. psteitz
Add Added support for rank transformations. psteitz
Update Completed internationalization of all error messages luc
Add Added a clustering package with an implementation of the k-means++ algorithm. Fixes MATH-266. Thanks to Benjamin McCann. luc
Fix Added distance1, distance and distanceInf utility methods for double and int arrays in MathUtils. Fixes MATH-265. Thanks to Benjamin McCann. luc
Fix Added an utility equality method between double numbers using tolerance in ulps (Units in Last Position). Fixes MATH-264. Thanks to Gilles Sadowski. luc
Fix Added getNorm1, getNormInf, distance1 and distanceInf to the Vector3D class. Fixes MATH-263. luc
Add Added support for any type of field in linear algebra (FielxMatrix, FieldVector, FieldLUDecomposition) luc
Add The RealMatrixImpl implementation classes has been renamed Array2DRowRealMatrix to reflect its specificities and for consistency with the new implementations. The previous name is still available but is deprecated luc
Add Added a block-based storage type for dense matrices improving speed for large dimensions luc
Add Added AggregateSummaryStatistics class to support aggregation of SummaryStatistics. Thanks to John Bollinger. psteitz
Add Added general Field and FieldElement interfaces to allow generic algorithms to operate on fields. The library already provides several implementations: Complex, Fraction, BigFraction and BigReal luc
Fix Fixed inconsistent access to multidimensional array in FastFourierTransformer. Fixes MATH-257. Thanks to Sebb. luc
Fix Greatly improved multiplication speed for sparse matrices. Fixes MATH-248. luc
Fix Fixed threading issues with MathException and MathRuntimeException. Fixes MATH-253. Thanks to Sebb. luc
Fix Fixed threading issues with UnivariateRealSolverUtils factory. Fixes MATH-254. Thanks to Sebb. luc
Fix Reduced visibility of MessagesResources_fr.contents field to private. Fixes MATH-255. Thanks to Sebb. luc
Add Added Fraction.toString(). Fixes MATH-256. luc
Add Added add/subtract/multiply/divide functions with integer parameters to Fraction luc
Add Added some utility functions to compute powers with integral types (int, long, BigInteger). luc
Fix Fixed a comparison error when two different fractions evaluate to the same double due to limited precision. Fixes MATH-252. luc
Add Added a BigFraction class that does not overflow when big numerators or denominators are used. Fixes MATH-251. Thanks to Benjamin Croizet. luc
Add Added an optimizer for constrained linear problems based on 2-phases standard simplex. Fixes MATH-246. Thanks to Benjamin McCann. luc
Fix Redesigned the optimization framework for a simpler yet more powerful API. Added non-linear conjugate gradient optimizer. Fixes MATH-177. luc
Fix Fixed an error in computing gcd and lcm for some extreme values at integer range boundaries. Fixes MATH-243. Thanks to Christian Semrau. luc
Add Added a MathUtils method to check equality given some error bounds. Fixes MATH-247. Thanks to Benjamin McCann. luc
Add Added PearsonsCorrelation class to compute correlation matrices, standard errors and p-values for correlation coefficients. Fixes MATH-114. Thanks to John Gant. psteitz
Add Added Covariance class to compute variance-covariance matrices in new correlation package. Fixes MATH-114. psteitz
Fix Improved fast Fourier transform efficiency. Fixes MATH-216. Thanks to Cyril Briquet. luc
Add Added a SparseRealVector class that implements a sparse vector for the RealVector interface. billbarker
Add Added factory methods to create Chebyshev, Hermite, Laguerre and Legendre polynomials. luc
Add Added add, subtract, negate, multiply and toString methods to PolynomialFunction. luc
Update Changed FractionFormat to extend NumberFormat. Fixes MATH-189. psteitz
Update Forced symmetry in binomialCoefficientLog and added test cases for MathUtils. Fixes MATH-242. Thanks to Christian Semrau. psteitz
Fix Fixed error in binomial coefficient computation. Fixes MATH-241. Thanks to Christian Semrau. psteitz
Add Added a Legendre-Gauss integrator. luc
Fix Fixed error in factorial computation for 17 <= n <= 20. Fixes MATH-240. Thanks to Christian Semrau. psteitz
Update Integration algorithms now can have both relative and absolute accuracy settings. luc
Add Added a new univariate sub-package below the optimization package. Fixes MATH-177. Thanks to Gilles Sadowski. luc
Update The analysis package has been reorganized with several sub-packages. luc
Fix Fixed an error in gcd computation for large values. Fixes MATH-238. Thanks to Christian Semrau. luc
Add Added method to walk matrix entries with or without changing them in the visitor design pattern sense. Three different orders can be used, row by row, column by column or optimized order according to internal storage. Optimized order should be preferred when no specific order is needed, because it will be more cache efficient. luc
Add Added Fast Hadamard Transform. Fixes MATH-215. Thanks to Bernhard Grünewaldt. luc
Add Added nth root computation for complex numbers. Fixes MATH-236. Thanks to Bernhard Grünewaldt. luc
Add Added support for sparse matrix. Fixes MATH-230. Thanks to Sujit Pal and Ismael Juma. luc
Add Added an int/double hash map (OpenIntToDoubleHashMap) with much smaller memory overhead than standard java.util.Map (open addressing and no boxing). Thanks to Ismael Juma. luc
Add Added support for multi-dimensional Fourier transform. Fixes MATH-152. Thanks to Remi Arntzen. luc
Update The root solvers and the integrators now take the function to solve as a parameter to the solve/integrate methods, thus allowing to reuse the same solver/integrator for different functions. Fixes MATH-218. luc
Add Added setter methods for rows and columns in matrices. Fixes MATH-234. luc
Add Added Frobenius matrix norm. Fixes MATH-232. luc
Add Added an abstract matrix implementation simplifying extension by users. Fixes MATH-231. luc
Add Added support for the Zipf distribution. Fixes MATH-178. Thanks to Paul Cowan. luc
Add Added support for copying statistics. Changes to stats classes include copy constructor, static copy(-,-) and instance copy() methods. Added copy() to UnivariateStatistic and StorelessUnivariateStatistic interfaces. Fixes MATH-212. Thanks to Jason C. HandUber. psteitz
Add Added a removal feature for observations in descriptive statistics. Fixes MATH-229. Thanks to Cyril Briquet. luc
Add Added a scalb method in MathUtils. This method is similar to the method with same name added in java.lang.Math as of Java 6. luc
Fix Fixed F distribution inverse CDF computation for small denominator degrees of freedom. Fixes MATH-227. Thanks to Joerg Henning. brentworden
Fix Fixed an error in CorrelatedRandomVectorGenerator leading to a component of the generated vector being constant. Fixes MATH-226. Thanks to Stuart Siegel. luc
Fix Greatly improved QR-decomposition speed using transposed matrices internally. Fixes MATH-223. Thanks to John Mulcahy. luc
Fix Fixed an infinite loop encountered in some backward integration cases for ODE solvers. Thanks to Pascal Parraud. luc
Add Added beta distribution. Fixes MATH-222. Thanks to Ted Dunning. luc
Add Added probability density functions computation for distributions for which it is feasible. Fixes MATH-222. Thanks to Ted Dunning. luc
Fix Changed the Complex.equals() method so that it considers +0 and -0 are equal, as required by IEEE-754 standard. Fixes MATH-221. Thanks to Dieter Roth. luc
Add Added JAMA-like interfaces for eigen/singular problems. The implementation are based on the very quick dqd/dqds algorithms and some parts of the MRRR algorithm. This leads to very fast and accurate solutions. Fixes MATH-220. luc
Add Added JAMA-like interfaces for decomposition algorithms. These interfaces decompose a matrix as a product of several other matrices with predefined properties and shapes depending on the algorithm. These algorithms allow to solve the equation A * X = B, either for an exact linear solution (LU-decomposition, Cholesky decomposition) or an exact or least-squares solution (QR-decomposition). Fixes MATH-220. luc
Add Added removeData methods for the SimpleRegression class. This allows to support regression calculations across a sliding window of (time-based) observations without having to recalculate for the entire window every time. Fixes MATH-219. Thanks to Andrew Berry. luc
Add Support for one dimensional vectors has been added to the linear algebra package with a RealVector interface, a RealVectorImpl default implementation using a single double array to store elements and a RealVectorFormat for input/output. Thanks to Andreas Rieger. luc
Update Changed OLS regression implementation added in MATH-203 to use QR decomposition to solve the normal equations. Fixes MATH-217. psteitz
Add New ODE integrators have been added: the explicit Adams-Bashforth and implicit Adams-Moulton multistep methods. As the implementations of these methods are based on Nordsieck vector rather than a traditional array of previous steps, they both have been improved to handle adaptive stepsize. These methods provide the same rich features has the existing ones: continuous output, step handlers, discrete events, G-stop ... luc
Fix Replaced size adjustment of all steps of fixed steps Runge-Kutta integrators by a truncation of the last step only. Fixes MATH-214. luc
Update The ODE integrators now support several step handlers at once, instead of just one. This is more consistent with event handlers management. The setStepHandler method has therefore been replaced by addStephandler, the getStepHandler method has been replaced by getStepHandlers which returns a Collection and a clearStepHandlers method has been added. luc
Add All ODE integrators now support setting a maximal number of evaluations of differential equations function. If this number is exceeded, an exception will be thrown during integration. This can be used to prevent infinite loops if for example error control or discrete events create a really large number of extremely small steps. luc
Add All step interpolators for ODE integrators now provide interpolation for both the state and its time derivatives. The interpolated derivatives are the exact derivatives of the interpolated state, thus preserving consistency. The general step handlers hence do not need to call the derivation function anymore. The fixed step handlers also get the time derivative of the state as an additional argument along with the state when they are called. luc
Fix Changed return type for FirstOrderIntegrator.integrate() to double in order to retrieve exact stop time. This allows to handle properly integration interruption due to an EventHandler instance asking to stop the integration when its associated event is triggered. The state was already set to the current state at interruption time, but it was difficult to get the corresponding time (it involved setting a step handler monitoring the last step specially). Fixes MATH-213. luc
Update Events handlers in the ODE package now also provide the switching function variation (increasing/decreasing) when an event occurs luc
Update Clarified the ODE package by breaking in into several sub-packages and renaming classes (SwitchingFunctions/EventHandler, SwitchingFunctionsHandler/CombinedEventsManager) luc
Fix Changed return type for FirstOrderIntegrator.getSwitchingFunctions() to a collection of SwitchingFunction instances. This better suits the intended use of the method and fixes a visibility error since the previous return type referenced the package private SwitchState class. Fixes MATH-210. luc
Fix Fixed dimension error on output vector for the operate method in RealMatrixImpl and BigMatrixImpl classes. Fixes MATH-209. Thanks to Thomas Chust. luc
Update The FirstOrderDifferentialEquations, FirstOrderIntegrator and FixedStepHandler interfaces now extends Serializable, allowing integrators, problems and handlers to be embedded into users Serializable classes. luc
Add Added several convenience methods and constants for Vector3D and Rotation. luc
Update Replaced public no argument constructors with IDENTITY or ZERO static instances for immutable classes Vector3D and Rotation. luc
Fix Fixed inconsistencies in the naming scheme for static fields in Vector3D and Rotation with respect to the overall library. luc
Update Greatly improved RealMatrixImpl and BigMatrixImpl performances, both in terms of speed and in terms of temporary memory footprint. luc
Add Added Mauro's patch to support multiple regression. Fixes MATH-203. Thanks to Mauro Talevi. luc
Update Starting with version 2.0 of the library, the minimal version of the Java platform required to compile and use Commons Math is Java 5. This version is widely deployed now on many systems. It brings new important features for specific mathematical developments, for example new functions (log10, cbrt, ulp, signum, cosh, sinh, tanh, hypot, expm1, log1p), autoboxing, MathContext or RoundingMode. It also brings important features for general development, for example enums, generics or annotations. luc
Add Switching functions can now throw dedicated SwitchException from all their method. At upper call level, the various ODE integrators handle these new exceptions and wrap them into IntegratorException instances, hence the integrators methods signature did not change. luc
Add Added the getSwitchingFunctions and clearSwitchingFunctions to the FirstOrderIntegrator interface and all its implementations. Fixes MATH-202. luc
Update Removed deprecated features. This includes the following changes. Factory-based instantiation replaced by setter injection in 1.2 in several classes have been removed. Protected fields in matrices implementations have been declared final and private. Identity factory methods moved to MatrixUtils class have been removed. Complex utilities methods that have been superseded by Complex instance methods have been removed. luc
Fix Fixed formula in fast cosine transformer javadoc comments. Fixes MATH-205. Thanks to Roman Werpachowski. luc
Fix Javadoc and style fixes. Fixes MATH-193. Thanks to Michael Heuer and Sebb. brentworden
Fix Added an error detection for missing imaginary character while parsing complex string. Fixes MATH-198. Thanks to Frederick Salardi. luc
Fix Detect numerical problems in Q.R decomposition for Levenberg-Marquardt estimator and report them appropriately. Fixes MATH-199. Thanks to Mick. luc
Fix Fixed several crashes in getCovariances() and guessParametersErrors() in AbstractEstimator when some parameters are bound. The methods now explicitly give result only about unbound parameters. Fixes MATH-200. Thanks to Plamen Petrov. luc
Fix Fixed truncation error in t-test classes for large t values. Fixes MATH-201. Thanks to Peter Wyngaard. brentworden
Fix Added root checks for the endpoints. Fixes MATH-204. Thanks to Mick. brentworden

Release 1.2 – 2008-02-24

Type Changes By
Fix Fixed numerous warnings in test code. luc
Fix Use the initial guess provided by the user in BrentSolver.solve(), thus improving speed. Fixes MATH-156. Thanks to Tyler Ward. luc
Add Added the estimation, optimization, geometry and ode packages from the Mantissa library. luc
Fix Made ComplexFormat format double values with a provided NumberFormat instance instead of using the real part format for all values. Fixes MATH-18. Thanks to Phil Steitz. brentworden
Add Added Pascal distribution implementation. Fixes MATH-120. Thanks to Todd C. Parnell. psteitz
Add Added QR Decomposition. Fixes MATH-148. Thanks to Joni Salonen. psteitz
Fix Modified ProperFractionFormat to reject embedded minus signs. Fixes MATH-60. Thanks to Nhung Nnguyen. psteitz
Fix Added a nextAfter method in MathUtils to return the next machine-representable number in a specified direction from a given floating point number. Used this to ensure that MathUtils.round does not return incorrect results for numbers with bad IEEE754 representations. Fixes MATH-151. Thanks to Luc Maisonobe. psteitz
Add Added Fast Fourier Transform implementation. Fixes MATH-140. Thanks to Xiaogang Zhang. psteitz
Fix Modified getSumSquaredErrors method in SimpleRegression to always return a non-negative result. Fixes MATH-85. Thanks to Mark Osborn, Luc Maisonobe. psteitz
Fix Corrected nextInt and nextLong to handle wide value ranges. Fixes MATH-153. Thanks to Remi Arntzen. brentworden
Fix Increased default precision of Gamma and Beta functions. Fixes MATH-166. Thanks to Lukas Theussl. psteitz
Update Added log function to MathUtils. Fixes MATH-158. Thanks to Hasan Diwan. psteitz
Update Added two sample (binned comparison) ChiSquare test. Fixes MATH-160. Thanks to Matthias Hummel. psteitz
Fix Modified NormalDistributionImpl.cumulativeProbablity to catch MaxIterationsExceededException and return 0 or 1, resp. if the argument is more than 20 standard deviations from the mean. Fixes MATH-167. psteitz
Update Added SynchronizedDescriptiveStatistics class. Fixes MATH-170. Thanks to David J. M. Karlsen. brentworden
Update Added addAndCheck, mulAndCheck, and subAndCheck MathUtils methods for long integer arguments. Fixes MATH-154. Thanks to Remi Arntzen. brentworden
Update Merged most functions from ComplexUtils into Complex class, added static factory method to Complex. Fixes MATH-171. Thanks to Niall Pemberton. psteitz
Update Deprecated abstract factory methods and made DescriptiveStatistics and and SummaryStatistics concrete classes. Pushed implementations up from DescriptiveStatisticsImpl, SummaryStatisticsImpl. Made implementations of statistics configurable via setters. psteitz
Fix Changed Mean.evaluate() to use a two-pass algorithm, improving accuracy by exploiting the the fact that this method has access to the full array of data values. Fixes MATH-174. psteitz
Fix Added check and rescaling of expected counts to sum to sum of expected counts if necessary in ChiSquare test. Fixes MATH-175. Thanks to Carl Anderson. psteitz
Fix Handle multiplication of Complex numbers with infinite parts specially. Fixes MATH-164. luc
Update Add errors guessing to least-squares estimators. Fixes MATH-176. Thanks to Kazuhiro Koshino. luc
Update Add tests for Fraction constructor using double parameter. Fixes MATH-179. Thanks to Niall Pemberton. luc
Add Added one-way ANOVA implementation. Fixes MATH-173. Thanks to Bob MacCallum. psteitz
Update Add Fraction constructor using max denominator value. Fixes MATH-181. Thanks to Niall Pemberton. luc
Fix Add integer overflow checks in Fraction constructor using double parameter. Fixes MATH-182. luc
Fix Throw EOFException when using empty files with ValueServer in replay and digest modes. Fixes MATH-185. luc
Update Added a equals and hash methods in MathUtils to check for double arrays luc
Add Added an angle normalization method in MathUtils to force angles in some user-defined interval luc
Add Added vectorial covariance computation (either sample or population covariance) luc
Add Added multivariate summary statistics. luc
Update Added getSumOfLogs method to SummaryStatistics and made SumOfLogs instance used by GeometricMean configurable. Fixes MATH-191. psteitz
Fix Fixed AbstractIntegerDistribution cumulativeProbablility(-,-) to correctly handle double arguments. Fixes MATH-184. Thanks to Yegor Bryukhov. psteitz
Update Made numerator and denominator final in Fraction and deprecated protected real and imaginary parts fields in Complex, making Fraction immutable and preparing Complex to become fully immutable in 2.0. Fixes MATH-188. Thanks to Sebastian Bazley. psteitz

Release 1.1 – 2005-12-17

Type Changes By
Fix Made NewtonSolver derivative field transient and implemented readObject to initialize. Fixes MATH-74. psteitz
Fix Made sampleStats field private and changed getUpperBounds to return a fresh copy in EmpiricalDistributionImpl. Fixes MATH-74. psteitz
Update Added polar2Complex method to ComplexUtils to create Complex numbers from polar representations. psteitz
Fix Made all serialVersionUIDs private. Fixes MATH-49. Thanks to Elliotte Harold. psteitz
Fix Improved documentation and test cases related to handling of infinite and NaN values in Complex, ComplexUtils classes. Fixes MATH-5. psteitz
Fix Fixed incorrect NaN handling in o.a.m.s.d.rank.Min, Max. Fixes MATH-57. Thanks to Mauro Talevi. psteitz
Fix Changed RealMatrixImpl.equals to use Double.doubleToLongBits to compare corresponding matrix entries. Fixes MATH-74. psteitz
Fix Eliminated floating point equals comparison in Percentile.evaluate. Fixes MATH-74. psteitz
Fix Eliminated unnecessary assignment statements in Skewness.getResult method. Fixes MATH-74. psteitz
Fix Synchronized getters in ResizeableDoubleArray. Fixes MATH-74. psteitz
Fix Eliminated unnecessary assignment statement in BisectionSolver.solve method. Fixes MATH-74. psteitz
Fix Implemented hashCode in the Complex class and changed the semantics of equals to make all instances with real or imaginary part NaN equal. Fixes MATH-74. psteitz
Fix Fixed bin index overflow problem in EmpiricalDistributionImpl. Fixes MATH-12. Thanks to Keith McDonald. psteitz
Fix Added protection against numerical overflow and underflow in the isBracketing method. Fixes MATH-108. Thanks to Xiaogang Zhang. brentworden
Fix Fixed division by zero error in rounding methods. Fixes MATH-47. Thanks to Nikhil Gupte. brentworden
Fix Added upper tail cumulative probability method to HypergeometricDistributionImpl. Fixes MATH-100. Thanks to Mike Hu. brentworden
Fix Added better handling of numerical overflow and division by zero in Complex calculations. Fixes MATH-22. Thanks to Xiaogang Zhang. brentworden
Fix Changed ContinuedFraction to better handle infinite convergents that resulted in divergent continued fraction evaluations. Fixes MATH-92. Thanks to Mikael Weigelt. brentworden
Fix Changed rounding methods to not rely on BigDecimal conversions which was causing numerical error. Fixes MATH-32. Thanks to Srinivas Vemury. brentworden
Fix Changed Fraction(double) to correctly handle near-integral arguments. Fixes MATH-3. Thanks to Jörg Weimar. psteitz
Fix Changed lcm to throw ArithmeticException (instead of returning bogus value) if the result is too large to store as an integer. Fixes MATH-143. Thanks to Jörg Weimar. psteitz
Fix Added factories for TTest, ChiSquareTest and TestUtils class with static methods to create instances and execute tests. Fixes MATH-70. Thanks to Mary Ellen Foster. psteitz
Update Eliminated repeated endpoint function evaluations in BrentSolver, SecantSolver. Fixes MATH-95. Thanks to Paul Field. psteitz
Update Added setSubMatrix methods to RealMatrixImpl, BigMatrixImpl. To Preserve backward compatibility with version 1.0, these methods were not added to the RealMatrix, BigMatrix interfaces. Fixes MATH-137. Thanks to Rodrigo di Lorenzo Lopes. psteitz
Update Added createXIdentityMatrix methods to MatrixUtils and deprecated getIdentity methods in RealMatrixImpl, BigMatrixImpl. Modified RealMatrixImpl, BigMatrixImpl constructors to throw IllegalArgumentExceptions instead of ArrayIndexOutOfBounds when dimension arguments are not positive. psteitz
Update Made PRNG pluggable for classes in the random package. Added RandomGenerator interface extracted from java.util.random and abstract implementation, AbstractRandomGenerator providing default implementations of methods based on nextDouble(). Added a constructor taking a RandomGenerator as an argument to RandomDataImpl. Changed ValueServer to use a RandomData in its constructor. Changes to 1.0 classes should be backward compatible (including serialization). psteitz
Update Added utility methods for overflow-checked integer arithmetic and improved gcd method in MathUtils. Thanks to C. Scott Ananian. psteitz
Fix Fixed error in TTestImpl.homoscedasticTtest. Implementation was incorrectly using heteroscedastic t statistic. Also improved sensitivity of test cases. Fixes MATH-79. Thanks to Gilles Gaillard. psteitz
Fix Fixed javadoc errors. One-sided t-test significance adjustment was reversed in javadoc for boolean-valued test methods. Fixes MATH-44. Thanks to Gilles Gaillard. psteitz
Fix Fixed bug in PolynomialSplineFunction to allow evaluation of the function at the last knot point. Thanks to Ben Litchfield. brentworden
Add Added Weibull distribution implementation. brentworden
Add Added Cauchy distribution implementation. brentworden
Add Added convenience methods for rounding. brentworden
Add Added Fraction class based on commons-lang implementation. With the fraction class, FractionFormat and ProperFractionFormat classes were added to provide fraction formatting and parsing. Thanks to C. Scott Ananian. brentworden

Release 1.0 – 2004-12-06

No changes in this release.