@@ -214,12 +214,11 @@ function perform_step!(cache::LevenbergMarquardtCache{true})
214
214
linres = dolinsolve (alg. precs, linsolve; A = __maybe_symmetric (cache. mat_tmp),
215
215
b = _vec (cache. u_tmp), linu = _vec (cache. du), p = p, reltol = cache. abstol)
216
216
cache. linsolve = linres. cache
217
- _vec (cache. v) .= .- _vec (cache. du)
217
+ _vec (cache. v) .= - 1 .* _vec (cache. du)
218
218
219
219
# Geodesic acceleration (step_size = v + a / 2).
220
220
@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)
223
222
224
223
# The following lines do: cache.a = -J \ cache.fu_tmp
225
224
mul! (_vec (cache. Jv), J, _vec (v))
@@ -301,8 +300,8 @@ function perform_step!(cache::LevenbergMarquardtCache{false})
301
300
_vec (J' * ((2 / h) .* ((f (u .+ h .* v, p) .- fu1) ./ h .- J * v)))
302
301
else
303
302
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)))))),
306
305
linu = _vec (cache. a), p, reltol = cache. abstol)
307
306
cache. linsolve = linres. cache
308
307
end
0 commit comments