The Apache Commons Math team is pleased to announce the commons-math3-3.6 release!

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.

Changes in this version include:

New features:
o Added a RotationConvention enumerate to allow specifying the semantics
        or axis/angle for rotations. This enumerate has two values:
        VECTOR_OPERATOR and FRAME_TRANSFORM.  Issue: MATH-1302,MATH-1303.
o 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.  Issue: MATH-1288.
o Added a nth order Brent solver for general real fields, replacing the former
        solver that was restricted to Dfp fields only.
o New "Range" inner class of "o.a.c.m.util.IntegerSequence".  Issue: MATH-1286.
o "AggregateSummaryStatistics" can now aggregate any kind of
        "StatisticalSummary".  Issue: MATH-837.
o Deep copy of "Network" (package "o.a.c.m.ml.neuralnet") to allow evaluation of
        of intermediate states during training.  Issue: MATH-1278.
o Added negative zero support in FastMath.pow.  Issue: MATH-1273. Thanks to Qualtagh.
o 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.  Issue: MATH-1270.
o New interfaces to be implemented by algorithms that visualizes properties
        of a "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod.util").  Issue: MATH-1268.
o Reimplemented pow(double, double) in FastMath, for better accuracy in
        integral power cases and trying to fix erroneous JIT optimization again.
o Added a pow(double, long) method in FastMath.
o "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod") implements "Iterable".  Issue: MATH-1265.
o "MapUtils" (package "o.a.c.m.ml.neuralnet"): Method to sort units according to distance
        from a given vector.  Issue: MATH-1264.
o Accessor (class "o.a.c.m.ml.neuralnet.twod.NeuronSquareMesh2D").  Issue: MATH-1263.
o New "IntegerSequence" class (in package "o.a.c.m.util") with "Incrementor" inner class.  Issue: MATH-1259.
o "Neuron" class (package "o.a.c.m.ml.neuralnet"): added methods that can be used
        to assess concurrency performance.  Issue: MATH-1250.
o Method "cosAngle" in "o.a.c.m.util.MathArrays".  Issue: MATH-1244.

Fixed Bugs:
o Improved performance and accuracy of 2-sample KolmogorovSmirnov tests.  Issue: MATH-1310.
o Detect start failures with multi-step ODE integrators.  Issue: MATH-1297.
o 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.
o Increased default value for number of allowed evaluations in
        "o.a.c.m.optim.univariate.BracketFinder".  Issue: MATH-1295. Thanks to Luke Lindsay.
o 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.  Issue: MATH-1294. Thanks to Kamil Włodarczyk.
o Fixed FastMath.exp that potentially returned NaN for non-NaN argument.  Issue: MATH-1269.
o Updated reference in ZipfDistribution's javadoc.  Issue: MATH-1285. Thanks to Pim van der Hoorn.
o Fixed "Gamma#gamma(double)" for negative values smaller than -20.  Issue: MATH-1283. Thanks to Jean Noel Delavalade.
o Fixed javadoc of methods {floorDiv,floorMod} in class "FastMath".  Issue: MATH-1237. Thanks to Ken Williams.
o Check precondition (class "o.a.c.m.random.EmpiricalDistribution").  Issue: MATH-1279.
o Fixed incorrect Kendall's tau coefficient calculation due to internal integer overflow.  Issue: MATH-1277. Thanks to Marc Rosen.
o Fixed split/side inconsistencies in BSP trees.  Issue: MATH-1266.
o Avoid overflow in "Fraction" (multiplication or division by an int).  Issue: MATH-1261. Thanks to Osamu Ikeuchi.
o Added check for equal array lengths to distance measure functions.  Issue: MATH-1258. Thanks to Gunel Jahangirova.
o Better accuracy in computation of cumulative probability of "NormalDistribution"
        (package "o.a.c.m.distribution").  Issue: MATH-1257. Thanks to Bill Murphy.
o Boundary check to construct an "Interval" (package "o.a.c.m.geometry.euclidean.oned").  Issue: MATH-1256.
o Wrong neighbourhood size in class "KohonenUpdateAction" (package "o.a.c.m.ml.neuralnet.sofm").  Issue: MATH-1255.
o ResizableDoubleArray constructor does not work with double array of size 1.  Issue: MATH-1252. Thanks to John Bay.
o Fixed initial value of "number of calls" counter in class "KohonenUpdateAction"
        (package "o.a.c.m.ml.neuralnet.sofm").  Issue: MATH-1251.
o Removed unnecessary allocations in "BigFraction" (package "o.a.c.m.fraction").  Issue: MATH-1248. Thanks to Chris Popp.
o 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).  Issue: MATH-1245.
o "KolmogorovSmirnovTest#ksSum(...)" returned wrong result in case the provided
        t-parameters was zero. This affected the calculation of "approximateP(...)" for
        identical samples.  Issue: MATH-1240.
o Improved performance to calculate the two-sample Kolmogorov-Smirnov test
        via monte carlo simulation ("KolmogorovSmirnovTets#monteCarloP(...)").  Issue: MATH-1242. Thanks to Otmar Ertl.
o 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.  Issue: MATH-1241. Thanks to Aleksei Dievskii.
o Improved performance of calculating the two-sample Kolmogorov-Smirnov
        test statistic.  Issue: MATH-1232. Thanks to Otmar Ertl.
o Fixed error message for unknown parameter name in ODE.  Issue: MATH-1232.
o Fixed wrong event detection in case of close events pairs.  Issue: MATH-1226.
o Fix potential branching errors in "FastMath#pow(double, double)" when
        passing special values, i.e. infinity, due to erroneous JIT optimization.
o Fixed equals/hashcode contract failure for Dfp.  Issue: MATH-1118.
o Fixed wrong splitting of huge number in extended accuracy algorithms.  Issue: MATH-1223.
o Improve performance of "BetaDistribution#sample()" by using Cheng's algorithm.  Issue: MATH-1153. Thanks to Sergei Lebedev.
o Computation of 2-sample Kolmogorov-Smirnov statistic in case of ties
        was not correct.  Issue: MATH-1197.

Changes:
o 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.  Issue: MATH-1246.
o Added bootstrap method to KolmogorovSmirnov test.  Issue: MATH-1246.
o Added constructors taking sample data as arguments to enumerated real and integer distributions.  Issue: MATH-1287.
o Improved performance of sampling and inverse cumulative probability calculation
        for geometric distributions.  Issue: MATH-1276.
o Representation of Kolmogorov-Smirnov statistic as integral value.  Issue: MATH-1274.
o Faster generation of Zipf distributed random numbers by using rejection-inversion sampling.  Issue: MATH-1220.
o Improved performance of sort-in-place methods by avoiding boxing.  Issue: MATH-990.
o 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").  Issue: MATH-1243.


Have fun!
-Apache Commons Math team

