diff --git a/src/main/java/org/nwapw/abacus/number/NaiveNumber.java b/src/main/java/org/nwapw/abacus/number/NaiveNumber.java index 48beb1a..5326eb4 100755 --- a/src/main/java/org/nwapw/abacus/number/NaiveNumber.java +++ b/src/main/java/org/nwapw/abacus/number/NaiveNumber.java @@ -66,23 +66,6 @@ public class NaiveNumber extends NumberInterface { return new NaiveNumber(-value); } - @Override - public NumberInterface intPowInternal(int exponent) { - if (exponent == 0) { - return NaiveNumber.ONE; - } - boolean takeReciprocal = exponent < 0; - exponent = Math.abs(exponent); - NumberInterface power = this; - for (int currentExponent = 1; currentExponent < exponent; currentExponent++) { - power = power.multiply(this); - } - if (takeReciprocal) { - power = NaiveNumber.ONE.divide(power); - } - return power; - } - @Override public int compareTo(NumberInterface number) { NaiveNumber num = (NaiveNumber) number; diff --git a/src/main/java/org/nwapw/abacus/number/NumberInterface.java b/src/main/java/org/nwapw/abacus/number/NumberInterface.java index 7af5901..f5f1f72 100755 --- a/src/main/java/org/nwapw/abacus/number/NumberInterface.java +++ b/src/main/java/org/nwapw/abacus/number/NumberInterface.java @@ -134,27 +134,6 @@ public abstract class NumberInterface { return negateInternal(); } - /** - * Raises this number to an integer power. - * - * @param exponent the exponent to which to take the number. - * @return the resulting value. - */ - protected abstract NumberInterface intPowInternal(int exponent); - - /** - * Raises this number to an integer power. Also, checks if the - * thread has been interrupted, and if so, throws - * an exception. - * - * @param exponent the exponent to which to take the number. - * @return the resulting value. - */ - public final NumberInterface intPow(int exponent){ - checkInterrupted(); - return intPowInternal(exponent); - } - /** * Compares this number to another. * diff --git a/src/main/java/org/nwapw/abacus/number/PreciseNumber.java b/src/main/java/org/nwapw/abacus/number/PreciseNumber.java index abc657f..2b4a8e1 100755 --- a/src/main/java/org/nwapw/abacus/number/PreciseNumber.java +++ b/src/main/java/org/nwapw/abacus/number/PreciseNumber.java @@ -71,23 +71,6 @@ public class PreciseNumber extends NumberInterface { return new PreciseNumber(value.subtract(((PreciseNumber) subtrahend).value)); } - @Override - public NumberInterface intPowInternal(int exponent) { - if (exponent == 0) { - return PreciseNumber.ONE; - } - boolean takeReciprocal = exponent < 0; - exponent = Math.abs(exponent); - NumberInterface power = this; - for (int currentExponent = 1; currentExponent < exponent; currentExponent++) { - power = power.multiply(this); - } - if (takeReciprocal) { - power = PreciseNumber.ONE.divide(power); - } - return power; - } - @Override public int compareTo(NumberInterface number) { return value.compareTo(((PreciseNumber) number).value); diff --git a/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java b/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java index c123caa..f926c20 100755 --- a/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java +++ b/src/main/java/org/nwapw/abacus/plugin/StandardPlugin.java @@ -311,7 +311,9 @@ public class StandardPlugin extends Plugin { //right and left refer to lhs and rhs in the above inequality. NumberInterface sum = NaiveNumber.ONE.promoteTo(params[0].getClass()); NumberInterface nextNumerator = params[0]; - NumberInterface left = params[0].multiply((new NaiveNumber(3)).promoteTo(params[0].getClass()).intPow(params[0].ceiling().intValue())), right = maxError; + NumberInterface left = params[0].multiply((new NaiveNumber(3)).promoteTo(params[0].getClass())); + left = intPow(left, left.getClass(), new NaiveNumber(params[0].ceiling().intValue()).promoteTo(left.getClass())); + NumberInterface right = maxError; do { sum = sum.add(nextNumerator.divide(factorial(params[0].getClass(), n + 1))); n++; @@ -470,7 +472,7 @@ public class StandardPlugin extends Plugin { * @return the maximum error. */ private static NumberInterface getMaxError(NumberInterface number) { - return (new NaiveNumber(10)).promoteTo(number.getClass()).intPow(-number.getMaxPrecision()); + return intPow(new NaiveNumber(10).promoteTo(number.getClass()), number.getClass(), new NaiveNumber(-number.getMaxPrecision()).promoteTo(number.getClass())); } /**