Skip to content

Commit 31b1fce

Browse files
committed
Revert "abstractq"
This reverts commit 4137e6b.
1 parent 08d6dd4 commit 31b1fce

File tree

7 files changed

+27
-48
lines changed

7 files changed

+27
-48
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1919

2020
[compat]
2121
ArrayLayouts = "0.2.3"
22-
BandedMatrices = "0.15.5"
22+
BandedMatrices = "0.15.2"
2323
BlockArrays = "0.12"
2424
FillArrays = "0.8"
25-
MatrixFactorizations = "0.4"
25+
MatrixFactorizations = "0.3.1"
2626
julia = "1.2"

src/AbstractBlockBandedMatrix.jl

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,6 @@ for Func in (:blockbanded_blockcolstart, :blockbanded_blockcolstop, :blockbanded
6464
@eval $Func(A, i::Block{1}) = $Func(A, Int(i))
6565
end
6666

67-
blockbanded_blockcolstart(A, i::BlockRange) = blockbanded_blockcolstart(A, minimum(i))
68-
blockbanded_blocktowstart(A, i::BlockRange) = blockbanded_blockrowstart(A, minimum(i))
69-
blockbanded_blockcolstop(A, i::BlockRange) = blockbanded_blockcolstop(A, maximum(i))
70-
blockbanded_blocktowstop(A, i::BlockRange) = blockbanded_blockrowstop(A, maximum(i))
71-
72-
7367
@inline blockcolsupport(::AbstractBlockBandedLayout, A, i) = blockbanded_blockcolstart(A,i):blockbanded_blockcolstop(A,i)
7468
@inline blockrowsupport(::AbstractBlockBandedLayout, A, i) = blockbanded_blockrowstart(A,i):blockbanded_blockrowstop(A,i)
7569

src/BandedBlockBandedMatrix.jl

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,8 @@ function BandedBlockBandedMatrix{T,Blocks,RR}(A::AbstractMatrix, axes::NTuple{2,
175175
end
176176

177177

178-
BandedBlockBandedMatrix{T}(A::AbstractMatrix) where T =
179-
copyto!(BandedBlockBandedMatrix{T}(undef, axes(A), blockbandwidths(A), subblockbandwidths(A)), A)
180-
181-
BandedBlockBandedMatrix(A::AbstractMatrix{T}) where T = BandedBlockBandedMatrix{T}(A)
178+
BandedBlockBandedMatrix(A::AbstractMatrix) =
179+
BandedBlockBandedMatrix(A, axes(A), blockbandwidths(A), subblockbandwidths(A))
182180

183181
BandedBlockBandedMatrix(A::AbstractMatrix, rdims::AbstractVector{Int}, cdims::AbstractVector{Int}, lu::NTuple{2,Int}, λμ::NTuple{2,Int}) =
184182
BandedBlockBandedMatrix(A, (blockedrange(rdims), blockedrange(cdims)), lu, λμ)
@@ -443,7 +441,7 @@ function blockbandwidths(V::SubBandedBlockBandedMatrix{<:Any,BlockRange1,BlockRa
443441

444442
KR = parentindices(V)[1].block.indices[1]
445443
JR = parentindices(V)[2].block.indices[1]
446-
shift = Int(first(KR))-Int(first(JR))
444+
shift = Int(KR[1])-Int(JR[1])
447445

448446
blockbandwidth(A,1) - shift, blockbandwidth(A,2) + shift
449447
end
@@ -489,7 +487,7 @@ parentblocks2Int(V::BandedBlockBandedBlock)::Tuple{Int,Int} = Int(first(parentin
489487
######################################
490488
# BandedMatrix interface for Blocks #
491489
######################################
492-
@inline function bandwidths(V::SubArray{T,2,<:AbstractMatrix,<:Tuple{BlockSlice1,BlockSlice1}}) where T
490+
@inline function bandwidths(V::BandedBlockBandedBlock)
493491
inblockbands(V) && return subblockbandwidths(parent(V))
494492
(-720,-720)
495493
end

src/BlockBandedMatrices.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import LinearAlgebra: UniformScaling, isdiag, rmul!, lmul!, ldiv!, rdiv!,
1818
import LinearAlgebra.BLAS: BlasInt, BlasFloat, @blasfunc, libblas, BlasComplex, BlasReal
1919
import LinearAlgebra.LAPACK: chktrans, chkdiag, liblapack, chklapackerror, checksquare, chkstride1,
2020
chkuplo
21-
import MatrixFactorizations: ql, ql!, _ql, QLPackedQ, AdjQRPackedQLayout, AdjQLPackedQLayout
21+
import MatrixFactorizations: ql, ql!, _ql, QLPackedQ
2222
import SparseArrays: sparse
2323

2424
import ArrayLayouts: BlasMatLmulVec,

src/blockskylineqr.jl

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,21 @@ _apply_ql!(::AbstractColumnMajor, ::AbstractStridedLayout, ::AbstractStridedLayo
1616
LAPACK.ormql!('L','C',A,τ,B)
1717
apply_ql!(A, τ, B) = _apply_ql!(MemoryLayout(typeof(A)), MemoryLayout(typeof(τ)), MemoryLayout(typeof(B)), A, τ, B)
1818

19-
function _blockbanded_qr!(A::AbstractMatrix, τ::AbstractVector)
20-
M,N = Block.(blocksize(A))
21-
(M < N ? axes(A,1) : axes(A,2)) == axes(τ,1) || throw(DimensionMismatch(""))
22-
_blockbanded_qr!(A, τ, min(N,M))
23-
QR(A,τ.blocks)
24-
end
25-
26-
function _blockbanded_qr!(A::AbstractMatrix, τ::AbstractVector, NCOLS::Block{1})
19+
function qr!(A::BlockBandedMatrix{T}) where T
2720
l,u = blockbandwidths(A)
28-
M,N = Block.(blocksize(A))
29-
for K = Block(1):NCOLS
30-
KR = K:min(K+l,M)
31-
V = view(A,KR,K)
32-
t = view(τ,K)
21+
M,N = blocksize(A)
22+
ax1 = M < N ? axes(A,1) : axes(A,2)
23+
τ = PseudoBlockVector{T}(undef, (ax1,))
24+
for K = 1:min(N,M)
25+
KR = Block.(K:min(K+l,M))
26+
V = view(A,KR,Block(K))
27+
t = view(τ,Block(K))
3328
qrf!(V,t)
3429
for J = K+1:min(K+u,N)
35-
apply_qr!(V, t, view(A,KR,J))
30+
apply_qr!(V, t, view(A,KR,Block(J)))
3631
end
3732
end
38-
A,τ
39-
end
40-
41-
function qr!(A::BlockBandedMatrix{T}) where T
42-
M,N = blocksize(A)
43-
ax1 = M < N ? axes(A,1) : axes(A,2)
44-
_blockbanded_qr!(A, PseudoBlockVector{T}(undef, (ax1,)))
33+
QR(A,τ.blocks)
4534
end
4635

4736
function ql!(A::BlockBandedMatrix{T}) where T
@@ -68,13 +57,11 @@ function ql!(A::BlockBandedMatrix{T}) where T
6857
QL(A,τ.blocks)
6958
end
7059

71-
_qr(::AbstractBlockBandedLayout, ::Tuple{Integer,Integer}, A) = qr!(BlockBandedMatrix(A, (blockbandwidth(A,1), blockbandwidth(A,1)+blockbandwidth(A,2))))
72-
_qr(lay::AbstractBlockBandedLayout, ax::Tuple{AbstractUnitRange{Int},AbstractUnitRange{Int}}, A) = _qr(lay, map(length, ax), A)
60+
_qr(::AbstractBlockBandedLayout, _, A) = qr!(BlockBandedMatrix(A, (blockbandwidth(A,1), blockbandwidth(A,1)+blockbandwidth(A,2))))
7361
_ql(::AbstractBlockBandedLayout, _, A) = ql!(BlockBandedMatrix(A, (blockbandwidth(A,1)+blockbandwidth(A,2),blockbandwidth(A,2))))
7462
_factorize(::AbstractBlockBandedLayout, _, A) = qr(A)
7563

76-
function materialize!(M::Lmul{<:AdjQRPackedQLayout{<:AbstractBlockBandedLayout}})
77-
adjQ,Bin = M.A,M.B
64+
function lmul!(adjQ::Adjoint{<:Any,<:QRPackedQ{<:Any,<:BlockSkylineMatrix}}, Bin::AbstractVector)
7865
Q = parent(adjQ)
7966
A = Q.factors
8067
l,u = blockbandwidths(A)
@@ -91,7 +78,8 @@ function materialize!(M::Lmul{<:AdjQRPackedQLayout{<:AbstractBlockBandedLayout}}
9178
end
9279
Bin
9380
end
94-
function materialize!(M::Lmul{<:AdjQLPackedQLayout{<:AbstractBlockBandedLayout}})
81+
82+
function lmul!(adjQ::Adjoint{<:Any,<:QLPackedQ{<:Any,<:BlockSkylineMatrix}}, Bin::AbstractVector)
9583
Q = parent(adjQ)
9684
A = Q.factors
9785
l,u = blockbandwidths(A)

src/broadcast.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ similar(bc::Broadcasted{<:AbstractBlockBandedStyle}, ::Type{T}) where T =
4646

4747
checkblocks(A, B) = blockisequal(axes(A), axes(B)) || throw(DimensionMismatch("*"))
4848

49-
function _blockbanded_copyto!(dest::AbstractMatrix, src::AbstractMatrix)
49+
function _blockbanded_copyto!(dest::AbstractMatrix{T}, src::AbstractMatrix) where T
5050
@boundscheck checkblocks(dest, src)
5151

5252
dl, du = colblockbandwidths(dest)
@@ -57,13 +57,13 @@ function _blockbanded_copyto!(dest::AbstractMatrix, src::AbstractMatrix)
5757

5858
for J = 1:N
5959
for K = max(1,J-du[J]):min(J-su[J]-1,M)
60-
zero!(view(dest,Block(K),Block(J)))
60+
view(dest,Block(K),Block(J)) .= zero(T)
6161
end
6262
for K = max(1,J-su[J]):min(J+sl[J],M)
63-
copyto!(view(dest,Block(K),Block(J)), view(src,Block(K),Block(J)))
63+
view(dest,Block(K),Block(J)) .= view(src,Block(K),Block(J))
6464
end
6565
for K = max(1,J+sl[J]+1):min(J+dl[J],M)
66-
zero!(dest,Block(K),Block(J))
66+
view(dest,Block(K),Block(J)) .= zero(T)
6767
end
6868
end
6969
dest

src/linalg.jl

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,8 @@ function blockbandwidths(V::SubBlockSkylineMatrix{<:Any,LL,UU,BlockRange1,BlockR
7777
KR = parentindices(V)[1].block.indices[1]
7878
JR = parentindices(V)[2].block.indices[1]
7979

80-
shift = first(KR) - first(JR)
81-
l,u = blockbandwidths(A)
82-
l-shift, u+shift
80+
@assert KR[1] == JR[1] == 1
81+
blockbandwidths(A)
8382
end
8483

8584

0 commit comments

Comments
 (0)