Skip to content

Commit 7745517

Browse files
authored
make complex ldive allcoate less (#156)
1 parent 176ef64 commit 7745517

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

src/solvers/umfpack.jl

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -860,19 +860,24 @@ function _AqldivB_kernel!(X::StridedMatrix{T}, lu::UmfpackLU{T},
860860
end
861861
function _AqldivB_kernel!(x::StridedVector{Tb}, lu::UmfpackLU{Float64},
862862
b::StridedVector{Tb}, transposeoptype) where Tb<:Complex
863-
r, i = similar(b, Float64), similar(b, Float64)
864-
solve!(r, lu, Vector{Float64}(real(b)), transposeoptype)
865-
solve!(i, lu, Vector{Float64}(imag(b)), transposeoptype)
863+
r = similar(b, Float64)
864+
i = similar(b, Float64)
865+
c = real.(b)
866+
solve!(r, lu, c, transposeoptype)
867+
c .= imag.(b)
868+
solve!(i, lu, c, transposeoptype)
866869
map!(complex, x, r, i)
867870
end
868871
function _AqldivB_kernel!(X::StridedMatrix{Tb}, lu::UmfpackLU{Float64},
869872
B::StridedMatrix{Tb}, transposeoptype) where Tb<:Complex
870873
r = similar(B, Float64, size(B, 1))
871874
i = similar(B, Float64, size(B, 1))
872-
875+
c = similar(B, Float64, size(B, 1))
873876
for j in 1:size(B, 2)
874-
solve!(r, lu, Vector{Float64}(real(view(B, :, j))), transposeoptype)
875-
solve!(i, lu, Vector{Float64}(imag(view(B, :, j))), transposeoptype)
877+
c .= real.(view(B, :, j))
878+
solve!(r, lu, c, transposeoptype)
879+
c .= imag.(view(B, :, j))
880+
solve!(i, lu, c, transposeoptype)
876881
map!(complex, view(X, :, j), r, i)
877882
end
878883
end

0 commit comments

Comments
 (0)