<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits.

To generate the file RELEASE-NOTES.txt from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version]

The <action> type attribute can be add,update,fix,remove.
-->

<!-- NOTE:
The description attribute entries below are specially formatted 
so as to improve the layout of the generated text release notes.

The parsing process removes all line feeds, replacing them with a single space.
The Velocity template in src/changes/release-notes.vm has been enhanced to replace pairs of adjacent spaces
with a new-line in the release notes. (These spaces are ignored when displaying HTML).
If the output is not quite correct, check for invisible trailing spaces!
-->

<document>
  <properties>
    <title>Commons Math Release Notes</title>
  </properties>
  <body>
    <release version="3.6" date="2016-01-05" 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.

Most notable among the new features are:
 field-based version of Ordinary Differential Equations framework,
 numerous improvements in distributions, statistics and neuralnet packages,
 refactored implementation of microsphere interpolation algorithm,
 explicit specification of rotation convention to use (both vector
 operator and frame transform conventions are now available).

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).
">
      <action dev="psteitz" type="fix" issue="MATH-1310">
        Improved performance and accuracy of 2-sample KolmogorovSmirnov tests.
      </action>
      <action dev="luc" type="fix" issue="MATH-1297">
        Detect start failures with multi-step ODE integrators.
      </action>
      <action dev="luc" type="add" issue="MATH-1302,MATH-1303">
        Added a RotationConvention enumerate to allow specifying the semantics
        or axis/angle for rotations. This enumerate has two values:
        VECTOR_OPERATOR and FRAME_TRANSFORM.
      </action>
      <action dev="luc" type="fix" due-to="Julien Queyrel">
        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.
      </action>
      <action dev="luc" type="add" issue="MATH-1288">
        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.
      </action>
      <action dev="erans" type="fix" issue="MATH-1295" due-to="Luke Lindsay">
        Increased default value for number of allowed evaluations in
        "o.a.c.m.optim.univariate.BracketFinder".
      </action>
      <action dev="psteitz" type="update" issue="MATH-1246">
        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.
      </action>
      <action dev="tn" type="fix" issue="MATH-1294" due-to="Kamil Włodarczyk">
        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.
      </action>    
      <action dev="psteitz" type="update" issue="MATH-1246">
        Added bootstrap method to KolmogorovSmirnov test.
      </action>
      <action dev="psteitz" type="update" issue="MATH-1287">
        Added constructors taking sample data as arguments to enumerated real and integer distributions.
      </action>
      <action dev="oertl" type="fix" issue="MATH-1269">
        Fixed FastMath.exp that potentially returned NaN for non-NaN argument.
      </action>
      <action dev="luc" type="add">
        Added a nth order Brent solver for general real fields, replacing the former
        solver that was restricted to Dfp fields only.
      </action>
      <action dev="erans" type="add" issue="MATH-1286">
        New "Range" inner class of "o.a.c.m.util.IntegerSequence".
      </action>
      <action dev="oertl" type="fix" issue="MATH-1285" due-to="Pim van der Hoorn ">
        Updated reference in ZipfDistribution's javadoc.
      </action>
      <action dev="tn" type="fix" issue="MATH-1283" due-to="Jean Noel Delavalade">
        Fixed "Gamma#gamma(double)" for negative values smaller than -20.
      </action>    
      <action dev="tn" type="fix" issue="MATH-1237" due-to="Ken Williams">
        Fixed javadoc of methods {floorDiv,floorMod} in class "FastMath".
      </action>
      <action dev="tn" type="add" issue="MATH-837">
        "AggregateSummaryStatistics" can now aggregate any kind of
        "StatisticalSummary".
      </action>
      <action dev="erans" type="fix" issue="MATH-1279">
        Check precondition (class "o.a.c.m.random.EmpiricalDistribution").
      </action>
      <action dev="erans" type="add" issue="MATH-1278">
        Deep copy of "Network" (package "o.a.c.m.ml.neuralnet") to allow evaluation of
        of intermediate states during training.
      </action>
      <action dev="oertl" type="update" issue="MATH-1276">
        Improved performance of sampling and inverse cumulative probability calculation
        for geometric distributions.
      </action>
      <action dev="oertl" type="fix" issue="MATH-1277" due-to="Marc Rosen">
        Fixed incorrect Kendall's tau coefficient calculation due to internal integer overflow.
      </action>
      <action dev="oertl" type="update" issue="MATH-1274">
        Representation of Kolmogorov-Smirnov statistic as integral value.
      </action>
      <action dev="luc" type="add" issue="MATH-1273" due-to="Qualtagh">
        Added negative zero support in FastMath.pow.
      </action>
      <action dev="erans" type="add" issue="MATH-1270">
        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.
      </action>
      <action dev="erans" type="add" issue="MATH-1268">
        New interfaces to be implemented by algorithms that visualizes properties
        of a "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod.util").
      </action>
      <action dev="luc" type="add" >
        Reimplemented pow(double, double) in FastMath, for better accuracy in
        integral power cases and trying to fix erroneous JIT optimization again.
      </action>
      <action dev="luc" type="add" >
        Added a pow(double, long) method in FastMath.
      </action>
      <action dev="luc" type="fix" issue="MATH-1266">
        Fixed split/side inconsistencies in BSP trees.
      </action>
      <action dev="erans" type="add" issue="MATH-1265">
        "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod") implements "Iterable".
      </action>
      <action dev="erans" type="add" issue="MATH-1264">
        "MapUtils" (package "o.a.c.m.ml.neuralnet"): Method to sort units according to distance
        from a given vector.
      </action>
      <action dev="erans" type="add" issue="MATH-1263">
        Accessor (class "o.a.c.m.ml.neuralnet.twod.NeuronSquareMesh2D").
      </action>
      <action dev="erans" type="add" issue="MATH-1259">
        New "IntegerSequence" class (in package "o.a.c.m.util") with "Incrementor" inner class.
      </action>
      <action dev="oertl" type="update" issue="MATH-1220">
        Faster generation of Zipf distributed random numbers by using rejection-inversion sampling.
      </action>
      <action dev="oertl" type="update" issue="MATH-990">
        Improved performance of sort-in-place methods by avoiding boxing.
      </action>
      <action dev="erans" type="fix" issue="MATH-1261" due-to="Osamu Ikeuchi">
        Avoid overflow in "Fraction" (multiplication or division by an int).
      </action>
      <action dev="oertl" type="fix" issue="MATH-1258" due-to="Gunel Jahangirova">
        Added check for equal array lengths to distance measure functions.
      </action>
      <action dev="erans" type="fix" issue="MATH-1257" due-to="Bill Murphy">
        Better accuracy in computation of cumulative probability of "NormalDistribution"
        (package "o.a.c.m.distribution").
      </action>
      <action dev="erans" type="fix" issue="MATH-1256">
        Boundary check to construct an "Interval" (package "o.a.c.m.geometry.euclidean.oned").
      </action>
      <action dev="erans" type="fix" issue="MATH-1255">
        Wrong neighbourhood size in class "KohonenUpdateAction" (package "o.a.c.m.ml.neuralnet.sofm").
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1252" due-to="John Bay">
        ResizableDoubleArray constructor does not work with double array of size 1.
      </action>
      <action dev="erans" type="fix" issue="MATH-1251">
        Fixed initial value of "number of calls" counter in class "KohonenUpdateAction"
        (package "o.a.c.m.ml.neuralnet.sofm").
      </action>
      <action dev="erans" type="add" issue="MATH-1250">
        "Neuron" class (package "o.a.c.m.ml.neuralnet"): added methods that can be used
        to assess concurrency performance.
      </action>
      <action dev="erans" type="fix" issue="MATH-1248" due-to="Chris Popp">
        Removed unnecessary allocations in "BigFraction" (package "o.a.c.m.fraction").
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1245">
        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).
      </action>
      <action dev="erans" type="update" issue="MATH-1243">
        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").
      </action>
      <action dev="erans" type="add" issue="MATH-1244">
        Method "cosAngle" in "o.a.c.m.util.MathArrays".
      </action>
      <action dev="tn" type="fix" issue="MATH-1240">
        "KolmogorovSmirnovTest#ksSum(...)" returned wrong result in case the provided
        t-parameters was zero. This affected the calculation of "approximateP(...)" for
        identical samples.
      </action>
      <action dev="tn" type="fix" issue="MATH-1242" due-to="Otmar Ertl">
        Improved performance to calculate the two-sample Kolmogorov-Smirnov test
        via monte carlo simulation ("KolmogorovSmirnovTets#monteCarloP(...)").
      </action>    
      <action dev="tn" type="fix" issue="MATH-1241" due-to="Aleksei Dievskii">
        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.
      </action>    
      <action dev="tn" type="fix" issue="MATH-1232" due-to="Otmar Ertl">
        Improved performance of calculating the two-sample Kolmogorov-Smirnov
        test statistic.
      </action>    
      <action dev="luc" type="fix" issue="MATH-1232">
        Fixed error message for unknown parameter name in ODE.
      </action>
      <action dev="luc" type="fix" issue="MATH-1226">
        Fixed wrong event detection in case of close events pairs.
      </action>
      <action dev="tn" type="fix">
        Fix potential branching errors in "FastMath#pow(double, double)" when
        passing special values, i.e. infinity, due to erroneous JIT optimization.
      </action>    
      <action dev="luc" type="fix" issue="MATH-1118" >
        Fixed equals/hashcode contract failure for Dfp.
      </action>
      <action dev="luc" type="fix" issue="MATH-1223" >
       Fixed wrong splitting of huge number in extended accuracy algorithms.
      </action>
      <action dev="tn" type="fix" issue="MATH-1153" due-to="Sergei Lebedev">
        Improve performance of "BetaDistribution#sample()" by using Cheng's algorithm.
      </action>
      <action dev="tn" type="fix" issue="MATH-1197">
        Computation of 2-sample Kolmogorov-Smirnov statistic in case of ties
        was not correct.
      </action>    
    </release>
    <release version="3.5" date="2015-04-17" 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.4.1 JAR file.
  
Most notable among the new features are:
 getQuadraticMean method added to DescriptiveStatistics SummaryStatistics
 which calculates the root mean square, and a way to build polyhedrons sets
 from list of vertices and the facets they belong too. There have been
 numerous bug fixes. 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).
">
      <action dev="luc" type="fix" issue="MATH-1195">
        Moved FastMathTestPerformance out of the main test tree, as is is
        a benchmark rather than a test.
      </action>    
      <action dev="luc" type="add">
        Added a way to build polyhedrons sets from a list of vertices and
        facets specified using vertices indices.
      </action>    
      <action dev="psteitz" type="update" issue="MATH-1213">
        Added Laguerre complex solve methods taking maxEval parameters.
      </action>
      <action dev="luc" type="fix" issue="MATH-1191">
        Fixed ignored method parameters in QRDecomposition protected methods.
      </action>    
      <action dev="luc" type="fix" issue="MATH-1211" due-to="Mike Zimmerman">
        Fixed wrong selection of line/polyhedron intersection point.
      </action>    
      <action dev="luc" type="fix" issue="MATH-1162">
        Improved fix for corner cases in BSP-tree merging, when cut sub-hyperplanes vanish.
      </action>    
      <action dev="tn" type="fix" issue="MATH-1209" due-to="Jonathan Ogilvie">
        Fixed link to algorithm description in "PoissonDistribution#sample()".
      </action>    
      <action dev="psteitz" type="fix" issue="MATH-1208">
        EmpiricalDistribution cumulativeProbability can return NaN when evaluated within a constant bin.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1203">
        EmpiricalDistribution getKernel fails for buckets with only multiple instances of the same value.
      </action>
      <action dev="evanward" type="fix" issue="MATH-1204">
        "UnivariateSolverUtils#bracket(...)" sometimes failed to bracket
        if a reached the lower bound.
      </action>
      <action dev="sebb" type="add" issue="MATH-1198">
        Simplified "FastMath#exp(double)" in order to avoid a potential
        Java 1.5 JIT bug when calling with negative infinity as argument.
      </action>
      <action dev="erans" type="add" issue="MATH-1199">
        Added method "getQuadraticMean()" to "DescriptiveStatistics"
        and "SummaryStatistics" which calculates the root mean square.
      </action>
    </release>

    <release version="3.4.1" date="2015-01-11" description="
This is a maintenance release: It fixes issue MATH-1188.
">
      <action dev="sebb" type="fix" issue="MATH-1188">
        Fixed non-Java1.5 code in BesselJ.
      </action>
    </release>

    <release version="3.4" date="2014-12-26" 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.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).
">
      <action dev="psteitz" type="add" issue="MATH-1066" due-to="Brian Wignall">
        Added Bessel functions of the first kind, based on NetLib implementation.
      </action>
      <action dev="tn" type="fix" issue="MATH-1142" due-to="Arne Schwarz">
        Improve performance of kalman gain calculation in "KalmanFilter" by
        directly solving a linear system rather than computing the matrix
        inverse.
      </action>
      <action dev="psteitz" type="fix" issue="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.
      </action>
      <action dev="erans" type="add" issue="MATH-1180">
        Method to create a sequence of integers (in "o.a.c.m.util.MathArrays").
      </action>
      <action dev="erans" type="add" issue="MATH-1172">
        New class "SimpleCurveFitter": Boiler-plate code to allow fitting of
        a user-defined parametric function.
      </action>
      <action dev="erans" type="add" issue="MATH-1173">
        New classes "TricubicInterpolatingFunction" and "TricubicInterpolator" to
        replace "TricubicSplineInterpolatingFunction" and "TricubicSplineInterpolator".
      </action>
      <action dev="erans" type="fix" issue="MATH-1178" due-to="Dmitriy">
        Fixed example in userguide ("stat" section).
      </action>
      <action dev="erans" type="fix" issue="MATH-1175" due-to="Karsten Loesing">
        Fixed inverse cumulative probability of 0 in "LaplaceDistribution".
      </action>
      <action dev="erans" type="add" issue="MATH-1166">
        New classes "BicubicInterpolatingFunction" and "BicubicInterpolator" to
        replace "BicubicSplineInterpolatingFunction" and "BicubicSplineInterpolator".
      </action>
      <action dev="luc" type="update" >
        Spurious vertices in the middle of otherwise straight edges are now
        filtered out when rebuilding polygons boundaries from BSP trees. 
      </action>
      <action dev="luc" type="fix" issue="MATH-1174" >
        Fixed a problem with too thin polygons considered to have infinite size.
      </action>
      <action dev="luc" type="add" >
        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. 
      </action>
      <action dev="luc" type="fix" issue="MATH-1162" >
        Fixed a problem with vanishing cut sub-hyperplanes during BSP tree merging.
      </action>
      <action dev="erans" type="fix" issue="MATH-1167" due-to="Neil Ireson">
        "o.a.c.m.stat.regression.OLSMultipleLinearRegression": Use threshold
        when performing "QRDecomposition".
      </action>
      <action dev="tn" type="fix" issue="MATH-1165" due-to="Pashutan Modaresi">
        "FuzzyKMeansClusterer" has thrown an exception in case one of the data
        points was equal to a cluster center.
      </action>
      <action dev="erans" type="add" issue="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.
      </action>
      <action dev="luc" type="fix" issue="MATH-1160" >
        Provide access to state derivatives in ContinuousOutputModel.
      </action>
      <action dev="luc" type="fix" issue="MATH-1138" due-to="Hank Grabowski">
        Fixed bicubic spline interpolator, using Akima splines.
      </action>
      <action dev="psteitz" type="add" issue="MATH-1154" >
        Changed classes in the inference package that instantiate distributions to
        pass null RandomGenerators to avoid initialization overhead for the default
        generator.
      </action>
      <action dev="luc" type="add" issue="MATH-1156" >
        Added all Java 8 StrictMath methods to FastMath, so FastMath remains compatible
        with newer Java versions.
      </action>
      <action dev="tn" type="add" issue="MATH-1139" due-to="Alexey Volkov">
        Added Gumbel, Laplace, Logistic and Nakagami distributions.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1147">
        Added statistics missing from toString method in SummaryStatistics.
      </action>
      <action dev="tn" type="fix" issue="MATH-1152" due-to="Andras Sereny">
        Improved performance of "EnumeratedDistribution#sample()" by caching
        the cumulative probabilities and using binary rather than a linear search.
      </action>
      <action dev="tn" type="fix" issue="MATH-1148" due-to="Guillaume Marceau">
        "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.
      </action>
      <action dev="erans" type="fix" issue="MATH-1151">
        Interface "ValueAndJacobianFunction" is a precondition for lazy
        evaluation (in "o.a.c.m.fitting.leastsquares").
      </action>
      <action dev="tn" type="fix" issue="MATH-1145" due-to="Anders Conbere">
        Fix potential integer overflows in "MannWhitneyUTest" when providing
        large sample arrays.
      </action>
      <action dev="tn" type="fix" issue="MATH-1149" due-to="M Kim">
        Fixed potential null pointer dereferencing in constructor of
        "DummyStepInterpolator(DummyStepInterpolator)".
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1136" due-to="Aleksei Dievskii">
        Fixed BinomialDistribution to deal with degenerate cases correctly.
      </action>
      <action dev="tn" type="fix" issue="MATH-1135" due-to="Guillaume Marceau">
        "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.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1131" due-to="Schalk W. Cronjé">
        Improve performance of "KolmogorovSmirnovTest#kolmogorovSmirnovTest(...)" for
        large samples. Also changed implementation for large n to use Pelz-Good
        approximation.
      </action>
      <action dev="erans" type="fix" issue="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.
      </action>
      <action dev="psteitz" type="fix" issue="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.
      </action>
      <action dev="luc" type="add" issue="MATH-1120" due-to="Venkatesha Murthy">
        Added several different estimation types and NaN handling strategies for Percentile.
      </action>
      <action dev="psteitz" type="add" issue="MATH-418" due-to="Venkatesha Murthy">
        Added implementation of PSquare algorithm to estimate percentiles without
        storing data in memory (i.e. as StorelessUnivariateStatistic).
      </action>
      <action dev="erans" type="fix" issue="MATH-1129">
        "Percentile": wrong sorting in the presence of NaN.
      </action>
      <action dev="erans" type="update" issue="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.
      </action> 
     <action dev="luc" type="fix" issue="MATH-1127">
        Fixed overflow in Precision.equals with ulps (both double and float versions).
      </action>
      <action dev="tn" type="fix" issue="MATH-1125" due-to="Ajo Fod">
        Performance improvements for Student's t-distribution.
      </action>
      <action dev="luc" type="fix" issue="MATH-1123" due-to="Aurélien Labrosse">
        Fixed NullPointerException when chopping-off a sub-hyperplane
        that is exactly at a region boundary.
      </action>
      <action dev="erans" type="fix" issue="MATH-1121" due-to="Ajo Fod">
        "BrentOptimizer": increment base class iteration counter.
      </action>
    </release>

    <release version="3.3" date="2014-05-05" 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.
  
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.
  
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).
  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. 
