Skip to content

Commit 7b21cab

Browse files
authored
Use Iterators.rest within generic_norm to simplify code (#1459)
1 parent 57ac0eb commit 7b21cab

File tree

1 file changed

+4
-16
lines changed

1 file changed

+4
-16
lines changed

src/generic.jl

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -579,20 +579,14 @@ function generic_norm2(x)
579579
T = typeof(maxabs)
580580
if isfinite(length(x)*maxabs*maxabs) && !iszero(maxabs*maxabs) # Scaling not necessary
581581
sum::promote_type(Float64, T) = norm_sqr(v)
582-
while true
583-
y = iterate(x, s)
584-
y === nothing && break
585-
(v, s) = y
582+
for v in Iterators.rest(x, s)
586583
sum += norm_sqr(v)
587584
end
588585
ismissing(sum) && return missing
589586
return convert(T, sqrt(sum))
590587
else
591588
sum = abs2(norm(v)/maxabs)
592-
while true
593-
y = iterate(x, s)
594-
y === nothing && break
595-
(v, s) = y
589+
for v in Iterators.rest(x, s)
596590
sum += (norm(v)/maxabs)^2
597591
end
598592
ismissing(sum) && return missing
@@ -614,21 +608,15 @@ function generic_normp(x, p)
614608
spp::promote_type(Float64, T) = p
615609
if -1 <= p <= 1 || (isfinite(length(x)*maxabs^spp) && !iszero(maxabs^spp)) # scaling not necessary
616610
sum::promote_type(Float64, T) = norm(v)^spp
617-
while true
618-
y = iterate(x, s)
619-
y === nothing && break
620-
(v, s) = y
611+
for v in Iterators.rest(x, s)
621612
ismissing(v) && return missing
622613
sum += norm(v)^spp
623614
end
624615
return convert(T, sum^inv(spp))
625616
else # rescaling
626617
sum = (norm(v)/maxabs)^spp
627618
ismissing(sum) && return missing
628-
while true
629-
y = iterate(x, s)
630-
y === nothing && break
631-
(v, s) = y
619+
for v in Iterators.rest(x, s)
632620
ismissing(v) && return missing
633621
sum += (norm(v)/maxabs)^spp
634622
end

0 commit comments

Comments
 (0)