Skip to content

Commit d506ddc

Browse files
vtjnashKristofferCstaticfloat
authored
SparseArrays: Fix order of triangular and adjortrans wrappers (#47429)
Backport companion to JuliaSparse/SparseArrays.jl#283 Co-authored-by: Kristoffer Carlsson <[email protected]> Co-authored-by: Elliot Saba <[email protected]>
2 parents af0af23 + b3214c7 commit d506ddc

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

stdlib/SparseArrays/src/linalg.jl

+23-23
Original file line numberDiff line numberDiff line change
@@ -424,20 +424,20 @@ const LowerTriangularPlain{T} = Union{
424424
UnitLowerTriangular{T,<:SparseMatrixCSCUnion{T}}}
425425

426426
const LowerTriangularWrapped{T} = Union{
427-
Adjoint{T,<:UpperTriangular{T,<:SparseMatrixCSCUnion{T}}},
428-
Adjoint{T,<:UnitUpperTriangular{T,<:SparseMatrixCSCUnion{T}}},
429-
Transpose{T,<:UpperTriangular{T,<:SparseMatrixCSCUnion{T}}},
430-
Transpose{T,<:UnitUpperTriangular{T,<:SparseMatrixCSCUnion{T}}}} where T
427+
LowerTriangular{T,<:Adjoint{T,<:SparseMatrixCSCUnion{T}}},
428+
UnitLowerTriangular{T,<:Adjoint{T,<:SparseMatrixCSCUnion{T}}},
429+
LowerTriangular{T,<:Transpose{T,<:SparseMatrixCSCUnion{T}}},
430+
UnitLowerTriangular{T,<:Transpose{T,<:SparseMatrixCSCUnion{T}}}} where T
431431

432432
const UpperTriangularPlain{T} = Union{
433433
UpperTriangular{T,<:SparseMatrixCSCUnion{T}},
434434
UnitUpperTriangular{T,<:SparseMatrixCSCUnion{T}}}
435435

436436
const UpperTriangularWrapped{T} = Union{
437-
Adjoint{T,<:LowerTriangular{T,<:SparseMatrixCSCUnion{T}}},
438-
Adjoint{T,<:UnitLowerTriangular{T,<:SparseMatrixCSCUnion{T}}},
439-
Transpose{T,<:LowerTriangular{T,<:SparseMatrixCSCUnion{T}}},
440-
Transpose{T,<:UnitLowerTriangular{T,<:SparseMatrixCSCUnion{T}}}} where T
437+
UpperTriangular{T,<:Adjoint{T,<:SparseMatrixCSCUnion{T}}},
438+
UnitUpperTriangular{T,<:Adjoint{T,<:SparseMatrixCSCUnion{T}}},
439+
UpperTriangular{T,<:Transpose{T,<:SparseMatrixCSCUnion{T}}},
440+
UnitUpperTriangular{T,<:Transpose{T,<:SparseMatrixCSCUnion{T}}}} where T
441441

442442
const UpperTriangularSparse{T} = Union{
443443
UpperTriangularWrapped{T}, UpperTriangularPlain{T}} where T
@@ -543,9 +543,9 @@ end
543543

544544
# forward multiplication for adjoint and transpose of LowerTriangular CSC matrices
545545
function _lmul!(U::UpperTriangularWrapped, B::StridedVecOrMat)
546-
A = U.parent.data
547-
unit = U.parent isa UnitDiagonalTriangular
548-
adj = U isa Adjoint
546+
A = parent(parent(U))
547+
unit = U isa UnitDiagonalTriangular
548+
adj = parent(U) isa Adjoint
549549

550550
nrowB, ncolB = size(B, 1), size(B, 2)
551551
aa = getnzval(A)
@@ -583,9 +583,9 @@ end
583583

584584
# backward multiplication with adjoint and transpose of LowerTriangular CSC matrices
585585
function _lmul!(L::LowerTriangularWrapped, B::StridedVecOrMat)
586-
A = L.parent.data
587-
unit = L.parent isa UnitDiagonalTriangular
588-
adj = L isa Adjoint
586+
A = parent(parent(L))
587+
unit = L isa UnitDiagonalTriangular
588+
adj = parent(L) isa Adjoint
589589

590590
nrowB, ncolB = size(B, 1), size(B, 2)
591591
aa = getnzval(A)
@@ -718,9 +718,9 @@ end
718718

719719
# forward substitution for adjoint and transpose of UpperTriangular CSC matrices
720720
function _ldiv!(L::LowerTriangularWrapped, B::StridedVecOrMat)
721-
A = L.parent.data
722-
unit = L.parent isa UnitDiagonalTriangular
723-
adj = L isa Adjoint
721+
A = parent(parent(L))
722+
unit = L isa UnitDiagonalTriangular
723+
adj = parent(L) isa Adjoint
724724

725725
nrowB, ncolB = size(B, 1), size(B, 2)
726726
aa = getnzval(A)
@@ -764,9 +764,9 @@ end
764764

765765
# backward substitution for adjoint and transpose of LowerTriangular CSC matrices
766766
function _ldiv!(U::UpperTriangularWrapped, B::StridedVecOrMat)
767-
A = U.parent.data
768-
unit = U.parent isa UnitDiagonalTriangular
769-
adj = U isa Adjoint
767+
A = parent(parent(U))
768+
unit = U isa UnitDiagonalTriangular
769+
adj = parent(U) isa Adjoint
770770

771771
nrowB, ncolB = size(B, 1), size(B, 2)
772772
aa = getnzval(A)
@@ -1578,12 +1578,12 @@ for (xformtype, xformop) in ((:Adjoint, :adjoint), (:Transpose, :transpose))
15781578
if m == n
15791579
if istril(A)
15801580
if istriu(A)
1581-
return \($xformop(Diagonal(Vector(diag(A)))), B)
1581+
return \(Diagonal(($xformop.(diag(A)))), B)
15821582
else
1583-
return \($xformop(LowerTriangular(A)), B)
1583+
return \(UpperTriangular($xformop(A)), B)
15841584
end
15851585
elseif istriu(A)
1586-
return \($xformop(UpperTriangular(A)), B)
1586+
return \(LowerTriangular($xformop(A)), B)
15871587
end
15881588
if ishermitian(A)
15891589
return \($xformop(Hermitian(A)), B)

0 commit comments

Comments
 (0)