">
      <action dev="tn" type="add" issue="MATH-1110" due-to="Edward Segall">
        Added new constructor to "OLSMultipleLinearRegression" to be able
        to specify a custom singularity threshold for QR decomposition.
      </action>
      <action dev="erans" type="fix" issue="MATH-1092">
        Extracted class "LineSearch" from "PowellOptimizer", to be used in
        "NonLinearConjugateGradientOptimizer" (in place of the implementation
        that triggered this issue).
      </action>
      <action dev="luc" type="fix" issue="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.
      </action>
      <action dev="luc" type="fix" issue="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.
      </action>
      <action dev="luc" type="add" issue="MATH-1119">
        Added a fast single-step method for fixed-step Runge-Kutta integrators.
      </action>
      <action dev="erans" type="fix" issue="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.
      </action>
      <action dev="luc" type="add" >
        Added an order 6 fixed-step ODE integrator designed by H. A. Luther in 1968.
      </action>
      <action dev="luc" type="update" >
        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.
      </action>
      <action dev="luc" type="fix" issue="MATH-1107" due-to="Bruce A Johnson">
        Prevent penalties to grow multiplicatively in CMAES for out of bounds points.
      </action>
      <action dev="psteitz" type="update" issue="MATH-437">
        Added KolmogorovSmirnovTest class, deprecating KolmogorovSmirnovDistribution.
      </action>
      <action dev="luc" type="add" issue="MATH-1101">
        Improved documentation of QR decomposition handling of singular matrices.
      </action>
      <action dev="luc" type="add" issue="MATH-1053" due-to="Sean Owen">
        QR decomposition can compute pseudo-inverses for tall matrices.
      </action>
      <action dev="luc" type="add" issue="MATH-820">
        Field vectors now implement the visitor pattern just like real vectors.
      </action>
      <action dev="luc" type="fix" issue="MATH-875">
        Un-deprecated RealVector.sparseIterator, documenting explicitly that entries
        not iterated above are the zero ones.
      </action>
      <action dev="luc" type="fix" issue="MATH-821">
        Relaxed specification for function mapping on vectors, thus allowing straightforward
        implementation for sparse vectors.
      </action>
      <action dev="luc" type="update" issue="MATH-1099" due-to="Evan Ward">
        Make QR the default in GaussNewtonOptimizer.
      </action>
      <action dev="luc" type="update" issue="MATH-1099" due-to="Evan Ward">
        Add Cholesky option to GaussNewtonOptimizer.
      </action>
      <action dev="luc" type="update" issue="MATH-1099" due-to="Evan Ward">
        Make QR in GaussNewton faster and more accurate.
      </action>
      <action dev="luc" type="update" issue="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.
      </action>
      <action dev="tn" type="add" issue="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.
      </action>
      <action dev="tn" type="fix" issue="MATH-1065" due-to="matteodg">
        Calculating the inverse cumulative probability of an "EnumeratedRealDistribution"
        will now return the correct result according to the selected enumerated probability
        mass function.
      </action>
      <action dev="erans" type="update" issue="MATH-1050">
        Deprecated "ArithmeticUtils#pow(int, long)" and "ArithmeticUtils#pow(long, long)"
        in favor of corresponding methods "ArithmeticUtils#pow(..., int)".
      </action>
      <action dev="erans" type="fix" issue="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.
      </action>
      <action dev="erans" type="fix" issue="MATH-990">
        Improved performance of "MathArrays#sortInPlace(...)".
      </action>
      <action dev="tn" type="fix" issue="MATH-1044" due-to="Sean Owen">
        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.
      </action>
      <action dev="luc" type="add" issue="MATH-1095">
        Added Emo Welzl algorithm to find the smallest enclosing ball of a collection of points.
      </action>
      <action dev="erans" type="fix" issue="MATH-985" due-to="Johnathan Kool">
        Fixed an indexing problem in "BicubicSplineInterpolatingFunction" which
        resulted in wrong interpolations.
      </action>
      <action dev="tn" type="add" issue="MATH-1072">
        Added a constructor to "AbstractListChromosome" that does not copy the
        input argument.
      </action>
      <action dev="luc" type="add" issue="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.
      </action>
      <action dev="luc" type="add">
        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 ...).
      </action>
      <action dev="luc" type="add" issue="MATH-1090">
        IntervalsSet now implements Iterable&lt;double[]&gt;, so one can iterate
        over the sub-intervals without building a full list containing
        a copy of everything beforehand.
      </action>
      <action dev="tn" type="fix" issue="MATH-1089">
        "Precision#round(double, ...)" will now return negative zero for negative
        values rounded to zero, similar to the float variant.
      </action>
      <action dev="erans" type="fix" issue="MATH-1088">
        The iterator returned by "MultiDimensionalCounter#iterator()" will now
        correctly throw a "NoSuchElementException" when calling "next()" and the
        iterator is already exhausted.
      </action>
      <action dev="luc" type="fix" >
        Fixed an issue with noisy functions for ODE events detection.
      </action>
      <action dev="erans" type="add" issue="MATH-923">
        Utilities for creating artificial neural networks (package "o.a.c.m.ml.neuralnet").
        Implementation of Kohonen's Self-Organizing Feature Map (SOFM).
      </action>
      <action dev="tn" type="fix" issue="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.
      </action>
      <action dev="tn" type="fix" issue="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.
      </action>
      <action dev="tn" type="update" issue="MATH-1080">
        The "LinearConstraintSet" will now return the enclosed collection of "LinearConstraint"
        objects in the same order as they have been added.
      </action>
      <action dev="tn" type="fix" issue="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).
      </action>
      <action dev="tn" type="fix" issue="MATH-1070" due-to="Oleksandr Muliarevych">
        Fix "Precision#round(float, int, int)" when using rounding mode "BigDecimal.ROUND_UP"
        and the discarded fraction is zero.
      </action>
      <action dev="tn" type="fix" issue="MATH-1059">
        Use "FastMath" instead of "Math" within Commons Math.
      </action>
      <action dev="tn" type="fix" issue="MATH-1068" due-to="Gal Lalouche">
        Avoid overflow when calculating Kendall's correlation for large arrays.
      </action>
      <action dev="erans" type="fix" issue="MATH-1067" due-to="Florian Erhard">
        Avoid infinite recursion in "Beta.regularizedBeta" (package "o.a.c.m.special");
      </action>
      <action dev="erans" type="add" issue="MATH-1014">
        Refactoring of curve fitters (package "o.a.c.m.fitting").
      </action>
      <action dev="tn" type="add" issue="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).
      </action>
      <action dev="tn" type="update" issue="MATH-1031" due-to="Thorsten Schäfer">
        Added new class "ClusterEvaluator" to evaluate the result of a clustering algorithm
        and refactored existing evaluation code in "MultiKMeansPlusPlusClusterer"
        into separate class "SumOfClusterVariances".
      </action>
      <action dev="psteitz" type="add" issue="MATH-1061">
        Added InsufficientDataException.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1056" due-to="Sean Owen">
        Fixed unintended integer division error in PoissonDistribution sampling method.
      </action>
      <action dev="tn" type="fix" issue="MATH-1057">
        Fixed failing unit tests for "BOBYQAOptimizer" when executed with a Oracle/Sun JVM 1.5.
      </action>
      <action dev="tn" type="fix" issue="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.
      </action>
      <action dev="erans" type="fix" issue="MATH-1058" due-to="Sean Owen">
        Precision improvements (for small values of the argument) in "Beta" function
        and in "LogNormalDistribution" and "WeibullDistribution".
      </action>
      <action dev="tn" type="fix" issue="MATH-1055" due-to="Sean Owen">
        Fixed some invalid links inside javadoc and added missing deprecated annotations.
      </action>
      <action dev="tn" type="add" issue="MATH-983">
        Added a graphical overview of available continuous distributions to the userguide.
      </action>
      <action dev="tn" type="add" issue="MATH-1051" due-to="Matt Adereth,devl">
        Added Kendall's tau correlation (KendallsCorrelation).
      </action>
      <action dev="tn" type="fix" issue="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.
      </action>
      <action dev="erans" type="fix" issue="MATH-1047">
        Check for overflow in methods "pow" (class "o.a.c.m.util.ArithmeticUtils").
      </action>
      <action dev="erans" type="fix" issue="MATH-1045" due-to="Sean Owen">
        "EigenDecomposition": Using tolerance for detecting whether a matrix is singular.
      </action>
      <action dev="luc" type="add" issue="MATH-1036" due-to="Ajo Fod">
        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.
      </action>
      <action dev="psteitz" type="update" issue="MATH-1039" due-to="Aleksei Dievskii">
        Added logDensity methods to AbstractReal/IntegerDistribution with naive default
        implementations and improved implementations for some current distributions.
      </action>
      <action dev="psteitz" type="add" issue="MATH-1038" due-to="Thorsten Schäfer">
        Added ConfidenceInterval class and BinomialConfidenceInterval providing several
        estimators for confidence intervals for binomial probabilities.
      </action>
      <action dev="tn" type="fix" issue="MATH-1035" due-to="derphead">
        Simplified and improved performance of "ArithmeticUtils#addAndCheck(long, long)".
      </action>
      <action dev="tn" type="add" issue="MATH-1004" due-to="Ajo Fod">
        Added new methods to compute the inverse of a matrix to "DiagonalMatrix"
        and "MatrixUtils".
      </action>
      <action dev="tn" type="fix" issue="MATH-1029">
        The "BigFraction" constructor will throw a "FractionConversionException"
        also in case negative values are provided which exceed the allowed range
        (+/- Integer.MAX_VALUE).
      </action>
      <action dev="erans" type="add" issue="MATH-1041" due-to="Sean Owen">
        "Pair": added factory method and "toString" method.
      </action>
      <action dev="sebb" type="add" issue="MATH-1002">
        "AbstractUnivariateStatistic.test(...)" methods have uses outside subclasses;
        implementation moved to MathArrays.verifyValues(...).
      </action>
      <action dev="tn" type="fix" issue="MATH-1033" due-to="Yuan Qu">
        The "KalmanFilter" wrongly enforced a column dimension of 1 for
        the provided control and measurement noise matrix.
      </action>
      <action dev="tn" type="fix" issue="MATH-1037" due-to="Aleksei Dievskii">
        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.
      </action>
      <action dev="psteitz" type="add" issue="MATH-1034" due-to="Thorsten Schäfer">
        Added exact binomial test implementation.
      </action>
      <action dev="tn" type="add" issue="MATH-1018" due-to="Ajo Fod">
        Added overloaded constructors for subclasses of "RealDistribution" implementations
        which do not require an explicit "inverseCumulativeAccuracy". The default accuracy will
        be used instead.
      </action>
      <action dev="tn" type="add" issue="MATH-1001" due-to="sebb">
        Added overloaded methods for "Frequency#incrementValue(Comparable, long)" with
        int, long and char primitive arguments.
      </action>
      <action dev="tn" type="add" issue="MATH-1030" due-to="Thorsten Schäfer">
        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.
      </action>
      <action dev="tn" type="fix" issue="MATH-996" due-to="Tim Allison">
        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.
      </action>
      <action dev="tn" type="add" issue="MATH-1028" due-to="Thorsten Schäfer">
        Added new distance metric "EarthMoversDistance".
      </action>
      <action dev="tn" type="fix" issue="MATH-999" due-to="Ajo Fod">
        Improve performance of "DiagonalMatrix#preMultiply(RealVector)".
      </action>
      <action dev="psteitz" type="add" issue="MATH-1025">
        Added CombinatoricsUtils to the util package, moving binomial
        coefficients, factorials and Stirling numbers there and adding
        a combinations iterator.
      </action>
      <action dev="erans" type="add" issue="MATH-991">
        "PolynomialSplineFunction": added method "isValidPoint" that
        checks whether a point is within the interpolation range.
      </action>
      <action dev="erans" type="add" issue="MATH-989">
        "BicubicSplineInterpolatingFunction": added method "isValidPoint" that
        checks whether a point is within the interpolation range.
      </action>
      <action dev="erans" type="fix" issue="MATH-1021" due-to="Brian Bloniarz">
        Fixed overflow in "HypergeometricDistribution".
      </action>
      <action dev="erans" type="fix" issue="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.
      </action>
      <action dev="erans" type="fix" issue="MATH-1019">
        Buggy (private) method "shuffle" in "o.a.c.m.random.RandomDataGenerator"
        superseded by "MathArrays.shuffle" (cf. MATH-1010).
      </action>
      <action dev="erans" type="add" issue="MATH-1010">
        Utility to shuffle an array.
      </action>
      <action dev="erans" type="fix" issue="MATH-1012">
        Created "RandomGeneratorFactory" (package "o.a.c.m.random") to reduce
        code duplication in "RandomDataGenerator".
      </action>
      <action dev="erans" type="add" issue="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.
      </action>
      <action dev="erans" type="update" issue="MATH-1011">
        Improved implementation of "sample" method of "UniformIntegerDistribution".
      </action>
      <action dev="sebb" type="add" issue="MATH-1007">
        Add mode function to StatUtils class.
      </action>
      <action dev="psteitz" type="update" issue="MATH-1006">
        Enabled LaTeX expressions in javadoc and site docs via MathJax.
      </action>
      <action dev="sebb" type="add" issue="MATH-1000">
        Add mode function to Frequency class.
      </action>
      <action dev="erans" type="fix" issue="MATH-1005" due-to="Roman Werpachowski">
        Fixed "MathArrays.linearCombination" when array length is 1.
      </action>
      <action dev="erans" type="add" issue="MATH-997">
        Implemented Gauss-Hermite quadrature scheme (in package
        "o.a.c.m.analysis.integration.gauss").
      </action>
      <action dev="erans" type="update" issue="MATH-995">
        Documented limitation of "IterativeLegendreGaussIntegrator" (added 
        warning about potential wrong usage).
      </action>
      <action dev="erans" type="fix" issue="MATH-993">
        In "GaussNewtonOptimizer", check for convergence before updating the
        parameters estimation for the next iteration.
      </action>
      <action dev="luc" type="add" issue="MATH-967" due-to="Oleksandr Kornieiev">
        Added midpoint integration method.
      </action>
      <action dev="luc" type="fix" issue="MATH-988" due-to="Andreas Huber">
        Fixed NullPointerException in 2D and 3D sub-line intersections.
      </action>
      <action dev="psteitz" type="update" issue="MATH-987" due-to="Ajo Fod">
        Added append method to SimpleRegression, making this class map/reducible.
      </action>
      <action dev="psteitz" type="update" issue="MATH-978" due-to="Ajo Fod">
        Added append method to StorelessCovariance, making this class map/reducible.
      </action>
      <action dev="tn" type="add" issue="MATH-851" due-to="Clemens Novak">
        Added method "MathArrays#convolve(double[], double[])" to compute the
        discrete, linear convolution of two sequences.
      </action>
      <action dev="tn" type="add" issue="MATH-977">
        Added low-discrepancy random generator "HaltonSequenceGenerator".
      </action>
      <action dev="tn" type="add" issue="MATH-826" due-to="Sam Halliday">
        Added low-discrepancy random generator "SobolSequenceGenerator".
      </action>
      <action dev="tn" type="add" issue="MATH-973" due-to="Mauro Tortonesi">
        Added "GeometricDistribution" to "o.a.c.m.distribution" package.
      </action>
      <action dev="tn" type="add" issue="MATH-968" due-to="Alex Gryzlov">
        Added "ParetoDistribution" to "o.a.c.m.distribution" package.
      </action>
      <action dev="tn" type="fix" issue="MATH-962">
        Added clarification to the javadoc of "VectorFormat" and derived classes
        in case "," is used as a separator.
      </action>
      <action dev="tn" type="add" issue="MATH-898">
        Added "FuzzyKMeansClusterer" to "o.a.c.m.ml.clustering" package.
      </action>
      <action dev="luc" type="fix" issue="MATH-965" >
        Fixed inconsistent dimensions preventing use of secondary states
        in ODE events.
      </action>
    </release>
    <release version="3.2" date="2013-04-06" 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.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).
