@@ -7,15 +7,19 @@ function simplify(arg::Value)
77end
88
99function simplify (arg:: UnaryOperation{Op} ) where {Op}
10- return UnaryOperation {Op} (simplify (arg. arg))
10+ return UnaryOperation {Op} (simplify (evaluate ( arg. arg) ))
1111end
1212
1313function simplify (arg:: BinaryOperation{Op} ) where {Op}
14- return evaluate (simplify (Op (), simplify (arg. arg1), simplify (arg. arg2)))
14+ return evaluate (
15+ simplify (Op (), simplify (evaluate (arg. arg1)), simplify (evaluate (arg. arg2))),
16+ )
1517end
1618
1719function simplify (:: Mult , arg1:: Variable , arg2:: Variable )
18- return BinaryOperation {Mult} (arg1, arg2)
20+ return evaluate (
21+ BinaryOperation {Mult} (simplify (evaluate (arg1)), simplify (evaluate (arg2))),
22+ )
1923end
2024
2125function elementwise_indices (arg1, arg2)
@@ -162,9 +166,11 @@ function simplify(::Mult, arg1::BinaryOperation{Mult}, arg2::Variable)
162166end
163167
164168function simplify (:: Mult , arg1:: Value , arg2:: Value )
165- return evaluate (BinaryOperation {Mult} (arg1, arg2))
169+ return evaluate (
170+ BinaryOperation {Mult} (simplify (evaluate (arg1)), simplify (evaluate (arg2))),
171+ )
166172end
167173
168174function simplify (:: Op , arg1:: Value , arg2:: Value ) where {Op<: AdditiveOperation }
169- return evaluate (BinaryOperation {Op} (arg1, arg2))
175+ return evaluate (BinaryOperation {Op} (simplify ( evaluate ( arg1)), simplify ( evaluate ( arg2)) ))
170176end
0 commit comments