You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2022/12/13 17:14:19 UTC

[commons-math] 02/03: Create release candidate.

This is an automated email from the ASF dual-hosted git repository.

erans pushed a commit to annotated tag commons-math-4.0-beta1-RC1
in repository https://gitbox.apache.org/repos/asf/commons-math.git

commit ce24a0712b628c1ea615b18a064385e11bf4488b
Author: Gilles Sadowski <gi...@gmail.com>
AuthorDate: Tue Dec 13 01:42:40 2022 +0100

    Create release candidate.
---
 RELEASE-NOTES.txt               | 224 +++++++++++++++++++++++++++++++++++
 pom.xml                         |   4 +-
 src/changes/changes.xml         |   2 +-
 src/site/site.xml               |   2 +
 src/site/xdoc/download_math.xml | 256 ++++++++++++++++++++--------------------
 5 files changed, 357 insertions(+), 131 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
new file mode 100644
index 000000000..de7a722d2
--- /dev/null
+++ b/RELEASE-NOTES.txt
@@ -0,0 +1,224 @@
+
+              Apache Commons Math 4.0-beta1 RELEASE NOTES
+
+The Apache Commons Math team is pleased to announce the release of commons-math-parent-4.0-beta1
+
+The Apache Commons Math project is a library of lightweight mathematics
+    and statistics components addressing common practical problems.
+
+This is a major release that requires source changes in applications.
+Lower-level functionality has been split off to new components, often
+with bug-fixes, performance enhancements and improved API:
+ Commons RNG,
+ Commons Numbers,
+ Commons Geometry,
+ Commons Statistics.
+Functionality still within Commons Math has been modularized and
+partly refactored.
+This is a work-in-progress (help welcome).
+Codes for which the refactoring has not been undertaken (or was
+deemed incomplete) have been moved to 'legacy' modules.
+The minimum version of the Java platform required to compile and use
+Commons Math is Java 8.
+Users are encouraged to upgrade to this version, and to the new
+components listed above (they are now Commons Math's dependencies).
+For code now located in the 'commons-math-legacy' module, upgrading
+will be a matter of changing the top-level package name:
+From 'org.apache.commons.math3' to 'org.apache.commons.math4.legacy'.
+Code in the 'commons-math-legacy-core' module comprise classes that
+moved from package 'org.apache.commons.math3' and package
+'org.apache.commons.math3.util' (e.g. 'MathArrays') to package
+'org.apache.commons.math4.legacy.core'.
+Notes:
+Class 'FastMath' was renamed 'AccurateMath' (now located in package
+'org.apache.commons.math4.legacy.core.jdkmath').
+Caveat:
+Although hundreds of issues have been fixed (see 'git log' and the
+reports in the bug-tracking system of all the listed components),
+many remain due to the lack of human resources necessary in order
+to support the whole codebase (it was one of the main reasons for
+creating more focused components).
+
+Changes in this version include:
+
+New features:
+o MATH-1648:  "BicubicInterpolator": Provide partial derivatives of interpolating functions. Thanks to Alessandro Moscatelli. 
+o MATH-1371:  Add "ElkanKMeansPlusPlusClusterer" clustering algorithm. Thanks to Artem Barger. 
+o MATH-1622:  Update class "SimplexOptimizer" (in package "o.a.c.m.legacy.optim.nonlinear.scalar.noderiv")
+        to support simulated annealing. 
+o MATH-1551:  "Percentile": Partial support for weighted data. Thanks to Allen Yu. 
+o MATH-1529:  "AkimaSplineInterpolator": Option to use alternative weights. 
+o MATH-1509:  Add "MiniBatchKMeansClusterer" clustering algorithm. Thanks to Chen Tao. 
+o MATH-1519:  Add "Calinski-Harabsz" clustering evaluator. Thanks to Chen Tao. 
+o MATH-1516:  Interface for ranking a list of clusters. 
+o MATH-1477:  "MillerUpdatingRegression": Fixed "ArrayIndexOutOfBounds" exception. Thanks to Chee Sing Lee. 
+o MATH-1459:  Create a way to automatically calculate a Jacobian matrix using a differentiator. Thanks to Adrian Porter. 
+o MATH-1426:  "DescriptiveStatistics": allow "Double[]" as initializer. Thanks to Karl Richter. 
+o MATH-1383:  Dependency toward the "Commons Rng" component. 
+o MATH-1015:  Gauss-Laguerre quadrature. Thanks to Thomas Neidhart. 
+o MATH-1350:  Improved code coverage (unit tests). Thanks to Rob Tompkins. 
+o MATH-1336:  New 64-bits RNG implementations. On 64-bits systems, they are ~35% faster than
+        "java.util.Random" for generating "long" or "double" values. They also guarantee
+        much better randomness than "Random" (cf. MATH-1327). 
+o MATH-1335:  Refactoring of uniform random number generator functionality: new API
+        implemented in package "o.a.c.m.rng". 
+o MATH-1337:  Adaptor class from new API ("o.a.c.m.rng.RandomSource") to old API
+        ("o.a.c.m.random.RandomGenerator"). 
+o MATH-1327:  Report on performance and correctness of the new RNG implementations. 
+o MATH-1314:  Javadoc of the new RNG API ("o.a.c.m.rng") mentions the "seed problem". 
+o MATH-1158:  New interface for sampling from distribution (package "o.a.c.m.distribution"). 
+o MATH-1351:  New sampler API for "MultivariateRealDistribution". 
+o MATH-1348:  Adaptor for using one of the new RNG implementations where an instance of
+        "java.util.Random" is required. 
+o MATH-1295:  "FactorialLog": Cache-based computation of the "log factorial" function (implemented
+        as an inner class of "CombinatoricsUtils" in package "o.a.c.m.util"). Thanks to Aleksei Dievskii. 
+o MATH-1271:  Added divideUnsigned and remainderUnsigned to ArithmeticUtils. Thanks to Qualtagh. 
+o           Added a fast implementation of IEEEremainder in FastMath. 
+o MATH-945:  Added method "T log10()" to interface "RealFieldElement". 
+o MATH-1039:  Added logDensity(double) to RealDistribution and logProbability(int)
+        to IntegerDistribution interface. The implementations have already been
+        updated in release 3.3. Thanks to Aleksei Dievskii. 
+
+Fixed Bugs:
+o MATH-1647:  "HaltonSequenceGenerator": Raise exception when precondition is not met. Thanks to Maksym Bohachov. 
+o MATH-1462:  "EmpiricalDistribution": Use constant kernel for bins that contain up to 3 values. 
+o MATH-1379:  Fix "LoessInterpolator" (in package "o.a.c.m.legacy.analysis.interpolation"). Thanks to Richard Wilkinson. 
+o MATH-1617:  Class "BigReal": Fix equality check. Thanks to Ng Tsz Sum. 
+o MATH-1613:  Decrease maximum number of iterations in "SimpsonIntegrator" and
+        "TrapezoidIntegrator" (due to the available range of the internal
+        counter of function evaluations). 
+o MATH-1431:  "EmpiricalDistribution" handles empty bin. Thanks to Artem Onuchin. 
+o MATH-1565:  Add context to "OutOfRangeException". Thanks to Randy Strauss. 
+o MATH-1558:  "MidPointIntegrator": Fix iterative procedure in order to actually benefit
+        from evaluations performed at earlier stages. Thanks to Sam Ritchie. 
+o MATH-1555:  "Atan2": Documentation issue. Thanks to Laurent Galluccio. 
+o MATH-1549:  "SimplexTableau": Internally "scale down" the problem definition when the
+        constraints are defined with large numbers, in order to avoid spurious
+        exceptions caused by floating-point accuracy errors. Thanks to Mohammad Rezaei. 
+o MATH-1548:  Avoid inefficiencies in computing the standard quality measures of a SOFM. 
+o MATH-1537:  Clean-up (typos and unused "import" statements). Thanks to Jin Xu. 
+o MATH-1531:  "EmpiricalDistribution": Workaround to avoid spurious exception. 
+o MATH-1511:  Issue in site generation and developers documentation. 
+o MATH-1518:  Remove code duplication by moving method to class "Cluster". 
+o MATH-1388:  Avoid overflow. 
+o MATH-1401:  "ClopperPearsonInterval": Missing cases. Thanks to Michele De Stefano. 
+o MATH-1463:  "IntegerSequence.incrementor": Throw "NoSuchElementException" from "next" method. 
+o MATH-1458:  "SimpsonIntegrator": Fixed iteration. Thanks to Alex Herbert. 
+o MATH-1419:  "PolynomialSplineFunction": incorrect usage of exception. Thanks to Hang Park. 
+o MATH-1413:  add generics to the Frequency class 
+o MATH-1417:  "RRQRDecomposition": bug in method "performHouseholderReflection". Thanks to Jean-Francois Lecomte. 
+o MATH-1381:  Fix "BinomialTest": P-value larger than 1. Thanks to Kexin Xie. 
+o MATH-1382:  "MultivariateNormalDistribution": performance improvement (by
+        removing unnecessary copying). Thanks to Stefan Bunk. 
+o MATH-1405:  "KolmogorovSmirnovTest": bug in "fixTies". Thanks to Daniil Finkel. 
+o MATH-1376:  "SimplexOptimizer": Wrong value of iteration number was passed to the convergence checker. Thanks to Thomas Weise. 
+o MATH-1319:  Major refactoring of package "o.a.c.m.random". 
+o MATH-1366:  Removed obsolete RNG API (replaced by classes under "o.a.c.m.rng"). 
+o MATH-1340:  Avoid exception swallowing (in class "TestUtils"). 
+o MATH-1339:  Avoid redundant object creation. 
+o MATH-1356:  "HypergeometricDistribution": Handle special cases that produced NaN. 
+o MATH-1343:  "BetaDistribution": Removed unnecessary recomputation. 
+o MATH-1124:  "JDKRandomGenerator": Method "nextInt(int)" now throws a "NotStrictlyPositiveException".
+        The class now delegates to (rather inherits from) "java.util.Random". 
+o MATH-1300:  "AbstractRandomGenerator" and "BitsStreamGenerator": Remove a redundant call
+        to the random data provider. Thanks to Rostislav Krasny. 
+o MATH-1231:  Lifted unnecessary restriction on constructor's argument of
+        "MicrosphereInterpolator" (package "o.a.c.m.analysis.interpolation"). 
+o MATH-1230:  The "SimplexSolver" will now throw a "DimensionMismatchException"
+        when calling "optimize(...)" with linear constraints whose dimension
+        does not match the dimension of the objective function. 
+o MATH-1222:  Use Double.isNaN rather than x != x in FastMath. Thanks to Benedikt Ritter. 
+o MATH-1143:  Added helper methods to FunctionUtils for univariate and multivariate differentiable functions conversion. 
+o MATH-964:  Removed unused package private class PollardRho in package primes. 
+o MATH-1221:  Improve performance of "ZipfDistribution" by caching the nth generalized harmonic. 
+o MATH-1205:  Methods "evaluate(...)" of class "Variance" changed the internal state
+        although it was stated differently in the javadoc. 
+o MATH-1191:  Fixed ignored method parameters in QRDecomposition protected methods. 
+o MATH-1212:  Changed javadoc as the RandomDataGenerator class does not implement
+        an interface anymore (the previous interface has been deprecated in
+        3.X and removed in 4.0). 
+
+Changes:
+o MATH-1653:  Remove class "CombinatoricsUtils" (in package "o.a.c.m.util").
+        Functionality is in "Commons Numbers" combinatorics package. 
+o MATH-1640:  Do not change caller's arguments in "KMeansPlusPlusClusterer":
+        A negative value for "maxIterations" will raise an exception. 
+o MATH-1629:  Throw "ArithmeticException" instead of "MathArithmeticException". 
+o MATH-1630:  Introduce "JdkMath" class for redirecting calls to either JDK or CM
+        implementations of the functions defined in "java.lang.Math". 
+o           Simplify assertions with simpler equivalent. Thanks to Arturo Bernal. 
+o MATH-1573:  Remove redundant local variables. Thanks to Arturo Bernal. 
+o MATH-1572:  Simplify conditional expressions. Thanks to Arturo Bernal. 
+o MATH-1616:  Refactor "EmpiricalDistribution" class (in package "o.a.c.m.legacy.distribution"). 
+o MATH-1595:  Clean up "o.a.c.math4.legacy.random" package. 
+o MATH-1615:  Remove class "StableRandomGenerator" (in package "o.a.c.m.legacy.random"). 
+o MATH-1614:  Refactor "SimplexOptimizer" (in package "o.a.c.m.legacy.optim.nonlinear.scalar.noderiv"). 
+o MATH-1582:  Transforms codes moved into a dedicated maven module. 
+o MATH-1578:  ANN codes moved into a dedicated maven module. 
+o MATH-1575:  Modularization set-up: All codes were moved into a "legacy" maven module.
+        WIP: Functionalities should gradually be moved into dedicated modules. 
+o MATH-1562:  Add "Automatic-Module-Name" entry to JAR manifest file. Thanks to Frank Ulbricht. 
+o MATH-1554:  Remove package "o.a.c.math4.geometry". 
+o MATH-1547:  More flexible ranking of SOFM. 
+o MATH-1530:  "SplineInterpolator": Improved performance. Thanks to Yassine Damerdji. 
+o MATH-1524:  Code reuse. Thanks to Chen Tao. 
+o MATH-1522:  Remove generic parameter in clustering evaluator interfaces. Thanks to Chen Tao. 
+o MATH-1523:  Abstract class "ClusterEvaluator" replaced by an interface. 
+o MATH-1408:  Do not use exceptions for control flow 
+o MATH-1362:  Removed deprecated class "Incrementor" (replaced by "IntegerSequence.Incrementor"). 
+o MATH-1506:  Removed class "MultidimensionalCounter" (ported to "Commons Numbers"). 
+o MATH-1504:  Removed class "BigFraction" (ported to "Commons Numbers"). 
+o MATH-1446:  Removed class "Fraction" (ported to "Commons Numbers"). 
+o MATH-1469:  Removed most codes in package "o.a.c.m.geometry".
+        "Commons Math" now depends on "Commons Geometry". 
+o MATH-1481:  "SobolSequenceGenerator": Update data file. Thanks to Théophile Charmont. 
+o MATH-1389:  Performance improvement for Array2DRowRealMatrix.getSubMatrix() Thanks to Christoph Dibak. 
+o MATH-1377:  "SimplexOptimizer": Slight performance improvement. 
+o MATH-1318:  "o.a.c.m.special.Gamma.digamma": Improved performance (through the use of
+        the reflection formula for negative arguments). Thanks to Eric Prescott-Gagnon. 
+o MATH-1305:  "AbstractRandomGenerator" and "BitsStreamGenerator": Slight performance
+        improvement of the "nextBytes" method (particularly when the number of
+        requested bytes is a multiple of 4). Thanks to Rostislav Krasny. 
+o MATH-853:  "MathRuntimeException" is now the base class for all commons-math
+        exceptions (except for "NullArgumentException" which extends
+        "NullPointerException"). 
+o MATH-1205:  The abstract class "AbstractStorelessUnivariateStatistic" does not
+        extend anymore from "AbstractUnivariateStatistic". 
+o MATH-1205:  Default implementation of
+        "AbstractStorelessUnivariateStatistic#equals(Object)"
+        will only return true if both instances have the same type. Previously
+        different statistics were considered to be equal if their current state
+        happened to be equal. 
+o MATH-1205:  Default implementations of "AbstractStorelessUnivariateStatistic#evaluate(...)"
+        do not alter the internal state anymore. Instead a temporary copy of
+        the statistic is created for evaluation purposes. 
+o MATH-1206:  Added new API methods in "LeastSquaresProblem.Evaluation" (package
+        "o.a.c.m.fitting.leastsquares"). 
+o MATH-1210:  "QRDecomposition": include information about the condition that
+        triggers a "SingularMatrixException". 
+o MATH-757:  Removed broken synchronization support in "ResizableDoubleArray". 
+o MATH-869:  "SpearmansCorrelation" will now throw an "MathIllegalArgumentException"
+        if provided with a "NaturalRanking" instance that uses "REMOVED" as "NaNStrategy". 
+o MATH-869:  "NullArgumentException" extends now "java.lang.NullPointerException"
+        instead of "MathIllegalArgumentException". 
+o MATH-839:  Renamed "cumulativeProbability(double, double)" to "probability(double, double)"
+        in "IntegerDistribution" and "RealDistribution". Thanks to Gilles Sadowski. 
+o MATH-1155:  WELL type pseudo-random number generators have been refactored:
+        the cached indirection index tables per instance are now stored
+        in a static instance. This reduces the initialization cost when
+        creating a new instance. 
+o MATH-825:  Method "LaguerreSolver#laguerre(...)" has been made private. Thanks to Gilles Sadowski. 
+o MATH-760:  Field "windowSize" in "DescriptiveStatistics" has been made private. Thanks to sebb. 
+
+Removed:
+o MATH-1205:  Removed methods "test(...)" from "AbstractUnivariateStatistic".
+        The already existing methods "MathArrays#verifyValues(...)" shall
+        be used instead. 
+o MATH-1050:  Removed "ArithmeticUtils#pow(int, long)" and "ArithmeticUtils#pow(long, long)". 
+
+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 8212c3636..c630db46e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
   </parent>
 
   <artifactId>commons-math-parent</artifactId>
-  <version>4.0-SNAPSHOT</version>
+  <version>4.0-beta1</version>
   <packaging>pom</packaging>
   <name>Apache Commons Math</name>
   <description>
@@ -49,7 +49,7 @@
     <!-- This flag should only be true in the dist-archive module. -->
     <commons.release.isDistModule>false</commons.release.isDistModule>
     <!-- do not use snapshot suffix here -->
-    <commons.release.version>4.0</commons.release.version>
+    <commons.release.version>4.0-beta1</commons.release.version>
     <commons.rc.version>RC1</commons.rc.version>
     <commons.release.desc>(requires Java 8+)</commons.release.desc>
     <commons.binary.suffix>-bin</commons.binary.suffix>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7376ed016..f7f60ca7b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -55,7 +55,7 @@ If the output is not quite correct, check for invisible trailing spaces!
     <release version="TBD" date="TBD" description="TBD">
     </release>
 
-    <release version="4.0" date="XXXX-XX-XX" description="
+    <release version="4.0-beta1" date="2022-12-20" description="
 This is a major release that requires source changes in applications.
 
 Lower-level functionality has been split off to new components, often
diff --git a/src/site/site.xml b/src/site/site.xml
index a24d28b86..949876ee1 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -32,6 +32,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 (4.0-beta1 release)"
+         href="http://commons.apache.org/math/javadocs/api-4.0-beta1/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)"
diff --git a/src/site/xdoc/download_math.xml b/src/site/xdoc/download_math.xml
index a59e0e965..691e5e54a 100644
--- a/src/site/xdoc/download_math.xml
+++ b/src/site/xdoc/download_math.xml
@@ -1,144 +1,144 @@
-<?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-build:download-page                |
- |                                                                      |
- | 2) Set the following properties in the component's pom:              |
- |    - commons.componentid     (required, alphabetic, lower case)      |
- |    - commons.release.version (required)                              |
- |    - commons.release.name    (required)                              |
- |    - commons.binary.suffix   (optional)                              |
- |      (defaults to "-bin", set to "" for pre-maven2 releases)         |
- |    - commons.release.desc    (optional)                              |
- |    - commons.release.subdir  (optional)                              |
- |    - commons.release.hash    (optional, lowercase, default sha512)   |
- |                                                                      |
- |    - commons.release.[234].version       (conditional)               |
- |    - commons.release.[234].name          (conditional)               |
- |    - commons.release.[234].binary.suffix (optional)                  |
- |    - commons.release.[234].desc          (optional)                  |
- |    - commons.release.[234].subdir        (optional)                  |
- |    - commons.release.[234].hash       (optional, lowercase, [sha512])|
- |                                                                      |
- | 3) Example Properties                                                |
- |    (commons.release.name inherited by parent:                        |
- |     ${project.artifactId}-${commons.release.version}                 |
- |                                                                      |
- |  <properties>                                                        |
- |    <commons.componentid>math</commons.componentid>                   |
- |    <commons.release.version>1.3</commons.release.version>            |
- |  </properties>                                                       |
- |                                                                      |
- +======================================================================+
--->
-<document>
-  <properties>
-    <title>Download Apache Commons Math</title>
-    <author email="dev@commons.apache.org">Apache 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> <a href="https://www.apache.org/info/verification.html">verify the integrity</a> of
-        the downloaded files using signatures downloaded from our main
-        distribution directories. Recent releases (48 hours) may not yet
-        be available from all 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>
-        It is essential that you
-        <a href="https://www.apache.org/info/verification.html">verify the integrity</a>
-        of downloaded files, preferably using the <code>PGP</code> signature (<code>*.asc</code> files);
-        failing that using the <code>SHA256</code> hash (<code>*.sha256</code> checksum files).
-      </p>
-      <p>
-        The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a>
-        file contains the public PGP keys used by Apache Commons developers
-        to sign releases.
-      </p>
-    </subsection>
-    </section>
-    <section name="Apache Commons Math 3.6.1 (requires Java 5+)">
+<?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-build:download-page                |
+ |                                                                      |
+ | 2) Set the following properties in the component's pom:              |
+ |    - commons.componentid     (required, alphabetic, lower case)      |
+ |    - commons.release.version (required)                              |
+ |    - commons.release.name    (required)                              |
+ |    - commons.binary.suffix   (optional)                              |
+ |      (defaults to "-bin", set to "" for pre-maven2 releases)         |
+ |    - commons.release.desc    (optional)                              |
+ |    - commons.release.subdir  (optional)                              |
+ |    - commons.release.hash    (optional, lowercase, default sha512)   |
+ |                                                                      |
+ |    - commons.release.[234].version       (conditional)               |
+ |    - commons.release.[234].name          (conditional)               |
+ |    - commons.release.[234].binary.suffix (optional)                  |
+ |    - commons.release.[234].desc          (optional)                  |
+ |    - commons.release.[234].subdir        (optional)                  |
+ |    - commons.release.[234].hash       (optional, lowercase, [sha512])|
+ |                                                                      |
+ | 3) Example Properties                                                |
+ |    (commons.release.name inherited by parent:                        |
+ |     ${project.artifactId}-${commons.release.version}                 |
+ |                                                                      |
+ |  <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">Apache 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> <a href="https://www.apache.org/info/verification.html">verify the integrity</a> of
+        the downloaded files using signatures downloaded from our main
+        distribution directories. Recent releases (48 hours) may not yet
+        be available from all 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>
+        It is essential that you
+        <a href="https://www.apache.org/info/verification.html">verify the integrity</a>
+        of downloaded files, preferably using the <code>PGP</code> signature (<code>*.asc</code> files);
+        failing that using the <code>SHA512</code> hash (<code>*.sha512</code> checksum files).
+      </p>
+      <p>
+        The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a>
+        file contains the public PGP keys used by Apache Commons developers
+        to sign releases.
+      </p>
+    </subsection>
+    </section>
+    <section name="Apache Commons Math 4.0-beta1 (requires Java 8+)">
       <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="https://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.tar.gz.sha256">sha256</a></td>
-              <td><a href="https://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/math/binaries/commons-math4-4.0-beta1-bin.tar.gz">commons-math4-4.0-beta1-bin.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/binaries/commons-math4-4.0-beta1-bin.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/binaries/commons-math4-4.0-beta1-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="https://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.zip.sha256">sha256</a></td>
-              <td><a href="https://www.apache.org/dist/commons/math/binaries/commons-math3-3.6.1-bin.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/math/binaries/commons-math4-4.0-beta1-bin.zip">commons-math4-4.0-beta1-bin.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/binaries/commons-math4-4.0-beta1-bin.zip.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/binaries/commons-math4-4.0-beta1-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="https://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.tar.gz.sha256">sha256</a></td>
-              <td><a href="https://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/math/source/commons-math4-4.0-beta1-src.tar.gz">commons-math4-4.0-beta1-src.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/source/commons-math4-4.0-beta1-src.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/source/commons-math4-4.0-beta1-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="https://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.zip.sha256">sha256</a></td>
-              <td><a href="https://www.apache.org/dist/commons/math/source/commons-math3-3.6.1-src.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/math/source/commons-math4-4.0-beta1-src.zip">commons-math4-4.0-beta1-src.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/source/commons-math4-4.0-beta1-src.zip.sha512">sha512</a></td>
+              <td><a href="https://www.apache.org/dist/commons/math/source/commons-math4-4.0-beta1-src.zip.asc">pgp</a></td>
           </tr>
         </table>
       </subsection>