">
      <action dev="luc" type="fix" issue="MATH-961" >
        Fixed wrong array dimensions in secondary equations handling in some cases.
      </action>
      <action dev="luc" type="fix" issue="MATH-960" >
        Fixed missing side effects of secondary equations on main state in
        Ordinary Differential Equations integration.
      </action>
      <action dev="luc" type="fix" issue="MATH-957" due-to="Evan Ward">
        Fixed inverse cumulative probability for uniform distribution.
      </action>
      <action dev="tn" type="add" issue="MATH-917,MATH-918,MATH-919,MATH-920" due-to="Reid Hochstedler">
        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".
      </action>
      <action dev="tn" type="fix" issue="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.
      </action>
      <action dev="erans" type="update" issue="MATH-956">
        Replaced hard-coded numbers in "LevenbergMarquardtOptimizer".
      </action>
      <action dev="luc" type="update" issue="MATH-955" due-to="Evan Ward">
        Fixed loading of test file when path contains a space.
      </action>
      <action dev="luc" type="update" issue="MATH-954" due-to="Charles Cooper">
        Improved speed of FastMath.abs methods for all signatures, by removing branching.
      </action>
      <action dev="luc" type="update" issue="MATH-953" due-to="Charles Cooper">
        Improved speed of several FastMath methods.
      </action>
      <action dev="luc" type="fix" issue="MATH-934">
        Fixed Complex.reciprocal() for zero argument.
      </action>
      <action dev="luc" type="update" issue="MATH-951" due-to="Charles Cooper">
        Improved speed of FastMath copysign methods.
      </action>
      <action dev="erans" type="add" issue="MATH-817" due-to="Jared Becksfort">
        Added Multivariate Normal Mixture Model Fitting by Expectation Maximization.
      </action>
      <action dev="tn" type="fix" issue="MATH-862">
        AbstractRealMatrix will now check for rectangular input arrays in
        its copySubMatrix methods.
      </action>
      <action dev="erans" type="fix" issue="MATH-949">
        Increment iteration counter in optimization algorithms.
      </action>
      <action dev="luc" type="add" issue="MATH-811" >
        Added a way to trigger only increasing or decreasing events in ODE integration.
      </action>
      <action dev="luc" type="fix" issue="MATH-950" >
        Fixed missing update in ODE event handlers, when a RESET_STATE is triggered.
      </action>
      <action dev="psteitz" type="update" issue="MATH-671">
        Made EmpiricalDisribution smoothing kernel pluggable.
      </action>
      <action dev="psteitz" type="add" issue="MATH-946" due-to="Jared Becksfort">
        Added array-scaling methods to MathArrays.
      </action>
      <action dev="luc" type="update" issue="MATH-877" due-to="Peter Andrews">
        Allow direct use of SummaryStatistics in one-way ANOVA.
      </action>
      <action dev="luc" type="fix" issue="MATH-947" >
        Fixed infinite loop when NaN occurs in singular value decomposition.
      </action>
      <action dev="luc" type="add" issue="MATH-460" due-to="Andrew Waterman">
        Added the Lévy distribution.
      </action>
      <action dev="luc" type="update"  >
        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.
      </action>
      <action dev="luc" type="add" issue="MATH-948" >
        Implementations for inverse error function and inverse complementary
        error functions have been added.
      </action>
      <action dev="luc" type="fix" issue="MATH-580" >
        Extended ranges for FastMath performance tests.
      </action>
      <action dev="luc" type="fix" issue="MATH-925" >
        Finalized implementation of diagonal matrix.
      </action>
      <action dev="luc" type="fix" issue="MATH-630" due-to="Christopher Nix" >
        Added rank revealing QR decomposition.
      </action>
      <action dev="luc" type="fix" issue="MATH-570" due-to="Arne Plöse" >
        ArrayFieldVector can now be constructed from any FieldVector.
      </action>
      <action dev="luc" type="fix" issue="MATH-861" due-to="Sébastien Brisard" >
        Improved checking of null vector elements.
      </action>
      <action dev="luc" type="add" issue="MATH-845" due-to="Sébastien Riou" >
        Added utilities for prime numbers.
      </action>
      <action dev="luc" type="fix" issue="MATH-936" >
        Fixed generation of long random numbers between two bounds.
      </action>
      <action dev="luc" type="fix" issue="MATH-942" due-to="Piotr Wydrych" >
        Fixed creation of generic array.
      </action>
      <action dev="luc" type="add" issue="MATH-914" >
        Check bounds in multi-start vector optimizers.
      </action>
      <action dev="luc" type="add" issue="MATH-941" due-to="Piotr Wydrych" >
        Added discrete distributions.
      </action>
      <action dev="luc" type="fix" issue="MATH-940" due-to="Piotr Wydrych" >
        Fixed abstract test class naming that broke ant builds.
      </action>
      <action dev="luc" type="fix" issue="MATH-939" due-to="Piotr Wydrych" >
        Allow covariance to be computed for one-dimensional variables.
      </action>
      <action dev="luc" type="fix" issue="MATH-938" >
        Fixed accuracy of 3D Line.revert().
      </action>
      <action dev="luc" type="fix" issue="MATH-937" >
        Improved javadoc to explain how switching functions should
        behave across events in ODE events detection.
      </action>
      <action dev="luc" type="add" >
        Added Hermite interpolator for RealFieldElement instances.
      </action>
      <action dev="luc" type="add" >
        Added RealFieldElement interface to represent anything that is
        real number like, implemented by both Decimal64, Dfp and DerivativeStructure.  
      </action>
      <action dev="luc" type="add" >
        Added partial derivatives computation for 3D vectors and rotations.  
      </action>
      <action dev="luc" type="fix" issue="MATH-935" >
        Fixed DerivativeStructure.atan2 for special cases when both arguments are +/-0.
      </action>
      <action dev="luc" type="add" >
        Added accurate linear combination of DerivativeStructure instances,
        avoiding cancellation.  
      </action>
      <action dev="erans" type="update" issue="MATH-933">
        Throw "MathUnsupportedOperationException" from optimizers that do
        not support constraints (previous behaviour was to silently ignore
        the "SimpleBounds" argument).
      </action>
      <action dev="luc" type="add" >
        Added conversion of gradients and Hessians from spherical to Cartesian
        coordinates in 3D.
      </action>
      <action dev="erans" type="update" issue="MATH-931" due-to="Sean Owen">
        Greater efficiency in "UnitSphereRandomVectorGenerator".
      </action>
      <action dev="tn" type="fix" issue="MATH-930">
        Improved class javadoc wrt convergence criteria and added 
        additional constructors to override the default epsilon and cut-off
        values in class "SimplexSolver".
      </action>
      <action dev="erans" type="fix" issue="MATH-929" due-to="Piotr Wydrych">
        Fixed truncated value in "MultivariateNormalDistribution".
      </action>
      <action dev="erans" type="fix" issue="MATH-927" due-to="Dennis Hendriks">
        Made "BitStreamGenerator" implement the "Serializable" interface.
      </action>
    </release>

    <release version="3.1.1" date="2013-01-14" description="
This is a point release: It fixes a bug that renders version 3.1 unusable
  in some situations (see details below).
">
      <action dev="erans" type="fix" issue="MATH-924">
        Added a (minimal) "DiagonalMatrix" implementation, such that the
        case of a large number of uncorrelated observations is handled
        efficiently.
      </action>
    </release>

    <release version="3.1" date="2012-12-23" 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.0 JAR file.
  
  Most notable among the new features are: Framework for automatic
  differentiation, multivariate mixture model distribution, quaternions,
  Gauss integration framework, Hermite polynomial interpolation,
  eigenvalue decomposition of non-symmetric matrices, DBSCAN clustering.
  Most notable among the changes are: Greatly improved precision in
  the implementation of the Gamma and Beta special functions, optimizers
  API, deprecation of the sparse vector implementation.
  
  The minimal 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).
">
      <action dev="erans" type="add" issue="MATH-874">
        All contents of package "o.a.c.m.optimization" refactored into
        new packages "o.a.c.m.optimization" and "o.a.c.m.fitting".
      </action>
      <action dev="psteitz" type="update" issue="MATH-672">
        Added methods to EmpiricalDistribution to implement the RealDistribution
        interface.
      </action>
      <action dev="tn" type="add" issue="MATH-897" due-to="Reid Hochstedler">
        DBSCAN clustering algorithm (in package "o.a.c.m.stat.clustering").
      </action>
      <action dev="erans" type="add" issue="MATH-910">
        Added element-by-element addition, subtraction, multiplication and division
        (in class "o.a.c.m.util.MathArrays").
      </action>
      <action dev="erans" type="fix" issue="MATH-904" due-to="Jeff Hain">
        Fixed "pow" method in class "FastMath".
      </action>
      <action dev="erans" type="update" issue="MATH-902" due-to="Bruce A. Johnson">
        Created a "maximum number of iterations" stopping criterion in the
        convergence checkers (package "o.a.c.m.optimization") that allows the
        optimizers to return the "current best point" even if the convergence
        criteria are not met.
      </action>
      <action dev="erans" type="fix" issue="MATH-905" due-to="Jeff Hain">
        Fixed overflow in "sinh" and "cosh" methods in class "FastMath".
      </action>
      <action dev="celestin" type="update" issue="MATH-849">
        Accuracy improvements of Gamma.logGamma, and implementation of
        Gamma.gamma. Both new implementations are based on the NSWC
        Library of Mathematical Functions.
      </action>
      <action dev="erans" type="add" issue="MATH-902">
        New constructor in the custom checker classes (package
        "o.a.c.m.optimization") for passing the number of iterations
        after which the "convergence test" will return true.
        This allows an algorithm to return the best solution found (after
        the user-defined number of iterations) even if it does not meet the
        other convergence criteria.
      </action>
      <action dev="tn" type="update" issue="MATH-906" due-to="Patrick Meyer">
        Use "NaNStrategy#FAILED" as default strategy in "NaturalRanking".
      </action>
      <action dev="erans" type="add" issue="MATH-899">
        Added a new "SynchronizedRandomGenerator" that wraps another
        "RandomGenerator" with all methods being synchronized, thus
        rendering the code thread-safe (at some efficiency cost).
      </action>
      <action dev="tn" type="add" issue="MATH-893" due-to="Patrick Meyer">
        Add new "NaNStrategy": FAILED, used in "RankingAlgorithm" implementations.
        Any encountered input value that succeeds a "Double#isNaN" check, results in a
        "NotANumberException".
      </action>
      <action dev="tn" type="add" issue="MATH-892">
        Add new constructor to "SpearmansCorrelation" class which allows to specify the
        "RankingAlgorithm" to be used.
      </action>
      <action dev="luc" type="fix" issue="MATH-890">
        Fixed naming inconsistencies between Interval and IntervalsSet classes.
      </action>
      <action dev="luc" type="add" issue="MATH-889">
        Added a method to check points in the Interval class, with a tolerance for boundary.
      </action>
      <action dev="psteitz" type="add" issue="MATH-878" due-to="Radoslav Tsvetkov">
        Added G-test statistics.
      </action>
      <action dev="erans" type="add" issue="MATH-883">
        New "getSquareRoot" method in class "EigenDecomposition" (package
        "o.a.c.m.linear").
      </action>
      <action dev="erans" type="update" issue="MATH-884">
        Added "isSymmetric" and "checkSymmetric" in "MatrixUtils" (package
        "o.a.c.m.linear").
      </action>
      <action dev="psteitz" type="update" issue="MATH-885">
        Moved private array argument validation methods from ChiSquareTest to MathArrays.
      </action>
      <action dev="erans" type="add" issue="MATH-816" due-to="Jared Becksfort">
        New class for generic multivariate mixture model distributions.
      </action>
      <action dev="tn" type="fix" issue="MATH-759" due-to="sebb">
        Use getter/setter methods of super class for access to field "windowSize" in
        "ListUnivariateImpl".
      </action>
      <action dev="luc" type="fix" issue="MATH-880">
        Improved construction of polygons with an additional constructor, more robust numerically.
      </action>
      <action dev="tn" type="add" issue="MATH-474" due-to="Dan Checkoway">
        Added new methods "merge(Frequency)", "merge(Collection&lt;Frequency&gt;)",
        "incrementValue(Comparable&lt;?&gt;, long)" and "entrySetIterator()" to the "Frequency" class.
      </action>
      <action dev="tn" type="fix" issue="MATH-778" due-to="Sébastien Brisard">
        Allow unlimited input values for "Dfp#multiply(int)".
      </action>
      <action dev="luc" type="fix" issue="MATH-641" due-to="Curtis Jensen">
        Added distance to point to 2D Line and Segment.
      </action>
      <action dev="erans" type="fix" issue="MATH-783">
        "PowellOptimizer" (package "o.a.c.m.optimization.direct") uses
        "BrentOptimizer" as its internal line search optimizer. The fix
        forces the convergence criterion of "BrentOptimizer" to use
        function values (instead of domain values).
      </action>
      <action dev="erans" type="fix" issue="MATH-865,MATH-867,MATH-868" due-to="Nikolaus Hansen, Frank Hess">
        Numerical accuracy problems arose in "CMAESOptimizer" (in package
        "o.a.c.m.optimization.direct") when large finite boundaries were
        specified, because the interval of allowed values was mapped to
        [0, 1]. This mapping was not necessary and its removal allows
        finite and infinite boundaries to be used together.
      </action>
      <action dev="luc" type="fix" >
        Fixed some issues in nth root derivatives at 0.
      </action>
      <action dev="tn" type="fix" issue="MATH-848">
        Fixed transformation to a Schur matrix for certain input matrices.
      </action>
      <action dev="erans" type="add" issue="MATH-860">
        Added matrix "block inversion" (in "o.a.c.m.linear.MatrixUtils").
      </action>
      <action dev="erans" type="fix" issue="MATH-864" due-to="Frank Hess">
        "CMAESOptimizer": Solution was not constrained to lie within the
        provided boundaries.
      </action>
      <action dev="erans" type="add" issue="MATH-863" due-to="Julien Anxionnat">
        New "Quaternion" class (package "o.a.c.m.complex").
      </action>
      <action dev="erans" type="add" issue="MATH-866" due-to="Yannick Tanguy">
        Added method to test for floating-point numbers equality with a
        relative tolerance (class "o.a.c.m.util.Precision").
      </action>
      <action dev="tn" type="fix" issue="MATH-666">
        Deprecated "FieldVector#getData()" in favor of "toArray()".
      </action>
      <action dev="luc" type="fix" issue="MATH-789">
        Fixed an error in rectangular Cholesky decomposition.
      </action>
      <action dev="psteitz" type="update" issue="MATH-859">
        Clarified definition of isSupportXxxBoundInclusive in RealDistribution
        interface, made code consistent with the definition, and deprecated
        these methods, marking for removal in 4.0.
      </action>
      <action dev="erans" type="update" issue="MATH-841" due-to="Sebastien Riou">
        Performance improvement in computation of the greatest common divisor
        (in class "o.a.c.m.util.ArithmeticUtils").
      </action>
      <action dev="erans" type="fix" issue="MATH-855">
        Added a check so that the returned point will always be the best one.
      </action>
      <action dev="luc" type="add" >
        Added a NewtonRaphsonSolver that uses the new differentiation package
        to define the function to solve. This class is intended to replace the
        former NewtonSolver which is deprecated.
      </action>
      <action dev="psteitz" type="update" issue="MATH-850">
        Added RandomDataGenerator to replace RandomDataImpl and deprecated
        RandomData interface and RandomDataImpl class. Deprecated
        nextInversionDeviate methods from RandomDataImpl class. Ensured that
        all nextXxx methods in RandomDataImpl/RandomDataGenerator use the
        configured RandomGenerator.
      </action>
      <action dev="erans" type="fix" issue="MATH-844">
        Generate an exception for rare ill-conditioned cases in "HarmonicFitter"
        guessing procedure (package "o.a.c.m.optimization.fitting").
      </action>
      <action dev="erans" type="add" issue="MATH-815" due-to="Jared Becksfort">
        New interface for multivariate distributions.
        Added multivariate normal distribution.
      </action>
      <action dev="luc" type="add" >
        Added a utility method to compute Stirling numbers of the second kind.
      </action>
      <action dev="luc" type="add" >
        Added a new package dealing with differentials, for one or more free
        parameters and derivation order 1 or higher.
      </action>
      <action dev="tn" type="add" issue="MATH-777" due-to="Reid Hochstedler">
        Added additional crossover policies: "CycleCrossover", "NPointCrossover",
        "OrderedCrossover" and "UniformCrossover".
      </action>
      <action dev="tn" type="fix" issue="MATH-828">
        Improved numerical stability of "SimplexSolver" by introducing Bland's rule
        to prevent cycling and a cutoff threshold to zero out very small values.
      </action>
      <action dev="tn" type="fix" issue="MATH-836" due-to="Baste Nesse Buanes">
        Fixed overflow detection for negative values in constructor of class "Fraction".
      </action>
      <action dev="erans" type="fix" issue="MATH-835" due-to="Baste Nesse Buanes">
        Fixed overflow in method "percentageValue" in class "Fraction".
      </action>
      <action dev="erans" type="fix" issue="MATH-622">
        Raised (to 10) the default number of fractional digits to print out.
      </action>
      <action dev="erans" type="fix" issue="MATH-762">
        Removed duplicate code.
      </action>
      <action dev="tn" type="add" issue="MATH-831">
        Added a new "RealMatrixFormat" class for input/output of RealMatrix instances.
        Default formatter instances for commons-math and octave have been added to
        "MatrixUtils".
      </action>
      <action dev="erans" type="add" issue="MATH-827">
        New "IterativeLegendreGaussIntegrator" that performs the same automatic
        subdivision of the integration interval as "LegendreGaussIntegrator",
        but uses the classes from package "o.a.c.m.analysis.integration.gauss"
        to perform the Gauss integration on the sub-interval.
        Deprecated "LegendreGaussIntegrator".
      </action>
      <action dev="tn" type="fix" issue="MATH-578">
        Improve performance of quantile evaluation in "Percentile" class for cases
        with lots of equal values.
      </action>
      <action dev="erans" type="add" issue="MATH-797">
        New framework for Gauss integration schemes (in package
        "o.a.c.m.analysis.integration.gauss").
        Gauss-Legendre quadrature rules (of unlimited order) implemented in
        double precision, and high precision (using "BigDecimal").
      </action>
      <action dev="erans" type="add" issue="MATH-764,MATH-823">
        For all distribution classes (in package "o.a.c.m.distribution"), a new
        constructor takes a "RandomGenerator" parameter.
        The "RandomDataImpl" instance has been superseded by this RNG.
        All "sample()" methods have been modified to use this RNG instead of
        delegating to the methods in "RandomData".
      </action>
      <action dev="tn" type="add" issue="MATH-235">
        Added support for real asymmetric matrices to "EigenDecomposition".
      </action>
      <action dev="erans" type="add" issue="MATH-768">
        Re-instated methods to find all complex roots of a polynomial (class
        "LaguerreSolver" in package "o.a.c.m.analysis.solvers").
      </action>
      <action dev="erans" type="add" issue="MATH-810">
        Added accessors to the "Pair" class (package "o.a.c.m.util").
      </action>
      <action dev="tn" type="add" issue="MATH-822" due-to="Jared Becksfort">
        Added new constructors in "EigenDecomposition" and deprecated two constructors
        with unused parameters.
      </action>
      <action dev="erans" type="fix" issue="MATH-798">
        Added overridden method in "PolynomialFitter" (package
        "o.a.c.m.optimization.fitting") to limit the number of evaluations.
      </action>
      <action dev="celestin" type="add" issue="MATH-807">
        Added a new constructor to o.a.c.m.utils.IterationManager, allowing
        for the specification of a callback function in case the maximum
        number of iteration is reached.
      </action>
      <action dev="luc" type="add">
        A new HermiteInterpolator class allows interpolation of vector-valued
        functions using both values and derivatives of the function at sample
        points.
      </action>
      <action dev="erans" type="fix" issue="MATH-804">
        Parameterized "CurveFitter" class (package "o.a.c.m.optimization.fitting")
        with the type of the fitting function. Updated subclasses "PolynomialFitter",
        "HarmonicFitter", "GaussianFitter".
      </action>
      <action dev="luc" type="fix" issue="MATH-801">
        Fixed a problem when building rotations from two pairs of vectors. In very rare cases,
        due to numerical inaccuracies the computed quaternion was not normalized (some examples
        went as high as 1.0e8) and even after normalization, the quaternion was plain wrong.
      </action>
      <action dev="celestin" type="remove" issue="MATH-796">
        Removed unused fields LocalizedFormats.ALPHA and LocalizedFormats.BETA. This is
        an acceptable compatibility break, as these fields are only meant for internal use.
      </action>
      <action dev="tn" type="fix" issue="MATH-644" due-to="marzieh">
        Fix computation of upperCumulativeProbability in "HypergeometricDistribution" and
        cleanup of duplicate probability mass function.
      </action>
      <action dev="celestin" type="fix" issue="MATH-791">
        In GammaDistribution, deprecated getAlpha() and getBeta(). Replaced with
        getShape() and getScale(), respectively.
      </action>
      <action dev="luc" type="fix" issue="MATH-793"  due-to="Sebb">
        Use inline computation for OrderedTuple hash code.
      </action>
      <action dev="tn" type="fix" issue="MATH-718" >
        Use modified Lentz-Thompson algorithm for continued fraction evaluation to avoid
        underflows.
      </action>
      <action dev="luc" type="fix" issue="MATH-780" >
        Fixed a wrong assumption on BSP tree attributes when boundary collapses to a too
        small polygon at a non-leaf node.
      </action>
      <action dev="luc" type="fix" issue="MATH-787" >
        Put serialization back for PointValuePair and PointVectorValuePair.
      </action>
      <action dev="tn" type="fix" issue="MATH-627" due-to="Arne Plöse">
        Avoid superfluous null check when using iterators in RealVector and ArrayRealVector.
      </action>
      <action dev="tn" type="fix" issue="MATH-781" due-to="Scheiber Ernő">
        Use epsilon instead of ulp in floating-point comparison when dropping columns after
        phase 1 in SimplexSolver.
      </action>
      <action dev="luc" type="fix" issue="MATH-721">
        Added a workaround for an OpenJDK issue on sparc solaris with too small constants.
      </action>
      <action dev="tn" type="fix" issue="MATH-779" due-to="Reid Hochstedler">
        Fixed ListPopulation#iterator to return an unmodifiable iterator.
      </action>
      <action dev="tn" type="fix" issue="MATH-775" due-to="Reid Hochstedler">
        Cleanup of ListPopulation to consistently enforce the population limit.
      </action>
      <action dev="tn" type="fix" issue="MATH-776" due-to="Reid Hochstedler">
        Use same range check in constructor for ElitisticListPopulation as in corresponding setter.
      </action>
      <action dev="tn" type="fix" issue="MATH-767" due-to="Dennis Hendriks">
        Fixed unbalanced use of code tags in javadoc of several classes.
      </action>
      <action dev="tn" type="add" issue="MATH-773" due-to="Reid Hochstedler">
        Added class FixedElapsedTime (new StoppingCondition for evolution of generations) to genetics package.
      </action>
      <action dev="celestin" type="add" issue="MATH-756">
        Added classes Decimal64 and Decimal64Field, which are wrapper classes around primitive doubles.
        These classes implement FieldElement and Field, respectively.
      </action>
    </release>
    <release version="3.0" date="2012-03-07" description="
