Author: erans
Date: Wed Jan 9 16:09:07 2013
New Revision: 1430927
URL: http://svn.apache.org/viewvc?rev=1430927&view=rev
Log:
Preparing release 3.1.1.
Modified:
commons/proper/math/trunk/RELEASENOTES.txt
Modified: commons/proper/math/trunk/RELEASENOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/RELEASENOTES.txt?rev=1430927&r1=1430926&r2=1430927&view=diff
==============================================================================
 commons/proper/math/trunk/RELEASENOTES.txt (original)
+++ commons/proper/math/trunk/RELEASENOTES.txt Wed Jan 9 16:09:07 2013
@@ 1,205 +1,22 @@
 Apache Commons Math 3.1 RELEASE NOTES
+ Apache Commons Math 3.1.1 RELEASE NOTES
The Commons Math team is pleased to announce the release of commonsmath33.1
+The Commons Math team is pleased to announce the release of commonsmath33.1.1
The Math project is a library of lightweight, selfcontained mathematics and statistics components
addressing the most common practical problems not immediately available in the Java programming
language or commonslang.
This is a minor release: It combines bug fixes and new features.
 Changes to existing features were made in a backwardscompatible
 way such as to allow dropin replacement of the v3.0 JAR file.


Most notable among the new features are: Framework for automatic
 differentiation, multivariate mixture model distribution, quaternions,
 Gauss integration framework, Hermite polynomial interpolation,
 eigenvalue decomposition of nonsymmetric matrices, DBSCAN clustering.
 Most notable among the changes are: Greatly improved precision in
 the implementation of the Gamma and Beta special functions, optimizers
 API, deprecation of the sparse vector implementation.


The minimal version of the Java platform required to compile and use
 Commons Math is Java 5.
 Users are encouraged to upgrade to this version as this release not
 only includes bug fixes but also deprecates numerous classes and
 methods that will be deleted from the next major release (4.0).


Caveat:
 1. The implementation of the BOBYQA optimization algorithm is in alpha
 state (cf. MATH621): 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. MATH740 and MATH901).
+This is a point release: It fixes a bug that renders version 3.1 unusable
+ in some situations (see details below).
Changes in this version include:
New features:
o MATH874: All contents of package "o.a.c.m.optimization" refactored into
 new packages "o.a.c.m.optimization" and "o.a.c.m.fitting".
o MATH897: DBSCAN clustering algorithm (in package "o.a.c.m.stat.clustering"). Thanks to
Reid Hochstedler.
o MATH910: Added elementbyelement addition, subtraction, multiplication and division
 (in class "o.a.c.m.util.MathArrays").
o MATH902: New constructor in the custom checker classes (package
 "o.a.c.m.optimization") for passing the number of iterations
 after which the "convergence test" will return true.
 This allows an algorithm to return the best solution found (after
 the userdefined number of iterations) even if it does not meet the
 other convergence criteria.
o MATH899: Added a new "SynchronizedRandomGenerator" that wraps another
 "RandomGenerator" with all methods being synchronized, thus
 rendering the code threadsafe (at some efficiency cost).
o MATH893: Add new "NaNStrategy": FAILED, used in "RankingAlgorithm" implementations.
 Any encountered input value that succeeds a "Double#isNaN" check, results in a
 "NotANumberException". Thanks to Patrick Meyer.
o MATH892: Add new constructor to "SpearmansCorrelation" class which allows to specify
the
 "RankingAlgorithm" to be used.
o MATH889: Added a method to check points in the Interval class, with a tolerance for boundary.
o MATH878: Added Gtest statistics. Thanks to Radoslav Tsvetkov.
o MATH883: New "getSquareRoot" method in class "EigenDecomposition" (package
 "o.a.c.m.linear").
o MATH816: New class for generic multivariate mixture model distributions. Thanks to Jared
Becksfort.
o MATH474: Added new methods "merge(Frequency)", "merge(Collection<Frequency>)",
 "incrementValue(Comparable<?>, long)" and "entrySetIterator()" to the "Frequency"
class. Thanks to Dan Checkoway.
o MATH860: Added matrix "block inversion" (in "o.a.c.m.linear.MatrixUtils").
o MATH863: New "Quaternion" class (package "o.a.c.m.complex"). Thanks to Julien Anxionnat.
o MATH866: Added method to test for floatingpoint numbers equality with a
 relative tolerance (class "o.a.c.m.util.Precision"). Thanks to Yannick Tanguy.
o Added a NewtonRaphsonSolver that uses the new differentiation package
 to define the function to solve. This class is intended to replace the
 former NewtonSolver which is deprecated.
