Skip to content

Commit 443bdd4

Browse files
fix inversions
1 parent 320590d commit 443bdd4

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/ode_def_opts.jl

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,27 +136,28 @@ function ode_def_opts(name::Symbol,opts::Dict{Symbol,Bool},ex::Expr,params...;_M
136136

137137
if opts[:build_invjac]
138138
try # Jacobian Inverse
139-
invjac = inv(symjac)
139+
L = Base.convert(SymEngine.CDenseMatrix,symjac)
140+
invjac = inv(L)
140141
invJex = build_jac_func(invjac,indvar_dict,params)
141142
bad_derivative(invJex)
142143
invjac_exists = true
143144
catch err
144-
println(err)
145145
@warn("Jacobian could not invert")
146146
end
147147
end
148148
if opts[:build_invW]
149149
try # Rosenbrock-W Inverse
150-
syminvW = inv(M - γ*symjac)
151-
syminvW_t = inv(M/γ - symjac)
150+
L = Base.convert(SymEngine.CDenseMatrix,M - γ*symjac)
151+
syminvW = inv(L)
152+
L = Base.convert(SymEngine.CDenseMatrix,M/γ - symjac)
153+
syminvW_t = inv(L)
152154
invWex = build_jac_func(syminvW,indvar_dict,params)
153155
bad_derivative(invWex)
154156
invW_exists = true
155157
invWex_t = build_jac_func(syminvW_t,indvar_dict,params)
156158
bad_derivative(invWex_t)
157159
invW_t_exists = true
158160
catch err
159-
println(err)
160161
@warn("Rosenbrock-W could not invert")
161162
end
162163
end
@@ -172,7 +173,8 @@ function ode_def_opts(name::Symbol,opts::Dict{Symbol,Bool},ex::Expr,params...;_M
172173
hes_exists = true
173174
if opts[:build_invhes]
174175
try # Hessian Inverse
175-
invhes = inv(symhes)
176+
L = Base.convert(SymEngine.CDenseMatrix,symhes)
177+
invhes = inv(L)
176178
invHex = build_jac_func(invhes,indvar_dict,params)
177179
bad_derivative(invHex)
178180
invhes_exists = true
@@ -221,7 +223,6 @@ function ode_def_opts(name::Symbol,opts::Dict{Symbol,Bool},ex::Expr,params...;_M
221223
param_Jex = build_jac_func(param_symjac_ex,indvar_dict,params,params_from_function=false)
222224
param_jac_exists = true
223225
catch err
224-
println(err)
225226
@warn("Failed to build the parameter derivatives.")
226227
end
227228
end

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ f(Val{:paramjac},pJ,u,[2.0;2.5;3.0;1.0],t)
7575
@test pJ == [2.0 -6.0 0 0.0
7676
0 0 -3.0 6.0]
7777

78-
@code_llvm has_jac(f)
78+
@code_llvm DiffEqBase.has_jac(f)
7979

8080
println("Test booleans")
8181
@test DiffEqBase.has_jac(f) == true

0 commit comments

Comments
 (0)