This is a major release: It combines bug fixes, new features and
changes to existing features.

Most notable among the new features are: Iterative solvers, Kalman filter,
ISAAC RNG, Illinois and Pegasus root finders, enhanced ODE framework,
refactored geometry package, Binary Space Partition trees.

Most notable among the changes are: Exclusive use of unchecked exceptions,
removal of interfaces for which a single implementation is assumed to exist,
improved coding and API consistency across packages, performance (matrix
product, FFT) and robustness (SVD).

Because of the base package name change, this release can be used together
with earlier versions of Commons Math.
The minimal version of the Java platform required to compile and use
Commons Math is Java 5.
Users are encouraged to upgrade to this version as, in addition to new
features, this release includes numerous bug fixes.
Users of Commons Math 2.0-2 should recompile their code against the 3.0 JAR
file and must adjust the import statements to use the appropriate
org.apache.commons.math3 base package.
Most of the compilation errors users will encounter after the switch will
be due to moved or deleted classes/interfaces resulting from package
reorganization.

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). 
">
      <action dev="mikl" type="add" issue="MATH-431">
        Added statistical hypothesis tests "MannWhitneyUTest" and
        "WilcoxonSignedRankTest".
      </action>
      <action dev="erans" type="update" issue="MATH-698">
        Classes "CMAESOptimizer" and "BOBYQAOptimizer" inherit from
        "BaseAbstractMultivariateSimpleBoundsOptimizer" (in package
        "o.a.c.m.optimization.direct").
      </action>
      <action dev="sebb" type="fix" issue="MATH-650" >
        Added pre-computed arrays to speed up initial loading time for FastMath.
      </action>
      <action dev="luc" type="update">
        Resources for error messages translations have been moved out of META-INF
        folder in the jar, to avoid interferences with some build systems.
      </action>
      <action dev="erans" type="fix" issue="MATH-744" due-to="Thundre">
        Fixed "doubleValue" and "floatValue" method in "BigFraction" when
        numerator and denominator are larger than the range of the
        corresponding primitive type.
      </action>
      <action dev="erans" type="update" issue="MATH-488">
        Removed "MathException" (from package "o.a.c.math").
      </action>
      <action dev="erans" type="update" issue="MATH-459">
        Removed "MathRuntimeException" (from package "o.a.c.math").
      </action>
      <action dev="tn" type="fix" issue="MATH-739">
        Merged interface and implementation of statistical tests in
        o.a.c.m.stat.inference package.
      </action>
      <action dev="tn" type="update" issue="MATH-670">
        Merged interface and implementation of EmpiricalDistribution.
      </action>
      <action dev="tn" type="fix" issue="MATH-588">
        Relaxed test for equality in UnivariateStatisticAbstractTest.
      </action>
      <action dev="tn" type="update" issue="MATH-575">
        Modified the genetics package to use localized exception messages.
      </action>
      <action dev="tn" type="fix" issue="MATH-652" due-to="Greg Sterijevski">
        Fixed a faulty test for zero in TridiagonalTransformer.
      </action>
      <action dev="erans" type="fix" issue="MATH-664">
        Changed algorithm in computation of the covariance matrix in
        "AbstractLeastSquares" (package "optimization.general"), from
        "LUDecomposition" to "QRDecomposition".
      </action>
      <action dev="psteitz" type="fix" issue="MATH-724" due-to="Dennis Hendriks">
        Fixed rounding error in RandomDataImpl nextInt, nextLong methods causing lower
        endpoints to be excluded when negative. Also improved robustness of nextUniform
        for extreme values and changed its contract to throw IAE when provided bounds
        are infinite or NaN.
      </action>
      <action dev="erans" type="fix" issue="MATH-728" due-to="Bruce A. Johnson">
        Fixed "offset by one" bug in "BOBYQAOptimizer".
      </action>
      <action dev="luc" type="fix" issue="MATH-727">
        Check first step size in embedded Runge-Kutta integrators, and truncate it if needed.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-723">
        Modified setSeed methods in Bitstream generators (MersenneTwister and Well
        generators) to clear the cache of normal deviates used by nextGaussian.
      </action>
      <action dev="luc" type="fix" issue="MATH-716">
        Fixed bracketing interval balancing in BracketingNthOrderBrentSolver.
      </action>
      <action dev="erans" type="fix" issue="MATH-690">
        Removed unused or duplicate utility methods from "MathUtils".
        Math functions with "double" arguments were moved to class "FastMath".
      </action>
      <action dev="erans" type="fix" issue="MATH-689">
        Broke up bloated "MathUtils" class into "MathArrays", "Precision",
        "ArithmeticUtils" classes.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-704" due-to="Thomas Neidhart">
        Fixed array indexing error in Variance evaluate method for
        computing the weighted variance of an array segment.
      </action>
      <action dev="luc" type="fix" issue="MATH-713" due-to="Thomas Neidhart">
        Fixed case of unconstrained variables that still occur in the objective function
        in simplex solver.
      </action>
      <action dev="luc" type="add" issue="MATH-710" due-to="Eldar Agalarov">
        The fast cryptographically secure pseudorandom number generator ISAAC has been added.
      </action>
      <action dev="luc" type="add" issue="MATH-714">
        The reset method in StepHandler interface has been renamed init and is provided
        more information on the integration by the calling integrator. A similar init method
        has been added to the EventHandler interface.
      </action>
      <action dev="luc" type="fix" issue="MATH-705">
        Improved accuracy of Runge-Kutta based step interpolators near step start.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-691">
        Fixed errors in SummaryStatistics addValue causing variance, mean, or
        geometric mean statistics not to be updated if they have been overridden
        using instances of commons-math supplied implementations.
      </action>
      <action dev="psteitz" type="update" issue="MATH-694">
        Removed First, Third, Fourth moments from the public API.
        These internally used statistics have non-standard definitions.
        The classes remain, but now have package scope.
      </action>
      <action dev="psteitz" type="update" issue="MATH-693">
        Added support for population variance in StatUtils, SummaryStatistics
        and DescriptiveStatistics and clarified javadoc to make it clear that
        'variance' means sample variance.
      </action>
      <action dev="luc" type="fix" issue="MATH-709">
        Fixed BigFraction percentage method which did not work at all.
      </action>
      <action dev="erans" type="update" issue="MATH-697">
        Added interface and abstract class for supporting optimizers classes
        that can take simple constraints into account.
      </action>
      <action dev="luc" type="fix" due-to="MATH-706" >
        Fixed a bad interaction between step handlers and event handlers in
        ODE integrators.
      </action>
      <action dev="luc" type="add" due-to="Jan Kotek" >
        Added array constructor and getter for Vector2D and Vector3D.
      </action>
      <action dev="luc" type="add" due-to="Jan Kotek" >
        Added applyTo and applyInverseTo methods in the Rotation class that
        handle directly arrays instead of Vector3D instances.
      </action>
      <action dev="luc" type="fix" issue="MATH-196" >
        Added adapters for simple bound constraints optimization that can be
        used for all direct optimization methods, including the ones that do not
        support constraints by themselves.
      </action>
      <action dev="luc" type="fix" issue="MATH-702" >
        CMA-ES optimizer input sigma is now consistent with boundaries range units.
      </action>
      <action dev="psteitz" type="add" issue="MATH-462" due-to="Pavel Ryzhof">
        Added stable random generator based on Chambers-Mallows-Stuck method.
      </action>
      <action dev="psteitz" type="update" issue="MATH-701">
        Changed the default seed used for RandomDataImpl, AbstractWell and MersenneTwister
        PRNGs to add the system identity hash code of the instance to the current system
        time, so generators initialized with default seeds within system clock resolution
        will generate different sequences. Changed the default non-secure generator used
        by RandomDataImpl to Well19937c.
      </action>
      <action dev="luc" type="fix" issue="MATH-695">
        Fixed an event resetting issue in ODE.
      </action>
      <action dev="erans" type="update" issue="MATH-696">
        Default implementation for "addToEntry" and "multiplyEntry" in
        "AbstractRealMatrix".
      </action>
      <action dev="erans" type="add" issue="MATH-685">
        Method "addToEntry" in "RealVector".
      </action>
      <action dev="psteitz" type="update" issue="MATH-612" due-to="Christopher Nix">
        Replaced temporary matrices and entry mutators with double[][] arrays to speed computation
        in loops within QRDecomposition, Bi- and TriDiagonalTransformer implementations.
      </action>
      <action dev="luc" type="fix" issue="MATH-679" due-to="Christopher Berner">
         Fixed an integer overflow in OpenMapRealMatrix.
      </action>
      <action dev="erans" type="fix" issue="MATH-688">
        "FastMath": Use constant fields instead of recomputing them at method
        call.
      </action>
      <action dev="luc" type="add" issue="MATH-687" due-to="Romain di Costanzo">
         Added Jacobi polynomials.
      </action>
      <action dev="erans" type="add" issue="MATH-683" due-to="Romain di Costanzo">
         Added "shift" method to compute the coefficients of a new polynomial
         whose values are the same as those of another polynomial but computed
         at a shifted point.
      </action>
      <action dev="erans" type="fix" issue="MATH-676">
         Faster "multiply" method in "Array2DRowRealMatrix". Code inspired
         from the Jama project.
      </action>
      <action dev="luc" type="fix" issue="MATH-445" >
        Replaced package.html with package-info.java for package documentation.
      </action>
      <action dev="luc" type="fix" issue="MATH-284" due-to="Klaus Hartlage">
        Added a getRuntimeClass method to the Field interface allowing to use a
        complete hierarchy of fields sharing a common interface.
      </action>
      <action dev="luc" type="fix" issue="MATH-457" >
        The last remaining uses of OptimizationException have been replaced by unchecked
        exceptions (UnboundSolutionException, NoFeasibleSolutionException,
        MaxCountExceededException ...)
      </action>
      <action dev="luc" type="fix" issue="MATH-487" >
        The checked ConvergenceException has been replaced by an unchecked ConvergenceException.
      </action>
      <action dev="luc" type="fix" issue="MATH-381" due-to="Pascal Parraud">
        ODE step interpolation with Jacobians is now fully merged with
        classical step interpolation.
      </action>
      <action dev="luc" type="fix" issue="MATH-380" due-to="Pascal Parraud">
        Completely revamped the computation of Jacobians in ODE. This computation is now
        included in the mainstream class hierarchy, not in a separate package anymore,
        and it allows adding other types of equations to a main ODE, not only variational
        equations for Jacobians computation.
      </action>
      <action dev="gregs" type="update" issue="MATH-607">
        SimpleRegression implements UpdatingMultipleLinearRegression interface.
      </action>
      <action dev="gregs" type="update" issue="MATH-675">
        Added isMonotone methods in MathUtils. Optimized checkOrder method.
      </action>
      <action dev="erans" type="fix" issue="MATH-664">
        In class "AbstractLeastSquaresOptimizer": Allow to specify a singularity
        threshold in call to "getCovariances" method.
      </action>
      <action dev="gregs" type="update" issue="MATH-649">
        Added the ability to suppress the estimation of the intercept in SimpleRegression.
      </action>
      <action dev="sebb" type="fix" issue="MATH-658" due-to="Yannick TANGUY">
        Dead code in FastMath.pow(double, double) and some improvement in test coverage.
      </action>
      <action dev="erans" type="fix" issue="MATH-663">
        Removed "getData()" method from "RealVector" as it was redundant with
        "toArray()".
      </action>
      <action dev="luc" type="update" issue="MATH-195" >
        Removed completely MathUserException.
      </action>
      <action dev="luc" type="update" issue="MATH-488" >
        Use the refactored exceptions framework for ODE.
      </action>
      <action dev="luc" type="add" >
        Added a getter to allow retrieving the exception related to an exception context
        provider.
      </action>
      <action dev="psteitz" type="update" issue="MATH-364" due-to="Christian Winter">
        Added erf(double,double) to Erf and used this to improve tail probability
        accuracy in NormalDistributionImpl.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-654">
        Enabled reseeding of the random generators used by EmpiricalDistributionImpl
        and ValueServer.  Modified ValueServer to pass its RandomData instance to
        the EmpiricalDistributionImpl that it creates when used in DIGEST_MODE, so
        reseeding ValueServer works as expected.
      </action>
      <action dev="erans" type="fix" issue="MATH-653">
         Renamed "AbstractRealVector" to "RealVector". The interface was removed
         in favour of its unique (abstract) implementation.  Also removed several
         methods with double[] arguments from AbstractRealVector.
      </action>
      <action dev="erans" type="add" issue="MATH-646" due-to="Sébastien Brisard">
         Unmodifiable view of a "RealVector".
      </action>
      <action dev="luc" type="fix" issue="MATH-501" >
          Refactored integration API for consistency with solvers API. Now the main convergence
          parameters are set in the constructor and remain fixed.
      </action>
      <action dev="luc" type="fix" issue="MATH-464" >
          Added a maximal number of function evaluations to the integration method, similar
          to what is done in the solvers API.
      </action>
      <action dev="psteitz" type="update" issue="MATH-449" due-to="Patrick Meyer">
          Added storeless covariance implementation.
      </action>
      <action dev="psteitz" type="update" issue="MATH-648">
         Eliminated extraneous constructor from SimpleRegression.
      </action>
      <action dev="psteitz" type="update" issue="MATH-506">
         Eliminated pluggability of ChiSquaredDistribution used by ChiSquaredDistributionTest.
      </action>
      <action dev="psteitz" type="update" issue="MATH-634">
         Made RandomGenerator configurable and reseedable in EmpiricalDistributionImpl.
      </action>
      <action dev="luc" type="add" issue="MATH-593">
         Added a 3D SubLine class.
      </action>
      <action dev="erans" type="fix" issue="MATH-645">
         Fixed exceptions generated by "ebeMultiply" and "ebeDivide" in "OpenMapRealVector".
      </action>
      <action dev="erans" type="add" issue="MATH-602" due-to="Greg Serijevski">
         In "SingularValueDecompositionImpl", added accessor for the inverse of the condition number.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-601" due-to="Chris Nix and Greg Serijevski">
        Made pseudo-inverse consistent with rank computation in SingularValueDecompositionImpl.
      </action>
      <action dev="psteitz" type="update" issue="MATH-624" due-to="Greg Sterijevski">
        Added methods to solve upper and lower triangular systems to MatrixUtils.
      </action>
      <action dev="psteitz" type="update" issue="MATH-642">
        Improved performance of nextInt(int) in BitsStreamGenerator.
      </action>
      <action dev="luc" type="fix" issue="MATH-639" >
        Fixed a wrong detection of rotation axis versus vectors plane in Rotation constructor
        using two vectors pairs.
      </action>
      <action dev="luc" type="add" >
        Added a few linearCombination utility methods in MathUtils to compute accurately
        linear combinations a1.b1 + a2.b2 + ... + an.bn taking great care to compensate
        for cancellation effects. This both improves and simplify several methods in
        euclidean geometry classes, including linear constructors, dot product and cross
        product.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-640">
        Fixed bugs in AbstractRandomGenerator nextInt() and nextLong() default
        implementations.  Prior to the fix for this issue, these methods
        generated only positive values.
      </action>
      <action dev="erans" type="add" issue="MATH-637">
        Simple benchmark utility (new class "PerfTestUtils" added to test sources in src/test).
      </action>
      <action dev="luc" type="add" issue="MATH-636" >
        Added a solver for Dfp-based (i.e. high accuracy) functions.
      </action>
      <action dev="luc" type="add" issue="MATH-635" >
        Added a Brent-like solver that has higher (user specified) order and does
        bracket selection on the result: BracketingNthOrderBrentSolver.
      </action>
      <action dev="luc" type="add" >
        Added a few shortcut methods and predicates to Dfp (abs, isZero,
        negativeOrNull, strictlyNegative, positiveOrNull, strictlyPositive).
      </action>
      <action dev="erans" type="add" issue="MATH-633" due-to="Sébastien Brisard">
        "AbstractRealMatrix" inherits from "RealLinearOperator".
      </action>
      <action dev="erans" type="add" issue="MATH-613" due-to="Sébastien Brisard">
        Linear combination of vectors: "RealVector" interface updated, implemented
        in "AbstractRealVector" and "ArrayRealVector".
      </action>
      <action dev="erans" type="update" issue="MATH-623" due-to="Arne Plöse">
        Slightly more efficient implementation of basic operations in
        "ArrayRealVector".
      </action>
      <action dev="erans" type="add" issue="MATH-577" due-to="Arne Plöse">
        Overloaded methods (add, subtract, multiply, divide) to take a "double" parameter
        (as a complex number with zero imaginary part).
        Code and Javadoc cleanup.
        Added "valueOf" methods.
      </action>
      <action dev="mikl" type="fix" issue="MATH-585">
        Implemented faster generation of random gamma distributed values with
        algorithm from Ahrens and Dieter (1972) for shape &lt; 1 and
        Marsaglia and Tsang (2001) otherwise.
      </action>
      <action dev="luc" type="fix" issue="MATH-605" due-to="Dennis Hendriks">
        Allow discrete events to be detected by ODE solvers also at step start.
      </action>
      <action dev="luc" type="fix" issue="MATH-327,MATH-383,MATH-465,MATH-583,MATH-611" due-to="Christopher Nix">
        Rewritten SVD decomposition based on JAMA code.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-618" due-to="Arne Plose">
        Complex add javadoc says that if either addend has NaN parts, the result
        should be Complex.NaN.  Prior to the fix for this issue, NaNs were propagated
        only in real and imaginary parts individually.
      </action>
      <action dev="erans" type="add" issue="MATH-581" due-to="Sébastien Brisard">
        Framework for iterative linear solvers.
      </action>
      <action dev="psteitz" type="update" issue="MATH-609" due-to="Dave Brosius">
        Improved efficiency in RandomDataImpl, LaguerreSolver, FastMath and OutlineExtractor by
        moving conditional code into blocks where it is needed.
      </action>
      <action dev="luc" type="fix" issue="MATH-603" due-to="Dennis Hendriks">
        Prevent step normalizer to output twice the last point in MULTIPLES mode.
      </action>
      <action dev="luc" type="fix" issue="MATH-596,MATH-604">
        Removed the requiresDenseOutput method from the StepHandler interface. Now integrators always
        consider dense output is required and set up the appropriate state interpolators, so step
        handlers can rely on them.
      </action>
      <action dev="erans" type="add" issue="MATH-599" due-to="Dennis Hendriks">
        Modified "SecantSolver" to comply with the original algorithm. Added several
        secant-based solvers. Added a way to select the side of the root with bracketing
        solvers.
      </action>
      <action dev="luc" type="fix" issue="MATH-600">
        Fixed javadoc for ODEIntegrator interface
      </action>
      <action dev="luc" type="fix" issue="MATH-595" due-to="Dennis Hendriks" >
        Extended StepNormalizer with normalization mode and bounds settings.
      </action>
      <action dev="mikl" type="fix" issue="MATH-597">
        Implemented faster generation of random exponential distributed values with
        algorithm from Ahrens and Dieter (1972): Computer methods for sampling
        from the exponential and normal distributions.
      </action>
      <action dev="luc" type="add" issue="MATH-548">
        K-means++ clustering can now run multiple trials
      </action>
      <action dev="luc" type="add" issue="MATH-591">
        Added a way to compute sub-lines intersections, considering sub-lines either
        as open sets or closed sets
      </action>
      <action dev="luc" type="add" issue="MATH-592">
        Added a way to build a sub-line from its endpoints, and to retrieve the endpoints
        from a sub-line
      </action>
      <action dev="luc" type="fix" issue="MATH-594" due-to="Dennis Hendriks">
        Javadoc fixes in ODE.
      </action>
      <action dev="luc" type="fix" issue="MATH-586" due-to="Dennis Hendriks">
        Added a way to specify a custom root solver to find events in ODE integration.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-540">
        Fixed error in javadoc describing Integer distribution inverse cumulative
        probability API.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-582" due-to="Christopher Nix">
        Fixed error in javadoc describing the behavior of the Percentile algorithm for
        small percentiles in small datasets.
      </action>
      <action dev="erans" type="add" issue="MATH-485" due-to="Thomas Neidhart">
        New "filter" package. Initial implementation of Kalman filter.
      </action>
      <action dev="luc" type="fix" issue="MATH-584" due-to="Randall Scarberry">
        Improved k-means++ clustering performances and initial cluster center choice.
      </action>
      <action dev="luc" type="fix" issue="MATH-504" due-to="X. B.">
        Fixed tricube function implementation in Loess interpolator.
      </action>
      <action dev="luc" type="fix" issue="MATH-568" due-to="Christoph M. Friedrich">
        Fixed documentation of statistics examples.
      </action>
      <action dev="luc" type="fix" issue="MATH-507" due-to="Ole Ersoy">
        Improved documentation of general optimization with a thorough example.
      </action>
      <action dev="luc" type="fix" issue="MATH-403">
        Replaced NullPointerException by NullArgumentException.
      </action>
      <action dev="luc" type="add">
        Added a consistent classes hierarchy for Euclidean spaces in dimension 1, 2 and 3.
      </action>
      <action dev="luc" type="fix" issue="MATH-579">
        Improved javadoc for FastMath explaining the overhead at class loading and
        the targeted use cases.
      </action>
      <action dev="erans" type="fix" issue="MATH-574">
        Allow outer product of vectors of different sizes.
      </action>
      <action dev="luc" type="add" issue="MATH-576">
        A complete generic implementation of Binary Space Partitioning Trees (BSP trees)
        has been added. A few specializations of this implementation are also provided
        for 1D, 2D and 3D Euclidean geometry. This allows support for arbitrary
        intervals sets (1D), polygons sets (2D) and polyhedrons sets (3D) with all
        sets operations (union, intersection, symmetric difference, difference, complement),
        with predicates (point inside/outside/on boundary, emptiness, other region contained),
        with geometrical computation (barycenter, size, boundary size) and with conversions
        from and to boundary representation.
      </action>
      <action dev="luc" type="fix" issue="MATH-573">
        Avoid some array copying in add and subtract ArrayFieldVector.
      </action>
      <action dev="luc" type="fix" issue="MATH-572">
        Fixed an unused constructor parameter in ArrayFieldVector.
      </action>
      <action dev="erans" type="add" issue="MATH-566">
        Created an "ExceptionContext" class: It provides the customization feature of
        "MathRuntimeException" without imposing a singly rooted hierarchy of the Comons
        Math exceptions.
        Thus, those exceptions now inherit from their Java standard counterparts (e.g.
        "MathIllegalArgumentException" inherits from "IllegalArgumentException").
      </action>
      <action dev="luc" type="add" issue="MATH-567" due-to="Michel">
        Fixed conversion problems to/from 0 in Decimal Floating Point (Dfp) class.
      </action>
      <action dev="luc" type="fix" >
        Fixed initialization of multistep ODE integrators. Relying on the interpolation model
        of the starter integrator inside only one step was wrong. The model may have a too
        low order to compute high degrees derivatives in the Nordsieck vector. Now we use several
        steps and use only grid points instead of interpolated points.
      </action>
      <action dev="luc" type="add" issue="MATH-564">
        Added solve methods using double[][] to linear algebra decomposition solvers.
      </action>
      <action dev="erans" type="add" issue="MATH-562">
        Added an interpolator adapter for data with known period.
      </action>
      <action dev="luc" type="add" issue="MATH-541" >
        Added a "rectangular" Cholesky decomposition for positive semidefinite matrices.
      </action>
      <action dev="luc" type="add" issue="MATH-563" >
        Added setters allowing to change the step size control parameters of adaptive
        step size ODE integrators.
      </action>
      <action dev="luc" type="add" issue="MATH-557" >
        Added a compareTo method to MathUtils that uses a number of ulps as a
        tolerance error, and works well on all numbers, including normals, subnormals,
        signed zeroes, infinities and NaNs.
      </action>
      <action dev="luc" type="fix" issue="MATH-434" due-to="Thomas Neidhart">
        Fixed two errors in simplex solver when entries are close together or
        when variables are not restricted to non-negative.
      </action>
      <action dev="luc" type="fix" issue="MATH-547" due-to="Thomas Neidhart">
        Improved robustness of k-means++ algorithm, by tracking changes in points assignments
        to clusters.
      </action>
      <action dev="psteitz" type="update" issue="MATH-555">
        Changed MathUtils.round(double,int,int) to propagate rather than
        wrap runtime exceptions.  Instead of MathRuntimeException, this method
        now throws IllegalArgumentException or ArithmeticException under
        the conditions specified in the javadoc.
      </action>
      <action dev="luc" type="fix" issue="MATH-554" >
        Reduced cancellation errors in Vector3D.crossProduct
      </action>
      <action dev="erans" type="fix" issue="MATH-552" due-to="James Bence">
        Fixed bug in "MultidimensionalCounter".
      </action>
      <action dev="luc" type="fix" issue="MATH-423" due-to="Gilles Sadowski" >
        All unit tests have been converted to Junit 4. They need at least Junit 4.5 to run
        (the ant and maven build systems are currently set to use Junit 4.8.2)
      </action>
      <action dev="luc" type="fix" issue="MATH-500" due-to="Gilles Sadowski" >
        Removed the ConvergingAlgorithm interface and ConvergingAlgorithmImpl class
      </action>
      <action dev="luc" type="add" issue="MATH-436" due-to="Thomas Neidhart">
        Added a consistency check for number of points with respect to the number
        of clusters in Kmeans++ clustering
      </action>
      <action dev="mikl" type="add" issue="MATH-437">
        Added two sided Kolmogorov-Smirnov distribution using modified
        Marsaglia et al. (2003) implementation and quick decisions for certain
        parameter areas according to Simard et al. (2011).
      </action>
      <action dev="mikl" type="add" issue="MATH-435">
        Added "power" method in "RealMatrix" and "FieldMatrix&lt;T&gt;"
        interfaces and their default implementations in "AbstractRealMatrix"
        and "AbstractFieldMatrix".
      </action>
      <action dev="erans" type="update" issue="MATH-545">
        Added "cosine" method in "RealVector" interface and default implementation
        in "AbstractRealVector".
      </action>
      <action dev="erans" type="fix" issue="MATH-546" due-to="Nate Paymer">
        Fixed bug in "KMeansPlusPlusClusterer".
      </action>
      <action dev="erans" type="update" issue="MATH-542">
        All exceptions defined in Commons Math provide a context and a compound
        message list.
      </action>
      <action dev="erans" type="update" issue="MATH-534">
        Refactored "PolynomialFitter" (in package "optimization.fitting").
        Added parametric function in "PolynomialFunction" (in package
        "analysis.polynomials").
      </action>
      <action dev="erans" type="fix" issue="MATH-518">
        Removed "HarmonicFunction" (in package "optimization.fitting");
        superseded by class "HarmonicOscillator" (in package "analysis.function").
      </action>
      <action dev="erans" type="update" issue="MATH-517">
        Refactored "HarmonicFitter" (in package "optimization.fitting").
        "HarmonicCoefficientsGuesser" removed.
      </action>
      <action dev="erans" type="fix" issue="MATH-516">
        Removed "GaussianFunction" and "GaussianDerivativeFunction" (in package
        "optimization.fitting"); functionality moved to class "Gaussian" (in
        package "analysis.function").
      </action>
      <action dev="erans" type="fix" issue="MATH-514">
        Removed "ParametricGaussianFunction" (in package "optimization.fitting");
        functionality moved to class "Gaussian" (in package "analysis.function").
      </action>
      <action dev="erans" type="update" issue="MATH-512" due-to="Ole Ersoy">
        Refactored "GaussianFitter" (in package "optimization.fitting").
        The class now really fits a Gaussian function (whereas previously it was
        fitting the sum of a constant and a Gaussian).
      </action>
      <action dev="erans" type="fix" issue="MATH-442" due-to="Dietmar Wolz">
        Implementation of the CMA-ES optimization algorithm.
      </action>
      <action dev="erans" type="fix" issue="MATH-513">
        The interface "ParametricRealFunction" (in package "optimization.fitting") has
        been renamed to "ParametricUnivariateRealFunction" and moved to package "analysis".
      </action>
      <action dev="sebb" type="fix" issue="MATH-505">
          TestUtils is thread-hostile. Remove getters and setters, and make static variables final.
      </action>
      <action dev="sebb" type="update" issue="MATH-496">
          Create FastMath copySign methods
      </action>
      <action dev="sebb" type="fix" issue="MATH-494">
          FastMath atan2 does not agree with StrictMath for special cases
      </action>
      <action dev="erans" type="fix" issue="MATH-492">
        Removed checked "MaxIterationsExceededException" (superseded by
        "MaxCountExceededException" from package "exception").
      </action>
      <action dev="erans" type="fix" issue="MATH-491">
        Removed checked "DimensionMismatchException". Replaced all occurrences by its
        equivalent from package "exception".
      </action>
      <action dev="sebb" type="fix" issue="MATH-489">
          FastMath acos fails when input abs value is less than about 5.7851920321187236E-300 - returns NaN
      </action>
      <action dev="sebb" type="fix" issue="MATH-486">
          FastMath toRadian and toDegree don't handle large double numbers well
      </action>
      <action dev="sebb" type="fix" issue="MATH-483">
          FastMath does not handle all special cases correctly
      </action>
      <action dev="sebb" type="fix" issue="MATH-480">
          Fix ulp(Infinity) to return Infinity rather than NaN
      </action>
      <action dev="sebb" type="fix" issue="MATH-479">
        FastMath.signum(-0.0) does not agree with Math.signum(-0.0)
      </action>
      <action dev="sebb" type="fix" issue="MATH-478">
          FastMath is not an exact replacement for StrictMath
          (partially fixed) Add signum(float), ulp(float)
      </action>
      <action dev="sebb" type="fix" issue="MATH-482">
        FastMath.max(50.0f, -50.0f) => -50.0f; should be +50.0f
        Fixed FastMath.max(float, float) so it returns correct value.
      </action>
      <action dev="sebb" type="fix" issue="MATH-471">
        MATH-491 MathUtils.equals(double, double) does not work properly for floats
        - add equivalent (float, float) methods and basic tests
      </action>
      <action dev="erans" type="fix" issue="MATH-458">
        Removed "MathException" from the "throws" clause of the "interpolate" method
        of the interpolators interfaces (package "analysis.interpolation").
      </action>
      <action dev="erans" type="fix" issue="MATH-461">
        In order to comply with the new runtime exceptions policy, the classes
        "RealVectorFormat", "ComplexFormat", "Vector3DFormat" and "CompositeFormat"
        do not inherit anymore from the Java standard "Format" class. Failed parsing
        will result in the throwing of a "MathParseException".
        "CompositeFormat" is now a utility class ("private" constructor).
      </action>
      <action dev="erans" type="fix" issue="MATH-447">
        By policy, all Commons Math exceptions must inherit from class
        "MathRuntimeException".
      </action>
      <action dev="erans" type="fix" issue="MATH-454">
        For optimizers (package "optimization"), the number of allowed function
        evaluations is passed as a parameter to the "optimize" method.
      </action>
      <action dev="erans" type="fix" issue="MATH-451">
        For solvers (package "analysis.solvers"), the number of allowed function
        evaluations is passed as a parameter to the "solve" method.
      </action>
      <action dev="erans" type="fix" issue="MATH-447">
        Created a "MathRuntimeException" to serve as a base class for exception
        types that need to wrap another (lower-level) exception.
      </action>
      <action dev="erans" type="update" issue="MATH-430">
        Replaced "ComposableFunction" and "BinaryFunction" (in package "analysis")
        by a set of utilities in the new class "FunctionUtils" together with
        independent function objects in the new "analysis.function" package.
        Removed redundant "mapXxx" and "mapXxxToSelf" methods in "RealVector" and
        "AbstractRealVector" (in package "linear").
      </action>
      <action dev="erans" type="update" issue="MATH-439">
        Refactoring of the "analysis.solvers" package.
      </action>
      <action dev="luc" type="fix" issue="MATH-380">
        Removed the ode.jacobians package.
      </action>
      <action dev="erans" type="update" issue="MATH-440">
        Removed classes "FunctionEvaluationException", "MatrixVisitorException"
        and "DerivativeException" (superseded by the new "MathUserException").
      </action>
      <action dev="erans" type="fix" issue="MATH-432">
        Created a generic "Pair" class to replace the "AbstractMap.SimpleEntry"
        that is only available in Java 6 and later.
      </action>
      <action dev="erans" type="fix" issue="MATH-428">
        Class "DirectSearchOptimizer" (and subclasses "NelderMead"
        and "MultiDirectional") was refactored into new classes:
        "SimplexOptimizer" and "AbstractSimplex" (and subclasses
        "NelderMeadSimplex" and "MultiDirectionalSimplex"). The old
        classes were deprecated and removed.
      </action>
      <action dev="erans" type="update" issue="MATH-425">
        Created "MatrixDimensionMismatchException" to replace
        "InvalidMatrixException" (when the latter is used to signal that
        matrices are not compatible for some operation).
        Replaced "MatrixIndexException" with "OutOfRangeException" (when the
        former is used to signal a row or column dimension mismatch).
      </action>
      <action dev="erans" type="update" issue="MATH-310">
        Made "sample" methods part of the "IntegerDistribution" and
        "ContinuousDistribution" interfaces.
      </action>
      <action dev="erans" type="fix" issue="MATH-349">
        All distribution classes (in package "distribution") are immutable.
      </action>
      <action dev="erans" type="update" issue="MATH-195">
        Created an unchecked "FunctionEvaluationException".
        Modified the "UnivariateRealFunction" interface: Removed the checked
        "FunctionEvaluationException" from the signature of the "value" method.
      </action>
      <action dev="erans" type="update" issue="MATH-370">
        Modified semantics: "equals" methods now consider that NaNs are not
        equal (compliant with IEEE754).
        Also, two adjacent floating point numbers are considered equal (this
        is consistent with the fact that all real numbers between them can be
        represented by either of the two). One consequence of that is that
        "equals" is not transitive.
      </action>
      <action dev="erans" type="update" issue="MATH-397">
        Removed methods referring to the concept of "iteration".
        Removed interface methods to access the number of evaluations of the
        gradient and Jacobian.
        Added new "Incrementor" utility to be used as a bounded counter for
        objective function evaluations.
        Removed all references to "OptimizationException" (replaced by
        "ConvergenceException").
      </action>
      <action dev="erans" type="update" issue="MATH-397">
        Modified "AbstractUnivariateRealOptimizer" to make it more similar to
        "BaseAbstractScalarOptimizer".
        Added utility methods in "ConvergingAlgorithmImpl".
      </action>
      <action dev="erans" type="update" issue="MATH-389">
        Refactoring of some classes in package "optimization.general" to remove
        code duplication and to allow the implementation of optimization algorithms
        that do not use derivatives.
        Created interface "BaseMultivariateRealOptimizer".
        Created classes "BaseAbstractScalarOptimizer" and "AbstractScalarOptimizer".
        "MultivariateRealOptimizer" and "DifferentiableMultivariateRealOptimizer"
        both extend "BaseMultivariateRealOptimizer".
        "AbstractScalarOptimizer" extends "BaseAbstractScalarOptimizer" and
        "AbstractScalarDifferentiableOptimizer" inherits from "AbstractScalarOptimizer".
      </action>
    </release>
    <release version="2.2" date="2011-03-02" description="
