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

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

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

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

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

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

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

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

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

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

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

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

<document>
  <properties>
    <title>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="">
      <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">
        BinomialTest P-value > 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>
