@@ -50,19 +50,28 @@ function build_function(rhss, vs, ps = (), args = (), conv = simplified_expr, ex
50
50
ip_let_expr = Expr (:let , var_eqs, build_expr (:block , ip_sys_exprs))
51
51
52
52
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
+
54
63
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 )
56
65
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 )
58
67
ip_bounds_block = checkbounds ? ip_let_expr : :(@inbounds begin $ ip_let_expr end )
59
68
60
69
fargs = ps == () ? :(u,$ (args... )) : :(u,p,$ (args... ))
61
70
62
71
oop_ex = :(
63
72
($ (fargs. args... ),) -> begin
64
73
if $ (fargs. args[1 ]) isa Array
65
- return $ vector_bounds_block
74
+ return $ arr_bounds_block
66
75
else
67
76
X = $ bounds_block
68
77
end
0 commit comments