This is an automated email from the ASF dual-hosted git repository. aherbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-math.git
commit 6969438fda0529576ab6700989e5fdaff840f558 Author: aherbert <aherb...@apache.org> AuthorDate: Thu Oct 13 16:49:11 2022 +0100 Remove use of modulus to detect odd/even Use the lowest bit to detect the sign. --- .../commons/math4/legacy/core/ExtendedFieldElementAbstractTest.java | 2 +- .../math4/legacy/analysis/integration/gauss/HermiteRuleFactory.java | 2 +- .../analysis/integration/gauss/LegendreHighPrecisionRuleFactory.java | 2 +- .../math4/legacy/analysis/integration/gauss/LegendreRuleFactory.java | 2 +- .../legacy/analysis/integration/gauss/SymmetricGaussIntegrator.java | 2 +- .../java/org/apache/commons/math4/legacy/genetics/CycleCrossover.java | 4 ++-- .../math4/legacy/ode/nonstiff/AdamsBashforthFieldIntegrator.java | 2 +- .../commons/math4/legacy/ode/nonstiff/AdamsBashforthIntegrator.java | 2 +- .../math4/legacy/ode/nonstiff/GraggBulirschStoerIntegrator.java | 2 +- .../legacy/analysis/differentiation/DerivativeStructureTest.java | 2 +- .../math4/legacy/analysis/integration/SimpsonIntegratorTest.java | 4 ++-- .../legacy/analysis/integration/gauss/HermiteParametricTest.java | 3 ++- .../integration/gauss/LegendreHighPrecisionParametricTest.java | 3 ++- .../legacy/analysis/integration/gauss/LegendreParametricTest.java | 3 ++- .../math4/legacy/analysis/polynomials/PolynomialsUtilsTest.java | 2 +- .../commons/math4/legacy/field/ExtendedFieldElementAbstractTest.java | 2 +- .../org/apache/commons/math4/legacy/ode/events/EventFilterTest.java | 2 +- .../commons/math4/legacy/optim/nonlinear/scalar/TestFunction.java | 2 +- 18 files changed, 23 insertions(+), 20 deletions(-) diff --git a/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/ExtendedFieldElementAbstractTest.java b/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/ExtendedFieldElementAbstractTest.java index c9713e310..0829f2973 100644 --- a/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/ExtendedFieldElementAbstractTest.java +++ b/commons-math-legacy-core/src/test/java/org/apache/commons/math4/legacy/core/ExtendedFieldElementAbstractTest.java @@ -248,7 +248,7 @@ public abstract class ExtendedFieldElementAbstractTest<T extends RealFieldElemen for (double x = -0.9; x < 0.9; x += 0.05) { for (int n = 1; n < 5; ++n) { if (x < 0) { - if (n % 2 == 1) { + if ((n & 1) == 1) { checkRelative(-JdkMath.pow(-x, 1.0 / n), build(x).rootN(n)); } } else { diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteRuleFactory.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteRuleFactory.java index 4cdbc0f68..a5a9491fe 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteRuleFactory.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteRuleFactory.java @@ -156,7 +156,7 @@ public class HermiteRuleFactory extends BaseRuleFactory<Double> { // Note: as written, the test for oddness will work for negative // integers too (although it is not necessary here), preventing // a FindBugs warning. - if (numberOfPoints % 2 != 0) { + if ((numberOfPoints & 1) != 0) { double hm = H0; for (int j = 1; j < numberOfPoints; j += 2) { final double jp1 = j + 1.0; diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionRuleFactory.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionRuleFactory.java index 7ce9734d7..dc636b372 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionRuleFactory.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionRuleFactory.java @@ -185,7 +185,7 @@ public class LegendreHighPrecisionRuleFactory extends BaseRuleFactory<BigDecimal // Note: as written, the test for oddness will work for negative // integers too (although it is not necessary here), preventing // a FindBugs warning. - if (numberOfPoints % 2 != 0) { + if ((numberOfPoints & 1) != 0) { BigDecimal pmc = BigDecimal.ONE; for (int j = 1; j < numberOfPoints; j += 2) { final BigDecimal b_j = new BigDecimal(j, mContext); diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreRuleFactory.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreRuleFactory.java index b4aecba6b..347303e40 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreRuleFactory.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreRuleFactory.java @@ -120,7 +120,7 @@ public class LegendreRuleFactory extends BaseRuleFactory<Double> { // Note: as written, the test for oddness will work for negative // integers too (although it is not necessary here), preventing // a FindBugs warning. - if (numberOfPoints % 2 != 0) { + if ((numberOfPoints & 1) != 0) { double pmc = 1; for (int j = 1; j < numberOfPoints; j += 2) { pmc = -j * pmc / (j + 1); diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/SymmetricGaussIntegrator.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/SymmetricGaussIntegrator.java index b12177bad..c95423d02 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/SymmetricGaussIntegrator.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/analysis/integration/gauss/SymmetricGaussIntegrator.java @@ -85,7 +85,7 @@ public class SymmetricGaussIntegrator extends GaussIntegrator { s = t; } - if (ruleLength % 2 != 0) { + if ((ruleLength & 1) != 0) { final double w = getWeight(iMax); final double y = w * f.value(0d) - c; diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/genetics/CycleCrossover.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/genetics/CycleCrossover.java index 414492b0c..5f06354c0 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/genetics/CycleCrossover.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/genetics/CycleCrossover.java @@ -155,8 +155,8 @@ public class CycleCrossover<T> implements CrossoverPolicy { idx = parent1Rep.indexOf(item); } - // for even cycles: swap the child elements on the indices found in this cycle - if (cycle++ % 2 != 0) { + // for odd cycles: swap the child elements on the indices found in this cycle + if ((cycle++ & 1) != 0) { for (int i : indices) { T tmp = child1Rep.get(i); child1Rep.set(i, child2Rep.get(i)); diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthFieldIntegrator.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthFieldIntegrator.java index eba3d44dc..5b821f834 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthFieldIntegrator.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthFieldIntegrator.java @@ -220,7 +220,7 @@ public class AdamsBashforthFieldIntegrator<T extends RealFieldElement<T>> extend // apply Taylor formula from high order to low order, // for the sake of numerical accuracy T variation = getField().getZero(); - int sign = predictedNordsieck.getRowDimension() % 2 == 0 ? -1 : 1; + int sign = (predictedNordsieck.getRowDimension() & 1) == 0 ? -1 : 1; for (int k = predictedNordsieck.getRowDimension() - 1; k >= 0; --k) { variation = variation.add(predictedNordsieck.getEntry(k, i).multiply(sign)); sign = -sign; diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthIntegrator.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthIntegrator.java index cb1944640..9e4f34fed 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthIntegrator.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/AdamsBashforthIntegrator.java @@ -215,7 +215,7 @@ public class AdamsBashforthIntegrator extends AdamsIntegrator { // apply Taylor formula from high order to low order, // for the sake of numerical accuracy double variation = 0; - int sign = predictedNordsieck.getRowDimension() % 2 == 0 ? -1 : 1; + int sign = (predictedNordsieck.getRowDimension() & 1) == 0 ? -1 : 1; for (int k = predictedNordsieck.getRowDimension() - 1; k >= 0; --k) { variation += sign * predictedNordsieck.getEntry(k, i); sign = -sign; diff --git a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/GraggBulirschStoerIntegrator.java b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/GraggBulirschStoerIntegrator.java index d73cc36b3..56ec113e4 100644 --- a/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/GraggBulirschStoerIntegrator.java +++ b/commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/ode/nonstiff/GraggBulirschStoerIntegrator.java @@ -309,7 +309,7 @@ public class GraggBulirschStoerIntegrator extends AdaptiveStepsizeIntegrator { public void setOrderControl(final int maximalOrder, final double control1, final double control2) { - if (maximalOrder <= 6 || maximalOrder % 2 != 0) { + if (maximalOrder <= 6 || (maximalOrder & 1) != 0) { this.maxOrder = 18; } diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructureTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructureTest.java index 9f1b6c702..a14482d05 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructureTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/differentiation/DerivativeStructureTest.java @@ -547,7 +547,7 @@ public class DerivativeStructureTest extends ExtendedFieldElementAbstractTest<De Assert.assertTrue(correctRoot.getPartialDerivative(1) > 0); for (int order = 2; order <= maxOrder; ++order) { Assert.assertTrue(Double.isInfinite(correctRoot.getPartialDerivative(order))); - if ((order % 2) == 0) { + if ((order & 1) == 0) { Assert.assertTrue(correctRoot.getPartialDerivative(order) < 0); } else { Assert.assertTrue(correctRoot.getPartialDerivative(order) > 0); diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/SimpsonIntegratorTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/SimpsonIntegratorTest.java index b33eb4fce..1788a5255 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/SimpsonIntegratorTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/SimpsonIntegratorTest.java @@ -200,14 +200,14 @@ public final class SimpsonIntegratorTest { // sum ~ h/3 * [ f(x0) + 4f(x1) + 2f(x2) + 4f(x3) + 2f(x4) ... + 4f(xn-1) + f(xn) ] // h = (b-a)/n // f(xi) = f(a + i*h) - assert n > 0 && n % 2 == 0 : "n must be strictly positive and even"; + assert n > 0 && (n & 1) == 0 : "n must be strictly positive and even"; final double h = (b - a) / n; double sum4 = 0; double sum2 = 0; for (int i = 1; i < n; i++) { // Alternate sums that are multiplied by 4 and 2 final double fxi = f.value(a + i * h); - if (i % 2 == 0) { + if ((i & 1) == 0) { sum2 += fxi; } else { sum4 += fxi; diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteParametricTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteParametricTest.java index 74b4e6244..769d74853 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteParametricTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/HermiteParametricTest.java @@ -79,7 +79,8 @@ public class HermiteParametricTest extends GaussianQuadratureAbstractTest { @Override public double getExpectedValue(final int n) { - if (n % 2 == 1) { + if ((n & 1) == 1) { + // n is odd return 0; } diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionParametricTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionParametricTest.java index d8316bb19..eefe9c616 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionParametricTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreHighPrecisionParametricTest.java @@ -77,7 +77,8 @@ public class LegendreHighPrecisionParametricTest extends GaussianQuadratureAbstr @Override public double getExpectedValue(final int n) { - if (n % 2 == 1) { + if ((n & 1) == 1) { + // n is odd return 0; } return 2d / (n + 1); diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreParametricTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreParametricTest.java index eeb5f40cf..5d45e6481 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreParametricTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/integration/gauss/LegendreParametricTest.java @@ -77,7 +77,8 @@ public class LegendreParametricTest extends GaussianQuadratureAbstractTest { @Override public double getExpectedValue(final int n) { - if (n % 2 == 1) { + if ((n & 1) == 1) { + // n is odd return 0; } return 2d / (n + 1); diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtilsTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtilsTest.java index be1369fed..d6f4014f7 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtilsTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/analysis/polynomials/PolynomialsUtilsTest.java @@ -260,7 +260,7 @@ public class PolynomialsUtilsTest { +26876802183334044115405d }; for (int i = 0; i < l40.length; ++i) { - if (i % 2 == 0) { + if ((i & 1) == 0) { double ci = numerators[i / 2] / denominator; Assert.assertEquals(ci, l40[i], JdkMath.abs(ci) * 1e-15); } else { diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/field/ExtendedFieldElementAbstractTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/field/ExtendedFieldElementAbstractTest.java index e2352e40a..3e5631c22 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/field/ExtendedFieldElementAbstractTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/field/ExtendedFieldElementAbstractTest.java @@ -250,7 +250,7 @@ public abstract class ExtendedFieldElementAbstractTest<T extends RealFieldElemen for (double x = -0.9; x < 0.9; x += 0.05) { for (int n = 1; n < 5; ++n) { if (x < 0) { - if (n % 2 == 1) { + if ((n & 1) == 1) { checkRelative(-JdkMath.pow(-x, 1.0 / n), build(x).rootN(n)); } } else { diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/ode/events/EventFilterTest.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/ode/events/EventFilterTest.java index 055adeb35..0f94f21da 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/ode/events/EventFilterTest.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/ode/events/EventFilterTest.java @@ -116,7 +116,7 @@ public class EventFilterTest { double t = t0 + (t1 - t0) * rng.nextDouble(); double g = eventFilter.g(t, new double[] { JdkMath.sin(t), JdkMath.cos(t) }); int turn = (int) JdkMath.floor((t - refSwitch) / (2 * JdkMath.PI)); - if (turn % 2 == 0) { + if ((turn & 1) == 0) { Assert.assertEquals( signEven * JdkMath.sin(t), g, 1.0e-10); } else { Assert.assertEquals(-signEven * JdkMath.sin(t), g, 1.0e-10); diff --git a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/TestFunction.java b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/TestFunction.java index a82d47a0d..3a935ebdf 100644 --- a/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/TestFunction.java +++ b/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/TestFunction.java @@ -156,7 +156,7 @@ public enum TestFunction { }), // https://scholarship.rice.edu/handle/1911/16304 ROSENBROCK(dim -> { - if (dim % 2 != 0) { + if ((dim & 1) != 0) { throw new IllegalArgumentException("Must be a multiple of 2 (was: " + dim + ")"); } final int last = dim / 2;