Author: psteitz
Date: Tue Mar 23 23:45:27 2010
New Revision: 926861
URL: http://svn.apache.org/viewvc?rev=926861&view=rev
Log:
Updated release notes, download page.
Modified:
commons/proper/math/trunk/RELEASENOTES.txt
commons/proper/math/trunk/src/site/xdoc/download_math.xml
Modified: commons/proper/math/trunk/RELEASENOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/RELEASENOTES.txt?rev=926861&r1=926860&r2=926861&view=diff
==============================================================================
 commons/proper/math/trunk/RELEASENOTES.txt (original)
+++ commons/proper/math/trunk/RELEASENOTES.txt Tue Mar 23 23:45:27 2010
@@ 1,448 +1,120 @@
+
 Apache Commons Math Version 2.0
 RELEASE NOTES
+ commonsmath2.1 RELEASE NOTES
+This is a maintenance release including numerous bug fixes and enhancements.
This is a major release. It combines bug fixes, new features and
changes to existing features. Most notable among the new features are:
  decomposition algorithms in the linear algebra package (LU, QR, Cholesky,
 SVD, eigen decomposition) which are based on the popular JAMA API (but
 much faster),
  support for sparse matrices and vectors,
  support for any fieldbased matrix (Complex, Fraction ...),
  support for genetic algorithms
  several new optimization algorithms (Dantzig's simplex for linear
 constrained problems, conjugate gradient, Brent)
  support for curve fitting with special cases for harmonic and polynomial
 functions
  support for state derivative in ODE step handlers
  new multistep integrators (AdamsBashforth and AdamsMoulton) with
 variable stepsize
  regression algorithms
  rank transformations
  Mersenne twister pseudo random number generator

This release is NOT source and binary compatible with earlier versions
of Commons Math. Starting with version 2.0 of the library, the minimal
version of the Java platform required to compile and use commonsmath
is Java 5. Users are encouraged to upgrade to this version, as in addition
to new features, this release includes numerous bug fixes. Users of
Commons Math 1.01.2 should recompile their code against the 2.0 jar.
Most of the compilation errors users will encounter after the switch
will be due to classes moved due to package reorganization. These errors
are simply solved by adjusting the import statements in users code.
Users can ask for help with migration or any other problem related
to commons math by sending a message to the apache commons users
mailing list: user@commons.apache.org.


 SUMMARY OF CHANGES
+Changes in this version include:
New features:

o Added curve fitting with a general case and two specific cases
 (polynomial and harmonic).

o Added a way to limit the number of functions evaluations in
 optimizers (the number of iterations could already be limited)
 Thanks to Gilles Sadowski.

o Added support for rank transformations.

o Added an implementation of the Mersenne twister pseudo random number
 generator from Makoto Matsumoto and Takuji Nishimura

o Added support for any type of field in linear algebra (FielxMatrix,
 FieldVector, FieldLUDecomposition)

o The RealMatrixImpl implementation classes has been renamed
 Array2DRowRealMatrix to reflect its specificities and for
 consistency with the new implementations. The previous name is still
 available but is deprecated

o Added a blockbased storage type for dense matrices improving speed
 for large dimensions

o Added AggregateSummaryStatistics class to support aggregation of
 SummaryStatistics. Thanks to John Bollinger.

o Added general Field and FieldElement interfaces to allow generic
 algorithms to operate on fields. The library already provides
 several implementations: Complex, Fraction, BigFraction and BigReal

o Added a SparseRealVector class that implements a sparse vector for
 the RealVector interface.

o Added a getCovariance method to singular value decomposition Thanks
 to Dimitri Pourbaix.

o Added method to walk matrix entries with or without changing them in
 the visitor design pattern sense. Three different orders can be
 used, row by row, column by column or optimized order according to
 internal storage. Optimized order should be preferred when no
 specific order is needed, because it will be more cache efficient.

o Added an int/double hash map (OpenIntToDoubleHashMap) with much
 smaller memory overhead than standard java.util.Map (open addressing
 and no boxing). Thanks to Ismael Juma.

o 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.

o New ODE integrators have been added: the explicit AdamsBashforth
 and implicit AdamsMoulton multistep methods. As the implementations
 of these methods are based on Nordsieck vector rather than a
 traditional array of previous steps, they both have been improved to
 handle adaptive stepsize. These methods provide the same rich
 features has the existing ones: continuous output, step handlers,
 discrete events, Gstop ...

o All ODE integrators now support setting a maximal number of
 evaluations of differential equations function. If this number is
 exceeded, an exception will be thrown during integration. This can
 be used to prevent infinite loops if for example error control or
 discrete events create a really large number of extremely small
 steps.

