Changes Report

Release History

Version Date Description
2.0 TBD TBD
1.3-SNAPSHOT TBD TBD
1.2 2008-02-24 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.
1.1 2005-12-17 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.
1.0 2004-12-06 Apache Commons Math 1.0 - Initial Release


Release 2.0 - TBD

Type Changes By
add 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. Thanks to Andreas Rieger. luc
update Changed OLS regression implementation added in MATH-203 to use QR decomposition to solve the normal equations. Fixes MATH-217 . psteitz
add New ODE integrators have been added: the explicit Adams-Bashforth and implicit Adams-Moulton multistep methods. These methods support customizable starter integrators and support discrete events even during the start phase. All these methods provide the same rich features has the existing ones: continuous output, step handlers, discrete events, G-stop ... luc
fix Replaced size adjustment of all steps of fixed steps Runge-Kutta integrators by a truncation of the last step only. Fixes MATH-214 . luc
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. luc
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. luc
fix 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). Fixes MATH-213 . luc
update Clarified the ODE package by breaking in into several sub-packages and renaming classes (SwitchingFunctions/EventHandler, SwitchingFunctionsHandler/CombinedEventsManager) luc
fix 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. Fixes MATH-210 . luc
fix Fixed dimension error on output vector for the operate method in RealMatrixImpl and BigMatrixImpl classes. Fixes MATH-209 . Thanks to Thomas Chust. luc
update The FirstOrderDifferentialEquations, FirstOrderIntegrator and FixedStepHandler interfaces now extends Serializable, allowing integrators, problems and handlers to be embedded into users Serializable classes. luc
add Added several convenience methods and constants for Vector3D and Rotation. luc
update Replaced public no argument constructors with IDENTITY or ZERO static instances for immutable classes Vector3D and Rotation. luc
fix Fixed inconsistencies in the naming scheme for static fields in Vector3D and Rotation with respect to the overall library. luc
update Greatly improved RealMatrixImpl and BigMatrixImpl performances, both in terms of speed and in terms of temporary memory footprint. luc
add Added Mauro's patch to support multiple regression. Fixes MATH-203 . Thanks to Mauro Talevi. luc
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. luc
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. luc
add Added the getSwitchingFunctions and clearSwitchingFunctions to the FirstOrderIntegrator interface and all its implementations Fixes MATH-202 . luc
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. luc

Release 1.3-SNAPSHOT - TBD

Type Changes By
fix Fixed formula in fast cosine transformer javadoc comments. Fixes MATH-205 . Thanks to Roman Werpachowski. luc
fix Javadoc and style fixes. Fixes MATH-193 . Thanks to Michael Heuer and Sebb. brentworden
fix Added an error detection for missing imaginary character while parsing complex string Fixes MATH-198 . Thanks to Frederick Salardi. luc
fix Detect numerical problems in Q.R decomposition for Levenberg-Marquardt estimator and report them appropriately Fixes MATH-199 . Thanks to Mick. luc
fix Fixed several crashes in getCovariances() and guessParametersErrors() in AbstractEstimator when some parameters are bound. The methods now explicitly give result only about unbound parameters. Fixes MATH-200 . Thanks to Plamen Petrov. luc
fix Fixed truncation error in t-test classes for large t values. Fixes MATH-201 . Thanks to Peter Wyngaard. brentworden
fix Added root checks for the endpoints. Fixes MATH-204 . Thanks to Mick. brentworden

Release 1.2 - 2008-02-24

