1
- import SymbolicUtils: symtype, term, hasmetadata
1
+ import SymbolicUtils: symtype, term, hasmetadata, issym
2
2
struct MTKParameterCtx end
3
3
4
- isparameter (x:: Num ) = isparameter (value (x))
5
- isparameter (x:: Symbolic ) = getmetadata (x, MTKParameterCtx, false )
6
- isparameter (x) = false
4
+ function isparameter (x)
5
+ x = unwrap (x)
6
+ if istree (x) && operation (x) isa Symbolic
7
+ getmetadata (x, MTKParameterCtx, false ) ||
8
+ isparameter (operation (x))
9
+ elseif istree (x) && operation (x) == (getindex)
10
+ isparameter (arguments (x)[1 ])
11
+ elseif x isa Symbolic
12
+ getmetadata (x, MTKParameterCtx, false )
13
+ else
14
+ false
15
+ end
16
+ end
7
17
8
18
"""
9
19
toparam(s::Sym)
@@ -15,13 +25,11 @@ function toparam(s)
15
25
Symbolics. wrap (toparam (Symbolics. unwrap (s)))
16
26
elseif s isa AbstractArray
17
27
map (toparam, s)
18
- elseif symtype (s) <: AbstractArray
19
- Symbolics. recurse_and_apply (toparam, s)
20
28
else
21
29
setmetadata (s, MTKParameterCtx, true )
22
30
end
23
31
end
24
- toparam (s:: Num ) = Num (toparam (value (s)))
32
+ toparam (s:: Num ) = wrap (toparam (value (s)))
25
33
26
34
"""
27
35
tovar(s::Sym)
0 commit comments