o 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.

o 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.

o Added factory methods to create Chebyshev, Hermite, Laguerre and
 Legendre polynomials.

o Added add, subtract, negate, multiply and toString methods to
 PolynomialFunction.

o Added a LegendreGauss integrator.

o Added add/subtract/multiply/divide functions with integer parameters
 to Fraction

o Added some utility functions to compute powers with integral types
 (int, long, BigInteger).

o Added a scalb method in MathUtils. This method is similar to the
 method with same name added in java.lang.Math as of Java 6.

o Added several convenience methods and constants for Vector3D and
 Rotation.

o MATH114: Added PearsonsCorrelation class to compute correlation
 matrices, standard errors and pvalues for correlation
 coefficients. Thanks to John Gant.

o MATH114: Added Covariance class to compute variancecovariance
 matrices in new correlation package.

o MATH136: Added Spearman's rank correlation
 (SpearmansCorrelation). Thanks to John Gant.

o MATH152: Added support for multidimensional Fourier
 transform. Thanks to Remi Arntzen.

o MATH177: Added a new univariate subpackage below the optimization
 package. Thanks to Gilles Sadowski.

o MATH178: Added support for the Zipf distribution. Thanks to Paul
 Cowan.

o MATH202: Added the getSwitchingFunctions and
 clearSwitchingFunctions to the FirstOrderIntegrator interface and
 all its implementations

o MATH203: Added Mauro's patch to support multiple regression. Thanks
 to Mauro Talevi.

o MATH212: Added support for copying statistics. Changes to stats
 classes include copy constructor, static copy(,) and instance
 copy() methods. Added copy() to UnivariateStatistic and
 StorelessUnivariateStatistic interfaces. Thanks to Jason
 C. HandUber.

o MATH215: Added Fast Hadamard Transform. Thanks to Bernhard
 GrÃ¼newaldt.

o MATH219: Added removeData methods for the SimpleRegression
 class. This allows to support regression calculations across a
 sliding window of (timebased) observations without having to
 recalculate for the entire window every time. Thanks to Andrew
 Berry.

o MATH220: Added JAMAlike interfaces for eigen/singular
 problems. The implementation are based on the very quick dqd/dqds
 algorithms and some parts of the MRRR algorithm. This leads to very
 fast and accurate solutions.

o MATH220: Added JAMAlike interfaces for decomposition
 algorithms. These interfaces decompose a matrix as a product of
 several other matrices with predefined properties and shapes
 depending on the algorithm. These algorithms allow to solve the
 equation A * X = B, either for an exact linear solution
 (LUdecomposition, Cholesky decomposition) or an exact or
 leastsquares solution (QRdecomposition).

o MATH222: Added beta distribution. Thanks to Ted Dunning.

o MATH222: Added probability density functions computation for
 distributions for which it is feasible. Thanks to Ted Dunning.

o MATH229: Added a removal feature for observations in descriptive
 statistics. Thanks to Cyril Briquet.

o MATH230: Added support for sparse matrix. Thanks to Sujit Pal and
 Ismael Juma.

o MATH231: Added an abstract matrix implementation simplifying
 extension by users.

o MATH232: Added Frobenius matrix norm.

o MATH234: Added setter methods for rows and columns in matrices.

o MATH236: Added nth root computation for complex numbers. Thanks to
 Bernhard GrÃ¼newaldt.

o MATH246: Added an optimizer for constrained linear problems based
 on 2phases standard simplex. Thanks to Benjamin McCann.

o MATH247: Added a MathUtils method to check equality given some
 error bounds. Thanks to Benjamin McCann.

o MATH251: Added a BigFraction class that does not overflow when big
 numerators or denominators are used. Thanks to Benjamin Croizet.

o MATH256: Added Fraction.toString()

o MATH266: Added a clustering package with an implementation of the
 kmeans++ algorithm Thanks to Benjamin McCann.

o MATH267: Added digamma function. Thanks to Ted Dunning.

o MATH277: Added a scalar multiply to the Complex class Thanks to
 Mark Anderson.

o MATH278: Added robust locally weighted regression (Loess). Thanks
 to Eugene Kirpichov.

o MATH279: Added a check for too few rows with respect to the number
 of predictors in linear regression Thanks to Michael Bjorkegren.