o MATH815: New interface for multivariate distributions.
 Added multivariate normal distribution. Thanks to Jared Becksfort.
o Added a utility method to compute Stirling numbers of the second kind.
o Added a new package dealing with differentials, for one or more free
 parameters and derivation order 1 or higher.
o MATH777: Added additional crossover policies: "CycleCrossover", "NPointCrossover",
 "OrderedCrossover" and "UniformCrossover". Thanks to Reid Hochstedler.
o MATH831: Added a new "RealMatrixFormat" class for input/output of RealMatrix instances.
 Default formatter instances for commonsmath and octave have been added to
 "MatrixUtils".
o MATH827: New "IterativeLegendreGaussIntegrator" that performs the same automatic
 subdivision of the integration interval as "LegendreGaussIntegrator",
 but uses the classes from package "o.a.c.m.analysis.integration.gauss"
 to perform the Gauss integration on the subinterval.
 Deprecated "LegendreGaussIntegrator".
o MATH797: New framework for Gauss integration schemes (in package
 "o.a.c.m.analysis.integration.gauss").
 GaussLegendre quadrature rules (of unlimited order) implemented in
 double precision, and high precision (using "BigDecimal").
o MATH764,MATH823: For all distribution classes (in package "o.a.c.m.distribution"), a
new
 constructor takes a "RandomGenerator" parameter.
 The "RandomDataImpl" instance has been superseded by this RNG.
 All "sample()" methods have been modified to use this RNG instead of
 delegating to the methods in "RandomData".
o MATH235: Added support for real asymmetric matrices to "EigenDecomposition".
o MATH768: Reinstated methods to find all complex roots of a polynomial (class
 "LaguerreSolver" in package "o.a.c.m.analysis.solvers").
o MATH810: Added accessors to the "Pair" class (package "o.a.c.m.util").
o MATH822: Added new constructors in "EigenDecomposition" and deprecated two constructors
 with unused parameters. Thanks to Jared Becksfort.
o MATH807: Added a new constructor to o.a.c.m.utils.IterationManager, allowing
 for the specification of a callback function in case the maximum
 number of iteration is reached.
o A new HermiteInterpolator class allows interpolation of vectorvalued
 functions using both values and derivatives of the function at sample
 points.
o MATH773: Added class FixedElapsedTime (new StoppingCondition for evolution of generations)
to genetics package. Thanks to Reid Hochstedler.
o MATH756: Added classes Decimal64 and Decimal64Field, which are wrapper classes around
primitive doubles.
 These classes implement FieldElement and Field, respectively.
Fixed Bugs:
o MATH904: Fixed "pow" method in class "FastMath". Thanks to Jeff Hain.
o MATH905: Fixed overflow in "sinh" and "cosh" methods in class "FastMath". Thanks to Jeff
Hain.
o MATH890: Fixed naming inconsistencies between Interval and IntervalsSet classes.
o MATH759: Use getter/setter methods of super class for access to field "windowSize" in
 "ListUnivariateImpl". Thanks to sebb.
o MATH880: Improved construction of polygons with an additional constructor, more robust
numerically.
o MATH778: Allow unlimited input values for "Dfp#multiply(int)". Thanks to SÃ©bastien
Brisard.
o MATH641: Added distance to point to 2D Line and Segment. Thanks to Curtis Jensen.
o MATH783: "PowellOptimizer" (package "o.a.c.m.optimization.direct") uses
 "BrentOptimizer" as its internal line search optimizer. The fix
 forces the convergence criterion of "BrentOptimizer" to use
 function values (instead of domain values).
o MATH865,MATH867,MATH868: Numerical accuracy problems arose in "CMAESOptimizer" (in
package
 "o.a.c.m.optimization.direct") when large finite boundaries were
 specified, because the interval of allowed values was mapped to
 [0, 1]. This mapping was not necessary and its removal allows
 finite and infinite boundaries to be used together. Thanks to Nikolaus Hansen, Frank
Hess.
o Fixed some issues in nth root derivatives at 0.
o MATH848: Fixed transformation to a Schur matrix for certain input matrices.
o MATH864: "CMAESOptimizer": Solution was not constrained to lie within the
 provided boundaries. Thanks to Frank Hess.
o MATH666: Deprecated "FieldVector#getData()" in favor of "toArray()".
o MATH789: Fixed an error in rectangular Cholesky decomposition.
o MATH855: Added a check so that the returned point will always be the best one.
o MATH844: Generate an exception for rare illconditioned cases in "HarmonicFitter"
 guessing procedure (package "o.a.c.m.optimization.fitting").
o MATH828: Improved numerical stability of "SimplexSolver" by introducing Bland's rule
 to prevent cycling and a cutoff threshold to zero out very small values.
