Skip to content

Commit fdd7bbd

Browse files
committed
πŸ›οΈ Switch to column vectors
1 parent 074af59 commit fdd7bbd

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

β€Žsrc/spectrum.jlβ€Ž

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,10 @@ function _spectrum(
184184
# Calculate <w₁| = <I|A
185185
D = prod(L.dimensions)
186186
Ivec = SparseVector(D^2, [1 + n * (D + 1) for n in 0:(D-1)], ones(cT, D)) # same as vec(system_identity_matrix)
187-
wβ‚– = transpose(vT(Ivec)) * spre(A).data
187+
wβ‚– = spre(A).data' * vT(Ivec)
188188

189189
# Store the norm of the Green's function before renormalizing |v₁> and <w₁|
190-
gfNorm = abs(wβ‚– * vβ‚–)
190+
gfNorm = abs(dot(wβ‚–, vβ‚–))
191191
vβ‚– ./= sqrt(gfNorm)
192192
wβ‚– ./= sqrt(gfNorm)
193193

@@ -219,17 +219,17 @@ function _spectrum(
219219
# Previous and next left/right Krylov vectors
220220
v₋₁ = vT(zeros(cT, D^2))
221221
vβ‚Šβ‚ = vT(zeros(cT, D^2))
222-
w₋₁ = transpose(vT(zeros(cT, D^2)))
223-
wβ‚Šβ‚ = transpose(vT(zeros(cT, D^2)))
222+
w₋₁ = vT(zeros(cT, D^2))
223+
wβ‚Šβ‚ = vT(zeros(cT, D^2))
224224

225225
# Frequency of renormalization
226226
renormFrequency::typeof(solver.maxiter) = 1
227227

228228
# Loop over the Krylov subspace(s)
229229
for k in 1:solver.maxiter
230230
# k-th diagonal element
231-
mul!(wβ‚Šβ‚.parent, transpose(L.data), wβ‚–.parent) # Equivalent to: wβ‚Šβ‚ = wβ‚– * L.data
232-
Ξ±β‚– = wβ‚Šβ‚ * vβ‚–
231+
mul!(wβ‚Šβ‚, L.data', wβ‚–)
232+
Ξ±β‚– = dot(wβ‚Šβ‚, vβ‚–)
233233

234234
# Update A(k), B(k) and continuous fraction; normalization avoids overflow
235235
Aβ‚– .= (-1im .* Ο‰List .+ Ξ±β‚–) .* A₋₁ .- (Ξ²β‚– * Ξ΄β‚–) .* Aβ‚‹β‚‚
@@ -258,22 +258,22 @@ function _spectrum(
258258
end
259259

260260
# (k+1)-th left/right vectors, orthogonal to previous ones
261-
mul!(vβ‚Šβ‚,L.data,vβ‚–) # Equivalent to: vβ‚Šβ‚ = L.data * vβ‚–
261+
mul!(vβ‚Šβ‚, L.data, vβ‚–)
262262
vβ‚Šβ‚ .= vβ‚Šβ‚ .- Ξ±β‚– .* vβ‚– .- Ξ²β‚– .* v₋₁
263-
wβ‚Šβ‚ .= wβ‚Šβ‚ .- Ξ±β‚– .* wβ‚– .- Ξ΄β‚– .* w₋₁
263+
wβ‚Šβ‚ .= wβ‚Šβ‚ .- conj(Ξ±β‚–) .* wβ‚– .- conj(Ξ΄β‚–) .* w₋₁
264264
v₋₁, vβ‚– = vβ‚–, v₋₁
265265
vβ‚–, vβ‚Šβ‚ = vβ‚Šβ‚, vβ‚–
266266
w₋₁, wβ‚– = wβ‚–, w₋₁
267267
wβ‚–, wβ‚Šβ‚ = wβ‚Šβ‚, wβ‚–
268268

269269
# k-th off-diagonal elements
270-
buf = wβ‚– * vβ‚–
270+
buf = dot(wβ‚–, vβ‚–)
271271
Ξ΄β‚– = sqrt(abs(buf))
272272
Ξ²β‚– = buf / Ξ΄β‚–
273273

274274
# Normalize (k+1)-th left/right vectors
275275
vβ‚– ./= Ξ΄β‚–
276-
wβ‚– ./= Ξ²β‚–
276+
wβ‚– ./= conj(Ξ²β‚–)
277277

278278
# Update everything for the next cycle
279279
Aβ‚‹β‚‚, A₋₁ = A₋₁, Aβ‚‹β‚‚

0 commit comments

Comments
Β (0)