diff --git a/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowEven.java b/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowEven.java index ae7d37cd4c..ab083aedba 100644 --- a/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowEven.java +++ b/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowEven.java @@ -27,6 +27,7 @@ * @since 18/05/11 */ public class PropPowEven extends Propagator { + protected static final double PRECISION = 1e-9; final IntIterableBitSet vrms; final boolean bothEnum; final int exponent; @@ -79,14 +80,14 @@ int floor_nroot(int n) { if (n < 0) { return 0; } - return MathUtils.safeCast((long) Math.floor(Math.pow(n, 1. / exponent))); + return MathUtils.safeCast((long) Math.floor(Math.pow(n, 1. / (exponent - PRECISION)))); } int ceil_nroot(int n) { if (n < 0) { return 0; } - return MathUtils.safeCast((long) Math.ceil(Math.pow(n, 1. / exponent))); + return MathUtils.safeCast((long) Math.ceil(Math.pow(n, 1. / (exponent + PRECISION)))); } int pow(int n) { diff --git a/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowOdd.java b/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowOdd.java index da0d45e543..a26dcbf343 100644 --- a/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowOdd.java +++ b/solver/src/main/java/org/chocosolver/solver/constraints/binary/PropPowOdd.java @@ -22,8 +22,6 @@ * @since 18/05/11 */ public class PropPowOdd extends PropPowEven { - private static final double PRECISION = 1e-9; - public PropPowOdd(IntVar X, IntVar Y, int n) { super(X, Y, n); } diff --git a/solver/src/test/java/org/chocosolver/solver/constraints/binary/PowTest.java b/solver/src/test/java/org/chocosolver/solver/constraints/binary/PowTest.java index a019b6742b..787017b4b0 100644 --- a/solver/src/test/java/org/chocosolver/solver/constraints/binary/PowTest.java +++ b/solver/src/test/java/org/chocosolver/solver/constraints/binary/PowTest.java @@ -32,7 +32,7 @@ * @since 14/02/2022 */ public class PowTest extends AbstractBinaryTest { - private int TEST_VALUE = 5; // TODO How to change this dependency to use AbstractBinaryTest + private int TEST_VALUE = 5; @DataProvider public static Object[][] even() {