Open
Description
I cannot get @register
to work with arrays of variables.
julia> foo(x) = 2x
foo (generic function with 1 method)
julia> @register foo(x)
julia> methods(foo)
# 3 methods for generic function "foo":
[1] foo(x::SymbolicUtils.Symbolic) in Main at /home/fredrikb/.julia/packages/Symbolics/LTmGT/src/register.jl:52
[2] foo(x::Num) in Main at /home/fredrikb/.julia/packages/Symbolics/LTmGT/src/register.jl:52
[3] foo(x) in Main at REPL[19]:1
julia> @register foo(x::Vector{Num})
julia> methods(foo)
# 3 methods for generic function "foo":
[1] foo(x::SymbolicUtils.Symbolic) in Main at /home/fredrikb/.julia/packages/Symbolics/LTmGT/src/register.jl:52
[2] foo
(x::Num) in Main at /home/fredrikb/.julia/packages/Symbolics/LTmGT/src/register.jl:52
[3] foo(x) in Main at REPL[19]:1
I have found one workaround, which is to define a wrapper function that accepts a symbolic dummy variable, like so
julia> bar(x, dummy) = foo(x)
bar (generic function with 1 method)
julia> @register bar(x::Vector{Num}, dummy)
julia> methods(bar)
# 3 methods for generic function "bar":
[1] bar(x::Vector{Num}, dummy::SymbolicUtils.Symbolic) in Main at /home/fredrikb/.julia/packages/Symbolics/LTmGT/src/register.jl:52
[2] bar(x::Vector{Num}, dummy::Num) in Main at /home/fredrikb/.julia/packages/Symbolics/LTmGT/src/register.jl:52
[3] bar(x, dummy) in Main at REPL[25]:1
but this is of course not optimal :)
Changing Vector{Num}
to
julia> @variables x[1:2]
1-element Vector{Symbolics.Arr{Num, 1}}:
x[1:2]
doesn't change anything
Metadata
Metadata
Assignees
Labels
No labels