|
1 | | -AdjointQType = isdefined(LinearAlgebra, :AdjointQ) ? LinearAlgebra.AdjointQ : Adjoint |
2 | | - |
3 | 1 | _qr(::AbstractBandedLayout, ax, A) = _banded_qr(ax, A) |
4 | 2 | _banded_qr(_, A) = qr!(BandedMatrix{float(eltype(A))}(A, (bandwidth(A,1),bandwidth(A,1)+bandwidth(A,2)))) |
5 | 3 |
|
@@ -65,7 +63,7 @@ function banded_qr_lmul!(A, B) |
65 | 63 | B |
66 | 64 | end |
67 | 65 |
|
68 | | -function banded_qr_lmul!(adjA::AdjointQType, B) |
| 66 | +function banded_qr_lmul!(adjA::AdjointQ, B) |
69 | 67 | require_one_based_indexing(B) |
70 | 68 | A = parent(adjA) |
71 | 69 | mA, nA = size(A.factors) |
@@ -121,7 +119,7 @@ function banded_qr_rmul!(A, Q) |
121 | 119 | end |
122 | 120 | A |
123 | 121 | end |
124 | | -function banded_qr_rmul!(A, adjQ::AdjointQType) |
| 122 | +function banded_qr_rmul!(A, adjQ::AdjointQ) |
125 | 123 | Q = parent(adjQ) |
126 | 124 | mQ, nQ = size(Q.factors) |
127 | 125 | mA, nA = size(A,1), size(A,2) |
@@ -150,27 +148,28 @@ function banded_qr_rmul!(A, adjQ::AdjointQType) |
150 | 148 | end |
151 | 149 |
|
152 | 150 | banded_lmul!(A::QRPackedQ, B::AbstractVecOrMat) = banded_qr_lmul!(A, B) |
153 | | -banded_lmul!(adjA::AdjointQType{<:Any,<:QRPackedQ}, B::AbstractVecOrMat) = banded_qr_lmul!(adjA, B) |
| 151 | +banded_lmul!(adjA::AdjointQ{<:Any,<:QRPackedQ}, B::AbstractVecOrMat) = banded_qr_lmul!(adjA, B) |
154 | 152 | banded_rmul!(A::AbstractMatrix, Q::QRPackedQ) = banded_qr_rmul!(A, Q) |
155 | | -banded_rmul!(A::AbstractMatrix, adjQ::AdjointQType{<:Any,<:QRPackedQ}) = banded_qr_rmul!(A, adjQ) |
| 153 | +banded_rmul!(A::AbstractMatrix, adjQ::AdjointQ{<:Any,<:QRPackedQ}) = banded_qr_rmul!(A, adjQ) |
156 | 154 |
|
157 | 155 | lmul!(A::QRPackedQ{<:Any,<:AbstractBandedMatrix}, B::AbstractVector) = banded_lmul!(A,B) |
158 | 156 | lmul!(A::QRPackedQ{<:Any,<:AbstractBandedMatrix}, B::AbstractMatrix) = banded_lmul!(A,B) |
159 | | -lmul!(adjA::AdjointQType{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}, B::AbstractVector) = banded_lmul!(adjA,B) |
160 | | -lmul!(adjA::AdjointQType{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}, B::AbstractMatrix) = banded_lmul!(adjA,B) |
161 | | -lmul!(A::QRPackedQ{<:Any,BandedSubBandedMatrix{T,C,R,I1,I2}}, B::AbstractVector) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange} = |
| 157 | +lmul!(adjA::AdjointQ{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}, B::AbstractVector) = banded_lmul!(adjA,B) |
| 158 | +lmul!(adjA::AdjointQ{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}, B::AbstractMatrix) = banded_lmul!(adjA,B) |
| 159 | +lmul!(adjA::AdjointQ{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}, B::LayoutVecOrMats) = banded_lmul!(adjA,B) |
| 160 | +lmul!(A::QRPackedQ{<:Any,<:BandedSubBandedMatrix{T,C,R,I1,I2}}, B::AbstractVector) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange} = |
162 | 161 | banded_lmul!(A,B) |
163 | | -lmul!(A::QRPackedQ{<:Any,BandedSubBandedMatrix{T,C,R,I1,I2}}, B::AbstractMatrix) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange} = |
| 162 | +lmul!(A::QRPackedQ{<:Any,<:BandedSubBandedMatrix{T,C,R,I1,I2}}, B::AbstractMatrix) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange} = |
164 | 163 | banded_lmul!(A,B) |
165 | | -lmul!(adjA::AdjointQType{T,<:QRPackedQ{T,<:BandedSubBandedMatrix{T,C,R,I1,I2,t}}}, B::AbstractVector) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange,t} = |
| 164 | +lmul!(adjA::AdjointQ{T,<:QRPackedQ{T,<:BandedSubBandedMatrix{T,C,R,I1,I2,t}}}, B::AbstractVector) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange,t} = |
166 | 165 | banded_lmul!(adjA,B) |
167 | | -lmul!(adjA::AdjointQType{T,<:QRPackedQ{T,<:BandedSubBandedMatrix{T,C,R,I1,I2,t}}}, B::AbstractMatrix) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange,t} = |
| 166 | +lmul!(adjA::AdjointQ{T,<:QRPackedQ{T,<:BandedSubBandedMatrix{T,C,R,I1,I2,t}}}, B::AbstractMatrix) where {T,C,R,I1<:AbstractUnitRange,I2<:AbstractUnitRange,t} = |
168 | 167 | banded_lmul!(adjA,B) |
169 | | -# rmul!(A::AbstractMatrix, adjQ::AdjointQType{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}) = banded_rmul!(A, adjA) |
170 | | -# rmul!(A::StridedMatrix, adjQ::AdjointQType{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}) = banded_rmul!(A, adjA) |
| 168 | +# rmul!(A::AbstractMatrix, adjQ::AdjointQ{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}) = banded_rmul!(A, adjA) |
| 169 | +# rmul!(A::StridedMatrix, adjQ::AdjointQ{<:Any,<:QRPackedQ{<:Any,<:AbstractBandedMatrix}}) = banded_rmul!(A, adjA) |
171 | 170 | rmul!(A::StridedVecOrMat{T}, Q::QRPackedQ{T,B}) where {T<:BlasFloat,B<:AbstractBandedMatrix{T}} = banded_rmul!(A, Q) |
172 | | -rmul!(A::StridedVecOrMat{T}, adjQ::AdjointQType{<:Any,<:QRPackedQ{T,B}}) where {T<:BlasComplex,B<:AbstractBandedMatrix{T}} = banded_rmul!(A, adjQ) |
173 | | -rmul!(A::StridedVecOrMat{T}, adjQ::AdjointQType{<:Any,<:QRPackedQ{T,B}}) where {T<:BlasReal,B<:AbstractBandedMatrix{T}} = banded_rmul!(A, adjQ) |
| 171 | +rmul!(A::StridedVecOrMat{T}, adjQ::AdjointQ{<:Any,<:QRPackedQ{T,B}}) where {T<:BlasComplex,B<:AbstractBandedMatrix{T}} = banded_rmul!(A, adjQ) |
| 172 | +rmul!(A::StridedVecOrMat{T}, adjQ::AdjointQ{<:Any,<:QRPackedQ{T,B}}) where {T<:BlasReal,B<:AbstractBandedMatrix{T}} = banded_rmul!(A, adjQ) |
174 | 173 |
|
175 | 174 |
|
176 | 175 | function _banded_widerect_ldiv!(A::QR{T}, B) where T |
|
0 commit comments