diff --git a/src/DataTree.cc b/src/DataTree.cc index d3ffb1f8a2295903e51307db1a8c0355e1a8e980..af09e30c3aec9ad2dbf95a54a1088aa1917e89e8 100644 --- a/src/DataTree.cc +++ b/src/DataTree.cc @@ -273,6 +273,11 @@ DataTree::AddDivide(expr_t iArg1, expr_t iArg2) noexcept(false) if (iArg1 == iArg2) return One; + // Simplify x/(1/y) in x*y + if (auto barg2 = dynamic_cast<BinaryOpNode *>(iArg2); + barg2 && barg2->op_code == BinaryOpcode::divide && barg2->arg1 == One) + return AddTimes(iArg1, barg2->arg2); + return AddBinaryOp(iArg1, BinaryOpcode::divide, iArg2); }