Skip to content

Commit 7acceed

Browse files
Fix ComplexF64 compatibility and rename numers to nums for spell check
- Use abs(sk[i]) in IIP scalar loop to handle complex-typed sk cache entries (sk is Vector{ComplexF64} when u0 is Vector{ComplexF64} due to cache reuse) - Use internalnorm for comparison/division in scalar loop to avoid isless(ComplexF64, ComplexF64) errors in > and max operations - Rename numers -> nums to satisfy typos spell checker Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
1 parent d6ca482 commit 7acceed

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

lib/OrdinaryDiffEqCore/src/initdt.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -304,17 +304,17 @@
304304
hub_inv = zero(_fType)
305305
if u0 isa Array
306306
@inbounds for i in eachindex(u0)
307-
denom_i = convert(_fType, 0.1) * abs(u0[i]) + sk[i]
307+
denom_i = convert(_fType, 0.1) * abs(u0[i]) + abs(sk[i])
308308
numer_i = abs(f₀[i]) * oneunit_tType
309-
if denom_i > zero(denom_i)
310-
hub_inv = max(hub_inv, DiffEqBase.value(numer_i / denom_i))
309+
if internalnorm(denom_i, t) > 0
310+
hub_inv = max(hub_inv, internalnorm(numer_i, t) / internalnorm(denom_i, t))
311311
end
312312
end
313313
else
314314
# GPU-compatible: use abs/max broadcasts instead of scalar indexing
315315
denoms = @.. broadcast = false convert(_fType, 0.1) * abs(u0) + sk
316-
numers = @.. broadcast = false abs(f₀) * oneunit_tType
317-
hub_inv = maximum(numers ./ max.(denoms, eps(_fType) .* oneunit.(denoms)))
316+
nums = @.. broadcast = false abs(f₀) * oneunit_tType
317+
hub_inv = maximum(nums ./ max.(denoms, eps(_fType) .* oneunit.(denoms)))
318318
end
319319
# Strip ForwardDiff.Dual tracking — step size bounds don't need AD
320320
hub_inv = DiffEqBase.value(hub_inv)
@@ -597,8 +597,8 @@ end
597597

598598
# Upper bound: most restrictive component of |f₀| / (0.1*|u0| + tol)
599599
denoms = @.. broadcast = false convert(_fType, 0.1) * abs(u0) + sk
600-
numers = @.. broadcast = false abs(f₀) * oneunit_tType
601-
hub_inv = DiffEqBase.value(maximum(numers ./ max.(denoms, eps(_fType) .* oneunit.(denoms))))
600+
nums = @.. broadcast = false abs(f₀) * oneunit_tType
601+
hub_inv = DiffEqBase.value(maximum(nums ./ max.(denoms, eps(_fType) .* oneunit.(denoms))))
602602

603603
hub = convert(_fType, 0.1) * tdist
604604
if hub * hub_inv > oneunit_tType

0 commit comments

Comments
 (0)