<?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. TBA how to use this with SVN.

To generate the release notes from this file:

mvn changes:announcement-generate
mv target/announcement/RELEASE_NOTES.txt RELEASE_NOTES.txt
then tweak the formatting
(e.g. copy/paste the description to replace the one-line version)
and commit

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

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

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

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

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

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

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

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

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

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