Apache Commons Math 3.2 RELEASE NOTES
The Commons Math team is pleased to announce the release of commons-math3-3.2
The Math project is a library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language or commons-lang.
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).
Changes in this version include:
New features:
o MATH-917,MATH-918,MATH-919,MATH-920: 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". Thanks to Reid Hochstedler.
o MATH-817: Added Multivariate Normal Mixture Model Fitting by Expectation Maximization. Thanks to Jared Becksfort.
o MATH-811: Added a way to trigger only increasing or decreasing events in ODE integration.
o MATH-946: Added array-scaling methods to MathArrays. Thanks to Jared Becksfort.
o MATH-460: Added the Lévy distribution. Thanks to Andrew Waterman.
o MATH-948: Implementations for inverse error function and inverse complementary
error functions have been added.
o MATH-845: Added utilities for prime numbers. Thanks to Sébastien Riou.
o MATH-914: Check bounds in multi-start vector optimizers.
o MATH-941: Added discrete distributions. Thanks to Piotr Wydrych.
o Added Hermite interpolator for RealFieldElement instances.
o Added RealFieldElement interface to represent anything that is
real number like, implemented by both Decimal64, Dfp and DerivativeStructure.
o Added partial derivatives computation for 3D vectors and rotations.
o Added accurate linear combination of DerivativeStructure instances,
avoiding cancellation.
o Added conversion of gradients and Hessians from spherical to Cartesian
coordinates in 3D.
Fixed Bugs:
o MATH-961: Fixed wrong array dimensions in secondary equations handling in some cases.
o MATH-960: Fixed missing side effects of secondary equations on main state in
Ordinary Differential Equations integration.
o MATH-957: Fixed inverse cumulative probability for uniform distribution. Thanks to Evan Ward.
o MATH-891: "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.
o MATH-934: Fixed Complex.reciprocal() for zero argument.
o MATH-862: AbstractRealMatrix will now check for rectangular input arrays in
its copySubMatrix methods.
o MATH-949: Increment iteration counter in optimization algorithms.
o MATH-950: Fixed missing update in ODE event handlers, when a RESET_STATE is triggered.
o MATH-947: Fixed infinite loop when NaN occurs in singular value decomposition.
o MATH-580: Extended ranges for FastMath performance tests.
o MATH-925: Finalized implementation of diagonal matrix.
o MATH-630: Added rank revealing QR decomposition. Thanks to Christopher Nix.
o MATH-570: ArrayFieldVector can now be constructed from any FieldVector. Thanks to Arne Plöse.
o MATH-861: Improved checking of null vector elements. Thanks to Sébastien Brisard.
o MATH-936: Fixed generation of long random numbers between two bounds.
o MATH-942: Fixed creation of generic array. Thanks to Piotr Wydrych.
o MATH-940: Fixed abstract test class naming that broke ant builds. Thanks to Piotr Wydrych.
o MATH-939: Allow covariance to be computed for one-dimensional variables. Thanks to Piotr Wydrych.
o MATH-938: Fixed accuracy of 3D Line.revert().
o MATH-937: Improved javadoc to explain how switching functions should
behave across events in ODE events detection.
o MATH-935: Fixed DerivativeStructure.atan2 for special cases when both arguments are +/-0.
o MATH-930: Improved class javadoc wrt convergence criteria and added
additional constructors to override the default epsilon and cut-off
values in class "SimplexSolver".
o MATH-929: Fixed truncated value in "MultivariateNormalDistribution". Thanks to Piotr Wydrych.
o MATH-927: Made "BitStreamGenerator" implement the "Serializable" interface. Thanks to Dennis Hendriks.
Changes:
o MATH-956: Replaced hard-coded numbers in "LevenbergMarquardtOptimizer".
o MATH-955: Fixed loading of test file when path contains a space. Thanks to Evan Ward.
o MATH-954: Improved speed of FastMath.abs methods for all signatures, by removing branching. Thanks to Charles Cooper.
o MATH-953: Improved speed of several FastMath methods. Thanks to Charles Cooper.
o MATH-951: Improved speed of FastMath copysign methods. Thanks to Charles Cooper.
o MATH-671: Made EmpiricalDisribution smoothing kernel pluggable.
o MATH-877: Allow direct use of SummaryStatistics in one-way ANOVA. Thanks to Peter Andrews.
o 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.
o MATH-933: Throw "MathUnsupportedOperationException" from optimizers that do
not support constraints (previous behaviour was to silently ignore
the "SimpleBounds" argument).
o MATH-931: Greater efficiency in "UnitSphereRandomVectorGenerator". Thanks to Sean Owen.
For complete information on Commons Math, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Math website:
http://commons.apache.org/proper/commons-math/