diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 56e8d19..e6cf18d 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,116 +1,32 @@
-The Apache Commons Math team is pleased to announce the commons-math3-3.6 release!
 
-The Apache Commons Math project is a library of lightweight, self-contained mathematics
-and statistics components addressing the most common practical problems not immediately
-available in the Java programming language or commons-lang.
+              Apache Commons Math 3.6.1 RELEASE NOTES
+
+The Apache Commons Math team is pleased to announce the release of
+commons-math3-3.6.1
+
+The Apache Commons Math project is a library of lightweight, self-contained
+mathematics and statistics components addressing the most common practical
+problems not immediately available in the Java programming language or
+commons-lang.
+
+This is a minor bug fix release. It incorporates three bug fixes since version
+3.6. The minimum version of the Java platform required to compile and use
+Commons Math 3.6.1 is Java 5.
 
 Changes in this version include:
 
-New features:
-o Added a RotationConvention enumerate to allow specifying the semantics
-        or axis/angle for rotations. This enumerate has two values:
-        VECTOR_OPERATOR and FRAME_TRANSFORM.  Issue: MATH-1302,MATH-1303.
-o Added a field-based version of Ordinary Differential Equations framework.
-        This allows integrating ode that refer to RealField elements instead of
-        primitive double, hence opening the way to use DerivativeStructure to
-        compute partial differential without using variational equations, or to solve
-        ode with extended precision using Dfp.  Issue: MATH-1288.
-o Added a nth order Brent solver for general real fields, replacing the former
-        solver that was restricted to Dfp fields only.
-o New "Range" inner class of "o.a.c.m.util.IntegerSequence".  Issue: MATH-1286.
-o "AggregateSummaryStatistics" can now aggregate any kind of
-        "StatisticalSummary".  Issue: MATH-837.
-o Deep copy of "Network" (package "o.a.c.m.ml.neuralnet") to allow evaluation of
-        of intermediate states during training.  Issue: MATH-1278.
-o Added negative zero support in FastMath.pow.  Issue: MATH-1273. Thanks to Qualtagh.
-o Various SOFM visualizations (in package "o.a.c.m.ml.neuralnet.twod.util"):
-        Unified distance matrix, hit histogram, smoothed data histograms,
-        topographic error, quantization error.  Issue: MATH-1270.
-o New interfaces to be implemented by algorithms that visualizes properties
-        of a "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod.util").  Issue: MATH-1268.
-o Reimplemented pow(double, double) in FastMath, for better accuracy in
-        integral power cases and trying to fix erroneous JIT optimization again.
-o Added a pow(double, long) method in FastMath.
-o "NeuronSquareMesh2D" (package "o.a.c.m.ml.neuralnet.twod") implements "Iterable".  Issue: MATH-1265.
-o "MapUtils" (package "o.a.c.m.ml.neuralnet"): Method to sort units according to distance
-        from a given vector.  Issue: MATH-1264.
-o Accessor (class "o.a.c.m.ml.neuralnet.twod.NeuronSquareMesh2D").  Issue: MATH-1263.
-o New "IntegerSequence" class (in package "o.a.c.m.util") with "Incrementor" inner class.  Issue: MATH-1259.
-o "Neuron" class (package "o.a.c.m.ml.neuralnet"): added methods that can be used
-        to assess concurrency performance.  Issue: MATH-1250.
-o Method "cosAngle" in "o.a.c.m.util.MathArrays".  Issue: MATH-1244.
-
 Fixed Bugs:
