diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 4566c205f..103316934 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -1,137 +1,146 @@ - Apache Commons Math 2.1 RELEASE NOTES + Apache Commons Math 2.2 RELEASE NOTES 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 - - the isOptimal(SimplexTableau) method has been removed from SimplexSolver +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 the public API: + the MessagesResources_fr class has been removed (replaced by a properties file); + the arguments of the EventState.reinitializeBegin method have changed; + some private fields in AbstractStepInterpolator have been replaced. + +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. Changes in this version include: New features: -o MATH-357: Implementation of bicubic interpolation. -o 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. -o MATH-323: Added SemiVariance statistic. Thanks to Larry Diamond. -o 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. -o MATH-340: Fixed an error in BigFraction multiplication for large numerators that don't - fit in a primitive int. -o MATH-334: Added min/max getters for real vectors (not yet in the RealVector interface for - compatibility purposes, but in the AbstractRealVector abstract class). -o 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). -o MATH-300: Added support for multidimensional interpolation using the robust microsphere algorithm. Thanks to Gilles Sadowski. -o MATH-287: Added support for weighted descriptive statistics. Thanks to Matthew Rowles. -o Added normalizeArray method to MathUtils. +o MATH-364: Added complementary error function, erfc. Thanks to Christian Winter. +o 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. +o MATH-440: Created "MathUserException" class to convey cause of failure between + layers of user code separated by a layer of Commons-Math code. +o MATH-419: Added new random number generators from the Well Equidistributed Long-period Linear (WELL). +o MATH-412: 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. Thanks to Bill Rossi. +o MATH-375: 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. Thanks to Bill Rossi. +o MATH-400: Added support for Gaussian curve fitting. Thanks to J. Lewis Muir. +o 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 +o MATH-379: Created "MultidimensionalCounter" class. +o MATH-378: Implementation of linear interpolation. Thanks to Matthew Rowles. +o MATH-370: Added new "equalsIncludingNaN" methods that have the same semantics as the old "equals" methods. + The semantics of the old methods will be modified (in the next major release) such that + NaNs are not considered equal (to be more compliant with IEEE754). +o MATH-366: Implementation of tricubic interpolation. Fixed Bugs: -o MATH-360: Fix use of wrong variable in SmoothingBicubicSplineInterpolatorTest.testPreconditions() -o MATH-335: Fraction.hashCode() implementation was not fully consistent with Fraction.equals(). - Changed hashCode() to use fields directly to agree with equals(). -o 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. -o MATH-347: Fixed too stringent interval check in Brent solver: initial guess is now - allowed to be at either interval end -o 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 -o 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 -o MATH-344: Fixed wrong return values when enpoints are roots in Brent solver with - a user provided initial guess -o MATH-343: Fixed a missing bracketing check of initial interval in Brent solver. -o 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. -o 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. -o Fixed a spurious exception in EigenDecompositionImpl when a 3x3 block - had two identical eigenvalues. -o MATH-338: Fixed automatic step initialization in embedded Runge-Kutta integrators. - The relative tolerance setting was never used, only the absolute tolerance - was used. Thanks to Vincent Morand. -o MATH-329: Fixed regression in Frequency.getPct(Object) introduced in 2.0. Cumulative - percent was being returned for Object arguments in place of percent. -o MATH-320: Fixed Singular Value Decomposition solving of singular systems. -o MATH-326: Fixed a wrong implementation of the Linf norm in vectors. Thanks to Jake Mannix. -o MATH-324: Fixed a convergence discrepancy with respect to theory in Gragg-Bulirsch-Stoer - integrator. Thanks to Vincent Morand. -o Fixed a wrong dimension check in SVD solver. Thanks to Dimitri Pourbaix. -o MATH-313: Added composition features for real functions. Thanks to Jake Mannix. -o MATH-312: Added mapping and iteration methods to vectors. Provided a default implementation - for the numerous simple methods in the RealVectorInterface. Thanks to Jake Mannix. -o MATH-322: Fixed an error in handling very close events in ODE integration. -o MATH-305: Fixed an overflow error in MathUtils.distance that was causing KMeansPlusPlusClusterer - to fail with a NullPointerException when component distances between points - exceeded Integer.MAXVALUE. Thanks to Erik van Ingen. -o MATH-318: Fixed an index computation error in eigen decomposition. Once again, kudos to Dimitri - for debugging this. Thanks to Dimitri Pourbaix. -o MATH-308: Fixed an ArrayIndexOutOfBoundsException in eigen decomposition. Kudos to Dimitri - for debugging this, it was really difficult. Thanks to Dimitri Pourbaix. -o MATH-309: Fixed parameter test in RandomDataImpl#nextExponential. The method now throws - IllegalArgumentException for mean = 0. Thanks to Mikkel Meyer Andersen. -o MATH-306: Removed dead code from Complex#divide. Thanks to Joerg Huber. -o MATH-294: Fixed implementation of RandomDataImpl#nextPoisson by implementing an alternative - algorithm for large means. -o MATH-298: Fixed implementation of EmpiricalDistributionImpl#getUpperBounds to match - interface contract. Added getGeneratorUpperBounds method to - EmpiricalDistributionImpl providing previous behavior. -o MATH-296: Fixed wrong results on Loess interpolation, also added a way to set weights - for smoothing and to ignore zero weights for coefficients computation Thanks to Eugene Kirpichov. -o MATH-293: Fixed a OutOfBoundException in simplex solver when some constraints are tight. Thanks to Benjamin McCann. -o MATH-291: Fixed misleading number formats in error messages for adaptive - stepsize integrators. Thanks to Sebb. -o MATH-290: Fixed a NullPointerException in simplex solver when no solution is possible - and some constraints are negative. Thanks to Benjamin McCann. -o MATH-289: Removed an unused argument in a private method in simplex solver. -o MATH-288: Fixed an error induced by entries set to 0 in simplex solver. Thanks to Benjamin McCann. -o MATH-286: Fixed an error leading the simplex solver to compute the right solution - but return another one. Thanks to Benjamin McCann. -o MATH-283: Prevent infinite loops in multi-directional direct optimization method when - the start point is exactly at the optimal point. Thanks to Michael Nischt. -o MATH-297: Prevent possible zero divides on eigenvectors of indefinite matrices Thanks to Axel Kramer. +o MATH-505: TestUtils is thread-hostile. Deprecate the getters and setters. +o MATH-471: MathUtils.equals(double, double) does not work properly for floats + - add equivalent (float, float) methods and basic tests +o MATH-467: Fixed an awkward statement that triggered a false positive warning. +o 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. +o 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. +o 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 +o MATH-426: Added a normalization feature to transform samples so they have zero mean and unit standard deviation Thanks to Erik van Ingen. +o MATH-429: Fixed k-means++ to add several strategies to deal with empty clusters that may appear + during iterations +o MATH-391: Fixed an error preventing zero length vectors to be built by some constructors +o MATH-421: Fixed an error preventing ODE solvers to be restarted after they have been stopped by a discrete event +o 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(). +o 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 to true on estimated models to get the previous behavior. +o MATH-386: Added R-squared and adjusted R-squared statistics to OLSMultipleLinearRegression. +o MATH-392: 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. Thanks to Mark Devaney. +o MATH-406: Bug fixed in Levenberg-Marquardt (handling of weights). +o MATH-405: Bug fixed in Levenberg-Marquardt (consistency of current). +o MATH-377: Bug fixed in chi-square computation in AbstractLeastSquaresOptimizer. +o MATH-395: Fixed several bugs in "BrentOptimizer". +o MATH-393: Fixed inconsistency in return values in "MultiStartUnivariateRealOptimizer". +o MATH-382: Fixed bug in precondition check (method "setMicrosphereElements"). +o MATH-361: Improved localization of error messages. +o MATH-376: Allow multiple optimizations with a default simplex. +o MATH-352: Added a setQRRankingThreshold method to Levenberg-Marquardt optimizer to improve robustness + of rank determination. +o 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. +o MATH-371: 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. Thanks to Kevin Childs. +o MATH-369: Fix NullPointerException in BisectionSolver.solve(f, min, max, initial) Thanks to Sasun Pundev. +o MATH-368: Fix spelling of getSparcity [sic] method of OpenMapRealVector +o MATH-367: Fix problem with the default sparseIterator when a RealVector has exactly one non-zero entry Thanks to Albert Huang. Changes: -o MATH-356: Added method to clear the list of observations in CurveFitter. -o MATH-332: 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. Thanks to Mikkel Meyer Andersen. -o MATH-337: Changed equals() methods to use instanceof check rather than catching ClassCastException; - this also allows some null checks to be omitted. -o MATH-336: Removed unnecessary null checks in equals methods. -o MATH-239: Added MathUtils methods to compute gcd and lcm for long arguments. Thanks to Christian Semrau. -o MATH-287: Added support for weighted univariate statistics. Thanks to Matthew Rowles. -o MATH-315: Added generationsEvolved property to GeneticAlgorithm to track the number of generations - evolved by the evolve() method before reaching the StoppingCondition. Thanks to Mikkel Meyer Andersen. -o MATH-311: Changed probability calculations for Binomial, Poisson, and Hypergeometric - distributions to use Catherine Loader's saddle point approximations. Thanks to Nipun Jawalkar. +o MATH-384: Added a constructor and addValues(double[]) methods allowing DescriptiveStatistics to + be initialized with values from a double[] array. Similarly enhanced + ResizeableDoubleArray. +o MATH-448: Added a getUniqueCount() method to Frequency to return the number of unique + values included in the frequency table. Thanks to Patrick Meyer. +o MATH-420: Added toString() override to StatisticalSummaryValues. +o 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 +o 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. +o 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"). +o 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. +o MATH-365: Deprecated SmoothingBicubicSplineInterpolator and SmoothingBicubicSplineInterpolatorTest. + Added BicubicSplineInterpolator and BicubicSplineInterpolatorTest. + Added SmoothingPolynomialBicubicSplineInterpolator and SmoothingPolynomialBicubicSplineInterpolatorTest. + Added method to clear the list of observations in PolynomialFitter. For complete information on Commons Math, including instructions on how to submit bug reports, diff --git a/src/site/xdoc/changes.xml b/src/site/xdoc/changes.xml index ae56346ad..75d65b5f8 100644 --- a/src/site/xdoc/changes.xml +++ b/src/site/xdoc/changes.xml @@ -51,7 +51,27 @@ The type attribute can be add,update,fix,remove. 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! --> - + TestUtils is thread-hostile. Deprecate the getters and setters. @@ -110,14 +130,14 @@ The type attribute can be add,update,fix,remove. Fixed an awkward statement that triggered a false positive warning. - + Added complementary error function, erfc. 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. - + 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 @@ -153,9 +173,7 @@ The type attribute can be add,update,fix,remove. 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". + layers of user code separated by a layer of Commons-Math code. Fixed k-means++ to add several strategies to deal with empty clusters that may appear @@ -197,14 +215,14 @@ The type attribute can be add,update,fix,remove. verify that their code either does not use the first set of data loading methods above or set the noIntercept property to true on estimated models to get the previous behavior. - + 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. - + 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 @@ -251,7 +269,7 @@ The type attribute can be add,update,fix,remove. Created "MultidimensionalCounter" class. - + 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). @@ -267,9 +285,9 @@ The type attribute can be add,update,fix,remove. Allow multiple optimizations with a default simplex. - + 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 + The semantics of the old methods will be modified (in the next major release) such that NaNs are not considered equal (to be more compliant with IEEE754). diff --git a/src/site/xdoc/download_math.xml b/src/site/xdoc/download_math.xml index b5138ea1f..9edec9127 100644 --- a/src/site/xdoc/download_math.xml +++ b/src/site/xdoc/download_math.xml @@ -95,32 +95,32 @@ limitations under the License.

-
+
- - - + + + - - - + + +
commons-math-2.1.tar.gzmd5pgpcommons-math-2.2.tar.gzmd5pgp
commons-math-2.1.zipmd5pgpcommons-math-2.2.zipmd5pgp
- - - + + + - - - + + +
commons-math-2.1-src.tar.gzmd5pgpcommons-math-2.2-src.tar.gzmd5pgp
commons-math-2.1-src.zipmd5pgpcommons-math-2.2-src.zipmd5pgp