@@ -39,15 +39,14 @@ struct BandedBlockBandedMatrix{T, BLOCKS, RAXIS<:AbstractUnitRange{Int}} <: Abst
3939 end
4040end
4141
42- const DefaultBandedBlockBandedMatrix{T} = BandedBlockBandedMatrix{T, PseudoBlockMatrix {T, Matrix{T}, NTuple{2 ,DefaultBlockAxis}}, DefaultBlockAxis}
42+ const DefaultBandedBlockBandedMatrix{T} = BandedBlockBandedMatrix{T, BlockedMatrix {T, Matrix{T}, NTuple{2 ,DefaultBlockAxis}}, DefaultBlockAxis}
4343
4444@inline _BandedBlockBandedMatrix (data:: AbstractMatrix , axes:: NTuple{2,AbstractUnitRange{Int}} , lu:: NTuple{2,Int} , λμ:: NTuple{2,Int} ) =
45- _BandedBlockBandedMatrix (PseudoBlockArray (data,(blockedrange (Fill (sum (λμ)+ 1 ,sum (lu)+ 1 )),axes[2 ])), axes[1 ], lu, λμ)
45+ _BandedBlockBandedMatrix (BlockedArray (data,(blockedrange (Fill (sum (λμ)+ 1 ,sum (lu)+ 1 )),axes[2 ])), axes[1 ], lu, λμ)
4646
4747@inline _BandedBlockBandedMatrix (data:: AbstractMatrix ,rblocksizes:: AbstractVector{Int} , cblocksizes:: AbstractVector{Int} , lu:: NTuple{2,Int} , λμ:: NTuple{2,Int} ) =
4848 _BandedBlockBandedMatrix (data, (blockedrange (rblocksizes),blockedrange (cblocksizes)), lu, λμ)
4949
50- _blocklengths2blocklasts (b:: Fill ) = cumsum (b)
5150_bbb_data_axes (caxes, lu, λμ) = (blockedrange (Fill (max (0 ,sum (λμ)+ 1 ),max (0 ,sum (lu)+ 1 ))),caxes)
5251
5352BandedBlockBandedMatrix {T,B,R} (:: UndefInitializer , axes:: NTuple{2,AbstractUnitRange{Int}} , lu:: NTuple{2,Int} , λμ:: NTuple{2,Int} ) where {T,B,R<: AbstractUnitRange{Int} } =
@@ -61,7 +60,7 @@ BandedBlockBandedMatrix{T,B}(::UndefInitializer, rblocksizes::AbstractVector{Int
6160 BandedBlockBandedMatrix {T,B} (undef, (blockedrange (rblocksizes),blockedrange (cblocksizes)), lu, λμ)
6261
6362BandedBlockBandedMatrix {T} (:: UndefInitializer , axes:: NTuple{2,AbstractUnitRange{Int}} , lu:: NTuple{2,Int} , λμ:: NTuple{2,Int} ) where T =
64- _BandedBlockBandedMatrix (PseudoBlockMatrix {T} (undef, _bbb_data_axes (axes[2 ],lu,λμ)), axes[1 ], lu, λμ)
63+ _BandedBlockBandedMatrix (BlockedMatrix {T} (undef, _bbb_data_axes (axes[2 ],lu,λμ)), axes[1 ], lu, λμ)
6564"""
6665 BandedBlockBandedMatrix{T}(undef, rows, cols, (l, u), (λ, μ))
6766
@@ -242,11 +241,11 @@ convert(::Type{AbstractMatrix{T}}, B::BandedBlockBandedMatrix{T}) where T = B
242241similar (A:: BandedBlockBandedMatrix , :: Type{T} , axes:: NTuple{2,AbstractUnitRange{Int}} ) where T =
243242 BandedBlockBandedMatrix {T} (undef, axes, blockbandwidths (A), subblockbandwidths (A))
244243
245- @inline similar (A:: BandedBlockBandedMatrix , :: Type{T} , axes:: Tuple{BlockedUnitRange ,AbstractUnitRange{Int}} ) where T =
244+ @inline similar (A:: BandedBlockBandedMatrix , :: Type{T} , axes:: Tuple{AbstractBlockedUnitRange ,AbstractUnitRange{Int}} ) where T =
246245 BandedBlockBandedMatrix {T} (undef, axes, blockbandwidths (A), subblockbandwidths (A))
247- @inline similar (A:: BandedBlockBandedMatrix , :: Type{T} , axes:: Tuple{AbstractUnitRange{Int},BlockedUnitRange } ) where T =
246+ @inline similar (A:: BandedBlockBandedMatrix , :: Type{T} , axes:: Tuple{AbstractUnitRange{Int},AbstractBlockedUnitRange } ) where T =
248247 BandedBlockBandedMatrix {T} (undef, axes, blockbandwidths (A), subblockbandwidths (A))
249- @inline similar (A:: BandedBlockBandedMatrix , :: Type{T} , axes:: Tuple{BlockedUnitRange,BlockedUnitRange } ) where T =
248+ @inline similar (A:: BandedBlockBandedMatrix , :: Type{T} , axes:: Tuple{AbstractBlockedUnitRange,AbstractBlockedUnitRange } ) where T =
250249 BandedBlockBandedMatrix {T} (undef, axes, blockbandwidths (A), subblockbandwidths (A))
251250
252251
@@ -289,7 +288,7 @@ subblockbandwidths(A::BandedBlockBandedMatrix) = (A.λ, A.μ)
289288# default is to use whole block
290289_subblockbandwidths (A:: AbstractMatrix , :: NTuple{2,OneTo{Int}} ) = bandwidths (A)
291290function _subblockbandwidths (A:: AbstractMatrix , _)
292- M,N = map (maximum, blocksizes (A ))
291+ M,N = map (maximum, blocklengths .( axes (A) ))
293292 M- 1 ,N- 1
294293end
295294
@@ -401,7 +400,7 @@ const SubBandedBlockBandedMatrix{T,R1,R2} =
401400 SubArray{T,2 ,<: BandedBlockBandedMatrix{T} ,<: Tuple{BlockSlice{R1},BlockSlice{R2}} }
402401
403402const SingleBlockInd = Union{BlockSlice1, BlockSlice{<: BlockIndexRange1 }}
404- const BlockRangeInd = Union{BlockSlices, BlockedUnitRange }
403+ const BlockRangeInd = Union{BlockSlices, AbstractBlockedUnitRange }
405404
406405sublayout (:: BandedBlockBandedColumns{ML} , :: Type{II} ) where {ML,II<: Tuple{SingleBlockInd,SingleBlockInd} } = bandedcolumns (sublayout (ML (), II))
407406sublayout (:: BandedBlockBandedColumns{ML} , :: Type{II} ) where {ML,II<: Tuple{BlockRangeInd,BlockRangeInd} } = bandedblockbandedcolumns (sublayout (ML (), II))
@@ -410,7 +409,7 @@ sublayout(::BandedBlockBandedColumns{ML}, ::Type{II}) where {ML,II<:Tuple{BlockR
410409
411410_blockaxes1 (A:: BlockSlice ) = A. block
412411_blockaxes1 (A:: Slice ) = _blockaxes1 (A. indices)
413- _blockaxes1 (A:: BlockedUnitRange ) = blockaxes (A,1 )
412+ _blockaxes1 (A:: AbstractBlockedUnitRange ) = blockaxes (A,1 )
414413blockbandshift (A, B) = BandedMatrices. bandshift (Int .(_blockaxes1 (A)), Int .(_blockaxes1 (B)))
415414blockbandshift (S) = blockbandshift (parentindices (S)... )
416415
@@ -427,13 +426,11 @@ sublayout(::AbstractBandedBlockBandedLayout, ::Type{<:Tuple{BlockRangeInd,Single
427426
428427
429428sub_materialize (:: AbstractBandedBlockBandedLayout , V, _) = BandedBlockBandedMatrix (V)
430- sub_materialize (:: AbstractBandedBlockBandedLayout , V, :: Tuple{<:BlockedUnitRange,<:BlockedUnitRange } ) = BandedBlockBandedMatrix (V)
431- sub_materialize (:: AbstractBandedBlockBandedLayout , V, :: Tuple{<: AbstractUnitRange,<:BlockedUnitRange } ) = PseudoBlockArray (V)
432- sub_materialize (:: AbstractBandedBlockBandedLayout , V, :: Tuple{<:BlockedUnitRange,<: AbstractUnitRange} ) = PseudoBlockArray (V)
429+ sub_materialize (:: AbstractBandedBlockBandedLayout , V, :: Tuple{AbstractBlockedUnitRange,AbstractBlockedUnitRange } ) = BandedBlockBandedMatrix (V)
430+ sub_materialize (:: AbstractBandedBlockBandedLayout , V, :: Tuple{AbstractUnitRange,AbstractBlockedUnitRange } ) = BlockedArray (V)
431+ sub_materialize (:: AbstractBandedBlockBandedLayout , V, :: Tuple{AbstractBlockedUnitRange, AbstractUnitRange} ) = BlockedArray (V)
433432
434433
435- sub_materialize (:: AbstractBandedLayout , V, :: Tuple{<:BlockedUnitRange,<:BlockedUnitRange} ) = BandedMatrix (V)
436-
437434
438435isbanded (A:: SubArray{<:Any,2,<:BandedBlockBandedMatrix} ) = MemoryLayout (A) isa AbstractBandedLayout
439436isbandedblockbanded (A:: SubArray{<:Any,2,<:BandedBlockBandedMatrix} ) = MemoryLayout (A) isa AbstractBandedBlockBandedLayout
@@ -442,7 +439,7 @@ isbandedblockbanded(A::SubArray{<:Any,2,<:BandedBlockBandedMatrix}) = MemoryLayo
442439subblockbandwidths (V:: SubArray ) = subblockbandwidths (parent (V))
443440
444441
445- _firstblock (B:: BlockedUnitRange ) = Int (first (blockaxes (B,1 )))
442+ _firstblock (B:: AbstractBlockedUnitRange ) = Int (first (blockaxes (B,1 )))
446443_firstblock (B:: Block{1} ) = Int (B)
447444_firstblock (B:: BlockIndexRange ) = _firstblock (B. block)
448445_firstblock (B:: BlockRange ) = first (B. indices[1 ])
0 commit comments