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 2019/12/24 12:14:43 UTC
[commons-math] 01/07: MATH-1362: Use "IntegerSequence.Incrementor".
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
commit 5828c2352d5759f7d44dbc29e5a4f597b41a398c
Author: Gilles Sadowski <gi...@harfang.homelinux.org>
AuthorDate: Mon Dec 23 12:33:33 2019 +0100
MATH-1362: Use "IntegerSequence.Incrementor".
---
.../BaseAbstractUnivariateIntegrator.java | 29 ++++++++++------------
.../IterativeLegendreGaussIntegrator.java | 2 +-
.../analysis/integration/MidPointIntegrator.java | 2 +-
.../analysis/integration/RombergIntegrator.java | 4 +--
.../analysis/integration/SimpsonIntegrator.java | 2 +-
.../analysis/integration/TrapezoidIntegrator.java | 4 +--
.../IterativeLegendreGaussIntegratorTest.java | 2 +-
7 files changed, 21 insertions(+), 24 deletions(-)
diff --git a/src/main/java/org/apache/commons/math4/analysis/integration/BaseAbstractUnivariateIntegrator.java b/src/main/java/org/apache/commons/math4/analysis/integration/BaseAbstractUnivariateIntegrator.java
index 595f18f..3cb31b6 100644
--- a/src/main/java/org/apache/commons/math4/analysis/integration/BaseAbstractUnivariateIntegrator.java
+++ b/src/main/java/org/apache/commons/math4/analysis/integration/BaseAbstractUnivariateIntegrator.java
@@ -24,7 +24,7 @@ import org.apache.commons.math4.exception.NotStrictlyPositiveException;
import org.apache.commons.math4.exception.NullArgumentException;
import org.apache.commons.math4.exception.NumberIsTooSmallException;
import org.apache.commons.math4.exception.TooManyEvaluationsException;
-import org.apache.commons.math4.util.Incrementor;
+import org.apache.commons.math4.util.IntegerSequence;
import org.apache.commons.math4.util.MathUtils;
/**
@@ -46,8 +46,6 @@ public abstract class BaseAbstractUnivariateIntegrator implements UnivariateInte
/** Default maximal iteration count. */
public static final int DEFAULT_MAX_ITERATIONS_COUNT = Integer.MAX_VALUE;
- /** The iteration count. */
- protected final Incrementor iterations;
/** Maximum absolute error. */
private final double absoluteAccuracy;
@@ -57,9 +55,14 @@ public abstract class BaseAbstractUnivariateIntegrator implements UnivariateInte
/** minimum number of iterations */
private final int minimalIterationCount;
+ /** maximum number of iterations */
+ private final int maximalIterationCount;
+
+ /** The iteration count. */
+ protected IntegerSequence.Incrementor iterations;
/** The functions evaluation count. */
- private final Incrementor evaluations;
+ private IntegerSequence.Incrementor evaluations;
/** Function to integrate. */
private UnivariateFunction function;
@@ -123,12 +126,7 @@ public abstract class BaseAbstractUnivariateIntegrator implements UnivariateInte
throw new NumberIsTooSmallException(maximalIterationCount, minimalIterationCount, false);
}
this.minimalIterationCount = minimalIterationCount;
- this.iterations = new Incrementor();
- iterations.setMaximalCount(maximalIterationCount);
-
- // prepare evaluations counter, but do not set it yet
- evaluations = new Incrementor();
-
+ this.maximalIterationCount = maximalIterationCount;
}
/**
@@ -218,7 +216,7 @@ public abstract class BaseAbstractUnivariateIntegrator implements UnivariateInte
protected double computeObjectiveValue(final double point)
throws TooManyEvaluationsException {
try {
- evaluations.incrementCount();
+ evaluations.increment();
} catch (MaxCountExceededException e) {
throw new TooManyEvaluationsException(e.getMax());
}
@@ -250,10 +248,10 @@ public abstract class BaseAbstractUnivariateIntegrator implements UnivariateInte
min = lower;
max = upper;
function = f;
- evaluations.setMaximalCount(maxEval);
- evaluations.resetCount();
- iterations.resetCount();
-
+ iterations = IntegerSequence.Incrementor.create()
+ .withMaximalCount(maximalIterationCount);
+ evaluations = IntegerSequence.Incrementor.create()
+ .withMaximalCount(maxEval);
}
/** {@inheritDoc} */
@@ -268,7 +266,6 @@ public abstract class BaseAbstractUnivariateIntegrator implements UnivariateInte
// Perform computation.
return doIntegrate();
-
}
/**
diff --git a/src/main/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegrator.java b/src/main/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegrator.java
index f65334c..9701c21 100644
--- a/src/main/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegrator.java
+++ b/src/main/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegrator.java
@@ -142,7 +142,7 @@ public class IterativeLegendreGaussIntegrator
final double ratio = FastMath.min(4, FastMath.pow(delta / limit, 0.5 / numberOfPoints));
n = FastMath.max((int) (ratio * n), n + 1);
oldt = t;
- iterations.incrementCount();
+ iterations.increment();
}
}
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 edcb300..08cc3cc 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
@@ -150,7 +150,7 @@ public class MidPointIntegrator extends BaseAbstractUnivariateIntegrator {
double oldt = diff * computeObjectiveValue(midPoint);
while (true) {
- iterations.incrementCount();
+ iterations.increment();
final int i = iterations.getCount();
final double t = stage(i, oldt, min, diff);
if (i >= getMinimalIterationCount()) {
diff --git a/src/main/java/org/apache/commons/math4/analysis/integration/RombergIntegrator.java b/src/main/java/org/apache/commons/math4/analysis/integration/RombergIntegrator.java
index 923de73..6205caa 100644
--- a/src/main/java/org/apache/commons/math4/analysis/integration/RombergIntegrator.java
+++ b/src/main/java/org/apache/commons/math4/analysis/integration/RombergIntegrator.java
@@ -107,7 +107,7 @@ public class RombergIntegrator extends BaseAbstractUnivariateIntegrator {
TrapezoidIntegrator qtrap = new TrapezoidIntegrator();
currentRow[0] = qtrap.stage(this, 0);
- iterations.incrementCount();
+ iterations.increment();
double olds = currentRow[0];
while (true) {
@@ -119,7 +119,7 @@ public class RombergIntegrator extends BaseAbstractUnivariateIntegrator {
currentRow = tmpRow;
currentRow[0] = qtrap.stage(this, i);
- iterations.incrementCount();
+ iterations.increment();
for (int j = 1; j <= i; j++) {
// Richardson extrapolation coefficient
final double r = (1L << (2 * j)) - 1;
diff --git a/src/main/java/org/apache/commons/math4/analysis/integration/SimpsonIntegrator.java b/src/main/java/org/apache/commons/math4/analysis/integration/SimpsonIntegrator.java
index 0ede25e..19e6108 100644
--- a/src/main/java/org/apache/commons/math4/analysis/integration/SimpsonIntegrator.java
+++ b/src/main/java/org/apache/commons/math4/analysis/integration/SimpsonIntegrator.java
@@ -105,7 +105,7 @@ public class SimpsonIntegrator extends BaseAbstractUnivariateIntegrator {
double olds = (4 * oldt - s0) / 3.0;
while (true) {
// The first iteration is the first refinement of the sum.
- iterations.incrementCount();
+ iterations.increment();
final int i = getIterations();
final double t = qtrap.stage(this, i + 1); // 1-stage ahead of the iteration
final double s = (4 * t - oldt) / 3.0;
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 893d602..2ccfed4 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
@@ -147,7 +147,7 @@ public class TrapezoidIntegrator extends BaseAbstractUnivariateIntegrator {
throws MathIllegalArgumentException, TooManyEvaluationsException, MaxCountExceededException {
double oldt = stage(this, 0);
- iterations.incrementCount();
+ iterations.increment();
while (true) {
final int i = iterations.getCount();
final double t = stage(this, i);
@@ -160,7 +160,7 @@ public class TrapezoidIntegrator extends BaseAbstractUnivariateIntegrator {
}
}
oldt = t;
- iterations.incrementCount();
+ iterations.increment();
}
}
diff --git a/src/test/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegratorTest.java b/src/test/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegratorTest.java
index 2f2b467..95f27ba 100644
--- a/src/test/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegratorTest.java
+++ b/src/test/java/org/apache/commons/math4/analysis/integration/IterativeLegendreGaussIntegratorTest.java
@@ -117,7 +117,7 @@ public class IterativeLegendreGaussIntegratorTest {
final double a = -5000;
final double b = 5000;
- final double s = integrator.integrate(50, normal, a, b);
+ final double s = integrator.integrate(60, normal, a, b);
Assert.assertEquals(1, s, 1e-5);
}