Skip to content

Commit 03edfa7

Browse files
committed
use special similarterm in simplify_fractions to allow constructors to kick in for * and /
1 parent 41384af commit 03edfa7

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

src/polyform.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,14 @@ add_divs(x::Div, y) = (x.num + y * x.den) / x.den
274274
add_divs(x, y::Div) = (x * y.den + y.num) / y.den
275275
add_divs(x, y) = x + y
276276

277+
function frac_similarterm(x, f, args; kw...)
278+
if f in (*, /, \, +, -, ^)
279+
f(args...)
280+
else
281+
similarterm(x, f, args; kw...)
282+
end
283+
end
284+
277285
"""
278286
simplify_fractions(x; polyform=false)
279287
@@ -290,7 +298,9 @@ function simplify_fractions(x; polyform=false)
290298

291299
sdiv(a) = a isa Div ? simplify_div(a) : a
292300

293-
expr = Postwalk(sdiv quick_cancel)(Postwalk(add_with_div)(x))
301+
expr = Postwalk(sdiv quick_cancel,
302+
similarterm=frac_similarterm)(Postwalk(add_with_div,
303+
similarterm=frac_similarterm)(x))
294304

295305
polyform ? expr : unpolyize(expr)
296306
end

0 commit comments

Comments
 (0)