+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 MATH323: Added SemiVariance statistic. Thanks to Larry Diamond.
+o MATH341: Added a warning in the getCoefficients method documentation for
+ PolynomialFunctionLagrangeForm. Computation may be illconditioned
+ so this method should be used with care.
+o MATH340: Fixed an error in BigFraction multiplication for large numerators that don't
+ fit in a primitive int.
+o MATH334: Added min/max getters for real vectors (not yet in the RealVector interface
for
+ compatibility purposes, but in the AbstractRealVector abstract class).
+o MATH321: Singular Value Decomposition now computes either the compact SVD (using only
+ positive singular values) or truncated SVD (using a userspecified maximal
+ number of singular values).
+o MATH300: Added support for multidimensional interpolation using the robust microsphere
algorithm. Thanks to Gilles Sadowski.
+o MATH287: Added support for weighted descriptive statistics. Thanks to Matthew Rowles.
+o Added normalizeArray method to MathUtils.
Fixed Bugs:

o Fixed an infinite loop encountered in some backward integration
 cases for ODE solvers. Thanks to Pascal Parraud.

o Fixed inconsistencies in the naming scheme for static fields in
 Vector3D and Rotation with respect to the overall library.

o MATH177: Redesigned the optimization framework for a simpler yet
 more powerful API. Added nonlinear conjugate gradient optimizer.

o MATH193: Javadoc and style fixes. Thanks to Michael Heuer and Sebb.

o MATH198: Added an error detection for missing imaginary character
 while parsing complex string Thanks to Frederick Salardi.

o MATH199: Detect numerical problems in Q.R decomposition for
 LevenbergMarquardt estimator and report them appropriately Thanks
 to Mick.

o MATH200: Fixed several crashes in getCovariances() and
 guessParametersErrors() in AbstractEstimator when some parameters
 are bound. The methods now explicitly give result only about unbound
 parameters. Thanks to Plamen Petrov.

o MATH201: Fixed truncation error in ttest classes for large t
 values. Thanks to Peter Wyngaard.

o MATH204: Added root checks for the endpoints. Thanks to Mick.

o MATH205: Fixed formula in fast cosine transformer javadoc
 comments. Thanks to Roman Werpachowski.

o MATH207: Added Genetic Algorithm implementation. Thanks to David
 Stefka.

o MATH209: Fixed dimension error on output vector for the operate
 method in RealMatrixImpl and BigMatrixImpl classes. Thanks to Thomas
 Chust.

o MATH210: 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.

o MATH213: 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).

o MATH214: Replaced size adjustment of all steps of fixed steps
 RungeKutta integrators by a truncation of the last step only.

o MATH216: Improved fast Fourier transform efficiency. Thanks to
 Cyril Briquet.

o MATH221: Changed the Complex.equals() method so that it considers
 +0 and 0 are equal, as required by IEEE754 standard. Thanks to
 Dieter Roth.

o MATH223: Greatly improved QRdecomposition speed using transposed
 matrices internally. Thanks to John Mulcahy.

o MATH226: Fixed an error in CorrelatedRandomVectorGenerator leading
 to a component of the generated vector being constant. Thanks to
 Stuart Siegel.

o MATH227: Fixed F distribution inverse CDF computation for small
 denominator degrees of freedom. Thanks to Joerg Henning.

o MATH238: Fixed an error in gcd computation for large values. Thanks
 to Christian Semrau.

o MATH240: Fixed error in factorial computation for 17 <= n <= 20.
 Thanks to Christian Semrau.

o MATH241: Fixed error in binomial coefficient computation. Thanks to
 Christian Semrau.

o MATH243: Fixed an error in computing gcd and lcm for some extreme
 values at integer range boundaries. Thanks to Christian Semrau.

o MATH248: Greatly improved multiplication speed for sparse matrices

o MATH252: Fixed a comparison error when two different fractions
 evaluate to the same double due to limited precision.

o MATH253: Fixed threading issues with MathException and
 MathRuntimeException Thanks to Sebb.

o MATH254: Fixed threading issues with UnivariateRealSolverUtils
 factory Thanks to Sebb.

o MATH255: Reduced visibility of MessagesResources_fr.contents field
 to private Thanks to Sebb.

o MATH257: Fixed inconsistent access to multidimensional array in
 FastFourierTransformer Thanks to Sebb.

o MATH263: Added getNorm1, getNormInf, distance1 and distanceInf to
 the Vector3D class

o MATH264: Added an utility equality method between double numbers
 using tolerance in ulps (Units in Last Position) Thanks to Gilles
 Sadowski.

o MATH265: Added distance1, distance and distanceInf utility methods
 for double and int arrays in MathUtils Thanks to Benjamin McCann.

o MATH272: Fixed a problem when setting some variables (several
 variables were set instead of only one) Thanks to Benjamin McCann.

o MATH273: Fixed a wrong check for basic variables Thanks to Benjamin
 McCann.