This is primarily a maintenance release, but it also includes new features and enhancements.

  Users of version 2.1 are encouraged to upgrade to 2.2, as this release includes some important bug fixes.

  See the detailed list of changes below for full description of all bug fixes and enhancements.

  This release contains some minor compatibility breaks with version 2.1 in some internal classes but none
  of them are in APIs likely to be accessed by user code:
  the MessagesResources_fr class has been removed (replaced by a properties file);
  the arguments of the EventState.reinitializeBegin method have changed;
  some protected fields which already had public accessors in AbstractStepInterpolator have been replaced.

  There is a behavior change that users of the multiple regression classes should be aware of. In version
  2.1, there was no way to estimate models without intercept terms, and, while this was not clear from
  the documentation, design (X) matrices needed to include initial unitary columns.  In 2.2, initial
  unitary columns are not necessary and whether or not models include intercept terms is configurable.
  See the change log and javadoc for the classes in org.apache.commons.math3.stat.regression for details.

  The major new features are:
  a new FastMath class, both faster, more accurate and with a few additional functions than StrictMath and Math;
  a new package for floating point arbitrary precision computing, including high level functions like exponential, sine, square root ...;
  new linear and tricubic interpolators;
  a new Gaussian curve fitter;
  a new erfc function;
  characteristic support for distributions;
  a set of new Well Equidistributed Long-period Linear (WELL) random generators.">
      <action dev="luc" type="fix" issue="MATH-498">
          FastMath is not an exact replacement for StrictMath
          (partially fixed) added scalb(double, int), scalb(float, int)
      </action>
      <action dev="luc" type="fix" issue="MATH-478">
          FastMath is not an exact replacement for StrictMath
          (partially fixed) added hypot(double, double), nextAfter(double, double)
          and nextAfter(float,double) (beware of the strange double second argument)
          so that they handle special values in the way as StrictMath
      </action>
      <action dev="luc" type="fix" issue="MATH-497">
          FastMath is not an exact replacement for StrictMath
          (partially fixed) added getExponent(double) and getExponent(float)
      </action>
      <action dev="sebb" type="fix" issue="MATH-496">
          FastMath is not an exact replacement for StrictMath
          (partially fixed) Add copySign(double), copySign(float)
      </action>
      <action dev="luc" type="fix" issue="MATH-484">
          separate discrete event detection from adaptive step size handling in ODE solvers,
          thus improving robustness, maintainability and speed
      </action>
      <action dev="luc" type="fix" issue="MATH-467">
        Fixed an awkward statement that triggered a false positive warning.
      </action>
      <action dev="psteitz" type="update" issue="MATH-364" due-to="Christian Winter">
        Added complementary error function, erfc.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-456">
        Modified erf (and erfc) to return extreme values for x with abs(x) > 40.
        For these arguments, the true value is indistinguishable from an extrema as a double.
      </action>
      <action dev="mikkel" type="update" issue="MATH-385">
        Added characteristic support to distributions, including methods to return numerical
        estimates of the mean and variance and upper and lower bounds of support. In version 2.2,
        methods returning distribution characteristics have been added only to the implementation
        classes.  In version 3, supporting methods have been added to the abstract base classes
        and distribution interfaces.
      </action>
      <action dev="mikkel" type="update" issue="MATH-384">
        Added a constructor and addValues(double[]) methods allowing DescriptiveStatistics to
        be initialized with values from a double[] array.  Similarly enhanced
        ResizeableDoubleArray.
      </action>
      <action dev="psteitz" type="update" issue="MATH-448" due-to="Patrick Meyer">
        Added a getUniqueCount() method to Frequency to return the number of unique
        values included in the frequency table.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-414">
        Modified NormalDistributionImpl.cumulativeProbability to return 0 or 1,
        respectively for values more than 40 standard deviations from the mean.
        For these values, the actual probability is indistinguishable from 0 or 1
        as a double.  Top coding improves performance for extreme values and prevents
        convergence exceptions.
      </action>
      <action dev="psteitz" type="update" issue="MATH-420">
        Added toString() override to StatisticalSummaryValues.
      </action>
      <action dev="luc" type="fix" issue="MATH-380">
        Deprecated the whole ode.jacobians package. It is clumsy and difficult to use. It will
        be replaced by a completely rewritten implementation in 3.0, which will be more tightly
        bound to the top level ode package
      </action>
      <action dev="luc" type="fix" issue="MATH-426" due-to="Erik van Ingen">
        Added a normalization feature to transform samples so they have zero mean and unit standard deviation
      </action>
      <action dev="erans" type="add" issue="MATH-440">
        Created "MathUserException" class to convey cause of failure between
        layers of user code separated by a layer of Commons Math code. Deprecated
        classes "FunctionEvaluationException", "MatrixVisitorException" and
        "DerivativeException".
      </action>
      <action dev="luc" type="fix" issue="MATH-429">
        Fixed k-means++ to add several strategies to deal with empty clusters that
        may appear during iterations.
      </action>
      <action dev="luc" type="update" issue="MATH-417">
        Improved Percentile performance by using a selection algorithm instead of a
        complete sort, and by allowing caching data array and pivots when several
        different percentiles are desired.
      </action>
      <action dev="luc" type="fix" issue="MATH-391">
        Fixed an error preventing zero length vectors to be built by some constructors.
      </action>
      <action dev="luc" type="fix" issue="MATH-421">
        Fixed an error preventing ODE solvers to be restarted after they have
        been stopped by a discrete event.
      </action>
      <action dev="luc" type="add" issue="MATH-419">
        Added new random number generators from the Well Equidistributed
        Long-period Linear (WELL).
      </action>
      <action dev="psteitz" type="update" issue="MATH-409">
        Made intercept / no intercept configurable in multiple regression
        classes. By default, regression models are estimated with an intercept
        term.  When the "noIntercept" property is set to true, regression models
        are estimated without intercepts.
      </action>
      <action dev="luc" type="fix" issue="MATH-415">
        Fixed lost cause in MathRuntimeException.createInternalError. Note that
        the message is still the default message for internal errors asking to
        report a bug to Commons Math JIRA tracker. In order to retrieve the
        message from the root cause, one has to get the cause itself by getCause().
      </action>
      <action dev="psteitz" type="fix" issue="MATH-411">
        Modified multiple regression newSample methods to ensure that by default
        in all cases, regression models are estimated with intercept terms.
        Prior to the fix for this issue, newXSampleData(double[][]),
        newSampleData(double[], double[][]) and newSampleData(double[], double[][], double[][])
        all required columns of "1's" to be inserted into the x[][] arrays to
        create a model with an intercept term; while newSampleData(double[], int, int)
        created a model including an intercept term without requiring the
        unitary column. All methods have been changed to eliminate the need for
        users to add unitary columns to specify regression models.
        Users of OLSMultipleLinearRegression or GLSMultipleLinearRegression
        versions 2.0 or 2.1 should either verify that their code either does
        not use the first set of data loading methods above or set the noIntercept
        property on estimated models to get the previous behavior.
      </action>
      <action dev="luc" type="fix" issue="MATH-412" due-to="Bill Rossi">
        Added the dfp library providing arbitrary precision floating point computation in the spirit of
        IEEE 854-1987 (not exactly as it uses base 1000 instead of base 10). In addition to finite numbers,
        infinities and NaNs are available (but there are no subnormals). All IEEE 854-1987 rounding modes and
        signaling flags are supported. The available operations are +, -, *, / and the available functions
        are sqrt, sin, cos, tan, asin, acos, atan, exp, log.
      </action>
      <action dev="luc" type="fix" issue="MATH-375" due-to="Bill Rossi">
        Added faster and more accurate version of traditional mathematical functions in a FastMath
        class intended to be a drop-in replacement for java.util.Math at source-level. Some functions
        still directly delegates to Math but this will improve with time. Some functions like exp
        may be twice as fast (even 3 times faster on some processors). Sine, cosine or power functions
        show typical speedups of 1.5 times faster or more.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-386">
        Added R-squared and adjusted R-squared statistics to OLSMultipleLinearRegression.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-392" due-to="Mark Devaney">
        Corrected the formula used for Y variance returned by calculateYVariance and associated
        methods in multiple regression classes (AbstractMultipleLinearRegression,
        OLSMultipleLinearRegression, GLSMultipleLinearRegression).  These methods previously returned
        estimates of the variance in the model error term.  New "calulateErrorVariance" methods have
        been added to compute what was previously returned by calculateYVariance.
      </action>
      <action dev="dimpbx" type="fix" issue="MATH-406">
        Bug fixed in Levenberg-Marquardt (handling of weights).
      </action>
      <action dev="dimpbx" type="fix" issue="MATH-405">
        Bug fixed in Levenberg-Marquardt (consistency of current).
      </action>
      <action dev="dimpbx" type="fix" issue="MATH-377">
        Bug fixed in chi-square computation in AbstractLeastSquaresOptimizer.
      </action>
      <action dev="luc" type="add" issue="MATH-400" due-to="J. Lewis Muir">
        Added support for Gaussian curve fitting.
      </action>
      <action dev="erans" type="fix" issue="MATH-395">
        Fixed several bugs in "BrentOptimizer".
      </action>
      <action dev="erans" type="fix" issue="MATH-393">
        Fixed inconsistency in return values in "MultiStartUnivariateRealOptimizer".
      </action>
      <action dev="luc" type="add" issue="MATH-388">
        Added a feature allowing error estimation to be computed only on a subset of
        Ordinary Differential Equations, considered as the main set, the remaining equations
        being considered only as an extension set that should not influence the ODE integration
        algorithm
      </action>
      <action dev="erans" type="fix" issue="MATH-382">
        Fixed bug in precondition check (method "setMicrosphereElements").
      </action>
      <action dev="erans" type="add" issue="MATH-379">
        Created "MultidimensionalCounter" class.
      </action>
      <action dev="erans" type="add" issue="MATH-361">
        Created package "exception" to contain the new exceptions hierarchy.
        Created package "exception.util": utilities for the exception classes
        (e.g. managing the localization of error messages).
        Default policy for dealing with invalid null references: raise a
        "NullArgumentException" (subclass of "IllegalArgumentException").
      </action>
      <action dev="erans" type="add" issue="MATH-378" due-to="Matthew Rowles">
        Implementation of linear interpolation.
      </action>
      <action dev="luc" type="fix" issue="MATH-361">
        Improved localization of error messages.
      </action>
      <action dev="erans" type="fix" issue="MATH-376">
        Allow multiple optimizations with a default simplex.
      </action>
      <action dev="erans" type="update" issue="MATH-370">
        Added new "equalsIncludingNaN" methods that have the same semantics as the old "equals" methods.
        These are deprecated, and their semantics will be modified (in the next major release) such that
        NaNs are not considered equal (to be more compliant with IEEE754).
      </action>
      <action dev="luc" type="fix" issue="MATH-352" >
        Added a setQRRankingThreshold method to Levenberg-Marquardt optimizer to improve robustness
        of rank determination.
      </action>
      <action dev="psteitz" type="update" issue="MATH-310">
        Added random data generation methods to RandomDataImpl for the remaining distributions in the
        distributions package. Added a generic nextInversionDeviate method that takes a discrete
        or continuous distribution as argument and generates a random deviate from the distribution.
        Also added sampling methods based on the implementations in RandomDataImpl to distributions.
      </action>
      <action dev="luc" type="fix" issue="MATH-362" >
        Fixed Levenberg-Marquardt optimizer that did not use the vectorial convergence checker.
        Now this optimizer can use either the general vectorial convergence checker or its own
        specialized convergence settings.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-371" due-to="Kevin Childs">
        Fixed loss of significance error in PersonsCorrelation p-value computation causing p-values
        smaller than the machine epsilon (~1E-16) to be reported as 0.
      </action>
      <action dev="luc" type="fix" issue="MATH-369" due-to="Sasun Pundev">
        Fix NullPointerException in BisectionSolver.solve(f, min, max, initial)
      </action>
      <action dev="billbarker" type="fix" issue="MATH-368">
       Fix spelling of getSparcity [sic] method of OpenMapRealVector
      </action>
      <action dev="billbarker" type="fix" issue="MATH-367" due-to="Albert Huang">
       Fix problem with the default sparseIterator when a RealVector has exactly one non-zero entry
      </action>
      <action dev="erans" type="add" issue="MATH-366">
        Implementation of tricubic interpolation.
      </action>
      <action dev="erans" type="update" issue="MATH-365">
        Deprecated SmoothingBicubicSplineInterpolator and SmoothingBicubicSplineInterpolatorTest.
        Added BicubicSplineInterpolator and BicubicSplineInterpolatorTest.
        Added SmoothingPolynomialBicubicSplineInterpolator and SmoothingPolynomialBicubicSplineInterpolatorTest.
        Added method to clear the list of observations in PolynomialFitter.
      </action>
    </release>
    <release version="2.1" date="2010-04-02" description="
