diff --git a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt index 354e96d1..086b061b 100644 --- a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt +++ b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt @@ -218,7 +218,7 @@ class Expression( if (moveIfMatched(Token.Operator.power)) { val factor = parseFactor() - if (factor.compareTo(BigDecimal.ZERO) == 0) { + if (factor.compareTo(BigDecimal.ZERO) == 0 && expr.compareTo(BigDecimal.ZERO) == 0) { throw ExpressionException.BadExpression() } diff --git a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/ExpressionSimpleTest.kt b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/ExpressionSimpleTest.kt index da4dc9a4..b49df833 100644 --- a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/ExpressionSimpleTest.kt +++ b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/ExpressionSimpleTest.kt @@ -143,7 +143,7 @@ class ExpressionSimpleTest { fun zeroExponent() = assertExpr("5^0", "1") @Test - fun negativeExponent() = assertExpr("5^-1", "0.2") + fun negativeExponent() = assertExpr("5^(-2)", "0.04") @Test fun trigonometricLimits() = assertExpr("sin(0)", "0")