o MATH274: Fixed detection of not positive definite matrices in
 Cholesky decomposition

o MATH280: The behavior of the bracket method in
 UnivariateRealSolverUtils has been changed to return successfully
 when a tentative bracketing interval has a root exactly at one of
 its end points. Previously, such intervals triggered an exception.

o MATH281: Fixed an error in RealMatrix javadoc
+o MATH335: Fraction.hashCode() implementation was not fully consistent with Fraction.equals().
+ Changed hashCode() to use fields directly to agree with equals().
+o MATH282: 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 MATH347: Fixed too stringent interval check in Brent solver: initial guess is now
+ allowed to be at either interval 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 nonzero value consistent with at least one point inside the step
+o MATH344: Fixed wrong return values when enpoints are roots in Brent solver with
+ a user provided initial guess
+o MATH343: Fixed a missing bracketing check of initial interval in Brent solver.
+o MATH342: 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 nonsignificant elements are
+ set to 0.
+o MATH333: 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 MATH338: Fixed automatic step initialization in embedded RungeKutta integrators.
+ The relative tolerance setting was never used, only the absolute tolerance
+ was used. Thanks to Vincent Morand.
+o MATH329: Fixed regression in Frequency.getPct(Object) introduced in 2.0. Cumulative
+ percent was being returned for Object arguments in place of percent.
+o MATH320: Fixed Singular Value Decomposition solving of singular systems.
+o MATH326: Fixed a wrong implementation of the Linf norm in vectors. Thanks to Jake Mannix.
+o MATH324: Fixed a convergence discrepancy with respect to theory in GraggBulirschStoer
+ integrator. Thanks to Vincent Morand.
+o Fixed a wrong dimension check in SVD solver. Thanks to Dimitri Pourbaix.
+o MATH313: Added composition features for real functions. Thanks to Jake Mannix.
+o MATH312: Added mapping and iteration methods to vectors. Provided a default implementation
+ for the numerous simple methods in the RealVectorInterface. Thanks to Jake Mannix.
+o MATH322: Fixed an error in handling very close events in ODE integration.
+o MATH305: 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 MATH318: Fixed an index computation error in eigen decomposition. Once again, kudos to
Dimitri
+ for debugging this. Thanks to Dimitri Pourbaix.
+o MATH308: Fixed an ArrayIndexOutOfBoundsException in eigen decomposition. Kudos to Dimitri
+ for debugging this, it was really difficult. Thanks to Dimitri Pourbaix.
+o MATH309: Fixed parameter test in RandomDataImpl#nextExponential. The method now throws
+ IllegalArgumentException for mean = 0. Thanks to Mikkel Meyer Andersen.
+o MATH306: Removed dead code from Complex#divide. Thanks to Joerg Huber.
+o MATH294: Fixed implementation of RandomDataImpl#nextPoisson by implementing an alternative
+ algorithm for large means.
+o MATH298: Fixed implementation of EmpiricalDistributionImpl#getUpperBounds to match
+ interface contract. Added getGeneratorUpperBounds method to
+ EmpiricalDistributionImpl providing previous behavior.
+o MATH296: 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 MATH293: Fixed a OutOfBoundException in simplex solver when some constraints are tight.
Thanks to Benjamin McCann.
+o MATH291: Fixed misleading number formats in error messages for adaptive
+ stepsize integrators. Thanks to Sebb.
+o MATH290: Fixed a NullPointerException in simplex solver when no solution is possible
+ and some constraints are negative. Thanks to Benjamin McCann.
+o MATH289: Removed an unused argument in a private method in simplex solver.
+o MATH288: Fixed an error induced by entries set to 0 in simplex solver. Thanks to Benjamin
McCann.
+o MATH286: Fixed an error leading the simplex solver to compute the right solution
+ but return another one. Thanks to Benjamin McCann.
+o MATH283: Prevent infinite loops in multidirectional direct optimization method when
+ the start point is exactly at the optimal point. Thanks to Michael Nischt.
+o MATH297: Prevent possible zero divides on eigenvectors of indefinite matrices Thanks
to Axel Kramer.
Changes:
+o MATH332: 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 MATH337: Changed equals() methods to use instanceof check rather than catching ClassCastException;
+ this also allows some null checks to be omitted.
+o MATH336: Removed unnecessary null checks in equals methods.
+o MATH239: Added MathUtils methods to compute gcd and lcm for long arguments. Thanks to
Christian Semrau.
+o MATH287: Added support for weighted univariate statistics. Thanks to Matthew Rowles.
+o MATH315: 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 MATH311: Changed probability calculations for Binomial, Poisson, and Hypergeometric
+ distributions to use Catherine Loader's saddle point approximations. Thanks to Nipun
Jawalkar.
+
+
+For complete information on commonsmath, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the commonsmath website:
o Changed the return type of the various interpolation algorithms to
 the specific implementation of UnivariateRealFunction each one uses
 Thanks to Gilles Sadowski.

