prepared release notes for version 3.4

This commit is contained in:
Luc Maisonobe 2014-12-13 22:04:33 +01:00
parent 9f42f18f15
commit 09129d5367
2 changed files with 82 additions and 200 deletions

View File

@ -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/

View File

@ -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.