This is primarily a maintenance release, but it also includes new features and enhancements.

  Users of version 2.0 are encouraged to upgrade to 2.1, as this release includes some important bug fixes.

  See the detailed list of changes below for full description of all bug fixes and enhancements.

  This release contains some minor API compatibility breaks with version 2.0:
  the return type of RealVector.copy() has been changed to AbstractRealVector;
  the no-argument constructor of MatrixUtils() has been made private;
  the mapXxxToSelf methods of OpenMapRealVector have been removed and some method return types have been changed in this class;
  new methods have been added to the RealVector interface;
  several fields in AdaptiveStepSizeIntegrator have been made final;
  DummyStepInterpolator requires an additional argument for one of its constructors;
  some protected fields have been removed from AbstractLeastSquaresOptimizer, AbstractScalarDifferentiableOptimizer and AbstractLinearOptimizer;
  and the isOptimal(SimplexTableau) method has been removed from SimplexSolver. ">
      <action dev="sebb" type="fix" issue="MATH-360">
        Fix use of wrong variable in SmoothingBicubicSplineInterpolatorTest.testPreconditions()
      </action>
      <action dev="erans" type="update" issue="MATH-356">
        Added method to clear the list of observations in CurveFitter.
      </action>
      <action dev="erans" type="add" issue="MATH-357">
        Implementation of bicubic interpolation.
      </action>
      <action dev="psteitz" type="update" issue="MATH-332" due-to="Mikkel Meyer Andersen">
        Added density functions to remaining continuous distributions (F, T, Weibull, Cauchy).
        As of Math 2.1, all continuous distributions implement density functions.  The HasDensity
        interface has been deprecated and in version 3.0, density(double) will be added to the
        ContinuousDistribution interface.
      </action>
      <action dev="sebb" type="update" issue="MATH-337">
        Changed equals() methods to use instanceof check rather than catching ClassCastException;
        this also allows some null checks to be omitted.
      </action>
      <action dev="sebb" type="update" issue="MATH-336">
        Removed unnecessary null checks in equals methods.
      </action>
      <action dev="sebb" type="fix" issue="MATH-335">
        Fraction.hashCode() implementation was not fully consistent with Fraction.equals().
        Changed hashCode() to use fields directly to agree with equals().
      </action>
      <action dev="psteitz" type="fix" issue="MATH-282">
        Resolved multiple problems leading to inaccuracy and/or failure to compute Normal,
        ChiSquare and  Poisson probabilities, Erf and Gamma functions.  Made Brent solver
        absolute accuracy configurable for all continuous distributions.
      </action>
      <action dev="luc" type="fix" issue="MATH-347" >
        Fixed too stringent interval check in Brent solver: initial guess is now
        allowed to be at either interval end
      </action>
      <action dev="luc" type="add" >
        Added a way to compute both the final state in an Initial Value Problem (IVP)
        for Ordinary Differential Equations (ODE) and its derivatives with respect to
        initial state and with respect to some problem parameters. This allows wrapping
        ODE solvers into optimization or root finding algorithms, which in turn can be
        used to solve Boundary Value Problems (BVP). There are no implementations (yet)
        of BVP solvers in the library.
      </action>
      <action dev="luc" type="fix" issue="MATH-358" >
        Fixed an error in events handling in ODE solvers. In some rare cases, events
        occurring close to a step start were handled without truncating the step, making
        them appear as is they occurred close to the step end
      </action>
      <action dev="luc" type="fix" >
        Fixed a problem with getInterpolatedDerivatives returning zero derivatives when
        an ODE step handler is configured to not use interpolation. It now returns a
        constant but non-zero value consistent with at least one point inside the step
      </action>
      <action dev="luc" type="fix" issue="MATH-344" >
        Fixed wrong return values when enpoints are roots in Brent solver with
        a user provided initial guess
      </action>
      <action dev="luc" type="fix" issue="MATH-343" >
        Fixed a missing bracketing check of initial interval in Brent solver.
      </action>
      <action dev="dimpbx" type="fix" issue="MATH-342">
        In SVD, the matrices passed to EigenDecomposition are now symmetric
        by construction (rather than simply by definition).  In EigenDecomposition,
        once the tridiagonal form is obtained, the non-significant elements are
        set to 0.
      </action>
      <action dev="dimpbx" type="fix" issue="MATH-333">
        A EigenDecompositionImpl simplified makes it possible to compute
        the SVD of a singular matrix (with the right number of elements in
        the diagonal matrix) or a matrix with singular value(s) of multiplicity
        greater than 1.
      </action>
      <action dev="psteitz" type="add" issue="MATH-323" due-to="Larry Diamond">
        Added SemiVariance statistic.
      </action>
      <action dev="luc" type="add" issue="MATH-341" >
        Added a warning in the getCoefficients method documentation for
        PolynomialFunctionLagrangeForm. Computation may be ill-conditioned
        so this method should be used with care.
      </action>
      <action dev="luc" type="add" issue="MATH-340" >
        Fixed an error in BigFraction multiplication for large numerators that don't
        fit in a primitive int.
      </action>
      <action dev="luc" type="fix" >
        Fixed a spurious exception in EigenDecompositionImpl when a 3x3 block
        had two identical eigenvalues.
      </action>
      <action dev="luc" type="add" issue="MATH-334" >
        Added min/max getters for real vectors (not yet in the RealVector interface for
        compatibility purposes, but in the AbstractRealVector abstract class).
      </action>
      <action dev="luc" type="fix" issue="MATH-338" due-to="Vincent Morand">
        Fixed automatic step initialization in embedded Runge-Kutta integrators.
        The relative tolerance setting was never used, only the absolute tolerance
        was used.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-329">
        Fixed regression in Frequency.getPct(Object) introduced in 2.0. Cumulative
        percent was being returned for Object arguments in place of percent.
      </action>
      <action dev="luc" type="add" issue="MATH-321" >
        Singular Value Decomposition now computes either the compact SVD (using only
        positive singular values) or truncated SVD (using a user-specified maximal
        number of singular values).
      </action>
      <action dev="luc" type="fix" issue="MATH-320" >
        Fixed Singular Value Decomposition solving of singular systems.
      </action>
      <action dev="psteitz" type="update" issue="MATH-239" due-to="Christian Semrau">
        Added MathUtils methods to compute gcd and lcm for long arguments.
      </action>
      <action dev="psteitz" type="update" issue="MATH-287" due-to="Matthew Rowles">
        Added support for weighted univariate statistics.
      </action>
      <action dev="luc" type="fix" issue="MATH-326" due-to="Jake Mannix">
        Fixed a wrong implementation of the Linf norm in vectors.
      </action>
      <action dev="luc" type="fix" issue="MATH-324" due-to="Vincent Morand">
        Fixed a convergence discrepancy with respect to theory in Gragg-Bulirsch-Stoer
        integrator.
      </action>
      <action dev="luc" type="fix" due-to="Dimitri Pourbaix">
        Fixed a wrong dimension check in SVD solver.
      </action>
      <action dev="luc" type="fix" issue="MATH-313" due-to="Jake Mannix">
        Added composition features for real functions.
      </action>
      <action dev="luc" type="fix" issue="MATH-312" due-to="Jake Mannix">
        Added mapping and iteration methods to vectors. Provided a default implementation
        for the numerous simple methods in the RealVectorInterface.
      </action>
      <action dev="luc" type="fix" issue="MATH-322" >
        Fixed an error in handling very close events in ODE integration.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-305" due-to="Erik van Ingen">
        Fixed an overflow error in MathUtils.distance that was causing KMeansPlusPlusClusterer
        to fail with a NullPointerException when component distances between points
        exceeded Integer.MAXVALUE.
      </action>
      <action dev="psteitz" type="update" issue="MATH-315" due-to="Mikkel Meyer Andersen">
        Added generationsEvolved property to GeneticAlgorithm to track the number of generations
        evolved by the evolve() method before reaching the StoppingCondition.
      </action>
      <action dev="luc" type="fix" issue="MATH-318" due-to="Dimitri Pourbaix">
        Fixed an index computation error in eigen decomposition. Once again, kudos to Dimitri
        for debugging this.
      </action>
      <action dev="luc" type="fix" issue="MATH-308" due-to="Dimitri Pourbaix">
        Fixed an ArrayIndexOutOfBoundsException in eigen decomposition. Kudos to Dimitri
        for debugging this, it was really difficult.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-309" due-to="Mikkel Meyer Andersen">
        Fixed parameter test in RandomDataImpl#nextExponential. The method now throws
        IllegalArgumentException for mean = 0.
      </action>
      <action dev="brentworden" type="update" issue="MATH-311" due-to="Nipun Jawalkar">
        Changed probability calculations for Binomial, Poisson, and Hypergeometric
        distributions to use Catherine Loader's saddle point approximations.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-306" due-to="Joerg Huber">
        Removed dead code from Complex#divide.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-294">
        Fixed implementation of RandomDataImpl#nextPoisson by implementing an alternative
        algorithm for large means.
      </action>
      <action dev="psteitz" type="add" issue="MATH-300" due-to="Gilles Sadowski">
        Added support for multidimensional interpolation using the robust microsphere algorithm.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-298">
        Fixed implementation of EmpiricalDistributionImpl#getUpperBounds to match
        interface contract.  Added getGeneratorUpperBounds method to
        EmpiricalDistributionImpl providing previous behavior.
      </action>
      <action dev="luc" type="fix" issue="MATH-296" due-to="Eugene Kirpichov">
        Fixed wrong results on Loess interpolation, also added a way to set weights
        for smoothing and to ignore zero weights for coefficients computation
      </action>
      <action dev="luc" type="fix" issue="MATH-293" due-to="Benjamin McCann">
        Fixed a OutOfBoundException in simplex solver when some constraints are tight.
      </action>
      <action dev="luc" type="fix" issue="MATH-291" due-to="Sebb">
        Fixed misleading number formats in error messages for adaptive
        stepsize integrators.
      </action>
      <action dev="psteitz" type="add" issue="MATH-287" due-to="Matthew Rowles">
        Added support for weighted descriptive statistics.
      </action>
      <action dev="psteitz" type="add">
        Added normalizeArray method to MathUtils.
      </action>
      <action dev="luc" type="fix" issue="MATH-290" due-to="Benjamin McCann">
        Fixed a NullPointerException in simplex solver when no solution is possible
        and some constraints are negative.
      </action>
      <action dev="luc" type="fix" issue="MATH-289" >
        Removed an unused argument in a private method in simplex solver.
      </action>
      <action dev="luc" type="fix" issue="MATH-288" due-to="Benjamin McCann">
        Fixed an error induced by entries set to 0 in simplex solver.
      </action>
      <action dev="luc" type="fix" issue="MATH-286" due-to="Benjamin McCann">
        Fixed an error leading the simplex solver to compute the right solution
        but return another one.
      </action>
      <action dev="luc" type="fix" issue="MATH-283" due-to="Michael Nischt">
        Prevent infinite loops in multi-directional direct optimization method when
        the start point is exactly at the optimal point.
      </action>
      <action dev="billbarker" type="fix" issue="MATH-297" due-to="Axel Kramer">
         Prevent possible zero divides on eigenvectors of indefinite matrices
      </action>
    </release>
    <release version="2.0" date="2009-08-03" description="
