@@ -11,52 +11,16 @@ const DenseMatrixUnion = Union{StridedMatrix, BitMatrix}
1111const DenseTriangular = UpperOrLowerTriangular{<: Any ,<: DenseMatrixUnion }
1212const DenseInputVector = Union{StridedVector, BitVector}
1313const 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
6125for op ∈ (:+ , :- ), Wrapper ∈ (:Hermitian , :Symmetric )
6226 @eval begin
0 commit comments