Skip to content

Commit 034e106

Browse files
author
Katharine Hyatt
committed
Move gauge fixes back to svd interface
1 parent 0a6dd13 commit 034e106

2 files changed

Lines changed: 45 additions & 43 deletions

File tree

src/common/gauge.jl

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -6,46 +6,3 @@ function gaugefix!(V::AbstractMatrix)
66
end
77
return V
88
end
9-
10-
function gaugefix!(::typeof(svd_full!), U, S, Vᴴ, m::Int, n::Int)
11-
for j in 1:max(m, n)
12-
if j <= min(m, n)
13-
u = view(U, :, j)
14-
v = view(Vᴴ, j, :)
15-
s = conj(sign(_argmaxabs(u)))
16-
u .*= s
17-
v .*= conj(s)
18-
elseif j <= m
19-
u = view(U, :, j)
20-
s = conj(sign(_argmaxabs(u)))
21-
u .*= s
22-
else
23-
v = view(Vᴴ, j, :)
24-
s = conj(sign(_argmaxabs(v)))
25-
v .*= s
26-
end
27-
end
28-
return (U, S, Vᴴ)
29-
end
30-
31-
function gaugefix!(::typeof(svd_compact!), U, S, Vᴴ, m::Int, n::Int)
32-
for j in 1:size(U, 2)
33-
u = view(U, :, j)
34-
v = view(Vᴴ, j, :)
35-
s = conj(sign(_argmaxabs(u)))
36-
u .*= s
37-
v .*= conj(s)
38-
end
39-
return (U, S, Vᴴ)
40-
end
41-
42-
function gaugefix!(::typeof(svd_trunc!), U, S, Vᴴ, m::Int, n::Int)
43-
for j in 1:min(m, n)
44-
u = view(U, :, j)
45-
v = view(Vᴴ, j, :)
46-
s = conj(sign(_argmaxabs(u)))
47-
u .*= s
48-
v .*= conj(s)
49-
end
50-
return (U, S, Vᴴ)
51-
end

src/implementations/svd.jl

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,51 @@ function initialize_output(::typeof(svd_trunc!), A::AbstractMatrix, alg::Truncat
6666
return initialize_output(svd_compact!, A, alg.alg)
6767
end
6868

69+
function gaugefix!(::typeof(svd_full!), U, S, Vᴴ, m::Int, n::Int)
70+
for j in 1:max(m, n)
71+
if j <= min(m, n)
72+
u = view(U, :, j)
73+
v = view(Vᴴ, j, :)
74+
s = conj(sign(_argmaxabs(u)))
75+
u .*= s
76+
v .*= conj(s)
77+
elseif j <= m
78+
u = view(U, :, j)
79+
s = conj(sign(_argmaxabs(u)))
80+
u .*= s
81+
else
82+
v = view(Vᴴ, j, :)
83+
s = conj(sign(_argmaxabs(v)))
84+
v .*= s
85+
end
86+
end
87+
return (U, S, Vᴴ)
88+
end
89+
90+
# Gauge fixation
91+
# --------------
92+
function gaugefix!(::typeof(svd_compact!), U, S, Vᴴ, m::Int, n::Int)
93+
for j in 1:size(U, 2)
94+
u = view(U, :, j)
95+
v = view(Vᴴ, j, :)
96+
s = conj(sign(_argmaxabs(u)))
97+
u .*= s
98+
v .*= conj(s)
99+
end
100+
return (U, S, Vᴴ)
101+
end
102+
103+
function gaugefix!(::typeof(svd_trunc!), U, S, Vᴴ, m::Int, n::Int)
104+
for j in 1:min(m, n)
105+
u = view(U, :, j)
106+
v = view(Vᴴ, j, :)
107+
s = conj(sign(_argmaxabs(u)))
108+
u .*= s
109+
v .*= conj(s)
110+
end
111+
return (U, S, Vᴴ)
112+
end
113+
69114

70115
# Implementation
71116
# --------------

0 commit comments

Comments
 (0)