You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2014/12/13 22:04:50 UTC
[math] prepared release notes for version 3.4
Repository: commons-math
Updated Branches:
refs/heads/master 9f42f18f1 -> 09129d536
prepared release notes for version 3.4
Project: http://git-wip-us.apache.org/repos/asf/commons-math/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-math/commit/09129d53
Tree: http://git-wip-us.apache.org/repos/asf/commons-math/tree/09129d53
Diff: http://git-wip-us.apache.org/repos/asf/commons-math/diff/09129d53
Branch: refs/heads/master
Commit: 09129d536726fac7f94f6b641e34a34a49c9a012
Parents: 9f42f18
Author: Luc Maisonobe <lu...@apache.org>
Authored: Sat Dec 13 22:04:33 2014 +0100
Committer: Luc Maisonobe <lu...@apache.org>
Committed: Sat Dec 13 22:04:33 2014 +0100
----------------------------------------------------------------------
RELEASE-NOTES.txt | 273 ++++++++++++-------------------------------
src/changes/changes.xml | 9 +-
2 files changed, 82 insertions(+), 200 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-math/blob/09129d53/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 16bfcde..7930ea8 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,24 +1,24 @@
- Apache Commons Math 3.3 RELEASE NOTES
+ Apache Commons Math 3.4 RELEASE NOTES
-The Apache Commons Math team is pleased to announce the release of commons-math3-3.3.
+The Apache Commons Math team is pleased to announce the release of commons-math3-3.4-SNAPSHOT
-The Apache Commons 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.
+The Apache Commons 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.x JAR file.
+way such as to allow drop-in replacement of the v3.3 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.
+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 splines 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
-Commons Math is Java 5.
+ 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
@@ -32,203 +32,80 @@ Caveat:
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.
Changes in this version include:
New features:
-o N/A: Added an order 6 fixed-step ODE integrator designed by H. A. Luther in 1968.
-o MATH-1110: Added new constructor to "OLSMultipleLinearRegression" to be able
- to specify a custom singularity threshold for QR decomposition. Thanks to Edward Segall.
-o MATH-1119: Added a fast single-step method for fixed-step Runge-Kutta integrators.
-o MATH-1101: Improved documentation of QR decomposition handling of singular matrices.
-o MATH-1053: QR decomposition can compute pseudo-inverses for tall matrices. Thanks to Sean Owen.
-o MATH-820: Field vectors now implement the visitor pattern just like real vectors.
-o MATH-749: 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.
-o MATH-1095: Added Emo Welzl algorithm to find the smallest enclosing ball of a collection of points.
-o MATH-1072: Added a constructor to "AbstractListChromosome" that does not copy the input argument.
-o MATH-1091: 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.
-o N/A: 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 ...).
-o MATH-1090: IntervalsSet now implements Iterable<double[]>, so one can iterate
- over the sub-intervals without building a full list containing a copy of everything beforehand.
-o MATH-923: Utilities for creating artificial neural networks (package "o.a.c.m.ml.neuralnet").
- Implementation of Kohonen's Self-Organizing Feature Map (SOFM).
-o MATH-1014: Refactoring of curve fitters (package "o.a.c.m.fitting").
-o MATH-970: 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).
-o MATH-1061: Added InsufficientDataException.
-o MATH-983: Added a graphical overview of available continuous distributions to the userguide.
-o MATH-1051: Added Kendall's tau correlation (KendallsCorrelation). Thanks to Matt Adereth,devl.
-o MATH-1036: 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. Thanks to Ajo Fod.
-o MATH-1038: Added ConfidenceInterval class and BinomialConfidenceInterval providing several
- estimators for confidence intervals for binomial probabilities. Thanks to Thorsten Schäfer.
-o MATH-1004: Added new methods to compute the inverse of a matrix to "DiagonalMatrix"
- and "MatrixUtils". Thanks to Ajo Fod.
-o MATH-1041: "Pair": added factory method and "toString" method. Thanks to Sean Owen.
-o MATH-1002: "AbstractUnivariateStatistic.test(...)" methods have uses outside subclasses;
- implementation moved to MathArrays.verifyValues(...).
-o MATH-1034: Added exact binomial test implementation. Thanks to Thorsten Schäfer.
-o MATH-1018: Added overloaded constructors for subclasses of "RealDistribution" implementations
- which do not require an explicit "inverseCumulativeAccuracy". The default accuracy will
- be used instead. Thanks to Ajo Fod.
-o MATH-1001: Added overloaded methods for "Frequency#incrementValue(Comparable, long)" with
- int, long and char primitive arguments. Thanks to sebb.
-o MATH-1030: 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. Thanks to Thorsten Schäfer.
-o MATH-1028: Added new distance metric "EarthMoversDistance". Thanks to Thorsten Schäfer.
-o MATH-1025: Added CombinatoricsUtils to the util package, moving binomial
- coefficients, factorials and Stirling numbers there and adding
- a combinations iterator.
-o MATH-991: "PolynomialSplineFunction": added method "isValidPoint" that
- checks whether a point is within the interpolation range.
-o MATH-989: "BicubicSplineInterpolatingFunction": added method "isValidPoint" that
- checks whether a point is within the interpolation range.
-o MATH-1010: Utility to shuffle an array.
-o MATH-1008: Created package ("o.a.c.m.fitting.leastsquares") for least-squares
- fitting, with implementations of "LevenbergMarquardtOptimizer" and
- "GaussNewtonOptimizer" adapted to a new ("fluent") API.
-o MATH-1007: Add mode function to StatUtils class.
-o MATH-1000: Add mode function to Frequency class.
-o MATH-997: Implemented Gauss-Hermite quadrature scheme (in package "o.a.c.m.analysis.integration.gauss").
-o MATH-967: Added midpoint integration method. Thanks to Oleksandr Kornieiev.
-o MATH-851: Added method "MathArrays#convolve(double[], double[])" to compute the
- discrete, linear convolution of two sequences. Thanks to Clemens Novak.
-o MATH-977: Added low-discrepancy random generator "HaltonSequenceGenerator".
-o MATH-826: Added low-discrepancy random generator "SobolSequenceGenerator". Thanks to Sam Halliday.
-o MATH-973: Added "GeometricDistribution" to "o.a.c.m.distribution" package. Thanks to Mauro Tortonesi.
-o MATH-968: Added "ParetoDistribution" to "o.a.c.m.distribution" package. Thanks to Alex Gryzlov.
-o MATH-898: Added "FuzzyKMeansClusterer" to "o.a.c.m.ml.clustering" package.
+o MATH-1166: New classes "BicubicInterpolatingFunction" and "BicubicInterpolator" to
+ replace "BicubicSplineInterpolatingFunction" and "BicubicSplineInterpolator".
+o 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.
+o MATH-1144: Interface to allow parameter validation in "o.a.c.m.fitting.leastsquares":
+ the point computed by by the optimizer can be modified before evaluation.
+o MATH-1154: Changed classes in the inference package that instantiate distributions to
+ pass null RandomGenerators to avoid initialization overhead for the default
+ generator.
+o MATH-1156: Added all Java 8 StrictMath methods to FastMath, so FastMath remains compatible
+ with newer Java versions.
+o MATH-1139: Added Gumbel, Laplace, Logistic and Nakagami distributions. Thanks to Alexey Volkov.
+o MATH-1120: Added several different estimation types and NaN handling strategies for Percentile. Thanks to Venkatesha Murthy.
+o MATH-418: Added implementation of PSquare algorithm to estimate percentiles without
+ storing data in memory (i.e. as StorelessUnivariateStatistic). Thanks to Venkatesha Murthy.
Fixed Bugs:
-o N/A: Fixed an issue with noisy functions for ODE events detection.
-o MATH-1092: Extracted class "LineSearch" from "PowellOptimizer", to be used in
- "NonLinearConjugateGradientOptimizer" (in place of the implementation that triggered this issue).
-o MATH-1115: Build properly empty polyhedrons set when given equal min/max boundaries. Also explained
- better in the javadoc about some wrong usage of PolyhedronsSet constructor.
-o MATH-1117: Build properly empty polygons set when given equal min/max boundaries. Also explained
- better in the javadoc about some wrong usage of PolygonsSet constructor.
-o MATH-1118: "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.
-o MATH-1107: Prevent penalties to grow multiplicatively in CMAES for out of bounds points. Thanks to Bruce A Johnson.
-o MATH-875: Un-deprecated RealVector.sparseIterator, documenting explicitly that entries
- not iterated above are the zero ones.
-o MATH-821: Relaxed specification for function mapping on vectors, thus allowing straightforward
- implementation for sparse vectors.
-o MATH-1065: Calculating the inverse cumulative probability of an "EnumeratedRealDistribution"
- will now return the correct result according to the selected enumerated probability
- mass function. Thanks to matteodg.
-o MATH-976: 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.
-o MATH-990: Improved performance of "MathArrays#sortInPlace(...)".
-o MATH-1044: 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. Thanks to Sean Owen.
-o MATH-985: Fixed an indexing problem in "BicubicSplineInterpolatingFunction" which
- resulted in wrong interpolations. Thanks to Johnathan Kool.
-o MATH-1089: "Precision#round(double, ...)" will now return negative zero for negative
- values rounded to zero, similar to the float variant.
-o MATH-1088: The iterator returned by "MultiDimensionalCounter#iterator()" will now
- correctly throw a "NoSuchElementException" when calling "next()" and the iterator is already exhausted.
-o MATH-1082: 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.
-o MATH-1079: 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.
-o MATH-842: 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).
-o MATH-1070: Fix "Precision#round(float, int, int)" when using rounding mode "BigDecimal.ROUND_UP"
- and the discarded fraction is zero. Thanks to Oleksandr Muliarevych.
-o MATH-1059: Use "FastMath" instead of "Math" within Commons Math.
-o MATH-1068: Avoid overflow when calculating Kendall's correlation for large arrays. Thanks to Gal Lalouche.
-o MATH-1067: Avoid infinite recursion in "Beta.regularizedBeta" (package "o.a.c.m.special"). Thanks to Florian Erhard.
-o MATH-1056: Fixed unintended integer division error in PoissonDistribution sampling method. Thanks to Sean Owen.
-o MATH-1057: Fixed failing unit tests for "BOBYQAOptimizer" when executed with a Oracle/Sun JVM 1.5.
-o MATH-1062: A call to "KalmanFilter#correct(...)" may have resulted in "NonSymmetricMatrixException"
- as the internally used matrix inversion method was using a too strict symmetry check.
-o MATH-1058: Precision improvements (for small values of the argument) in "Beta" function
- and in "LogNormalDistribution" and "WeibullDistribution". Thanks to Sean Owen.
-o MATH-1055: Fixed some invalid links inside javadoc and added missing deprecated annotations. Thanks to Sean Owen.
-o MATH-1051: "EigenDecomposition" may have failed to compute the decomposition for certain
- non-symmetric matrices. Port of the respective bugfix in Jama-1.0.3.
-o MATH-1047: Check for overflow in methods "pow" (class "o.a.c.m.util.ArithmeticUtils").
-o MATH-1045: "EigenDecomposition": Using tolerance for detecting whether a matrix is singular. Thanks to Sean Owen.
-o MATH-1035: Simplified and improved performance of "ArithmeticUtils#addAndCheck(long, long)". Thanks to derphead.
-o MATH-1029: The "BigFraction" constructor will throw a "FractionConversionException"
- also in case negative values are provided which exceed the allowed range (+/- Integer.MAX_VALUE).
-o MATH-1033: The "KalmanFilter" wrongly enforced a column dimension of 1 for
- the provided control and measurement noise matrix. Thanks to Yuan Qu.
-o MATH-1037: 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. Thanks to Aleksei Dievskii.
-o MATH-996: 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. Thanks to Tim Allison.
-o MATH-999: Improve performance of "DiagonalMatrix#preMultiply(RealVector)". Thanks to Ajo Fod.
-o MATH-1021: Fixed overflow in "HypergeometricDistribution". Thanks to Brian Bloniarz.
-o MATH-1020: Fixed "nextPermutation" method (in "o.a.c.m.random.RandomDataGenerator").
- This bug does not affect applications using a previous version of Commons Math.
-o MATH-1019: Buggy (private) method "shuffle" in "o.a.c.m.random.RandomDataGenerator"
- superseded by "MathArrays.shuffle" (cf. MATH-1010).
-o MATH-1012: Created "RandomGeneratorFactory" (package "o.a.c.m.random") to reduce
- code duplication in "RandomDataGenerator".
-o MATH-1005: Fixed "MathArrays.linearCombination" when array length is 1. Thanks to Roman Werpachowski.
-o MATH-993: In "GaussNewtonOptimizer", check for convergence before updating the
- parameters estimation for the next iteration.
-o MATH-988: Fixed NullPointerException in 2D and 3D sub-line intersections. Thanks to Andreas Huber.
-o MATH-962: Added clarification to the javadoc of "VectorFormat" and derived classes
- in case "," is used as a separator.
-o MATH-965: Fixed inconsistent dimensions preventing use of secondary states in ODE events.
+o MATH-1178: Fixed example in userguide ("stat" section). Thanks to Dmitriy.
+o MATH-1175: Fixed inverse cumulative probability of 0 in "LaplaceDistribution". Thanks to Karsten Loesing.
+o MATH-1174: Fixed a problem with too thin polygons considered to have infinite size.
+o MATH-1162: Fixed a problem with vanishing cut sub-hyperplanes during BSP tree merging.
+o MATH-1167: "o.a.c.m.stat.regression.OLSMultipleLinearRegression": Use threshold
+ when performing "QRDecomposition". Thanks to Neil Ireson.
+o MATH-1165: "FuzzyKMeansClusterer" has thrown an exception in case one of the data
+ points was equal to a cluster center. Thanks to Pashutan Modaresi.
+o MATH-1160: Provide access to state derivatives in ContinuousOutputModel.
+o MATH-1138: Fixed bicubic spline interpolator, using Akima splines. Thanks to Hank Grabowski.
+o MATH-1147: Added statistics missing from toString method in SummaryStatistics.
+o MATH-1152: Improved performance of "EnumeratedDistribution#sample()" by caching
+ the cumulative probabilities and using binary rather than a linear search. Thanks to Andras Sereny.
+o MATH-1148: "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. Thanks to Guillaume Marceau.
+o MATH-1151: Interface "ValueAndJacobianFunction" is a precondition for lazy
+ evaluation (in "o.a.c.m.fitting.leastsquares").
+o MATH-1145: Fix potential integer overflows in "MannWhitneyUTest" when providing
+ large sample arrays. Thanks to Anders Conbere.
+o MATH-1149: Fixed potential null pointer dereferencing in constructor of
+ "DummyStepInterpolator(DummyStepInterpolator)". Thanks to M Kim.
+o MATH-1136: Fixed BinomialDistribution to deal with degenerate cases correctly. Thanks to Aleksei Dievskii.
+o MATH-1135: "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. Thanks to Guillaume Marceau.
+o MATH-1131: Improve performance of "KolmogorovSmirnovTest#kolmogorovSmirnovTest(...)" for
+ large samples. Also changed implementation for large n to use Pelz-Good
+ approximation. Thanks to Schalk W. Cronjé.
+o MATH-1134: "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.
+o MATH-984: 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.
+o MATH-1129: "Percentile": wrong sorting in the presence of NaN.
+o MATH-1127: Fixed overflow in Precision.equals with ulps (both double and float versions).
+o MATH-1125: Performance improvements for Student's t-distribution. Thanks to Ajo Fod.
+o MATH-1123: Fixed NullPointerException when chopping-off a sub-hyperplane
+ that is exactly at a region boundary. Thanks to Aurélien Labrosse.
+o MATH-1121: "BrentOptimizer": increment base class iteration counter. Thanks to Ajo Fod.
Changes:
-o N/A: 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.
-o MATH-437: Added KolmogorovSmirnovTest class, deprecating KolmogorovSmirnovDistribution.
-o MATH-1099: Make QR the default in GaussNewtonOptimizer. Thanks to Evan Ward.
-o MATH-1099: Add Cholesky option to GaussNewtonOptimizer. Thanks to Evan Ward.
-o MATH-1099: Make QR in GaussNewton faster and more accurate. Thanks to Evan Ward.
-o MATH-870: 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.
-o MATH-1050: Deprecated "ArithmeticUtils#pow(int, long)" and "ArithmeticUtils#pow(long, long)"
- in favor of corresponding methods "ArithmeticUtils#pow(..., int)".
-o MATH-1080: The "LinearConstraintSet" will now return the enclosed collection of "LinearConstraint"
- objects in the same order as they have been added.
-o MATH-1031: Added new class "ClusterEvaluator" to evaluate the result of a clustering algorithm
- and refactored existing evaluation code in "MultiKMeansPlusPlusClusterer"
- into separate class "SumOfClusterVariances". Thanks to Thorsten Schäfer.
-o MATH-1039: Added logDensity methods to AbstractReal/IntegerDistribution with naive default
- implementations and improved implementations for some current distributions. Thanks to Aleksei Dievskii.
-o MATH-1011: Improved implementation of "sample" method of "UniformIntegerDistribution".
-o MATH-1006: Enabled LaTeX expressions in javadoc and site docs via MathJax.
-o MATH-995: Documented limitation of "IterativeLegendreGaussIntegrator" (added warning about potential wrong usage).
-o MATH-987: Added append method to SimpleRegression, making this class map/reducible. Thanks to Ajo Fod.
-o MATH-978: Added append method to StorelessCovariance, making this class map/reducible. Thanks to Ajo Fod.
+o Spurious vertices in the middle of otherwise straight edges are now
+ filtered out when rebuilding polygons boundaries from BSP trees.
+o MATH-1128: 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.
For complete information on Apache 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/
+
+
http://git-wip-us.apache.org/repos/asf/commons-math/blob/09129d53/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d241c57..22a5143 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -53,10 +53,15 @@ If the output is not quite correct, check for invisible trailing spaces!
<release version="3.4" date="TBD" description="
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.
+ way such as to allow drop-in replacement of the v3.3 JAR file.
Most notable among the new features are:
- XXX
+ 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 splines 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.