Apache Commons Math 3.4 RELEASE NOTES | |

The Apache Commons Math team is pleased to announce the release of commons-math3-3.4 | |

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

Changes in this version include: | |

New features: | |

o MATH-1066: Added Bessel functions of the first kind, based on NetLib implementation. Thanks to Brian Wignall. | |

o MATH-1180: Method to create a sequence of integers (in "o.a.c.m.util.MathArrays"). | |

o MATH-1172: New class "SimpleCurveFitter": Boiler-plate code to allow fitting of | |

a user-defined parametric function. | |

o MATH-1173: New classes "TricubicInterpolatingFunction" and "TricubicInterpolator" to | |

replace "TricubicSplineInterpolatingFunction" and "TricubicSplineInterpolator". | |

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 MATH-1142: Improve performance of kalman gain calculation in "KalmanFilter" by | |

directly solving a linear system rather than computing the matrix | |

inverse. Thanks to Arne Schwarz. | |

o MATH-1181: 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. | |

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