This is a major release. It combines bug fixes, new features and
changes to existing features. Most notable among the new features are:
decomposition algorithms in the linear algebra package (LU, QR, Cholesky,
SVD, eigen decomposition) which are based on the popular JAMA API (but
much faster); support for sparse matrices and vectors;
support for any field-based matrix (Complex, Fraction ...);
support for genetic algorithms;
several new optimization algorithms (Dantzig's simplex for linear
constrained problems, conjugate gradient, Brent);
support for curve fitting with special cases for harmonic and polynomial
functions;
support for state derivative in ODE step handlers;
new multistep integrators (Adams-Bashforth and Adams-Moulton) with
variable stepsize;
regression algorithms;
rank transformations;
Mersenne twister pseudo random number generator.
This release is NOT source and binary compatible with earlier versions
of Commons Math. Starting with version 2.0 of the library, the minimal
version of the Java platform required to compile and use Commons Math
is Java 5.  Users are encouraged to upgrade to this version, as in addition
to new features, this release includes numerous bug fixes.  Users of
Commons Math 1.0-1.2 should recompile their code against the 2.0 jar.
Most of the compilation errors users will encounter after the switch
will be due to classes moved due to package reorganization.  These errors
are simply solved by adjusting the import statements in users code.">
      <action dev="luc" type="fix" issue="MATH-281" due-to="Albert Huang">
        Fixed an error in RealMatrix javadoc
      </action>
      <action dev="luc" type="add" >
        Added an implementation of the Mersenne twister pseudo random number generator
        from Makoto Matsumoto and Takuji Nishimura
      </action>
      <action dev="luc" type="update" due-to="Gilles Sadowski">
        Changed the return type of the various interpolation algorithms to the
        specific implementation of UnivariateRealFunction each one uses
      </action>
      <action dev="luc" type="fix" issue="MATH-280">
        The behavior of the bracket method in UnivariateRealSolverUtils has been changed to return successfully
        when a tentative bracketing interval has a root exactly at one of its end points. Previously, such intervals
        triggered an exception.
      </action>
      <action dev="luc" type="add" issue="MATH-279" due-to="Michael Bjorkegren">
        Added a check for too few rows with respect to the number of predictors in linear regression
      </action>
      <action dev="luc" type="add" due-to="Dimitri Pourbaix">
        Added a getCovariance method to singular value decomposition
      </action>
      <action dev="luc" type="add" issue="MATH-278" due-to="Eugene Kirpichov">
        Added robust locally weighted regression (Loess).
      </action>
      <action dev="luc" type="add" issue="MATH-277" due-to="Mark Anderson">
        Added a scalar multiply to the Complex class
      </action>
      <action dev="luc" type="add" >
        Added curve fitting with a general case and two specific cases (polynomial and harmonic).
      </action>
      <action dev="psteitz" type="update" issue="MATH-276" due-to="Mark Anderson">
        Optimized Complex isNaN(), isInfinite() by moving computation to constructor.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-207" due-to="David Stefka">
        Added Genetic Algorithm implementation.
      </action>
      <action dev="luc" type="fix" issue="MATH-274" >
        Fixed detection of not positive definite matrices in Cholesky decomposition
      </action>
      <action dev="luc" type="fix" issue="MATH-273" due-to="Benjamin McCann">
        Fixed a wrong check for basic variables
      </action>
      <action dev="luc" type="fix" issue="MATH-272" due-to="Benjamin McCann">
        Fixed a problem when setting some variables (several variables were set
        instead of only one)
      </action>
      <action dev="luc" type="add" due-to="Gilles Sadowski">
        Added a way to limit the number of functions evaluations in optimizers
        (the number of iterations could already be limited)
      </action>
       <action dev="psteitz" type="add" issue="MATH-267" due-to="Ted Dunning">
        Added digamma function.
      </action>
      <action dev="psteitz" type="add" issue="MATH-136" due-to="John Gant">
        Added Spearman's rank correlation (SpearmansCorrelation).
      </action>
      <action dev="psteitz" type="add">
        Added support for rank transformations.
      </action>
      <action dev="luc" type="update">
        Completed internationalization of all error messages
      </action>
      <action dev="luc" type="add" issue="MATH-266" due-to="Benjamin McCann">
        Added a clustering package with an implementation of the k-means++ algorithm
      </action>
      <action dev="luc" type="fix" issue="MATH-265" due-to="Benjamin McCann">
        Added distance1, distance and distanceInf utility methods for double and
        int arrays in MathUtils
      </action>
      <action dev="luc" type="fix" issue="MATH-264" due-to="Gilles Sadowski">
        Added an utility equality method between double numbers using tolerance
        in ulps (Units in Last Position)
      </action>
      <action dev="luc" type="fix" issue="MATH-263">
        Added getNorm1, getNormInf, distance1 and distanceInf to the Vector3D class
      </action>
      <action dev="luc" type="add" >
        Added support for any type of field in linear algebra (FielxMatrix, FieldVector,
        FieldLUDecomposition)
      </action>
      <action dev="luc" type="add" >
        The RealMatrixImpl implementation classes has been renamed Array2DRowRealMatrix
        to reflect its specificities and for consistency with the new implementations. The
        previous name is still available but is deprecated
      </action>
      <action dev="luc" type="add" >
        Added a block-based storage type for dense matrices improving speed for large dimensions
      </action>
      <action dev="psteitz" type="add" due-to="John Bollinger">
        Added AggregateSummaryStatistics class to support aggregation of SummaryStatistics.
      </action>
      <action dev="luc" type="add" >
        Added general Field and FieldElement interfaces to allow generic algorithms
        to operate on fields. The library already provides several implementations:
        Complex, Fraction, BigFraction and BigReal
      </action>
      <action dev="luc" type="fix" issue="MATH-257" due-to="Sebb">
        Fixed inconsistent access to multidimensional array in FastFourierTransformer
      </action>
      <action dev="luc" type="fix" issue="MATH-248" >
        Greatly improved multiplication speed for sparse matrices
      </action>
      <action dev="luc" type="fix" issue="MATH-253" due-to="Sebb">
        Fixed threading issues with MathException and MathRuntimeException
      </action>
      <action dev="luc" type="fix" issue="MATH-254" due-to="Sebb">
        Fixed threading issues with UnivariateRealSolverUtils factory
      </action>
      <action dev="luc" type="fix" issue="MATH-255" due-to="Sebb">
        Reduced visibility of MessagesResources_fr.contents field to private
      </action>
      <action dev="luc" type="add" issue="MATH-256" >
        Added  Fraction.toString()
      </action>
      <action dev="luc" type="add">
        Added  add/subtract/multiply/divide functions with integer parameters to Fraction
      </action>
      <action dev="luc" type="add">
        Added some utility functions to compute powers with integral types (int, long, BigInteger).
      </action>
      <action dev="luc" type="fix" issue="MATH-252">
        Fixed a comparison error when two different fractions evaluate to the
        same double due to limited precision.
      </action>
      <action dev="luc" type="add" issue="MATH-251" due-to="Benjamin Croizet">
        Added a BigFraction class that does not overflow when big numerators or
        denominators are used.
      </action>
      <action dev="luc" type="add" issue="MATH-246" due-to="Benjamin McCann">
        Added an optimizer for constrained linear problems based on 2-phases standard simplex.
      </action>
      <action dev="luc" type="fix" issue="MATH-177" >
        Redesigned the optimization framework for a simpler yet more powerful API.
        Added non-linear conjugate gradient optimizer.
      </action>
      <action dev="luc" type="fix" issue="MATH-243" due-to="Christian Semrau">
        Fixed an error in computing gcd and lcm for some extreme values at integer
        range boundaries.
      </action>
      <action dev="luc" type="add" issue="MATH-247" due-to="Benjamin McCann">
        Added a MathUtils method to check equality given some error bounds.
      </action>
      <action dev="psteitz" type="add" issue="MATH-114" due-to="John Gant">
        Added PearsonsCorrelation class to compute correlation matrices, standard
        errors and p-values for correlation coefficients.
      </action>
      <action dev="psteitz" type="add" issue="MATH-114">
        Added Covariance class to compute variance-covariance matrices in new
        correlation package.
      </action>
      <action dev="luc" type="fix" issue="MATH-216" due-to="Cyril Briquet">
        Improved fast Fourier transform efficiency.
      </action>
      <action dev="billbarker" type="add">
         Added a SparseRealVector class that implements a sparse vector for the RealVector interface.
      </action>
      <action dev="luc" type="add" >
        Added factory methods to create Chebyshev, Hermite, Laguerre and Legendre polynomials.
      </action>
      <action dev="luc" type="add" >
        Added add, subtract, negate, multiply and toString methods to PolynomialFunction.
      </action>
      <action dev="psteitz" type="update" issue="MATH-189">
        Changed FractionFormat to extend NumberFormat.
      </action>
      <action dev="psteitz" type="update" issue="MATH-242" due-to="Christian Semrau">
        Forced symmetry in binomialCoefficientLog and added test cases for MathUtils.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-241" due-to="Christian Semrau">
        Fixed error in binomial coefficient computation.
      </action>
      <action dev="luc" type="add" >
        Added a Legendre-Gauss integrator.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-240" due-to="Christian Semrau">
        Fixed error in factorial computation for 17 &lt;= n &lt;= 20.
      </action>
      <action dev="luc" type="update" >
        Integration algorithms now can have both relative and absolute
        accuracy settings.
      </action>
      <action dev="luc" type="add" issue="MATH-177" due-to="Gilles Sadowski">
        Added a new univariate sub-package below the optimization package.
      </action>
      <action dev="luc" type="update" >
        The analysis package has been reorganized with several sub-packages.
      </action>
      <action dev="luc" type="fix" issue="MATH-238" due-to="Christian Semrau">
        Fixed an error in gcd computation for large values.
      </action>
      <action dev="luc" type="add" >
        Added method to walk matrix entries with or without changing them in the
        visitor design pattern sense. Three different orders can be used, row by row,
        column by column or optimized order according to internal storage. Optimized
        order should be preferred when no specific order is needed, because it will be
        more cache efficient.
      </action>
      <action dev="luc" type="add" issue="MATH-215" due-to="Bernhard Grünewaldt">
        Added Fast Hadamard Transform.
      </action>
      <action dev="luc" type="add" issue="MATH-236" due-to="Bernhard Grünewaldt">
        Added nth root computation for complex numbers.
      </action>
      <action dev="luc" type="add" issue="MATH-230" due-to="Sujit Pal and Ismael Juma">
        Added support for sparse matrix.
      </action>
      <action dev="luc" type="add" due-to="Ismael Juma">
        Added an int/double hash map (OpenIntToDoubleHashMap) with much smaller
        memory overhead than standard java.util.Map (open addressing and no boxing).
      </action>
      <action dev="luc" type="add" issue="MATH-152" due-to="Remi Arntzen">
        Added support for multi-dimensional Fourier transform.
      </action>
      <action dev="luc" type="update" issue="MATH-218" >
        The root solvers and the integrators now take the function to solve as a
        parameter to the solve/integrate methods, thus allowing to reuse the same
        solver/integrator for different functions.
      </action>
      <action dev="luc" type="add" issue="MATH-234" >
        Added setter methods for rows and columns in matrices.
      </action>
      <action dev="luc" type="add" issue="MATH-232" >
        Added Frobenius matrix norm.
      </action>
      <action dev="luc" type="add" issue="MATH-231" >
        Added an abstract matrix implementation simplifying extension by users.
      </action>
      <action dev="luc" type="add" issue="MATH-178" due-to="Paul Cowan">
        Added support for the Zipf distribution.
      </action>
      <action dev="psteitz" type="add" issue="MATH-212" due-to="Jason C. HandUber">
        Added support for copying statistics. Changes to stats classes
        include copy constructor, static copy(-,-) and instance copy()
        methods. Added copy() to UnivariateStatistic and StorelessUnivariateStatistic
        interfaces.
      </action>
      <action dev="luc" type="add" issue="MATH-229" due-to="Cyril Briquet">
        Added a removal feature for observations in descriptive statistics.
      </action>
      <action dev="luc" type="add" >
        Added a scalb method in MathUtils. This method is similar to the method
        with same name added in java.lang.Math as of Java 6.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-227" due-to="Joerg Henning">
        Fixed F distribution inverse CDF computation for small denominator degrees of freedom.
      </action>
      <action dev="luc" type="fix" issue="MATH-226" due-to="Stuart Siegel">
        Fixed an error in CorrelatedRandomVectorGenerator leading to a component of
        the generated vector being constant.
      </action>
      <action dev="luc" type="fix" issue="MATH-223" due-to="John Mulcahy">
        Greatly improved QR-decomposition speed using transposed matrices internally.
      </action>
      <action dev="luc" type="fix" due-to="Pascal Parraud">
        Fixed an infinite loop encountered in some backward integration cases for ODE solvers.
      </action>
      <action dev="luc" type="add" issue="MATH-222" due-to="Ted Dunning">
        Added beta distribution.
      </action>
      <action dev="luc" type="add" issue="MATH-222" due-to="Ted Dunning">
        Added probability density functions computation for distributions for which
        it is feasible.
      </action>
      <action dev="luc" type="fix" issue="MATH-221" due-to="Dieter Roth">
        Changed the Complex.equals() method so that it considers +0 and -0 are equal,
        as required by IEEE-754 standard.
      </action>
      <action dev="luc" type="add" issue="MATH-220">
        Added JAMA-like interfaces for eigen/singular problems. The implementation
        are based on the very quick dqd/dqds algorithms and some parts of the MRRR
        algorithm. This leads to very fast and accurate solutions.
      </action>
      <action dev="luc" type="add" issue="MATH-220" >
        Added JAMA-like interfaces for decomposition algorithms. These interfaces
        decompose a matrix as a product of several other matrices with predefined
        properties and shapes depending on the algorithm. These algorithms allow to
        solve the equation A * X = B, either for an exact linear solution
        (LU-decomposition, Cholesky decomposition) or an exact or least-squares
        solution (QR-decomposition).
      </action>
      <action dev="luc" type="add" issue="MATH-219" due-to="Andrew Berry">
        Added removeData methods for the SimpleRegression class. This allows
        to support regression calculations across a sliding window of (time-based)
        observations without having to recalculate for the entire window every time.
      </action>
      <action dev="luc" type="add" due-to="Andreas Rieger">
        Support for one dimensional vectors has been added to the linear algebra
        package with a RealVector interface, a RealVectorImpl default implementation
        using a single double array to store elements and a RealVectorFormat for
        input/output.
      </action>
      <action dev="psteitz" type="update" issue="MATH-217">
        Changed OLS regression implementation added in MATH-203 to use
        QR decomposition to solve the normal equations.
      </action>
      <action dev="luc" type="add">
        New ODE integrators have been added: the explicit Adams-Bashforth and implicit
        Adams-Moulton multistep methods. As the implementations of these methods are based
        on Nordsieck vector rather than a traditional array of previous steps, they both
        have been improved to handle adaptive stepsize. These methods provide the same rich
        features has the existing ones: continuous output, step handlers, discrete events,
        G-stop ...
      </action>
      <action dev="luc" type="fix" issue="MATH-214" >
        Replaced size adjustment of all steps of fixed steps Runge-Kutta integrators by
        a truncation of the last step only.
      </action>
      <action dev="luc" type="update">
        The ODE integrators now support several step handlers at once, instead of just one.
        This is more consistent with event handlers management.
        The setStepHandler method has therefore been replaced by addStephandler, the
        getStepHandler method has been replaced by getStepHandlers which returns a Collection
        and a clearStepHandlers method has been added.
      </action>
      <action dev="luc" type="add">
        All ODE integrators now support setting a maximal number of evaluations of differential
        equations function. If this number is exceeded, an exception will be thrown during
        integration. This can be used to prevent infinite loops if for example error control or
        discrete events create a really large number of extremely small steps.
      </action>
      <action dev="luc" type="add">
        All step interpolators for ODE integrators now provide interpolation for
        both the state and its time derivatives. The interpolated derivatives are
        the exact derivatives of the interpolated state, thus preserving consistency.
        The general step handlers hence do not need to call the derivation function
        anymore. The fixed step handlers also get the time derivative of the state
        as an additional argument along with the state when they are called.
      </action>
      <action dev="luc" type="fix" issue="MATH-213" >
        Changed return type for FirstOrderIntegrator.integrate() to double
        in order to retrieve exact stop time. This allows to handle properly
        integration interruption due to an EventHandler instance asking to
        stop the integration when its associated event is triggered. The state
        was already set to the current state at interruption time, but it was
        difficult to get the corresponding time (it involved setting a step
        handler monitoring the last step specially).
      </action>
      <action dev="luc" type="update" >
        Events handlers in the ODE package now also provide the switching function
        variation (increasing/decreasing) when an event occurs
      </action>
      <action dev="luc" type="update">
        Clarified the ODE package by breaking in into several sub-packages and renaming
        classes (SwitchingFunctions/EventHandler, SwitchingFunctionsHandler/CombinedEventsManager)
      </action>
      <action dev="luc" type="fix" issue="MATH-210" >
        Changed return type for FirstOrderIntegrator.getSwitchingFunctions()
        to a collection of SwitchingFunction instances. This better suits the
        intended use of the method and fixes a visibility error since the
        previous return type referenced the package private SwitchState class.
      </action>
      <action dev="luc" type="fix" issue="MATH-209" due-to="Thomas Chust">
        Fixed dimension error on output vector for the operate method
        in RealMatrixImpl and BigMatrixImpl classes.
      </action>
      <action dev="luc" type="update">
        The FirstOrderDifferentialEquations, FirstOrderIntegrator and FixedStepHandler
        interfaces now extends Serializable, allowing integrators, problems and
        handlers to be embedded into users Serializable classes.
      </action>
      <action dev="luc" type="add">
        Added several convenience methods and constants for Vector3D and Rotation.
      </action>
      <action dev="luc" type="update">
        Replaced public no argument constructors with IDENTITY or ZERO
        static instances for immutable classes Vector3D and Rotation.
      </action>
      <action dev="luc" type="fix">
        Fixed inconsistencies in the naming scheme for static fields in
        Vector3D and Rotation with respect to the overall library.
      </action>
      <action dev="luc" type="update" >
        Greatly improved RealMatrixImpl and BigMatrixImpl performances,
        both in terms of speed and in terms of temporary memory footprint.
      </action>
      <action dev="luc" type="add" issue="MATH-203" due-to="Mauro Talevi">
        Added Mauro's patch to support multiple regression.
      </action>
      <action dev="luc" type="update" >
        Starting with version 2.0 of the library, the minimal version of the Java
        platform required to compile and use Commons Math is Java 5. This version
        is widely deployed now on many systems. It brings new important features
        for specific mathematical developments, for example new functions (log10,
        cbrt, ulp, signum, cosh, sinh, tanh, hypot, expm1, log1p), autoboxing,
        MathContext or RoundingMode. It also brings important features for general
        development, for example enums, generics or annotations.
      </action>
      <action dev="luc" type="add" >
        Switching functions can now throw dedicated SwitchException from all their
        method. At upper call level, the various ODE integrators handle these new
        exceptions and wrap them into IntegratorException instances, hence the
        integrators methods signature did not change.
      </action>
      <action dev="luc" type="add" issue="MATH-202">
        Added the getSwitchingFunctions and clearSwitchingFunctions to the
        FirstOrderIntegrator interface and all its implementations
      </action>
      <action dev="luc" type="update" >
        Removed deprecated features. This includes the following changes. Factory-based
        instantiation replaced by setter injection in 1.2 in several classes have been
        removed. Protected fields in matrices implementations have been declared final
        and private. Identity factory methods moved to MatrixUtils class have been
        removed. Complex utilities methods that have been superseded by Complex instance
        methods have been removed.
      </action>
      <action dev="luc" type="fix" issue="MATH-205" due-to="Roman Werpachowski">
        Fixed formula in fast cosine transformer javadoc comments.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-193" due-to="Michael Heuer and Sebb">
        Javadoc and style fixes.
      </action>
      <action dev="luc" type="fix" issue="MATH-198" due-to="Frederick Salardi">
        Added an error detection for missing imaginary character while parsing complex string
      </action>
      <action dev="luc" type="fix" issue="MATH-199" due-to="Mick">
        Detect numerical problems in Q.R decomposition for Levenberg-Marquardt estimator
        and report them appropriately
      </action>
      <action dev="luc" type="fix" issue="MATH-200" due-to="Plamen Petrov">
        Fixed several crashes in getCovariances() and guessParametersErrors() in
        AbstractEstimator when some parameters are bound. The methods now explicitly
        give result only about unbound parameters.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-201" due-to="Peter Wyngaard">
        Fixed truncation error in t-test classes for large t values.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-204" due-to="Mick">
        Added root checks for the endpoints.
      </action>
    </release>
    <release version="1.2" date="2008-02-24"
    description="This release combines bug fixes and new features. Most notable
    among the new features are the estimation, optimization, geometry and ode
    packages added from the Mantissa library. Implementations of fast Fourier
    transform, QR decomposition and several numerical integration algorithms
    have also been added, along with enhancements and extensions to packages
    included in Commons Math 1.1. This release is source and binary compatible
    with earlier versions of Commons Math.">
      <action dev="luc" type="fix">
        Fixed numerous warnings in test code.
      </action>
      <action dev="luc" type="fix" issue="MATH-156" due-to="Tyler Ward">
        Use the initial guess provided by the user in BrentSolver.solve(), thus
        improving speed.
      </action>
      <action dev="luc" type="add">
        Added the estimation, optimization, geometry and ode packages from the
        Mantissa library.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-18" due-to="Phil Steitz">
        Made ComplexFormat format double values with a provided NumberFormat
        instance instead of using the real part format for all values.
      </action>
      <action dev="psteitz" type="add" issue="MATH-120" due-to="Todd C. Parnell">
        Added Pascal distribution implementation.
      </action>
      <action dev="psteitz" type="add" issue="MATH-148" due-to="Joni Salonen">
        Added QR Decomposition.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-60" due-to="Nhung Nnguyen">
        Modified ProperFractionFormat to reject embedded minus signs.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-151" due-to="Luc Maisonobe">
        Added a nextAfter method in MathUtils to return the next
        machine-representable number in a specified direction from a given
        floating point number.  Used this to ensure that MathUtils.round does
        not return incorrect results for numbers with bad IEEE754
        representations.
      </action>
      <action dev="psteitz" type="add" issue="MATH-140" due-to="Xiaogang Zhang">
        Added Fast Fourier Transform implementation.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-85" due-to="Mark Osborn, Luc Maisonobe">
        Modified getSumSquaredErrors method in SimpleRegression to always
        return a non-negative result.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-153" due-to="Remi Arntzen">
        Corrected nextInt and nextLong to handle wide value ranges.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-166" due-to="Lukas Theussl">
        Increased default precision of Gamma and Beta functions.
      </action>
      <action dev="psteitz" type="update" issue="MATH-158" due-to="Hasan Diwan">
        Added log function to MathUtils.
      </action>
      <action dev="psteitz" type="update" issue="MATH-160" due-to="Matthias Hummel">
        Added two sample (binned comparison) ChiSquare test.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-167">
        Modified NormalDistributionImpl.cumulativeProbablity to catch
        MaxIterationsExceededException and return 0 or 1, resp. if the argument
        is more than 20 standard deviations from the mean.
      </action>
      <action dev="brentworden" type="update" issue="MATH-170" due-to="David J. M. Karlsen">
        Added SynchronizedDescriptiveStatistics class.
      </action>
      <action dev="brentworden" type="update" issue="MATH-154" due-to="Remi Arntzen">
        Added addAndCheck, mulAndCheck, and subAndCheck MathUtils methods for
        long integer arguments.
      </action>
      <action dev="psteitz" type="update" issue="MATH-171" due-to="Niall Pemberton">
        Merged most functions from ComplexUtils into Complex class, added
        static factory method to Complex.
      </action>
      <action dev="psteitz" type="update">
        Deprecated abstract factory methods and made DescriptiveStatistics and
        and SummaryStatistics concrete classes. Pushed implementations up
        from DescriptiveStatisticsImpl, SummaryStatisticsImpl. Made
        implementations of statistics configurable via setters.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-174">
        Changed Mean.evaluate() to use a two-pass algorithm, improving accuracy
        by exploiting the the fact that this method has access to the full
        array of data values.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-175" due-to="Carl Anderson">
        Added check and rescaling of expected counts to sum to sum of expected
        counts if necessary in ChiSquare test.
      </action>
      <action dev="luc" type="fix" issue="MATH-164">
        Handle multiplication of Complex numbers with infinite parts specially.
      </action>
      <action dev="luc" type="update" issue="MATH-176" due-to="Kazuhiro Koshino">
        Add errors guessing to least-squares estimators.
      </action>
      <action dev="luc" type="update" issue="MATH-179" due-to="Niall Pemberton">
        Add tests for Fraction constructor using double parameter.
      </action>
      <action dev="psteitz" type="add" issue="MATH-173" due-to="Bob MacCallum">
        Added one-way ANOVA implementation.
      </action>
      <action dev="luc" type="update" issue="MATH-181" due-to="Niall Pemberton">
        Add Fraction constructor using max denominator value.
      </action>
      <action dev="luc" type="fix" issue="MATH-182">
        Add integer overflow checks in Fraction constructor using double parameter.
      </action>
      <action dev="luc" type="fix" issue="MATH-185">
        Throw EOFException when using empty files with ValueServer in replay and
        digest modes.
      </action>
      <action dev="luc" type="update" >
        Added a equals and hash methods in MathUtils to check for double arrays
      </action>
      <action dev="luc" type="add" >
        Added an angle normalization method in MathUtils to force angles in some
        user-defined interval
      </action>
      <action dev="luc" type="add" >
        Added vectorial covariance computation (either sample or population
        covariance)
      </action>
      <action dev="luc" type="add" >
        Added multivariate summary statistics.
      </action>
      <action dev="psteitz" type="update" issue="MATH-191">
        Added getSumOfLogs method to SummaryStatistics and made SumOfLogs
        instance used by GeometricMean configurable.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-184" due-to="Yegor Bryukhov">
        Fixed AbstractIntegerDistribution cumulativeProbablility(-,-)
        to correctly handle double arguments.
      </action>
      <action dev="psteitz" type="update" issue="MATH-188" due-to="Sebastian Bazley">
        Made numerator and denominator final in Fraction and
        deprecated protected real and imaginary parts fields in Complex,
        making Fraction immutable and preparing Complex to become fully
        immutable in 2.0.
      </action>
    </release>
    <release version="1.1" date="2005-12-17"
 description="This is a maintenance release containing bug fixes and enhancements.
       All API changes are binary compatible with version 1.0. The enhancements
       include some new probability distributions, a Fraction class, new matrix
       and numerical utilities, and a PRNG pluggability framework making it
       possible to replace the JDK-supplied random number generator in
       Commons Math (and elsewhere) with alternative PRNG implementations.">
      <action dev="psteitz" type="fix" issue="MATH-74">
        Made NewtonSolver derivative field transient and implemented readObject to
        initialize.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-74">
       Made sampleStats field private and changed getUpperBounds to return a fresh
       copy in EmpiricalDistributionImpl.
      </action>
      <action dev="psteitz" type="update">
        Added polar2Complex method to ComplexUtils to create Complex numbers
        from polar representations.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-49" due-to="Elliotte Harold">
        Made all serialVersionUIDs private.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-5">
        Improved documentation and test cases related to handling of infinite
        and NaN values in Complex, ComplexUtils classes.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-57" due-to="Mauro Talevi">
        Fixed incorrect NaN handling in o.a.m.s.d.rank.Min, Max
      </action>
      <action dev="psteitz" type="fix" issue="MATH-74">
       Changed RealMatrixImpl.equals to use Double.doubleToLongBits to compare
       corresponding matrix entries.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-74">
       Eliminated floating point equals comparison in Percentile.evaluate.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-74">
       Eliminated unnecessary assignment statements in Skewness.getResult
       method.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-74">
       Synchronized getters in ResizeableDoubleArray.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-74">
       Eliminated unnecessary assignment statement in BisectionSolver.solve
       method.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-74">
       Implemented hashCode in the Complex class and changed the semantics of
       equals to make all instances with real or imaginary part NaN equal.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-12" due-to="Keith McDonald">
        Fixed bin index overflow problem in EmpiricalDistributionImpl.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-108" due-to="Xiaogang Zhang">
        Added protection against numerical overflow and underflow in the
        isBracketing method.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-47" due-to="Nikhil Gupte">
        Fixed division by zero error in rounding methods.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-100" due-to="Mike Hu">
        Added upper tail cumulative probability method to HypergeometricDistributionImpl.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-22" due-to="Xiaogang Zhang">
        Added better handling of numerical overflow and division by zero in
        Complex calculations.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-92" due-to="Mikael Weigelt">
        Changed ContinuedFraction to better handle infinite convergents that
        resulted in divergent continued fraction evaluations.
      </action>
      <action dev="brentworden" type="fix" issue="MATH-32"  due-to="Srinivas Vemury">
        Changed rounding methods to not rely on BigDecimal conversions which
        was causing numerical error.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-3"  due-to="Jörg Weimar">
        Changed Fraction(double) to correctly handle near-integral arguments.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-143"  due-to="Jörg Weimar">
        Changed lcm to throw ArithmeticException (instead of returning bogus
        value) if the result is too large to store as an integer.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-70"  due-to="Mary Ellen Foster">
        Added factories for TTest, ChiSquareTest and TestUtils class with
        static methods to create instances and execute tests.
      </action>
      <action dev="psteitz" type="update" issue="MATH-95"  due-to="Paul Field">
        Eliminated repeated endpoint function evalutations in BrentSolver, SecantSolver.
      </action>
      <action dev="psteitz" type="update" issue="MATH-137"  due-to="Rodrigo di Lorenzo Lopes">
        Added setSubMatrix methods to RealMatrixImpl, BigMatrixImpl.  To
        Preserve backward compatibility with version 1.0, these methods were
        not added to the RealMatrix, BigMatrix interfaces.
      </action>
      <action dev="psteitz" type="update">
        Added createXIdentityMatrix methods to MatrixUtils and deprecated
        getIdentity methods in RealMatrixImpl, BigMatrixImpl.
        Modified RealMatrixImpl, BigMatrixImpl constructors to throw
        IllegalArgumentExceptions instead of ArrayIndexOutOfBounds when
        dimension arguments are not positive.
      </action>
      <action dev="psteitz" type="update">
        Made PRNG pluggable for classes in the random package.  Added
        RandomGenerator interface extracted from java.util.random and abstract
        implementation, AbstractRandomGenerator providing default
        implementations of methods based on nextDouble().  Added a constructor
        taking a RandomGenerator as an argument to RandomDataImpl.  Changed
        ValueServer to use a RandomData in its constructor.  Changes to
        1.0 classes should be backward compatible (including serialization).
      </action>
      <action dev="psteitz" type="update" due-to="C. Scott Ananian">
        Added utility methods for overflow-checked integer arithmetic and
        improved gcd method in MathUtils.
      </action>
       <action dev="psteitz" type="fix" issue="MATH-79" due-to="Gilles Gaillard">
        Fixed error in TTestImpl.homoscedasticTtest.  Implementation was
        incorrectly using heteroscedastic t statistic.  Also improved
        sensitivity of test cases.
      </action>
      <action dev="psteitz" type="fix" issue="MATH-44" due-to="Gilles Gaillard">
        Fixed javadoc errors. One-sided t-test significance adjustment was
        reversed in javadoc for boolean-valued test methods.
      </action>
      <action dev="brentworden" type="fix" due-to="Ben Litchfield">
        Fixed bug in PolynomialSplineFunction to allow evaluation of the
        function at the last knot point.
      </action>
      <action dev="brentworden" type="add">
        Added Weibull distribution implementation.
      </action>
      <action dev="brentworden" type="add">
        Added Cauchy distribution implementation.
      </action>
      <action dev="brentworden" type="add">
        Added convenience methods for rounding.
      </action>
      <action dev="brentworden" type="add" due-to="C. Scott Ananian">
        Added Fraction class based on commons-lang implementation.  With the
        fraction class, FractionFormat and ProperFractionFormat classes were
        added to provide fraction formatting and parsing.
      </action>
    </release>
    <release version="1.0" date="2004-12-06"
       description="Apache Commons Math 1.0 - Initial Release">
    </release>
  </body>
</document>
