Skip to content

Commit 5079568

Browse files
authored
Merge pull request #211 from fredrikekre/fe/sumabs
remove sumabs and sumabs2
2 parents 6c45051 + ab75cc4 commit 5079568

File tree

4 files changed

+22
-22
lines changed

4 files changed

+22
-22
lines changed

src/StaticArrays.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Base: getindex, setindex!, size, similar, vec, show,
99
mapreduce, broadcast, broadcast!, conj, transpose, ctranspose,
1010
hcat, vcat, ones, zeros, eye, one, cross, vecdot, reshape, fill,
1111
fill!, det, inv, eig, eigvals, expm, trace, vecnorm, norm, dot, diagm,
12-
sum, diff, prod, count, any, all, sumabs, sumabs2, minimum,
12+
sum, diff, prod, count, any, all, minimum,
1313
maximum, extrema, mean, copy, rand, randn, randexp, rand!, randn!,
1414
randexp!, normalize, normalize!, read, read!, write
1515

src/eigen.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -278,16 +278,16 @@ end
278278
r₁ = SVector(a11 - eig1, a12, a13)
279279
r₂ = SVector(conj(a12), a22 - eig1, a23)
280280
r₃ = SVector(conj(a13), conj(a23), a33 - eig1)
281-
n₁ = sumabs2(r₁)
282-
n₂ = sumabs2(r₂)
283-
n₃ = sumabs2(r₃)
281+
n₁ = sum(abs2, r₁)
282+
n₂ = sum(abs2, r₂)
283+
n₃ = sum(abs2, r₃)
284284

285285
r₁₂ = r₁ × r₂
286286
r₂₃ = r₂ × r₃
287287
r₃₁ = r₃ × r₁
288-
n₁₂ = sumabs2(r₁₂)
289-
n₂₃ = sumabs2(r₂₃)
290-
n₃₁ = sumabs2(r₃₁)
288+
n₁₂ = sum(abs2, r₁₂)
289+
n₂₃ = sum(abs2, r₂₃)
290+
n₃₁ = sum(abs2, r₃₁)
291291

292292
# we want best angle so we put all norms on same footing
293293
# (cheaper to multiply by third nᵢ rather than divide by the two involved)

src/mapreduce.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,6 @@ end
174174
@inline all(a::StaticArray{<:Any, Bool}) = reduce(&, true, a) # non-branching versions
175175
@inline any(a::StaticArray{<:Any, Bool}) = reduce(|, false, a) # (benchmarking needed)
176176
@inline mean(a::StaticArray) = sum(a) / length(a)
177-
@inline sumabs(a::StaticArray{<:Any, T}) where {T} = mapreduce(abs, +, zero(T), a)
178-
@inline sumabs2(a::StaticArray{<:Any, T}) where {T} = mapreduce(abs2, +, zero(T), a)
179177
@inline minimum(a::StaticArray) = reduce(min, a) # base has mapreduce(idenity, scalarmin, a)
180178
@inline maximum(a::StaticArray) = reduce(max, a) # base has mapreduce(idenity, scalarmax, a)
181179
@inline minimum(a::StaticArray, dim::Type{Val{D}}) where {D} = reducedim(min, a, dim)

test/eigen.jl

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@
2727
@test vals::SVector vals_a
2828
@test eigvals(m) vals
2929
@test (vecs*diagm(vals)*vecs')::SMatrix m
30-
30+
3131
(vals, vecs) = eig(Hermitian(m))
3232
@test vals::SVector vals_a
3333
@test eigvals(Hermitian(m)) vals
3434
@test eigvals(Hermitian(m, :L)) vals
3535
@test (vecs*diagm(vals)*vecs')::SMatrix m
36-
36+
3737
m_d = randn(SVector{2}); m = diagm(m_d)
3838
(vals, vecs) = eig(Hermitian(m))
3939
@test vals::SVector sort(m_d)
@@ -60,10 +60,10 @@
6060
@test eigvals(Hermitian(m)) vals
6161
@test eigvals(Hermitian(m, :L)) vals
6262
@test (vecs*diagm(vals)*vecs')::SMatrix m
63-
63+
6464
(vals, vecs) = eig(Symmetric(m, :L))
6565
@test vals::SVector vals_a
66-
66+
6767
m_d = randn(SVector{3}); m = diagm(m_d)
6868
(vals, vecs) = eig(Hermitian(m))
6969
@test vals::SVector sort(m_d)
@@ -77,36 +77,38 @@
7777
# Rank 1
7878
v = randn(SVector{3,Float64})
7979
m = v*v'
80+
vv = sum(abs2, v)
8081
vals, vecs = eig(m)::Tuple{SVector,SMatrix}
8182

8283
@test vecs'*vecs eye(SMatrix{3,3,Float64})
83-
@test vals SVector(0.0, 0.0, sumabs2(v))
84+
@test vals SVector(0.0, 0.0, vv)
8485
@test eigvals(m) vals
8586

8687
# Rank 2
8788
v2 = randn(SVector{3,Float64})
88-
v2 -= dot(v,v2)*v/sumabs2(v)
89+
v2 -= dot(v,v2)*v/(vv)
90+
v2v2 = sum(abs2, v2)
8991
m += v2*v2'
9092
vals, vecs = eig(m)::Tuple{SVector,SMatrix}
9193

9294
@test vecs'*vecs eye(SMatrix{3,3,Float64})
93-
if sumabs2(v) < sumabs2(v2)
94-
@test vals SVector(0.0, sumabs2(v), sumabs2(v2))
95+
if vv < v2v2
96+
@test vals SVector(0.0, vv, v2v2)
9597
else
96-
@test vals SVector(0.0, sumabs2(v2), sumabs2(v))
98+
@test vals SVector(0.0, v2v2, vv)
9799
end
98100
@test eigvals(m) vals
99101

100102
# Degeneracy (2 large)
101-
m = -99*(v*v')/sumabs2(v) + 100*eye(SMatrix{3,3,Float64})
103+
m = -99*(v*v')/vv + 100*eye(SMatrix{3,3,Float64})
102104
vals, vecs = eig(m)::Tuple{SVector,SMatrix}
103105

104106
@test vecs'*vecs eye(SMatrix{3,3,Float64})
105107
@test vals SVector(1.0, 100.0, 100.0)
106108
@test eigvals(m) vals
107109

108110
# Degeneracy (2 small)
109-
m = (v*v')/sumabs2(v) + 1e-2*eye(SMatrix{3,3,Float64})
111+
m = (v*v')/vv + 1e-2*eye(SMatrix{3,3,Float64})
110112
vals, vecs = eig(m)::Tuple{SVector,SMatrix}
111113

112114
@test vecs'*vecs eye(SMatrix{3,3,Float64})
@@ -141,7 +143,7 @@
141143
@test vecs*diagm(vals)*vecs' m
142144
@test eigvals(m) vals
143145
end
144-
146+
145147
@testset "4×4" for i = 1:100
146148
m_a = randn(4,4)
147149
m_a = m_a*m_a'
@@ -159,7 +161,7 @@
159161
@test eigvals(Hermitian(m)) vals
160162
@test eigvals(Hermitian(m, :L)) vals
161163
@test (vecs*diagm(vals)*vecs')::SMatrix m
162-
164+
163165
(vals, vecs) = eig(Symmetric(m, :L))
164166
@test vals::SVector vals_a
165167
m_d = randn(SVector{4}); m = diagm(m_d)

0 commit comments

Comments
 (0)