Skip to content

Commit

Permalink
feat: store mult simplified
Browse files Browse the repository at this point in the history
  • Loading branch information
lbressler13 committed Mar 1, 2024
1 parent 5abcc37 commit 1d5ee75
Showing 1 changed file with 8 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import java.math.BigDecimal
@Suppress("EqualsOrHashCode")
internal class MultiplicativeExpression private constructor(expressions: ConstMultiSet<Expression>) : ExpressionImpl() {
private val expressions: ConstMultiSet<Expression>
private var simplified: Expression? = null

init {
this.expressions = when {
Expand Down Expand Up @@ -65,11 +66,16 @@ internal class MultiplicativeExpression private constructor(expressions: ConstMu
}

override fun getSimplified(): Expression {
if (simplified != null) {
return simplified!!
}

val split = getSplitExpressions()
val simpleTerm = split.first.fold(Term.ONE) { acc, expr -> acc * expr.term }
val simple: Expression = SimpleExpression(simpleTerm.getSimplified())

if (split.second.isEmpty()) {
simplified = simple
return simple
}

Expand All @@ -82,7 +88,8 @@ internal class MultiplicativeExpression private constructor(expressions: ConstMu
}
distributed
}
return AdditiveExpression(exprs.toConstMultiSet()).getSimplified()
simplified = AdditiveExpression(exprs.toConstMultiSet()).getSimplified()
return simplified!!
}

override fun getValue(): BigDecimal = getSimplified().getValue()
Expand Down

0 comments on commit 1d5ee75

Please sign in to comment.