Skip to content

Commit 8ea472d

Browse files
fix: only build iip function when input is nonscalar
1 parent 76976af commit 8ea472d

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/systems/diffeqs/odesystem.jl

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -493,16 +493,17 @@ function build_explicit_observed_function(sys, ts;
493493
false))) |> wrap_array_vars(sys, ts)[1] |> toexpr
494494
oop_fn = expression ? oop_fn : drop_expr(@RuntimeGeneratedFunction(oop_fn))
495495

496-
iip_fn = build_function(isscalar ? ts[1] : ts,
497-
args...;
498-
postprocess_fbody = pre,
499-
wrap_code = wrap_array_vars(
500-
sys, isscalar ? ts[1] : ts) .∘ wrap_assignments(isscalar, obsexprs),
501-
expression = Val{expression})[2]
502-
if isscalar || return_inplace
503-
return oop_fn, iip_fn
504-
else
496+
if !isscalar
497+
iip_fn = build_function(ts,
498+
args...;
499+
postprocess_fbody = pre,
500+
wrap_code = wrap_array_vars(sys, ts) .∘ wrap_assignments(isscalar, obsexprs),
501+
expression = Val{expression})[2]
502+
end
503+
if isscalar || !return_inplace
505504
return oop_fn
505+
else
506+
return oop_fn, iip_fn
506507
end
507508
end
508509

0 commit comments

Comments
 (0)