Skip to content

Commit 1b4fdd6

Browse files
committed
prepare for less ambiguity
1 parent b90c74a commit 1b4fdd6

1 file changed

Lines changed: 8 additions & 44 deletions

File tree

src/linalg.jl

Lines changed: 8 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -11,52 +11,16 @@ const DenseMatrixUnion = Union{StridedMatrix, BitMatrix}
1111
const DenseTriangular = UpperOrLowerTriangular{<:Any,<:DenseMatrixUnion}
1212
const DenseInputVector = Union{StridedVector, BitVector}
1313
const DenseVecOrMat = Union{DenseMatrixUnion, DenseInputVector}
14+
const DenseViewWrappers{T,S} = Union{AdjOrTrans{T,S}, HermOrSym{T,S}, UpperOrLowerTriangular{T,S}, UpperHessenberg{T,S}}
15+
const QuasiSparseMatrix = Union{SparseMatrixCSCUnion2, DenseViewWrappers{<:Any,<:SparseMatrixCSCUnion2}}
1416

15-
matprod_dest(A, B::SparseMatrixCSCUnion2, TS) =
16-
similar(A, TS, (size(A, 1), size(B, 2)))
17-
matprod_dest(A, B::AdjOrTrans{<:Any,<:SparseMatrixCSCUnion2}, TS) =
18-
similar(A, TS, (size(A, 1), size(B, 2)))
19-
matprod_dest(A, B::HermOrSym{<:Any,<:SparseMatrixCSCUnion2}, TS) =
20-
similar(A, TS, (size(A, 1), size(B, 2)))
21-
matprod_dest(A, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
22-
similar(A, TS, (size(A, 1), size(B, 2)))
23-
# disambiguation
24-
matprod_dest(A::LinearAlgebra.StructuredMatrix, B::SparseMatrixCSCUnion2, TS) =
25-
similar(A, TS, (size(A, 1), size(B, 2)))
26-
matprod_dest(A::LinearAlgebra.StructuredMatrix, B::AdjOrTrans{<:Any,<:SparseMatrixCSCUnion2}, TS) =
27-
similar(A, TS, (size(A, 1), size(B, 2)))
28-
matprod_dest(A::LinearAlgebra.StructuredMatrix, B::HermOrSym{<:Any,<:SparseMatrixCSCUnion2}, TS) =
29-
similar(A, TS, (size(A, 1), size(B, 2)))
30-
matprod_dest(A::LinearAlgebra.StructuredMatrix, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
31-
similar(A, TS, (size(A, 1), size(B, 2)))
32-
matprod_dest(A::SparseMatrixCSCUnion2, B::LinearAlgebra.StructuredMatrix, TS) =
33-
similar(B, TS, (size(A, 1), size(B, 2)))
34-
matprod_dest(A::AdjOrTrans{<:Any,<:SparseMatrixCSCUnion2}, B::LinearAlgebra.StructuredMatrix, TS) =
35-
similar(B, TS, (size(A, 1), size(B, 2)))
36-
matprod_dest(A::HermOrSym{<:Any,<:SparseMatrixCSCUnion2}, B::LinearAlgebra.StructuredMatrix, TS) =
17+
matprod_dest(A, B::QuasiSparseMatrix, TS) = similar(A, TS, (size(A, 1), size(B, 2)))
18+
matprod_dest(A::QuasiSparseMatrix, B, TS) = similar(B, TS, (size(A, 1), size(B, 2)))
19+
matprod_dest(A::QuasiSparseMatrix, B::QuasiSparseMatrix, TS) = similar(B, TS, (size(A, 1), size(B, 2)))
20+
matprod_dest(A::LinearAlgebra.BandedMatrix, B::QuasiSparseMatrix, TS) =
3721
similar(B, TS, (size(A, 1), size(B, 2)))
38-
matprod_dest(A::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, B::LinearAlgebra.StructuredMatrix, TS) =
39-
similar(B, TS, (size(A, 1), size(B, 2)))
40-
matprod_dest(A::SparseMatrixCSCUnion2, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
41-
similar(B, TS, (size(A, 1), size(B, 2)))
42-
matprod_dest(A::AdjOrTrans{<:Any,<:SparseMatrixCSCUnion2}, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
43-
similar(B, TS, (size(A, 1), size(B, 2)))
44-
matprod_dest(A::HermOrSym{<:Any,<:SparseMatrixCSCUnion2}, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
45-
similar(B, TS, (size(A, 1), size(B, 2)))
46-
matprod_dest(A::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
47-
similar(B, TS, (size(A, 1), size(B, 2)))
48-
matprod_dest(A::LinearAlgebra.BandedMatrix, B::SparseMatrixCSCUnion2, TS) =
49-
similar(B, TS, (size(A, 1), size(B, 2)))
50-
matprod_dest(A::LinearAlgebra.BandedMatrix, B::AdjOrTrans{<:Any,<:SparseMatrixCSCUnion2}, TS) =
51-
similar(B, TS, (size(A, 1), size(B, 2)))
52-
matprod_dest(A::LinearAlgebra.BandedMatrix, B::HermOrSym{<:Any,<:SparseMatrixCSCUnion2}, TS) =
53-
similar(B, TS, (size(A, 1), size(B, 2)))
54-
matprod_dest(A::LinearAlgebra.BandedMatrix, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
55-
similar(B, TS, (size(A, 1), size(B, 2)))
56-
matprod_dest(A::Diagonal, B::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, TS) =
57-
_matprod_dest_diag(B, TS)
58-
matprod_dest(A::UpperOrLowerTriangular{<:Any,<:SparseMatrixCSCUnion2}, B::Diagonal, TS) =
59-
_matprod_dest_diag(A, TS)
22+
matprod_dest(A::QuasiSparseMatrix, B::LinearAlgebra.BandedMatrix, TS) =
23+
similar(A, TS, (size(A, 1), size(B, 2)))
6024

6125
for op (:+, :-), Wrapper (:Hermitian, :Symmetric)
6226
@eval begin

0 commit comments

Comments
 (0)