Skip to content

Commit 4dbc9f2

Browse files
Fix oop levenburg
1 parent 0640676 commit 4dbc9f2

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

src/levenberg.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,11 @@ function perform_step!(cache::LevenbergMarquardtCache{true})
214214
linres = dolinsolve(alg.precs, linsolve; A = __maybe_symmetric(cache.mat_tmp),
215215
b = _vec(cache.u_tmp), linu = _vec(cache.du), p = p, reltol = cache.abstol)
216216
cache.linsolve = linres.cache
217-
_vec(cache.v) .= .-_vec(cache.du)
217+
_vec(cache.v) .= -1 .* _vec(cache.du)
218218

219219
# Geodesic acceleration (step_size = v + a / 2).
220220
@unpack v, α_geodesic, h = cache
221-
_vec(cache.u_tmp) .= _vec(u) .+ h .* _vec(v)
222-
f(cache.fu_tmp, cache.u_tmp, p)
221+
f(cache.fu_tmp, _restructure(u, _vec(u) .+ h .* _vec(v)), p)
223222

224223
# The following lines do: cache.a = -J \ cache.fu_tmp
225224
mul!(_vec(cache.Jv), J, _vec(v))
@@ -301,8 +300,8 @@ function perform_step!(cache::LevenbergMarquardtCache{false})
301300
_vec(J' * ((2 / h) .* ((f(u .+ h .* v, p) .- fu1) ./ h .- J * v)))
302301
else
303302
linres = dolinsolve(alg.precs, linsolve;
304-
b = _mutable(_vec(J' *
305-
_vec(((2 / h) .* (_vec(f(u .+ h .* _restructure(u,v), p)) .- _vec(fu1) ./ h .- J * _vec(v)))))),
303+
b = _mutable(_vec(J' * #((2 / h) .* ((f(u .+ h .* v, p) .- fu1) ./ h .- J * v)))),
304+
_vec(((2 / h) .* ((_vec(f(u .+ h .* _restructure(u,v), p)) .- _vec(fu1)) ./ h .- J * _vec(v)))))),
306305
linu = _vec(cache.a), p, reltol = cache.abstol)
307306
cache.linsolve = linres.cache
308307
end

0 commit comments

Comments
 (0)