1
1
2
- mutable struct AdaptiveQRData{T,DM<: AbstractMatrix{T} ,M <: AbstractMatrix{T} }
3
- data:: CachedMatrix{T,DM,M }
2
+ mutable struct AdaptiveQRData{T,DM<: AbstractMatrix{T} }
3
+ data:: CachedMatrix{T,DM}
4
4
τ:: Vector{T}
5
5
ncols:: Int
6
6
end
@@ -89,24 +89,24 @@ partialqr!(F::AdaptiveQRData{<:Any,<:BlockSkylineMatrix}, n::Int) =
89
89
partialqr! (F, findblock (axes (F. data,2 ), n))
90
90
91
91
92
- struct AdaptiveQRFactors{T,DM<: AbstractMatrix{T} ,M <: AbstractMatrix{T} } <: LayoutMatrix{T}
93
- data:: AdaptiveQRData{T,DM,M }
92
+ struct AdaptiveQRFactors{T,DM<: AbstractMatrix{T} } <: LayoutMatrix{T}
93
+ data:: AdaptiveQRData{T,DM}
94
94
end
95
95
96
- struct AdaptiveLayout <: AbstractLazyLayout end
97
- struct AdaptiveBandedLayout <: AbstractLazyBandedLayout end
98
- struct AdaptiveBlockBandedLayout <: AbstractLazyBlockBandedLayout end
96
+ struct AdaptiveQRFactorsLayout <: AbstractLazyLayout end
97
+ struct AdaptiveQRFactorsBandedLayout <: AbstractLazyBandedLayout end
98
+ struct AdaptiveQRFactorsBlockBandedLayout <: AbstractLazyBlockBandedLayout end
99
99
100
- const AdaptiveLayouts = Union{AdaptiveLayout,AdaptiveBandedLayout,AdaptiveBlockBandedLayout }
100
+ const AdaptiveQRFactorsLayouts = Union{AdaptiveQRFactorsLayout,AdaptiveQRFactorsBandedLayout,AdaptiveQRFactorsBlockBandedLayout }
101
101
102
- adaptivelayout (_) = AdaptiveLayout ()
103
- adaptivelayout (:: BandedLayouts ) = AdaptiveBandedLayout ()
104
- adaptivelayout (:: BlockBandedLayouts ) = AdaptiveBlockBandedLayout ()
102
+ adaptiveqrfactorslayout (_) = AdaptiveQRFactorsLayout ()
103
+ adaptiveqrfactorslayout (:: BandedLayouts ) = AdaptiveQRFactorsBandedLayout ()
104
+ adaptiveqrfactorslayout (:: BlockBandedLayouts ) = AdaptiveQRFactorsBlockBandedLayout ()
105
105
106
106
107
- MemoryLayout (:: Type{AdaptiveQRFactors{T,DM,M }} ) where {T,DM,M } = adaptivelayout (MemoryLayout (DM))
108
- triangularlayout (:: Type{Tri} , :: ML ) where {Tri, ML<: AdaptiveLayouts } = Tri {ML} ()
109
- transposelayout (A:: AdaptiveLayouts ) = A
107
+ MemoryLayout (:: Type{AdaptiveQRFactors{T,DM}} ) where {T,DM} = adaptiveqrfactorslayout (MemoryLayout (DM))
108
+ triangularlayout (:: Type{Tri} , :: ML ) where {Tri, ML<: AdaptiveQRFactorsLayouts } = Tri {ML} ()
109
+ transposelayout (A:: AdaptiveQRFactorsLayouts ) = A
110
110
111
111
size (F:: AdaptiveQRFactors ) = size (F. data. data)
112
112
axes (F:: AdaptiveQRFactors ) = axes (F. data. data)
@@ -146,8 +146,8 @@ rowsupport(F::QRPackedQ{<:Any,<:AdaptiveQRFactors}, j) = first(rowsupport(F.fact
146
146
blockcolsupport (F:: QRPackedQ{<:Any,<:AdaptiveQRFactors} , j) = blockcolsupport (F. factors, j)
147
147
148
148
149
- struct AdaptiveQRTau{T,DM<: AbstractMatrix{T} ,M <: AbstractMatrix{T} } <: LayoutVector{T}
150
- data:: AdaptiveQRData{T,DM,M }
149
+ struct AdaptiveQRTau{T,DM<: AbstractMatrix{T} } <: LayoutVector{T}
150
+ data:: AdaptiveQRData{T,DM}
151
151
end
152
152
153
153
size (F:: AdaptiveQRTau ) = (size (F. data. data,1 ),)
@@ -174,7 +174,7 @@ factorize_layout(::BandedLayouts, ::NTuple{2,OneToInf{Int}}, A) = qr(A)
174
174
factorize_layout (:: AbstractBandedLayout , :: NTuple{2,OneToInf{Int}} , A) = qr (A)
175
175
176
176
177
- cache_layout (:: TriangularLayout{UPLO, UNIT, <:AdaptiveLayouts } , A:: AbstractMatrix ) where {UPLO, UNIT} = A # already cached
177
+ cache_layout (:: TriangularLayout{UPLO, UNIT, <:AdaptiveQRFactorsLayouts } , A:: AbstractMatrix ) where {UPLO, UNIT} = A # already cached
178
178
179
179
partialqr! (F:: QR , n) = partialqr! (F. factors, n)
180
180
partialqr! (F:: AdaptiveQRFactors , n) = partialqr! (F. data, n)
@@ -191,7 +191,7 @@ getindex(Q::QRPackedQ{<:Any,<:AdaptiveQRFactors,<:AdaptiveQRTau}, I::AbstractVec
191
191
# ########
192
192
193
193
_view_QRPackedQ (A, kr, jr) = QRPackedQ (view (A. factors. data. data. data,kr,jr), view (A. τ. data. τ,jr))
194
- function materialize! (M:: MatLmulVec{<:QRPackedQLayout{<:AdaptiveLayouts },<:AbstractPaddedLayout} )
194
+ function materialize! (M:: MatLmulVec{<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts },<:AbstractPaddedLayout} )
195
195
A,B = M. A,M. B
196
196
sB = size (paddeddata (B),1 )
197
197
partialqr! (A. factors. data,sB)
233
233
234
234
_norm (x:: Number ) = abs (x)
235
235
236
- function materialize! (M:: MatLmulVec{<:AdjQRPackedQLayout{<:AdaptiveLayouts },<:AbstractPaddedLayout} ; tolerance= floatmin (real (eltype (M))))
236
+ function materialize! (M:: MatLmulVec{<:AdjQRPackedQLayout{<:AdaptiveQRFactorsLayouts },<:AbstractPaddedLayout} ; tolerance= floatmin (real (eltype (M))))
237
237
adjA,B = M. A,M. B
238
238
COLGROWTH = 1000 # rate to grow columns
239
239
@@ -284,7 +284,7 @@ function _view_QRPackedQ(A, KR::BlockRange, JR::BlockRange)
284
284
QRPackedQ (view (A. factors. data. data. data,KR,JR), view (A. τ. data. τ,jr))
285
285
end
286
286
287
- function materialize! (M:: MatLmulVec{QRPackedQLayout{AdaptiveBlockBandedLayout },<:AbstractPaddedLayout} )
287
+ function materialize! (M:: MatLmulVec{QRPackedQLayout{AdaptiveQRFactorsBlockBandedLayout },<:AbstractPaddedLayout} )
288
288
A,B_in = M. A,M. B
289
289
sB = length (paddeddata (B_in))
290
290
ax1,ax2 = axes (A. factors. data. data)
@@ -300,7 +300,7 @@ function materialize!(M::MatLmulVec{QRPackedQLayout{AdaptiveBlockBandedLayout},<
300
300
B
301
301
end
302
302
303
- function materialize! (M:: MatLmulVec{<:AdjQRPackedQLayout{AdaptiveBlockBandedLayout },<:AbstractPaddedLayout} ; tolerance= 1E-30 )
303
+ function materialize! (M:: MatLmulVec{<:AdjQRPackedQLayout{AdaptiveQRFactorsBlockBandedLayout },<:AbstractPaddedLayout} ; tolerance= 1E-30 )
304
304
adjA,B_in = M. A,M. B
305
305
A = parent (adjA)
306
306
T = eltype (M)
@@ -377,15 +377,15 @@ ldiv!(F::QR{<:Any,<:AdaptiveQRFactors}, b::LayoutVector; kwds...) = ldiv!(F.R, l
377
377
factorize (A:: BandedMatrix{<:Any,<:Any,<:OneToInf} ) = qr (A)
378
378
qr (A:: SymTridiagonal {T,<: AbstractFill{T,1,Tuple{OneToInf{Int}}} }) where T = adaptiveqr (A)
379
379
380
- simplifiable (M:: Mul{<:QRPackedQLayout{<:AdaptiveLayouts }} ) = Val (false )
381
- simplifiable (M:: Mul{<:QRPackedQLayout{<:AdaptiveLayouts },<:QRPackedQLayout{<:AdaptiveLayouts }} ) = Val (false )
382
- simplifiable (M:: Mul{<:QRPackedQLayout{<:AdaptiveLayouts },<:LazyLayouts} ) = Val (false )
383
- simplifiable (M:: Mul{<:Any,<:QRPackedQLayout{<:AdaptiveLayouts }} ) = Val (false )
384
- simplifiable (M:: Mul{<:LazyLayouts,<:QRPackedQLayout{<:AdaptiveLayouts }} ) = Val (false )
380
+ simplifiable (M:: Mul{<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = Val (false )
381
+ simplifiable (M:: Mul{<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts },<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = Val (false )
382
+ simplifiable (M:: Mul{<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts },<:LazyLayouts} ) = Val (false )
383
+ simplifiable (M:: Mul{<:Any,<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = Val (false )
384
+ simplifiable (M:: Mul{<:LazyLayouts,<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = Val (false )
385
385
386
386
387
- copy (M:: Mul{<:QRPackedQLayout{<:AdaptiveLayouts },<:QRPackedQLayout{<:AdaptiveLayouts }} ) = simplify (M)
388
- copy (M:: Mul{<:QRPackedQLayout{<:AdaptiveLayouts }} ) = simplify (M)
389
- copy (M:: Mul{<:QRPackedQLayout{<:AdaptiveLayouts },<:LazyLayouts} ) = simplify (M)
390
- copy (M:: Mul{<:Any,<:QRPackedQLayout{<:AdaptiveLayouts }} ) = simplify (M)
391
- copy (M:: Mul{<:LazyLayouts,<:QRPackedQLayout{<:AdaptiveLayouts }} ) = simplify (M)
387
+ copy (M:: Mul{<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts },<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = simplify (M)
388
+ copy (M:: Mul{<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = simplify (M)
389
+ copy (M:: Mul{<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts },<:LazyLayouts} ) = simplify (M)
390
+ copy (M:: Mul{<:Any,<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = simplify (M)
391
+ copy (M:: Mul{<:LazyLayouts,<:QRPackedQLayout{<:AdaptiveQRFactorsLayouts }} ) = simplify (M)
0 commit comments