@@ -50,19 +50,28 @@ function build_function(rhss, vs, ps = (), args = (), conv = simplified_expr, ex
5050 ip_let_expr = Expr (:let , var_eqs, build_expr (:block , ip_sys_exprs))
5151
5252 tuple_sys_expr = build_expr (:tuple , [conv (rhs) for rhs ∈ rhss])
53- vector_sys_expr = build_expr (:vect , [conv (rhs) for rhs ∈ rhss])
53+
54+ if rhss isa Matrix
55+ arr_sys_expr = build_expr (:vcat , [build_expr (:row ,[conv (rhs) for rhs ∈ rhss[i,:]]) for i in 1 : size (rhss,2 )])
56+ elseif typeof (rhss) <: Array && ! (typeof (rhss) <: Vector )
57+ vector_form = build_expr (:vect , [conv (rhs) for rhs ∈ rhss])
58+ arr_sys_expr = :(reshape ($ vector_form,$ (size (rhss)... )))
59+ else # Vector
60+ arr_sys_expr = build_expr (:vect , [conv (rhs) for rhs ∈ rhss])
61+ end
62+
5463 let_expr = Expr (:let , var_eqs, tuple_sys_expr)
55- vector_let_expr = Expr (:let , var_eqs, vector_sys_expr )
64+ arr_let_expr = Expr (:let , var_eqs, arr_sys_expr )
5665 bounds_block = checkbounds ? let_expr : :(@inbounds begin $ let_expr end )
57- vector_bounds_block = checkbounds ? vector_let_expr : :(@inbounds begin $ vector_let_expr end )
66+ arr_bounds_block = checkbounds ? arr_let_expr : :(@inbounds begin $ arr_let_expr end )
5867 ip_bounds_block = checkbounds ? ip_let_expr : :(@inbounds begin $ ip_let_expr end )
5968
6069 fargs = ps == () ? :(u,$ (args... )) : :(u,p,$ (args... ))
6170
6271 oop_ex = :(
6372 ($ (fargs. args... ),) -> begin
6473 if $ (fargs. args[1 ]) isa Array
65- return $ vector_bounds_block
74+ return $ arr_bounds_block
6675 else
6776 X = $ bounds_block
6877 end
0 commit comments