Skip to content

Commit eff5907

Browse files
fix: handle all symtypes in subexpressions_not_involving_vars!
1 parent 3133177 commit eff5907

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/utils.jl

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,10 +1108,15 @@ returns the modified `expr`.
11081108
"""
11091109
function subexpressions_not_involving_vars!(expr, vars, state::Dict{Any, Any})
11101110
expr = unwrap(expr)
1111-
symbolic_type(expr) == NotSymbolic() && return expr
1111+
if symbolic_type(expr) == NotSymbolic()
1112+
if is_array_of_symbolics(expr)
1113+
return map(expr) do el
1114+
subexpressions_not_involving_vars!(el, vars, state)
1115+
end
1116+
end
1117+
return expr
1118+
end
11121119
iscall(expr) || return expr
1113-
is_variable_floatingpoint(expr) || return expr
1114-
symtype(expr) <: Union{Real, AbstractArray{<:Real}} || return expr
11151120
Symbolics.shape(expr) == Symbolics.Unknown() && return expr
11161121
haskey(state, expr) && return state[expr]
11171122
vs = ModelingToolkit.vars(expr)
@@ -1143,7 +1148,6 @@ function subexpressions_not_involving_vars!(expr, vars, state::Dict{Any, Any})
11431148
return op(indep_term, dep_term)
11441149
end
11451150
newargs = map(args) do arg
1146-
symbolic_type(arg) != NotSymbolic() || is_array_of_symbolics(arg) || return arg
11471151
subexpressions_not_involving_vars!(arg, vars, state)
11481152
end
11491153
return maketerm(typeof(expr), op, newargs, metadata(expr))

0 commit comments

Comments
 (0)