-o Improved performance and accuracy of 2-sample KolmogorovSmirnov tests.  Issue: MATH-1310.
-o Detect start failures with multi-step ODE integrators.  Issue: MATH-1297.
-o Fixed stability issues with Adams-Bashforth and Adams-Moulton ODE integrators.
-        The integrators did not estimate the local error properly and were sometimes
-        stuck attempting to reduce indefinitely the step size as they thought the
-        error was too high. Thanks to Julien Queyrel.
-o Increased default value for number of allowed evaluations in
-        "o.a.c.m.optim.univariate.BracketFinder".  Issue: MATH-1295. Thanks to Luke Lindsay.
-o Fixed potential race condition in PolynomialUtils#buildPolynomial in
-        case polynomials are generated from multiple threads. Furthermore, the
-        synchronization is now performed on the coefficient list instead of the class.  Issue: MATH-1294. Thanks to Kamil Włodarczyk.
-o Fixed FastMath.exp that potentially returned NaN for non-NaN argument.  Issue: MATH-1269.
-o Updated reference in ZipfDistribution's javadoc.  Issue: MATH-1285. Thanks to Pim van der Hoorn.
-o Fixed "Gamma#gamma(double)" for negative values smaller than -20.  Issue: MATH-1283. Thanks to Jean Noel Delavalade.
-o Fixed javadoc of methods {floorDiv,floorMod} in class "FastMath".  Issue: MATH-1237. Thanks to Ken Williams.
-o Check precondition (class "o.a.c.m.random.EmpiricalDistribution").  Issue: MATH-1279.
-o Fixed incorrect Kendall's tau coefficient calculation due to internal integer overflow.  Issue: MATH-1277. Thanks to Marc Rosen.
-o Fixed split/side inconsistencies in BSP trees.  Issue: MATH-1266.
-o Avoid overflow in "Fraction" (multiplication or division by an int).  Issue: MATH-1261. Thanks to Osamu Ikeuchi.
-o Added check for equal array lengths to distance measure functions.  Issue: MATH-1258. Thanks to Gunel Jahangirova.
-o Better accuracy in computation of cumulative probability of "NormalDistribution"
-        (package "o.a.c.m.distribution").  Issue: MATH-1257. Thanks to Bill Murphy.
-o Boundary check to construct an "Interval" (package "o.a.c.m.geometry.euclidean.oned").  Issue: MATH-1256.
-o Wrong neighbourhood size in class "KohonenUpdateAction" (package "o.a.c.m.ml.neuralnet.sofm").  Issue: MATH-1255.
-o ResizableDoubleArray constructor does not work with double array of size 1.  Issue: MATH-1252. Thanks to John Bay.
-o Fixed initial value of "number of calls" counter in class "KohonenUpdateAction"
-        (package "o.a.c.m.ml.neuralnet.sofm").  Issue: MATH-1251.
-o Removed unnecessary allocations in "BigFraction" (package "o.a.c.m.fraction").  Issue: MATH-1248. Thanks to Chris Popp.
-o Fixed error in computing discrete distribution of D statistics for small-sample
-        2-sample Kolmogorov-Smirnov tests. Error was causing incorrect p-values returned
-        by exactP and monteCarloP methods (used by default for small, mid-size samples).  Issue: MATH-1245.
-o "KolmogorovSmirnovTest#ksSum(...)" returned wrong result in case the provided
-        t-parameters was zero. This affected the calculation of "approximateP(...)" for
-        identical samples.  Issue: MATH-1240.
-o Improved performance to calculate the two-sample Kolmogorov-Smirnov test
-        via monte carlo simulation ("KolmogorovSmirnovTets#monteCarloP(...)").  Issue: MATH-1242. Thanks to Otmar Ertl.
-o A "StackOverflowException" was thrown when passing Double.NaN or infinity
-        to "Gamma#digamma(double)" or "Gamma#trigamma(double)". Now the input value
-        is propagated to the output if it is not a real number.  Issue: MATH-1241. Thanks to Aleksei Dievskii.
-o Improved performance of calculating the two-sample Kolmogorov-Smirnov
-        test statistic.  Issue: MATH-1232. Thanks to Otmar Ertl.
-o Fixed error message for unknown parameter name in ODE.  Issue: MATH-1232.
-o Fixed wrong event detection in case of close events pairs.  Issue: MATH-1226.
-o Fix potential branching errors in "FastMath#pow(double, double)" when
-        passing special values, i.e. infinity, due to erroneous JIT optimization.
-o Fixed equals/hashcode contract failure for Dfp.  Issue: MATH-1118.
-o Fixed wrong splitting of huge number in extended accuracy algorithms.  Issue: MATH-1223.
-o Improve performance of "BetaDistribution#sample()" by using Cheng's algorithm.  Issue: MATH-1153. Thanks to Sergei Lebedev.
-o Computation of 2-sample Kolmogorov-Smirnov statistic in case of ties
-        was not correct.  Issue: MATH-1197.
+o MATH-1316:  Fix code example in User Guide > Statistics > Multiple linear regression. 
+o MATH-1342:  Fix ODE integrators when multiple events are nearly simultaneous. 
 
 Changes:
