JuliaSymbolics/Symbolics.jl

Generated code fails to convert arguments when packed into array

bradcarman opened this issue · 0 comments

The following code...

using Symbolics

f(u) = maximum(@inbounds(u[u .<= 10.0]))
@register_symbolic f(u::Vector)
vars = @variables U1 U2 U3 U4 U5 x
u = [U1, U2, U3, U4, U5]
    
f_iip, f_oop = build_function([2x, f(p, u, Uinf)], vars)
f_oop

Produces the function...

:(function (ˍ₋out, ˍ₋arg1)
      #= C:\Users\bradl\.julia\packages\SymbolicUtils\r1pzW\src\code.jl:373 =#
      #= C:\Users\bradl\.julia\packages\SymbolicUtils\r1pzW\src\code.jl:374 =#
      #= C:\Users\bradl\.julia\packages\SymbolicUtils\r1pzW\src\code.jl:375 =#
      begin
          begin
              #= C:\Users\bradl\.julia\packages\Symbolics\B3bDY\src\build_function.jl:537 =#
              #= C:\Users\bradl\.julia\packages\SymbolicUtils\r1pzW\src\code.jl:422 =# @inbounds begin
                      #= C:\Users\bradl\.julia\packages\SymbolicUtils\r1pzW\src\code.jl:418 =#
                      ˍ₋out[1] = (*)(2, ˍ₋arg1[6])
                      ˍ₋out[2] = (f)(p, Num[U1, U2, U3, U4, U5], 1.0)
                      #= C:\Users\bradl\.julia\packages\SymbolicUtils\r1pzW\src\code.jl:420 =#
                      nothing
                  end
          end
      end
  end)

As can be seen, Num[U1, U2, U3, U4, U5] exists in the function, but should be ˍ₋arg1[1:5]

How can I register this function properly?