| |
| |
| 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.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.math.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. |
| |
| Changes in this version include: |
| |
| New features: |
| 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-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-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, |
| patches, or suggestions for improvement, see the Apache Commons Math website: |
| |
| http://commons.apache.org/math/ |
| |
| |