-o Modified 2-sample KolmogorovSmirnovTest to handle ties in sample data. By default,
-        ties are broken by adding random jitter to input data. Also added bootstrap method
-        analogous to ks.boot in R Matching package.  Issue: MATH-1246.
-o Added bootstrap method to KolmogorovSmirnov test.  Issue: MATH-1246.
-o Added constructors taking sample data as arguments to enumerated real and integer distributions.  Issue: MATH-1287.
-o Improved performance of sampling and inverse cumulative probability calculation
-        for geometric distributions.  Issue: MATH-1276.
-o Representation of Kolmogorov-Smirnov statistic as integral value.  Issue: MATH-1274.
-o Faster generation of Zipf distributed random numbers by using rejection-inversion sampling.  Issue: MATH-1220.
-o Improved performance of sort-in-place methods by avoiding boxing.  Issue: MATH-990.
-o Refactored implementation of the "miscrosphere projection"
-        interpolation algorithm.
-        New classes: "MicrosphereProjectionInterpolator",
-        "InterpolatingMicrosphere" and "InterpolatingMicrosphere2D"
-        replace "MicrosphereInterpolator" and "MicrosphereInterpolatingFunction".
-        (package "o.a.c.m.analysis.interpolation").  Issue: MATH-1243.
+o MATH-1317:  Add uniformity unit tests to "RandomGeneratorAbstractTest". 
 
 
-Have fun!
--Apache Commons Math team
+For complete information on Apache 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/proper/commons-math/
+
 
diff --git a/pom.xml b/pom.xml
index 306b7a9..3a812ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-math3</artifactId>
-  <version>3.7-SNAPSHOT</version>
+  <version>3.6.1</version>
   <name>Apache Commons Math</name>
 
   <inceptionYear>2003</inceptionYear>
@@ -369,9 +369,9 @@
     <!-- This value must reflect the current name of the base package. -->
     <commons.osgi.symbolicName>org.apache.commons.math3</commons.osgi.symbolicName>
     <!-- do not use snapshot suffix here -->
-    <commons.release.version>3.6</commons.release.version>
+    <commons.release.version>3.6.1</commons.release.version>
     <commons.release.desc>(requires Java 1.5+)</commons.release.desc>
-    <commons.rc.version>RC2</commons.rc.version>
+    <commons.rc.version>RC1</commons.rc.version>
     <commons.binary.suffix>-bin</commons.binary.suffix>
 
     <commons.release.2.version>2.2</commons.release.2.version>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7e4cd28..aa3cbcf 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -50,7 +50,7 @@
     <title>Commons Math Release Notes</title>
   </properties>
   <body>
-    <release version="3.6.1" date="2016-03-17" description="
+    <release version="3.6.1" date="2016-03-21" description="
 This is a minor bug fix release. It incorporates three bug fixes since version 3.6.
 
 The minimum version of the Java platform required to compile and use
diff --git a/src/site/site.xml b/src/site/site.xml
index b9adbf4..1698ce9 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -27,6 +27,8 @@
       <item name="Overview" href="/index.html"/>
       <item name="Downloads" href="http://commons.apache.org/math/download_math.cgi"/>
       <item name="Latest API docs (development)" href="apidocs/index.html"/>
+      <item name="Javadoc (3.6.1 release)"
+            href="http://commons.apache.org/math/javadocs/api-3.6.1/index.html"/>
       <item name="Javadoc (3.6 release)"
          href="http://commons.apache.org/math/javadocs/api-3.6/index.html"/>
       <item name="Javadoc (3.5 release)"