Type Changes By
fix Fixed numerous warnings in test code. luc
fix Use the initial guess provided by the user in BrentSolver.solve(), thus improving speed. Fixes MATH-156 . Thanks to Tyler Ward. luc
add Added the estimation, optimization, geometry and ode packages from the Mantissa library. luc
fix Made ComplexFormat format double values with a provided NumberFormat instance instead of using the real part format for all values. Fixes MATH-18 . Thanks to Phil Steitz. brentworden
add Added Pascal distribution implementation. Fixes MATH-120 . Thanks to Todd C. Parnell. psteitz
add Added QR Decomposition. Fixes MATH-148 . Thanks to Joni Salonen. psteitz
fix Modified ProperFractionFormat to reject embedded minus signs. Fixes MATH-60 . Thanks to Nhung Nnguyen. psteitz
fix 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. Fixes MATH-151 . Thanks to Luc Maisonobe. psteitz
add Added Fast Fourier Transform implementation. Fixes MATH-140 . Thanks to Xiaogang Zhang. psteitz
fix Modified getSumSquaredErrors method in SimpleRegression to always return a non-negative result. Fixes MATH-85 . Thanks to Mark Osborn, Luc Maisonobe. psteitz
fix Corrected nextInt and nextLong to handle wide value ranges. Fixes MATH-153 . Thanks to Remi Arntzen. brentworden
fix Increased default precision of Gamma and Beta functions. Fixes MATH-166 . Thanks to Lukas Theussl. psteitz
update Added log function to MathUtils. Fixes MATH-158 . Thanks to Hasan Diwan. psteitz
update Added two sample (binned comparison) ChiSquare test. Fixes MATH-160 . Thanks to Matthias Hummel. psteitz
fix Modified NormalDistributionImpl.cumulativeProbablity to catch MaxIterationsExceededException and return 0 or 1, resp. if the argument is more than 20 standard deviations from the mean. Fixes MATH-167 . psteitz
update Added SynchronizedDescriptiveStatistics class. Fixes MATH-170 . Thanks to David J. M. Karlsen. brentworden
update Added addAndCheck, mulAndCheck, and subAndCheck MathUtils methods for long integer arguments. Fixes MATH-154 . Thanks to Remi Arntzen. brentworden
update Merged most functions from ComplexUtils into Complex class, added static factory method to Complex. Fixes MATH-171 . Thanks to Niall Pemberton. psteitz
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. psteitz
fix 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. Fixes MATH-174 . psteitz
fix Added check and rescaling of expected counts to sum to sum of expected counts if necessary in ChiSquare test. Fixes MATH-175 . Thanks to Carl Anderson. psteitz
fix Handle multiplication of Complex numbers with infinite parts specially. Fixes MATH-164 . luc
update Add errors guessing to least-squares estimators. Fixes MATH-176 . Thanks to Kazuhiro Koshino. luc
update Add tests for Fraction constructor using double parameter. Fixes MATH-179 . Thanks to Niall Pemberton. luc
add Added one-way ANOVA implementation. Fixes MATH-173 . Thanks to Bob MacCallum. psteitz
update Add Fraction constructor using max denominator value. Fixes MATH-181 . Thanks to Niall Pemberton. luc
fix Add integer overflow checks in Fraction constructor using double parameter. Fixes MATH-182 . luc
fix Throw EOFException when using empty files with ValueServer in replay and digest modes. Fixes MATH-185 . luc
update Added a equals and hash methods in MathUtils to check for double arrays luc
add Added an angle normalization method in MathUtils to force angles in some user-defined interval luc
add Added vectorial covariance computation (either sample or population covariance) luc
add Added multivariate summary statistics. luc
update Added getSumOfLogs method to SummaryStatistics and made SumOfLogs instance used by GeometricMean configurable. Fixes MATH-191 . psteitz
fix Fixed AbstractIntegerDistribution cumulativeProbablility(-,-) to correctly handle double arguments. Fixes MATH-184 . Thanks to Yegor Bryukhov. psteitz
update 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. Fixes MATH-188 . Thanks to Sebastian Bazley. psteitz

Release 1.1 - 2005-12-17

