<?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 xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons Math Release Notes</title>
  </properties>
  <body>
    <release version="TBD" date="TBD" description="TBD">
    </release>

    <release version="4.0" date="XXXX-XX-XX" description="
This is a major release that requires source changes in applications.

Lower-level functionality has been split off to new components, often
 with bug-fixes, performance enhancements and improved API:
  Commons RNG,
  Commons Numbers,
  Commons Geometry,
  Commons Statistics.

Functionality still within Commons Math has been modularized and
 partly refactored.
 This is a work-in-progress (help welcome).
 Codes for which the refactoring has not been undertaken (or was
 deemed incomplete) have been moved to 'legacy' modules.

The minimum version of the Java platform required to compile and use
 Commons Math is Java 8.

Users are encouraged to upgrade to this version, and to the new
 components listed above (they are now Commons Math's dependencies).

For codes that are now located in the 'commons-math-legacy' module,
 upgrading will be a matter of changing the top-level package name:
 From 'org.apache.commons.math3' to 'org.apache.commons.math4.legacy'.
 Codes that are now located in the 'commons-math-legacy-core' module
 comprise classes that moved from packages 'org.apache.commons.math3'
 and 'org.apache.commons.math3.util' (e.g. 'MathArrays') over to
 package 'org.apache.commons.math4.legacy.core'.

Notes:
 Class 'FastMath' has been renamed 'AccurateMath' (now located in
 package 'org.apache.commons.math4.legacy.core.jdkmath').

Caveat:
 Although hundreds of issues have been fixed (see 'git log' and the
 reports in the bug-tracking system of all the listed components),
 many remain, due to the lack of human resources necessary in order
 to support the whole codebase.  [The Commons Math maintenance
 nightmare was one of the main reasons for creating more focused
 components.]
">
      <action dev="aherbert" due-to="Arturo Bernal" type="update">
        Simplify assertions with simpler equivalent.
      </action>
      <action dev="erans" type="add" issue="MATH-1622">
        Update class "SimplexOptimizer" (in package "o.a.c.m.legacy.optim.nonlinear.scalar.noderiv")
        to support simulated annealing.
      </action>
      <action dev="aherbert" due-to="Arturo Bernal" type="update" issue="MATH-1573">
        Remove redundant local variables.
      </action>
      <action dev="aherbert" due-to="Arturo Bernal" type="update" issue="MATH-1572">
        Simplify conditional expressions.
      </action>
      <action dev="erans" type="update" issue="MATH-1616">
        Refactor "EmpiricalDistribution" class (in package "o.a.c.m.legacy.distribution").
      </action>
      <action dev="erans" type="fix" issue="MATH-1379" due-to="Richard Wilkinson">
        Fix "LoessInterpolator" (in package "o.a.c.m.legacy.analysis.interpolation").
      </action>
      <action dev="erans" type="fix" issue="MATH-1617" due-to="Ng Tsz Sum">
        Class "BigReal": Fix equality check.
      </action>
      <action dev="erans" type="update" issue="MATH-1595">
        Clean up "o.a.c.math4.legacy.random" package.
      </action>
      <action dev="erans" type="update" issue="MATH-1615">
        Remove class "StableRandomGenerator" (in package "o.a.c.m.legacy.random").
      </action>
      <action dev="erans" type="update" issue="MATH-1614">
        Refactor "SimplexOptimizer" (in package "o.a.c.m.legacy.optim.nonlinear.scalar.noderiv").
      </action>
      <action dev="erans" type="fix" issue="MATH-1613">
        Decrease maximum number of iterations in "SimpsonIntegrator" and
        "TrapezoidIntegrator" (due to the available range of the internal
        counter of function evaluations).
      </action>
      <action dev="erans" type="fix" issue="MATH-1431" due-to="Artem Onuchin">
        "EmpiricalDistribution" handles empty bin.
      </action>
      <action dev="erans" type="update" issue="MATH-1582">
        Transforms codes moved into a dedicated maven module.
      </action>
      <action dev="erans" type="update" issue="MATH-1578">
        ANN codes moved into a dedicated maven module.
      </action>
      <action dev="erans" type="update" issue="MATH-1575">
        Modularization set-up: All codes were moved into a "legacy" maven module.
        WIP: Functionalities should gradually be moved into dedicated modules.
      </action>
      <action dev="erans" type="fix" issue="MATH-1565" due-to="Randy Strauss">
        Add context to "OutOfRangeException".
      </action>
      <action dev="erans" type="update" issue="MATH-1562" due-to="Frank Ulbricht">
        Add "Automatic-Module-Name" entry to JAR manifest file.
      </action>
      <action dev="erans" type="fix" issue="MATH-1558" due-to="Sam Ritchie">
        "MidPointIntegrator": Fix iterative procedure in order to actually benefit
        from evaluations performed at earlier stages.
      </action>
      <action dev="erans" type="fix" issue="MATH-1555" due-to="Laurent Galluccio">
        "Atan2": Documentation issue.
      </action>
      <action dev="erans" type="add" issue="MATH-1551" due-to="Allen Yu">
        "Percentile": Partial support for weighted data.
      </action>
      <action dev="erans" type="update" issue="MATH-1554">
        Remove package "o.a.c.math4.geometry".
      </action>
      <action dev="erans" type="fix" issue="MATH-1549" due-to="Mohammad Rezaei">
        "SimplexTableau": Internally "scale down" the problem definition when the
        constraints are defined with large numbers, in order to avoid spurious
        exceptions caused by floating-point accuracy errors.
      </action>
      <action dev="erans" type="fix" issue="MATH-1548">
        Avoid inefficiencies in computing the standard quality measures of a SOFM.
      </action>
      <action dev="erans" type="update" issue="MATH-1547">
        More flexible ranking of SOFM.
      </action>
      <action dev="erans" type="fix" issue="MATH-1537" due-to="Jin Xu">
        Clean-up (typos and unused "import" statements).
      </action>
      <action dev="erans" type="fix" issue="MATH-1531">
        "EmpiricalDistribution": Workaround to avoid spurious exception.
      </action>
      <action dev="erans" type="update" issue="MATH-1530" due-to="Yassine Damerdji">
        "SplineInterpolator": Improved performance.
      </action>
      <action dev="erans" type="add" issue="MATH-1529">
        "AkimaSplineInterpolator": Option to use alternative weights.
      </action>
      <action dev="erans" type="add" issue="MATH-1509" due-to="Chen Tao">
        Add "MiniBatchKMeansClusterer" clustering algorithm.
      </action>
      <action dev="erans" type="update" issue="MATH-1524" due-to="Chen Tao">
        Code reuse.
      </action>
      <action dev="erans" type="fix" issue="MATH-1511">
        Issue in site generation and developers documentation.
      </action>
      <action dev="erans" type="update" issue="MATH-1522" due-to="Chen Tao">
        Remove generic parameter in clustering evaluator interfaces.
      </action>
      <action dev="erans" type="add" issue="MATH-1519" due-to="Chen Tao">
        Add "Calinski-Harabsz" clustering evaluator.
      </action>
      <action dev="erans" type="update" issue="MATH-1523">
        Abstract class "ClusterEvaluator" replaced by an interface.
      </action>
      <action dev="erans" type="fix" issue="MATH-1518">
        Remove code duplication by moving method to class "Cluster".
      </action>
      <action dev="erans" type="add" issue="MATH-1516">
        Interface for ranking a list of clusters.
      </action>
      <action dev="kinow" type="update" issue="MATH-1408">
        Do not use exceptions for control flow
      </action>
      <action dev="erans" type="fix" issue="MATH-1388">
        Avoid overflow.
      </action>
      <action dev="erans" type="update" issue="MATH-1362">
        Removed deprecated class "Incrementor" (replaced by "IntegerSequence.Incrementor").
      </action>
      <action dev="erans" type="update" issue="MATH-1506">
        Removed class "MultidimensionalCounter" (ported to "Commons Numbers").
      </action>
      <action dev="erans" type="update" issue="MATH-1504">
        Removed class "BigFraction" (ported to "Commons Numbers").
      </action>
      <action dev="erans" type="update" issue="MATH-1446">
        Removed class "Fraction" (ported to "Commons Numbers").
      </action>
      <action dev="erans" type="update" issue="MATH-1469">
        Removed most codes in package "o.a.c.m.geometry".
        "Commons Math" now depends on "Commons Geometry".
      </action>
      <action dev="erans" type="update" issue="MATH-1481" due-to="Théophile Charmont">
        "SobolSequenceGenerator": Update data file.
      </action>
      <action dev="erans" type="fix" issue="MATH-1401" due-to="Michele De Stefano">
        "ClopperPearsonInterval": Missing cases.
      </action>
      <action dev="erans" type="add" issue="MATH-1477" due-to="Chee Sing Lee">
        "MillerUpdatingRegression": Fixed "ArrayIndexOutOfBounds" exception.
      </action>
      <action dev="erans" type="fix" issue="MATH-1463">
        "IntegerSequence.incrementor": Throw "NoSuchElementException" from "next" method.
      </action>
      <action dev="erans" type="add" issue="MATH-1459" due-to="Adrian Porter">
        Create a way to automatically calculate a Jacobian matrix using a differentiator.
      </action>
      <action dev="erans" type="fix" issue="MATH-1458" due-to="Alex Herbert">
        "SimpsonIntegrator": Fixed iteration.
      </action>
      <action dev="erans" type="add" issue="MATH-1426" due-to="Karl Richter">
        "DescriptiveStatistics": allow "Double[]" as initializer.
      </action>
      <action dev="erans" type="fix" issue="MATH-1419" due-to="Hang Park">
        "PolynomialSplineFunction": incorrect usage of exception.
      </action>
      <action dev="kinow" type="fix" issue="MATH-1413">
        add generics to the Frequency class
      </action>
      <action dev="erans" type="fix" issue="MATH-1417" due-to="Jean-Francois Lecomte">
        "RRQRDecomposition": bug in method "performHouseholderReflection".
      </action>
      <action dev="kinow" type="fix" issue="MATH-1381" due-to="Kexin Xie">
        Fix "BinomialTest": P-value larger than 1.
      </action>
      <action dev="erans" type="fix" issue="MATH-1382" due-to="Stefan Bunk">
        "MultivariateNormalDistribution": performance improvement (by
        removing unnecessary copying).
      </action>
      <action dev="erans" type="fix" issue="MATH-1405" due-to="Daniil Finkel">
        "KolmogorovSmirnovTest": bug in "fixTies".
      </action>
      <action dev="ebourg" type="update" issue="MATH-1389" due-to="Christoph Dibak">
        Performance improvement for Array2DRowRealMatrix.getSubMatrix()
      </action>
      <action dev="erans" type="add" issue="MATH-1383">
        Dependency toward the "Commons Rng" component.
      </action>
      <action dev="erans" type="update" issue="MATH-1377">
        "SimplexOptimizer": Slight performance improvement.
      </action>
      <action dev="erans" type="fix" issue="MATH-1376" due-to="Thomas Weise">
        "SimplexOptimizer": Wrong value of iteration number was passed to the convergence checker.
      </action>
      <action dev="erans" type="fix" issue="MATH-1319">
        Major refactoring of package "o.a.c.m.random".
      </action>
      <action dev="erans" type="fix" issue="MATH-1366">
        Removed obsolete RNG API (replaced by classes under "o.a.c.m.rng").
      </action>
      <action dev="erans" type="add" issue="MATH-1015" due-to="Thomas Neidhart">
        Gauss-Laguerre quadrature.
      </action>
      <action dev="erans" type="update" issue="MATH-1318" due-to="Eric Prescott-Gagnon">
        "o.a.c.m.special.Gamma.digamma": Improved performance (through the use of
        the reflection formula for negative arguments).
      </action>
      <action dev="erans" type="add" issue="MATH-1350" due-to="Rob Tompkins">
        Improved code coverage (unit tests).
      </action>
      <action dev="erans" type="add" issue="MATH-1336">
        New 64-bits RNG implementations. On 64-bits systems, they are ~35% faster than
        "java.util.Random" for generating "long" or "double" values. They also guarantee
        much better randomness than "Random" (cf. MATH-1327).
      </action>
      <action dev="erans" type="add" issue="MATH-1335">
        Refactoring of uniform random number generator functionality: new API
        implemented in package "o.a.c.m.rng".
      </action>
      <action dev="erans" type="fix" issue="MATH-1340">
        Avoid exception swallowing (in class "TestUtils").
      </action>
      <action dev="erans" type="fix" issue="MATH-1339">
        Avoid redundant object creation.
      </action>
      <action dev="erans" type="add" issue="MATH-1337">
        Adaptor class from new API ("o.a.c.m.rng.RandomSource") to old API
        ("o.a.c.m.random.RandomGenerator").
      </action>
      <action dev="erans" type="add" issue="MATH-1327">
        Report on performance and correctness of the new RNG implementations.
      </action>
      <action dev="erans" type="add" issue="MATH-1314">
        Javadoc of the new RNG API ("o.a.c.m.rng") mentions the "seed problem".
      </action>
      <action dev="erans" type="add" issue="MATH-1158">
        New interface for sampling from distribution (package "o.a.c.m.distribution").
      </action>
      <action dev="erans" type="fix" issue="MATH-1356">
        "HypergeometricDistribution": Handle special cases that produced NaN.
      </action>
      <action dev="erans" type="add" issue="MATH-1351">
        New sampler API for "MultivariateRealDistribution".
      </action>
      <action dev="erans" type="add" issue="MATH-1348">
        Adaptor for using one of the new RNG implementations where an instance of
        "java.util.Random" is required.
      </action>
      <action dev="erans" type="fix" issue="MATH-1343">
        "BetaDistribution": Removed unnecessary recomputation.
      </action>
      <action dev="erans" type="fix" issue="MATH-1124">
        "JDKRandomGenerator": Method "nextInt(int)" now throws a "NotStrictlyPositiveException".
        The class now delegates to (rather inherits from) "java.util.Random".
      </action>
      <action dev="erans" type="update" issue="MATH-1305" due-to="Rostislav Krasny">
        "AbstractRandomGenerator" and "BitsStreamGenerator": Slight performance
        improvement of the "nextBytes" method (particularly when the number of
        requested bytes is a multiple of 4).
      </action>
      <action dev="erans" type="fix" issue="MATH-1300" due-to="Rostislav Krasny">
        "AbstractRandomGenerator" and "BitsStreamGenerator": Remove a redundant call
        to the random data provider.
      </action>
      <action dev="erans" type="add" issue="MATH-1295" due-to="Aleksei Dievskii">
        "FactorialLog": Cache-based computation of the "log factorial" function (implemented
        as an inner class of "CombinatoricsUtils" in package "o.a.c.m.util").
      </action>
      <action dev="luc" type="add" issue="MATH-1271" due-to="Qualtagh">
        Added divideUnsigned and remainderUnsigned to ArithmeticUtils.
      </action>
      <action dev="erans" type="fix" issue="MATH-1231">
        Lifted unnecessary restriction on constructor's argument of
        "MicrosphereInterpolator" (package "o.a.c.m.analysis.interpolation").
      </action>
      <action dev="tn" type="fix" issue="MATH-1230">
        The "SimplexSolver" will now throw a "DimensionMismatchException"
        when calling "optimize(...)" with linear constraints whose dimension
        does not match the dimension of the objective function.
      </action>
      <action dev="luc" type="add" >
        Added a fast implementation of IEEEremainder in FastMath.
      </action>
      <action dev="luc" type="fix" issue="MATH-1222" due-to="Benedikt Ritter">
        Use Double.isNaN rather than x != x in FastMath.
      </action>
      <action dev="luc" type="fix" issue="MATH-1143">
        Added helper methods to FunctionUtils for univariate and multivariate differentiable functions conversion.
      </action>
      <action dev="tn" type="fix" issue="MATH-964">
        Removed unused package private class PollardRho in package primes.
      </action>
      <action dev="tn" type="fix" issue="MATH-1221">
        Improve performance of "ZipfDistribution" by caching the nth generalized harmonic.
      </action>
      <action dev="tn" type="update" issue="MATH-853">
        "MathRuntimeException" is now the base class for all commons-math
        exceptions (except for "NullArgumentException" which extends
        "NullPointerException").
      </action>
      <action dev="tn" type="remove" issue="MATH-1205">
        Removed methods "test(...)" from "AbstractUnivariateStatistic".
        The already existing methods "MathArrays#verifyValues(...)" shall
        be used instead.
      </action>
      <action dev="tn" type="update" issue="MATH-1205">
        The abstract class "AbstractStorelessUnivariateStatistic" does not
        extend anymore from "AbstractUnivariateStatistic".
      </action>
      <action dev="tn" type="update" issue="MATH-1205">
        Default implementation of
        "AbstractStorelessUnivariateStatistic#equals(Object)"
        will only return true if both instances have the same type. Previously
        different statistics were considered to be equal if their current state
        happened to be equal.
      </action>
      <action dev="tn" type="update" issue="MATH-1205">
        Default implementations of "AbstractStorelessUnivariateStatistic#evaluate(...)"
        do not alter the internal state anymore. Instead a temporary copy of
        the statistic is created for evaluation purposes.
      </action>
      <action dev="tn" type="fix" issue="MATH-1205">
        Methods "evaluate(...)" of class "Variance" changed the internal state
        although it was stated differently in the javadoc.
      </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-1212">
        Changed javadoc as the RandomDataGenerator class does not implement
        an interface anymore (the previous interface has been deprecated in
        3.X and removed in 4.0).
      </action>
      <action dev="erans" type="update" issue="MATH-1206">
        Added new API methods in "LeastSquaresProblem.Evaluation" (package
        "o.a.c.m.fitting.leastsquares").
      </action>
      <action dev="erans" type="update" issue="MATH-1210">
        "QRDecomposition": include information about the condition that
        triggers a "SingularMatrixException".
      </action>
      <action dev="tn" type="update" issue="MATH-757">
        Removed broken synchronization support in "ResizableDoubleArray".
      </action>
      <action dev="tn" type="add" issue="MATH-945">
        Added method "T log10()" to interface "RealFieldElement".
      </action>
      <action dev="tn" type="update" issue="MATH-869">
        "SpearmansCorrelation" will now throw an "MathIllegalArgumentException"
        if provided with a "NaturalRanking" instance that uses "REMOVED" as "NaNStrategy".
      </action>
      <action dev="tn" type="update" issue="MATH-869">
        "NullArgumentException" extends now "java.lang.NullPointerException"
        instead of "MathIllegalArgumentException".
      </action>
      <action dev="tn" type="update" issue="MATH-839" due-to="Gilles Sadowski">
        Renamed "cumulativeProbability(double, double)" to "probability(double, double)"
        in "IntegerDistribution" and "RealDistribution".
      </action>
      <action dev="tn" type="add" issue="MATH-1039" due-to="Aleksei Dievskii">
        Added logDensity(double) to RealDistribution and logProbability(int)
        to IntegerDistribution interface. The implementations have already been
        updated in release 3.3. 
      </action>
      <action dev="tn" type="update" issue="MATH-1155">
        WELL type pseudo-random number generators have been refactored:
        the cached indirection index tables per instance are now stored
        in a static instance. This reduces the initialization cost when
        creating a new instance.
      </action>
      <action dev="tn" type="remove" issue="MATH-1050">
        Removed "ArithmeticUtils#pow(int, long)" and "ArithmeticUtils#pow(long, long)".
      </action>
      <action dev="tn" type="update" issue="MATH-825" due-to="Gilles Sadowski">
        Method "LaguerreSolver#laguerre(...)" has been made private.
      </action>
      <action dev="tn" type="update" issue="MATH-760" due-to="sebb">
        Field "windowSize" in "DescriptiveStatistics" has been made private.
      </action>
    </release>

    <release version="3.6.1" date="2016-03-21" description="
This is a minor bug fix release. It incorporates three bug fixes since version 3.6.

The minimum version of the Java platform required to compile and use
 Commons Math 3.6.1 is Java 5.
">
      <action dev="psteitz" type="update" issue="MATH-1317">
        Add uniformity unit tests to "RandomGeneratorAbstractTest".
      </action>
      <action dev="psteitz" type="fix" issue="MATH-1316">
        Fix code example in User Guide > Statistics > Multiple linear regression.
      </action>
      <action dev="evan" type="fix" issue="MATH-1342">
        Fix ODE integrators when multiple events are nearly simultaneous.
      </action>
    </release>

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