diff --git a/src/site/xdoc/download_math.xml b/src/site/xdoc/download_math.xml
index 124cdac..b574311 100644
--- a/src/site/xdoc/download_math.xml
+++ b/src/site/xdoc/download_math.xml
@@ -1,168 +1,168 @@
-<?xml version="1.0"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<!--
- +======================================================================+
- |****                                                              ****|
- |****      THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN      ****|
- |****                    DO NOT EDIT DIRECTLY                      ****|
- |****                                                              ****|
- +======================================================================+
- | TEMPLATE FILE: download-page-template.xml                            |
- | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
- +======================================================================+
- |                                                                      |
- | 1) Re-generate using: mvn commons:download-page                      |
- |                                                                      |
- | 2) Set the following properties in the component's pom:              |
- |    - commons.componentid (required, alphabetic, lower case)          |
- |    - commons.release.version (required)                              |
- |    - commons.binary.suffix (optional)                                |
- |      (defaults to "-bin", set to "" for pre-maven2 releases)         |
- |                                                                      |
- | 3) Example Properties                                                |
- |                                                                      |
- |  <properties>                                                        |
- |    <commons.componentid>math</commons.componentid>                   |
- |    <commons.release.version>1.2</commons.release.version>            |
- |  </properties>                                                       |
- |                                                                      |
- +======================================================================+
--->
-<document>
-  <properties>
-    <title>Download Apache Commons Math</title>
-    <author email="dev@commons.apache.org">Commons Documentation Team</author>
-  </properties>
-  <body>
-    <section name="Download Apache Commons Math">
-    <subsection name="Using a Mirror">
-      <p>
-        We recommend you use a mirror to download our release
-        builds, but you <strong>must</strong> verify the integrity of
-        the downloaded files using signatures downloaded from our main
-        distribution directories. Recent releases (48 hours) may not yet
-        be available from the mirrors.
-      </p>
-
-      <p>
-        You are currently using <b>[preferred]</b>.  If you
-        encounter a problem with this mirror, please select another
-        mirror.  If all mirrors are failing, there are <i>backup</i>
-        mirrors (at the end of the mirrors list) that should be
-        available.
-        <br></br>
-        [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
-      </p>
-
-      <form action="[location]" method="get" id="SelectMirror">
-        <p>
-          Other mirrors:
-          <select name="Preferred">
-          [if-any http]
-            [for http]<option value="[http]">[http]</option>[end]
-          [end]
-          [if-any ftp]
-            [for ftp]<option value="[ftp]">[ftp]</option>[end]
-          [end]
-          [if-any backup]
-            [for backup]<option value="[backup]">[backup] (backup)</option>[end]
-          [end]
-          </select>
-          <input type="submit" value="Change"></input>
-        </p>
-      </form>
-
-      <p>
-        The <a href="http://www.apache.org/dist/commons/KEYS">KEYS</a>
-        link links to the code signing keys used to sign the product.
-        The <code>PGP</code> link downloads the OpenPGP compatible signature from our main site.
-        The <code>MD5</code> link downloads the checksum from the main site.
-      </p>
-    </subsection>
-    </section>
-    <section name="Apache Commons Math 3.6 (requires Java 1.5+)">
-      <subsection name="Binaries">
-        <table>
-          <tr>
-              <td><a href="[preferred]/commons/math/binaries/commons-math3-3.6-bin.tar.gz">commons-math3-3.6-bin.tar.gz</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6-bin.tar.gz.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6-bin.tar.gz.asc">pgp</a></td>
-          </tr>
-          <tr>
-              <td><a href="[preferred]/commons/math/binaries/commons-math3-3.6-bin.zip">commons-math3-3.6-bin.zip</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6-bin.zip.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6-bin.zip.asc">pgp</a></td>
-          </tr>
-        </table>
-      </subsection>
-      <subsection name="Source">
-        <table>
-          <tr>
-              <td><a href="[preferred]/commons/math/source/commons-math3-3.6-src.tar.gz">commons-math3-3.6-src.tar.gz</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6-src.tar.gz.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6-src.tar.gz.asc">pgp</a></td>
-          </tr>
-          <tr>
-              <td><a href="[preferred]/commons/math/source/commons-math3-3.6-src.zip">commons-math3-3.6-src.zip</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6-src.zip.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6-src.zip.asc">pgp</a></td>
-          </tr>
-        </table>
-      </subsection>
-    </section>
-    <section name="Apache Commons Math 2.2 (requires Java 1.5+)">
-      <subsection name="Binaries">
-        <table>
-          <tr>
-              <td><a href="[preferred]/commons/math/binaries/commons-math-2.2.tar.gz">commons-math-2.2.tar.gz</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.tar.gz.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.tar.gz.asc">pgp</a></td>
-          </tr>
-          <tr>
-              <td><a href="[preferred]/commons/math/binaries/commons-math-2.2.zip">commons-math-2.2.zip</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.zip.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.zip.asc">pgp</a></td>
-          </tr>
-        </table>
-      </subsection>
-      <subsection name="Source">
-        <table>
-          <tr>
-              <td><a href="[preferred]/commons/math/source/commons-math-2.2-src.tar.gz">commons-math-2.2-src.tar.gz</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.tar.gz.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.tar.gz.asc">pgp</a></td>
-          </tr>
-          <tr>
-              <td><a href="[preferred]/commons/math/source/commons-math-2.2-src.zip">commons-math-2.2-src.zip</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.zip.md5">md5</a></td>
-              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.zip.asc">pgp</a></td>
-          </tr>
-        </table>
-      </subsection>
-    </section>
-    <section name="Archives">
-        <p>
-          Older releases can be obtained from the archives.
-        </p>
-        <ul>
-          <li class="download"><a href="[preferred]/commons/math/">browse download area</a></li>
-          <li><a href="http://archive.apache.org/dist/commons/math/">archives...</a></li>
-        </ul>
-    </section>
-  </body>
-</document>
+<?xml version="1.0"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<!--
+ +======================================================================+
+ |****                                                              ****|
+ |****      THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN      ****|
+ |****                    DO NOT EDIT DIRECTLY                      ****|
+ |****                                                              ****|
+ +======================================================================+
+ | TEMPLATE FILE: download-page-template.xml                            |
+ | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
+ +======================================================================+
+ |                                                                      |
+ | 1) Re-generate using: mvn commons:download-page                      |
+ |                                                                      |
+ | 2) Set the following properties in the component's pom:              |
+ |    - commons.componentid (required, alphabetic, lower case)          |
+ |    - commons.release.version (required)                              |
+ |    - commons.binary.suffix (optional)                                |
+ |      (defaults to "-bin", set to "" for pre-maven2 releases)         |
+ |                                                                      |
+ | 3) Example Properties                                                |
+ |                                                                      |
+ |  <properties>                                                        |
+ |    <commons.componentid>math</commons.componentid>                   |
+ |    <commons.release.version>1.2</commons.release.version>            |
+ |  </properties>                                                       |
+ |                                                                      |
+ +======================================================================+
+-->
+<document>
+  <properties>
+    <title>Download Apache Commons Math</title>
+    <author email="dev@commons.apache.org">Commons Documentation Team</author>
+  </properties>
+  <body>
+    <section name="Download Apache Commons Math">
+    <subsection name="Using a Mirror">
+      <p>
+        We recommend you use a mirror to download our release
+        builds, but you <strong>must</strong> verify the integrity of
+        the downloaded files using signatures downloaded from our main
+        distribution directories. Recent releases (48 hours) may not yet
+        be available from the mirrors.
+      </p>
+
+      <p>
+        You are currently using <b>[preferred]</b>.  If you
+        encounter a problem with this mirror, please select another
+        mirror.  If all mirrors are failing, there are <i>backup</i>
+        mirrors (at the end of the mirrors list) that should be
+        available.
+        <br></br>
+        [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
+      </p>
+
+      <form action="[location]" method="get" id="SelectMirror">
+        <p>
+          Other mirrors:
+          <select name="Preferred">
+          [if-any http]
+            [for http]<option value="[http]">[http]</option>[end]
+          [end]
+          [if-any ftp]
+            [for ftp]<option value="[ftp]">[ftp]</option>[end]
+          [end]
+          [if-any backup]
+            [for backup]<option value="[backup]">[backup] (backup)</option>[end]
+          [end]
+          </select>
+          <input type="submit" value="Change"></input>
+        </p>
+      </form>
+
+      <p>
+        The <a href="http://www.apache.org/dist/commons/KEYS">KEYS</a>
+        link links to the code signing keys used to sign the product.
+        The <code>PGP</code> link downloads the OpenPGP compatible signature from our main site.
+        The <code>MD5</code> link downloads the checksum from the main site.
+      </p>
+    </subsection>
+    </section>
+    <section name="Apache Commons Math 3.6.1 (requires Java 1.5+)">
+      <subsection name="Binaries">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/math/binaries/commons-math3-3.6.1-bin.tar.gz">commons-math3-3.6.1-bin.tar.gz</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.tar.gz.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/math/binaries/commons-math3-3.6.1-bin.zip">commons-math3-3.6.1-bin.zip</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.zip.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Source">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/math/source/commons-math3-3.6.1-src.tar.gz">commons-math3-3.6.1-src.tar.gz</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.tar.gz.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/math/source/commons-math3-3.6.1-src.zip">commons-math3-3.6.1-src.zip</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.zip.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+    <section name="Apache Commons Math 2.2 (requires Java 1.5+)">
+      <subsection name="Binaries">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/math/binaries/commons-math-2.2.tar.gz">commons-math-2.2.tar.gz</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.tar.gz.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/math/binaries/commons-math-2.2.zip">commons-math-2.2.zip</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.zip.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/binaries/commons-math-2.2.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Source">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/math/source/commons-math-2.2-src.tar.gz">commons-math-2.2-src.tar.gz</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.tar.gz.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/math/source/commons-math-2.2-src.zip">commons-math-2.2-src.zip</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.zip.md5">md5</a></td>
+              <td><a href="http://www.apache.org/dist/commons/math/source/commons-math-2.2-src.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+    <section name="Archives">
+        <p>
+          Older releases can be obtained from the archives.
+        </p>
+        <ul>
+          <li class="download"><a href="[preferred]/commons/math/">browse download area</a></li>
+          <li><a href="http://archive.apache.org/dist/commons/math/">archives...</a></li>
+        </ul>
+    </section>
+  </body>
+</document>