Type Changes By
fix Made NewtonSolver derivative field transient and implemented readObject to initialize. Fixes MATH-74 . psteitz
fix Made sampleStats field private and changed getUpperBounds to return a fresh copy in EmpiricalDistributionImpl. Fixes MATH-74 . psteitz
update Added polar2Complex method to ComplexUtils to create Complex numbers from polar representations. psteitz
fix Made all serialVersionUIDs private. Fixes MATH-49 . Thanks to Elliotte Harold. psteitz
fix Improved documentation and test cases related to handling of infinite and NaN values in Complex, ComplexUtils classes. Fixes MATH-5 . psteitz
fix Fixed incorrect NaN handling in o.a.m.s.d.rank.Min, Max Fixes MATH-57 . Thanks to Mauro Talevi. psteitz
fix Changed RealMatrixImpl.equals to use Double.doubleToLongBits to compare corresponding matrix entries. Fixes MATH-74 . psteitz
fix Eliminated floating point equals comparison in Percentile.evaluate. Fixes MATH-74 . psteitz
fix Eliminated unnecessary assignment statements in Skewness.getResult method. Fixes MATH-74 . psteitz
fix Synchronized getters in ResizeableDoubleArray. Fixes MATH-74 . psteitz
fix Eliminated unnecessary assignment statement in BisectionSolver.solve method. Fixes MATH-74 . psteitz
fix Implemented hashCode in the Complex class and changed the semantics of equals to make all instances with real or imaginary part NaN equal. Fixes MATH-74 . psteitz
fix Fixed bin index overflow problem in EmpiricalDistributionImpl. Fixes MATH-12 . Thanks to Keith McDonald. psteitz
fix Added protection against numerical overflow and underflow in the isBracketing method. Fixes MATH-108 . Thanks to Xiaogang Zhang. brentworden
fix Fixed division by zero error in rounding methods. Fixes MATH-47 . Thanks to Nikhil Gupte. brentworden
fix Added upper tail cumulative probability method to HypergeometricDistributionImpl. Fixes MATH-100 . Thanks to Mike Hu. brentworden
fix Added better handling of numerical overflow and division by zero in Complex calculations. Fixes MATH-22 . Thanks to Xiaogang Zhang. brentworden
fix Changed ContinuedFraction to better handle infinite convergents that resulted in divergent continued fraction evaluations. Fixes MATH-92 . Thanks to Mikael Weigelt. brentworden
fix Changed rounding methods to not rely on BigDecimal conversions which was causing numerical error. Fixes MATH-32 . Thanks to Srinivas Vemury. brentworden
fix Changed Fraction(double) to correctly handle near-integral arguments. Fixes MATH-3 . Thanks to Jörg Weimar. psteitz
fix Changed lcm to throw ArithmeticException (instead of returning bogus value) if the result is too large to store as an integer. Fixes MATH-143 . Thanks to Jörg Weimar. psteitz
fix Added factories for TTest, ChiSquareTest and TestUtils class with static methods to create instances and execute tests. Fixes MATH-70 . Thanks to Mary Ellen Foster. psteitz
update Eliminated repeated endpoint function evalutations in BrentSolver, SecantSolver. Fixes MATH-95 . Thanks to Paul Field. psteitz
update Added setSubMatrix methods to RealMatrixImpl, BigMatrixImpl. To Preserve backward compatibility with version 1.0, these methods were not added to the RealMatrix, BigMatrix interfaces. Fixes MATH-137 . Thanks to Rodrigo di Lorenzo Lopes. psteitz
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. psteitz
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). psteitz
update Added utility methods for overflow-checked integer arithmetic and improved gcd method in MathUtils. Thanks to C. Scott Ananian. psteitz
fix Fixed error in TTestImpl.homoscedasticTtest. Implementation was incorrectly using heteroscedastic t statistic. Also improved sensitivity of test cases. Fixes MATH-79 . Thanks to Gilles Gaillard. psteitz
fix Fixed javadoc errors. One-sided t-test significance adjustment was reversed in javadoc for boolean-valued test methods. Fixes MATH-44 . Thanks to Gilles Gaillard. psteitz
fix Fixed bug in PolynomialSplineFunction to allow evaluation of the function at the last knot point. Thanks to Ben Litchfield. brentworden
add Added Weibull distribution implementation. brentworden
add Added Cauchy distribution implementation. brentworden
add Added convenience methods for rounding. brentworden
add Added Fraction class based on commons-lang implementation. With the fraction class, FractionFormat and ProperFractionFormat classes were added to provide fraction formatting and parsing. Thanks to C. Scott Ananian. brentworden

Release 1.0 - 2004-12-06

Type Changes By