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

erans pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-math.git


The following commit(s) were added to refs/heads/master by this push:
     new a81b218  MATH-1388: Avoid risk of overflow.
a81b218 is described below

commit a81b218d47b54af46030f3ef4231f619899c5667
Author: Gilles Sadowski <[email protected]>
AuthorDate: Tue Dec 24 14:05:59 2019 +0100

    MATH-1388: Avoid risk of overflow.
---
 src/changes/changes.xml                                     |  3 +++
 .../math4/analysis/integration/MidPointIntegrator.java      |  8 +++-----
 .../math4/analysis/integration/TrapezoidIntegrator.java     |  8 +++-----
 .../math4/analysis/integration/MidPointIntegratorTest.java  | 13 +++++++------
 4 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 14d6071..dce0411 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -54,6 +54,9 @@ If the output is not quite correct, check for invisible 
trailing spaces!
     </release>
 
     <release version="4.0" date="XXXX-XX-XX" description="">
+      <action dev="erans" type="fix" issue="MATH-1388">
+        Avoid overflow.
+      </action>
       <action dev="erans" type="update" issue="MATH-1362">
         Removed deprecated class "Incrementor" (replaced by 
"IntegerSequence.Incrementor").
       </action>
diff --git 
a/src/main/java/org/apache/commons/math4/analysis/integration/MidPointIntegrator.java
 
