Skip to content

Commit b76a3ce

Browse files
committed
make tests pass?
1 parent 2700fce commit b76a3ce

File tree

3 files changed

+12
-10
lines changed

3 files changed

+12
-10
lines changed

src/broyden.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,8 @@ function perform_step!(cache::GeneralBroydenCache{true})
101101
else
102102
mul!(_vec(J⁻¹df), J⁻¹, _vec(dfu))
103103
mul!(J⁻¹₂, _vec(du)', J⁻¹)
104-
du .= (du .- J⁻¹df) ./ (dot(du, J⁻¹df) .+ T(1e-5))
104+
denom = dot(du, J⁻¹df)
105+
du .= (du .- J⁻¹df) ./ ifelse(iszero(denom), T(1e-5), denom)
105106
mul!(J⁻¹, _vec(du), J⁻¹₂, 1, 1)
106107
end
107108
fu .= fu2
@@ -136,7 +137,8 @@ function perform_step!(cache::GeneralBroydenCache{false})
136137
else
137138
cache.J⁻¹df = _restructure(cache.J⁻¹df, cache.J⁻¹ * _vec(cache.dfu))
138139
cache.J⁻¹₂ = _vec(cache.du)' * cache.J⁻¹
139-
cache.du = (cache.du .- cache.J⁻¹df) ./ (dot(cache.du, cache.J⁻¹df) .+ T(1e-5))
140+
denom = dot(cache.du, cache.J⁻¹df)
141+
cache.du = (cache.du .- cache.J⁻¹df) ./ ifelse(iszero(denom), T(1e-5), denom)
140142
cache.J⁻¹ = cache.J⁻¹ .+ _vec(cache.du) * cache.J⁻¹₂
141143
end
142144
cache.fu = cache.fu2

src/lbroyden.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ function perform_step!(cache::LimitedMemoryBroydenCache{true})
123123
__lbroyden_matvec!(_vec(cache.vᵀ_cache), cache.Ux, U_part, Vᵀ_part, _vec(cache.du))
124124
__lbroyden_rmatvec!(_vec(cache.u_cache), cache.xᵀVᵀ, U_part, Vᵀ_part,
125125
_vec(cache.dfu))
126-
cache.u_cache .= (du .- cache.u_cache) ./
127-
(dot(cache.vᵀ_cache, cache.dfu) .+ T(1e-5))
126+
denom = dot(cache.vᵀ_cache, cache.dfu)
127+
cache.u_cache .= (du .- cache.u_cache) ./ ifelse(iszero(denom), T(1e-5), denom)
128128

129129
idx = mod1(cache.iterations_since_reset + 1, size(cache.U, 1))
130130
selectdim(cache.U, 1, idx) .= _vec(cache.u_cache)
@@ -179,8 +179,8 @@ function perform_step!(cache::LimitedMemoryBroydenCache{false})
179179
__lbroyden_matvec(U_part, Vᵀ_part, _vec(cache.du)))
180180
cache.u_cache = _restructure(cache.u_cache,
181181
__lbroyden_rmatvec(U_part, Vᵀ_part, _vec(cache.dfu)))
182-
cache.u_cache = (cache.du .- cache.u_cache) ./
183-
(dot(cache.vᵀ_cache, cache.dfu) .+ T(1e-5))
182+
denom = dot(cache.vᵀ_cache, cache.dfu)
183+
cache.u_cache = (cache.du .- cache.u_cache) ./ ifelse(iszero(denom), T(1e-5), denom)
184184

185185
idx = mod1(cache.iterations_since_reset + 1, size(cache.U, 1))
186186
selectdim(cache.U, 1, idx) .= _vec(cache.u_cache)

test/23_test_problems.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ function test_on_library(problems, dicts, alg_ops, broken_tests, ϵ = 1e-4)
77
for (idx, (problem, dict)) in enumerate(zip(problems, dicts))
88
x = dict["start"]
99
res = similar(x)
10-
nlprob = NonlinearProblem(problem, x)
10+
nlprob = NonlinearProblem(problem, copy(x))
1111
@testset "$idx: $(dict["title"])" begin
1212
for alg in alg_ops
1313
try
@@ -86,9 +86,9 @@ end
8686
GeneralBroyden(; linesearch = BackTracking()))
8787

8888
broken_tests = Dict(alg => Int[] for alg in alg_ops)
89-
broken_tests[alg_ops[1]] = [1, 3, 4, 5, 6, 11, 12, 13, 14]
90-
broken_tests[alg_ops[2]] = [1, 2, 3, 4, 5, 6, 9, 11, 13, 15, 16, 21, 22]
91-
broken_tests[alg_ops[3]] = [1, 2, 4, 5, 6, 11, 12, 13, 14, 21]
89+
broken_tests[alg_ops[1]] = [1, 2, 4, 5, 6, 11, 12, 13, 14]
90+
broken_tests[alg_ops[2]] = [1, 2, 3, 4, 5, 6, 9, 11, 13, 22]
91+
broken_tests[alg_ops[3]] = [1, 4, 5, 6, 11, 12, 13, 14, 21]
9292

9393
test_on_library(problems, dicts, alg_ops, broken_tests)
9494
end

0 commit comments

Comments
 (0)