o MATH836: Fixed overflow detection for negative values in constructor of class "Fraction".
Thanks to Baste Nesse Buanes.
o MATH835: Fixed overflow in method "percentageValue" in class "Fraction". Thanks to Baste
Nesse Buanes.
o MATH622: Raised (to 10) the default number of fractional digits to print out.
o MATH762: Removed duplicate code.
o MATH578: Improve performance of quantile evaluation in "Percentile" class for cases
 with lots of equal values.
o MATH798: Added overridden method in "PolynomialFitter" (package
 "o.a.c.m.optimization.fitting") to limit the number of evaluations.
o MATH804: Parameterized "CurveFitter" class (package "o.a.c.m.optimization.fitting")
 with the type of the fitting function. Updated subclasses "PolynomialFitter",
 "HarmonicFitter", "GaussianFitter".
o MATH801: Fixed a problem when building rotations from two pairs of vectors. In very rare
cases,
 due to numerical inaccuracies the computed quaternion was not normalized (some examples
 went as high as 1.0e8) and even after normalization, the quaternion was plain wrong.
o MATH644: Fix computation of upperCumulativeProbability in "HypergeometricDistribution"
and
 cleanup of duplicate probability mass function. Thanks to marzieh.
o MATH791: In GammaDistribution, deprecated getAlpha() and getBeta(). Replaced with
 getShape() and getScale(), respectively.
o MATH793: Use inline computation for OrderedTuple hash code. Thanks to Sebb.
o MATH718: Use modified LentzThompson algorithm for continued fraction evaluation to avoid
 underflows.
o MATH780: Fixed a wrong assumption on BSP tree attributes when boundary collapses to a
too
 small polygon at a nonleaf node.
o MATH787: Put serialization back for PointValuePair and PointVectorValuePair.
o MATH627: Avoid superfluous null check when using iterators in RealVector and ArrayRealVector.
Thanks to Arne PlÃ¶se.
o MATH781: Use epsilon instead of ulp in floatingpoint comparison when dropping columns
after
 phase 1 in SimplexSolver. Thanks to Scheiber ErnÅ.
o MATH721: Added a workaround for an OpenJDK issue on sparc solaris with too small constants.
o MATH779: Fixed ListPopulation#iterator to return an unmodifiable iterator. Thanks to
Reid Hochstedler.
o MATH775: Cleanup of ListPopulation to consistently enforce the population limit. Thanks
to Reid Hochstedler.
o MATH776: Use same range check in constructor for ElitisticListPopulation as in corresponding
setter. Thanks to Reid Hochstedler.
o MATH767: Fixed unbalanced use of code tags in javadoc of several classes. Thanks to Dennis
Hendriks.

Changes:
o MATH672: Added methods to EmpiricalDistribution to implement the RealDistribution
 interface.
o MATH902: Created a "maximum number of iterations" stopping criterion in the
 convergence checkers (package "o.a.c.m.optimization") that allows the
 optimizers to return the "current best point" even if the convergence
 criteria are not met. Thanks to Bruce A. Johnson.
o MATH849: Accuracy improvements of Gamma.logGamma, and implementation of
 Gamma.gamma. Both new implementations are based on the NSWC
 Library of Mathematical Functions.
o MATH906: Use "NaNStrategy#FAILED" as default strategy in "NaturalRanking". Thanks to
Patrick Meyer.
o MATH884: Added "isSymmetric" and "checkSymmetric" in "MatrixUtils" (package
 "o.a.c.m.linear").
o MATH885: Moved private array argument validation methods from ChiSquareTest to MathArrays.
o MATH859: Clarified definition of isSupportXxxBoundInclusive in RealDistribution
 interface, made code consistent with the definition, and deprecated
 these methods, marking for removal in 4.0.
o MATH841: Performance improvement in computation of the greatest common divisor
 (in class "o.a.c.m.util.ArithmeticUtils"). Thanks to Sebastien Riou.
o MATH850: Added RandomDataGenerator to replace RandomDataImpl and deprecated
 RandomData interface and RandomDataImpl class. Deprecated
 nextInversionDeviate methods from RandomDataImpl class. Ensured that
 all nextXxx methods in RandomDataImpl/RandomDataGenerator use the
 configured RandomGenerator.

Removed:
o MATH796: Removed unused fields LocalizedFormats.ALPHA and LocalizedFormats.BETA. This
is
 an acceptable compatibility break, as these fields are only meant for internal use.
+o MATH924: Added a (minimal) "DiagonalMatrix" implementation, such that the
+ case of a large number of uncorrelated observations is handled
+ efficiently.
+
+
For complete information on Commons Math, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Math website:
