19
19
function detime_dvs (op)
20
20
if ! istree (op)
21
21
op
22
- elseif operation (op) isa Sym
22
+ elseif issym ( operation (op))
23
23
Sym {Real} (nameof (operation (op)))
24
24
else
25
25
similarterm (op, operation (op), detime_dvs .(arguments (op)))
@@ -60,7 +60,7 @@ function states_to_sym(states::Set)
60
60
elseif istree (O)
61
61
op = operation (O)
62
62
args = arguments (O)
63
- if op isa Sym
63
+ if issym (op)
64
64
O in states && return tosymbol (O)
65
65
# dependent variables
66
66
return build_expr (:call , Any[nameof (op); _states_to_sym .(args)])
@@ -511,7 +511,7 @@ function collect_constants(x)
511
511
return constants
512
512
end
513
513
514
- function collect_constants! (constants, arr:: AbstractArray{T} ) where {T}
514
+ function collect_constants! (constants, arr:: AbstractArray )
515
515
for el in arr
516
516
collect_constants! (constants, el)
517
517
end
@@ -526,8 +526,8 @@ collect_constants!(constants, x::Num) = collect_constants!(constants, unwrap(x))
526
526
collect_constants! (constants, x:: Real ) = nothing
527
527
collect_constants (n:: Nothing ) = Symbolics. Sym[]
528
528
529
- function collect_constants! (constants, expr:: Symbolics.Symbolic{T} ) where {T}
530
- if expr isa Sym && isconstant (expr)
529
+ function collect_constants! (constants, expr:: Symbolics.Symbolic )
530
+ if issym ( expr) && isconstant (expr)
531
531
push! (constants, expr)
532
532
else
533
533
evars = vars (expr)
@@ -542,8 +542,7 @@ function collect_constants!(constants, expr::Symbolics.Symbolic{T}) where {T}
542
542
end
543
543
544
544
""" Replace symbolic constants with their literal values """
545
- function eliminate_constants (eqs:: AbstractArray{<:Union{Equation, Symbolic}} ,
546
- cs:: Vector{Sym} )
545
+ function eliminate_constants (eqs, cs)
547
546
cmap = Dict (x => getdefault (x) for x in cs)
548
547
return substitute (eqs, cmap)
549
548
end
@@ -807,6 +806,17 @@ function jacobian_wrt_vars(pf::F, p, input_idxs, chunk::C) where {F, C}
807
806
ForwardDiff. jacobian (p_closure, p_small, cfg, Val (false ))
808
807
end
809
808
809
+ function fold_constants (ex)
810
+ if istree (ex)
811
+ similarterm (ex, operations (ex), map (fold_constants, arguments (ex)),
812
+ symtype (expr); metadata = metadata (expr))
813
+ elseif issym (ex) && isconstant (ex)
814
+ getdefault (ex)
815
+ else
816
+ ex
817
+ end
818
+ end
819
+
810
820
# Symbolics needs to call unwrap on the substitution rules, but most of the time
811
821
# we don't want to do that in MTK.
812
822
function fast_substitute (eq:: Equation , subs)
0 commit comments