Apache Commons Math Version 1.2 RELEASE NOTES 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. For more information on Apache Commons Math, see http://commons.apache.org/math/ SUMMARY OF CHANGES ADDITIONS * Added the estimation, optimization, geometry and ode packages from the Mantissa library. * MATH-120. Added Pascal distribution implementation. Thanks to Todd C. Parnell. * MATH-148. Added QR Decomposition. Thanks to Joni Salonen. * MATH-140. Added Fast Fourier Transform implementation. Thanks to Xiaogang Zhang. * MATH-173. Added one-way ANOVA implementation. Thanks to Bob MacCallum. * Added an angle normalization method in MathUtils to force angles in some user-defined interval * Added vectorial covariance computation (either sample or population covariance) * Added multivariate summary statistics. BUG FIXES * Fixed numerous warnings in test code. * MATH-156. Use the initial guess provided by the user in BrentSolver.solve(), thus improving speed. Thanks to Tyler Ward. * MATH-18. Made ComplexFormat format double values with a provided NumberFormat instance instead of using the real part format for all values. Thanks to Phil Steitz. * MATH-60. Modified ProperFractionFormat to reject embedded minus signs. Thanks to Nhung Nnguyen. * MATH-151. 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. Thanks to Luc Maisonobe. * MATH-85. Modified getSumSquaredErrors method in SimpleRegression to always return a non-negative result. Thanks to Mark Osborn, Luc Maisonobe. * MATH-153. Corrected nextInt and nextLong to handle wide value ranges. Thanks to Remi Arntzen. * MATH-166. Increased default precision of Gamma and Beta functions. Thanks to Lukas Theussl. * 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. * 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. * MATH-175. Added check and rescaling of expected counts to sum to sum of expected counts if necessary in ChiSquare test. Thanks to Carl Anderson. * MATH-164. Handle multiplication of Complex numbers with infinite parts specially. * MATH-182. Add integer overflow checks in Fraction constructor using double parameter. * MATH-185. Throw EOFException when using empty files with ValueServer in replay and digest modes. * MATH-184. Fixed AbstractIntegerDistribution cumulativeProbablility(-,-) to correctly handle double arguments. Thanks to Yegor Bryukhov. UPDATES * MATH-158. Added log function to MathUtils. Thanks to Hasan Diwan. * MATH-160. Added two sample (binned comparison) ChiSquare test. Thanks to Matthias Hummel. * MATH-170. Added SynchronizedDescriptiveStatistics class. Thanks to David J. M. Karlsen. * MATH-154. Added addAndCheck, mulAndCheck, and subAndCheck MathUtils methods for long integer arguments. Thanks to Remi Arntzen. * MATH-171. Merged most functions from ComplexUtils into Complex class, added static factory method to Complex. Thanks to Niall Pemberton. * 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. * MATH-176. Add errors guessing to least-squares estimators. Thanks to Kazuhiro Koshino. * MATH-179. Add tests for Fraction constructor using double parameter. Thanks to Niall Pemberton. * MATH-181. Add Fraction constructor using max denominator value. Thanks to Niall Pemberton. * Added a equals and hash methods in MathUtils to check for double arrays * MATH-191. Added getSumOfLogs method to SummaryStatistics and made SumOfLogs instance used by GeometricMean configurable. * MATH-188. 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. Thanks to Sebastian Bazley. DEPRECATIONS SUMMARY * The abstract factory pattern used to enable pluggable implementations in the statistics, analysis and distributions packages has been deprecated and replaced by setter injection. * Non-localized exception messages and associated constructors have been deprecated and replaced by localized versions. * Most methods from the ComplexUtils class have been deprecated, with implementations moved to the Complex class. See "clirr-report.html" included in the docs directory of the binary distribution for a detailed list of API changes. The "errors" reported at the top of the report are due to protected fields being moved to superclasses. These fields are still available, so there is no backward compatibility issue. BUILDING COMMONS MATH Commons math can be built from the source distribution using Maven 1, Maven 2, or Ant, launching any one of these from the top-level directory of the unpacked zip or tarball. For detailed build instructions and information about how to contribute to Commons Math, see "developers.html" in the docs directory of the binary distribution.