o Completed internationalization of all error messages

o Integration algorithms now can have both relative and absolute
 accuracy settings.

o The analysis package has been reorganized with several subpackages.

o 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.

o Events handlers in the ODE package now also provide the switching
 function variation (increasing/decreasing) when an event occurs

o Clarified the ODE package by breaking in into several subpackages
 and renaming classes (SwitchingFunctions/EventHandler,
 SwitchingFunctionsHandler/CombinedEventsManager)

o The FirstOrderDifferentialEquations, FirstOrderIntegrator and
 FixedStepHandler interfaces now extends Serializable, allowing
 integrators, problems and handlers to be embedded into users
 Serializable classes.

o Replaced public no argument constructors with IDENTITY or ZERO
 static instances for immutable classes Vector3D and Rotation.

o Greatly improved RealMatrixImpl and BigMatrixImpl performances, both
 in terms of speed and in terms of temporary memory footprint.

o Starting with version 2.0 of the library, the minimal version of the
 Java platform required to compile and use commonsmath 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.

o Removed deprecated features. This includes the following
 changes. Factorybased 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.

o MATH189: Changed FractionFormat to extend NumberFormat.

o MATH217: Changed OLS regression implementation added in MATH203 to
 use QR decomposition to solve the normal equations.

o MATH218: The root solvers and the integrators now take the function
 to solve as a parameter to the solve/integrate methods, thus
 allowing to reuse the same solver/integrator for different
 functions.

o MATH242: Forced symmetry in binomialCoefficientLog and added test
 cases for MathUtils. Thanks to Christian Semrau.

o MATH276: Optimized Complex isNaN(), isInfinite() by moving
 computation to constructor. Thanks to Mark Anderson.

+http://commons.apache.org/math/
For complete information on commonsmath, including instructions on
how to submit bug reports, patches, or suggestions for improvement,
see the commonsmath website:
http://commons.apache.org/math/
Modified: commons/proper/math/trunk/src/site/xdoc/download_math.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/download_math.xml?rev=926861&r1=926860&r2=926861&view=diff
==============================================================================
 commons/proper/math/trunk/src/site/xdoc/download_math.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/download_math.xml Tue Mar 23 23:45:27 2010
@@ 95,32 +95,32 @@ limitations under the License.
</p>
</subsection>
</section>
 <section name="Commons Math 2.0 ">
+ <section name="Commons Math 2.1 ">
<subsection name="Binaries">
<table>
<tr>
 <td><a href="[preferred]/commons/math/binaries/commonsmath2.0.tar.gz">commonsmath2.0.tar.gz</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.0.tar.gz.md5">md5</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.0.tar.gz.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/math/binaries/commonsmath2.1.tar.gz">commonsmath2.1.tar.gz</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.1.tar.gz.md5">md5</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.1.tar.gz.asc">pgp</a></td>
</tr>
<tr>
 <td><a href="[preferred]/commons/math/binaries/commonsmath2.0.zip">commonsmath2.0.zip</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.0.zip.md5">md5</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.0.zip.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/math/binaries/commonsmath2.1.zip">commonsmath2.1.zip</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.1.zip.md5">md5</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/binaries/commonsmath2.1.zip.asc">pgp</a></td>
</tr>
</table>
</subsection>
<subsection name="Source">
<table>
<tr>
 <td><a href="[preferred]/commons/math/source/commonsmath2.0src.tar.gz">commonsmath2.0src.tar.gz</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.0src.tar.gz.md5">md5</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.0src.tar.gz.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/math/source/commonsmath2.1src.tar.gz">commonsmath2.1src.tar.gz</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.1src.tar.gz.md5">md5</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.1src.tar.gz.asc">pgp</a></td>
</tr>
<tr>
 <td><a href="[preferred]/commons/math/source/commonsmath2.0src.zip">commonsmath2.0src.zip</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.0src.zip.md5">md5</a></td>
 <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.0src.zip.asc">pgp</a></td>
+ <td><a href="[preferred]/commons/math/source/commonsmath2.1src.zip">commonsmath2.1src.zip</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.1src.zip.md5">md5</a></td>
+ <td><a href="http://www.apache.org/dist/commons/math/source/commonsmath2.1src.zip.asc">pgp</a></td>
</tr>
</table>
</subsection>