b/src/main/java/org/apache/commons/math4/analysis/integration/MidPointIntegrator.java
index 08cc3cc..bb8b763 100644
--- 
a/src/main/java/org/apache/commons/math4/analysis/integration/MidPointIntegrator.java
+++ 
b/src/main/java/org/apache/commons/math4/analysis/integration/MidPointIntegrator.java
@@ -37,7 +37,7 @@ import org.apache.commons.math4.util.FastMath;
 public class MidPointIntegrator extends BaseAbstractUnivariateIntegrator {
 
     /** Maximum number of iterations for midpoint. */
-    public static final int MIDPOINT_MAX_ITERATIONS_COUNT = 64;
+    private static final int MIDPOINT_MAX_ITERATIONS_COUNT = 63;
 
     /**
      * Build a midpoint integrator with given accuracies and iterations counts.
@@ -45,13 +45,12 @@ public class MidPointIntegrator extends 
BaseAbstractUnivariateIntegrator {
      * @param absoluteAccuracy absolute accuracy of the result
      * @param minimalIterationCount minimum number of iterations
      * @param maximalIterationCount maximum number of iterations
-     * (must be less than or equal to {@link #MIDPOINT_MAX_ITERATIONS_COUNT}
      * @exception NotStrictlyPositiveException if minimal number of iterations
      * is not strictly positive
      * @exception NumberIsTooSmallException if maximal number of iterations
      * is lesser than or equal to the minimal number of iterations
      * @exception NumberIsTooLargeException if maximal number of iterations
-     * is greater than {@link #MIDPOINT_MAX_ITERATIONS_COUNT}
+     * is greater than 63.
      */
     public MidPointIntegrator(final double relativeAccuracy,
                               final double absoluteAccuracy,
@@ -69,13 +68,12 @@ public class MidPointIntegrator extends 
BaseAbstractUnivariateIntegrator {
      * Build a midpoint integrator with given iteration counts.
      * @param minimalIterationCount minimum number of iterations
      * @param maximalIterationCount maximum number of iterations
-     * (must be less than or equal to {@link #MIDPOINT_MAX_ITERATIONS_COUNT}
      * @exception NotStrictlyPositiveException if minimal number of iterations
      * is not strictly positive
      * @exception NumberIsTooSmallException if maximal number of iterations
      * is lesser than or equal to the minimal number of iterations
      * @exception NumberIsTooLargeException if maximal number of iterations
-     * is greater than {@link #MIDPOINT_MAX_ITERATIONS_COUNT}
+     * is greater than 63.
      */
     public MidPointIntegrator(final int minimalIterationCount,
                               final int maximalIterationCount)
diff --git 
a/src/main/java/org/apache/commons/math4/analysis/integration/TrapezoidIntegrator.java
 
b/src/main/java/org/apache/commons/math4/analysis/integration/TrapezoidIntegrator.java
index 2ccfed4..0d8a7fb 100644
--- 
a/src/main/java/org/apache/commons/math4/analysis/integration/TrapezoidIntegrator.java
+++ 
b/src/main/java/org/apache/commons/math4/analysis/integration/TrapezoidIntegrator.java
@@ -37,7 +37,7 @@ import org.apache.commons.math4.util.FastMath;
 public class TrapezoidIntegrator extends BaseAbstractUnivariateIntegrator {
 
     /** Maximum number of iterations for trapezoid. */
-    public static final int TRAPEZOID_MAX_ITERATIONS_COUNT = 64;
+    private static final int TRAPEZOID_MAX_ITERATIONS_COUNT = 63;
 
     /** Intermediate result. */
     private double s;
@@ -48,13 +48,12 @@ public class TrapezoidIntegrator extends 
BaseAbstractUnivariateIntegrator {
      * @param absoluteAccuracy absolute accuracy of the result
      * @param minimalIterationCount minimum number of iterations
      * @param maximalIterationCount maximum number of iterations
-     * (must be less than or equal to {@link #TRAPEZOID_MAX_ITERATIONS_COUNT}
      * @exception NotStrictlyPositiveException if minimal number of iterations
      * is not strictly positive
      * @exception NumberIsTooSmallException if maximal number of iterations
      * is lesser than or equal to the minimal number of iterations
      * @exception NumberIsTooLargeException if maximal number of iterations
-     * is greater than {@link #TRAPEZOID_MAX_ITERATIONS_COUNT}
+     * is greater than 63.
      */
     public TrapezoidIntegrator(final double relativeAccuracy,
                                final double absoluteAccuracy,
@@ -72,13 +71,12 @@ public class TrapezoidIntegrator extends 
BaseAbstractUnivariateIntegrator {
      * Build a trapezoid integrator with given iteration counts.
      * @param minimalIterationCount minimum number of iterations
      * @param maximalIterationCount maximum number of iterations
-     * (must be less than or equal to {@link #TRAPEZOID_MAX_ITERATIONS_COUNT}
      * @exception NotStrictlyPositiveException if minimal number of iterations
      * is not strictly positive
      * @exception NumberIsTooSmallException if maximal number of iterations
      * is lesser than or equal to the minimal number of iterations
      * @exception NumberIsTooLargeException if maximal number of iterations
-     * is greater than {@link #TRAPEZOID_MAX_ITERATIONS_COUNT}
+     * is greater than 63.
      */
     public TrapezoidIntegrator(final int minimalIterationCount,
                                final int maximalIterationCount)
diff --git 
a/src/test/java/org/apache/commons/math4/analysis/integration/MidPointIntegratorTest.java
 
b/src/test/java/org/apache/commons/math4/analysis/integration/MidPointIntegratorTest.java
index 4b476ce..9d1cf88 100644
--- 
a/src/test/java/org/apache/commons/math4/analysis/integration/MidPointIntegratorTest.java
+++ 
b/src/test/java/org/apache/commons/math4/analysis/integration/MidPointIntegratorTest.java
@@ -35,6 +35,7 @@ import org.junit.Test;
  *
  */
 public final class MidPointIntegratorTest {
+    private static final int NUM_ITER = 30;
 
     /**
      * Test of integrator for the sine function.
@@ -50,7 +51,7 @@ public final class MidPointIntegratorTest {
         double tolerance = FastMath.abs(expected * 
integrator.getRelativeAccuracy());
         double result = integrator.integrate(Integer.MAX_VALUE, f, min, max);
         Assert.assertTrue(integrator.getEvaluations() < Integer.MAX_VALUE / 2);
-        Assert.assertTrue(integrator.getIterations() < 
MidPointIntegrator.MIDPOINT_MAX_ITERATIONS_COUNT / 2);
+        Assert.assertTrue(integrator.getIterations() < NUM_ITER);
         Assert.assertEquals(expected, result, tolerance);
 
     }
@@ -69,7 +70,7 @@ public final class MidPointIntegratorTest {
         double tolerance = FastMath.abs(expected * 
integrator.getRelativeAccuracy());
         double result = integrator.integrate(Integer.MAX_VALUE, f, min, max);
         Assert.assertTrue(integrator.getEvaluations() < Integer.MAX_VALUE / 2);
-        Assert.assertTrue(integrator.getIterations() < 
MidPointIntegrator.MIDPOINT_MAX_ITERATIONS_COUNT / 2);
+        Assert.assertTrue(integrator.getIterations() < NUM_ITER);
         Assert.assertEquals(expected, result, tolerance);
 
         min = -FastMath.PI/3;
@@ -78,7 +79,7 @@ public final class MidPointIntegratorTest {
         tolerance = FastMath.abs(expected * integrator.getRelativeAccuracy());
         result = integrator.integrate(Integer.MAX_VALUE, f, min, max);
         Assert.assertTrue(integrator.getEvaluations() < Integer.MAX_VALUE / 2);
-        Assert.assertTrue(integrator.getIterations() < 
MidPointIntegrator.MIDPOINT_MAX_ITERATIONS_COUNT / 2);
+        Assert.assertTrue(integrator.getIterations() < NUM_ITER);
         Assert.assertEquals(expected, result, tolerance);
 
     }
@@ -97,7 +98,7 @@ public final class MidPointIntegratorTest {
         double tolerance = FastMath.abs(expected * 
integrator.getRelativeAccuracy());
         double result = integrator.integrate(Integer.MAX_VALUE, f, min, max);
         Assert.assertTrue(integrator.getEvaluations() < Integer.MAX_VALUE / 2);
-        Assert.assertTrue(integrator.getIterations() < 
MidPointIntegrator.MIDPOINT_MAX_ITERATIONS_COUNT / 2);
+        Assert.assertTrue(integrator.getIterations() < NUM_ITER);
         Assert.assertEquals(expected, result, tolerance);
 
         min = 0;
@@ -106,7 +107,7 @@ public final class MidPointIntegratorTest {
         tolerance = FastMath.abs(expected * integrator.getRelativeAccuracy());
         result = integrator.integrate(Integer.MAX_VALUE, f, min, max);
         Assert.assertTrue(integrator.getEvaluations() < Integer.MAX_VALUE / 2);
-        Assert.assertTrue(integrator.getIterations() < 
MidPointIntegrator.MIDPOINT_MAX_ITERATIONS_COUNT / 2);
+        Assert.assertTrue(integrator.getIterations() < NUM_ITER);
         Assert.assertEquals(expected, result, tolerance);
 
         min = -1;
@@ -115,7 +116,7 @@ public final class MidPointIntegratorTest {
         tolerance = FastMath.abs(expected * integrator.getRelativeAccuracy());
         result = integrator.integrate(Integer.MAX_VALUE, f, min, max);
         Assert.assertTrue(integrator.getEvaluations() < Integer.MAX_VALUE / 2);
-        Assert.assertTrue(integrator.getIterations() < 
MidPointIntegrator.MIDPOINT_MAX_ITERATIONS_COUNT / 2);
+        Assert.assertTrue(integrator.getIterations() < NUM_ITER);
         Assert.assertEquals(expected, result, tolerance);
 
     }

Reply via email to