Skip to content

Commit 5439e92

Browse files
committed
Merge branch 'master' into dl/moveoutblockvec
2 parents 2051723 + 8d98411 commit 5439e92

File tree

6 files changed

+33
-7
lines changed

6 files changed

+33
-7
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ jobs:
3838
version:
3939
- 'lts'
4040
- '1'
41+
- 'pre'
4142
os:
4243
- ubuntu-latest
4344
- macOS-latest

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "LazyBandedMatrices"
22
uuid = "d7e5e226-e90b-4449-9968-0f923699bf6f"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.11.4"
4+
version = "0.11.7"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

src/LazyBandedMatrices.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Base: -, +, *, /, \, ==, AbstractMatrix, Matrix, Array, size, conj, real,
99
import Base.Broadcast: Broadcasted, BroadcastStyle, broadcasted, instantiate
1010
import LinearAlgebra: transpose, adjoint, istriu, istril, isdiag, tril!, triu!, det, logabsdet,
1111
symmetric, symmetric_type, diag, issymmetric, UniformScaling, char_uplo,
12-
AbstractTriangular, AdjOrTrans, StructuredMatrixStyle
12+
AbstractTriangular, AdjOrTrans, StructuredMatrixStyle, Diagonal
1313

1414
import ArrayLayouts: MemoryLayout, bidiagonallayout, bidiagonaluplo, diagonaldata, supdiagonaldata, subdiagonaldata,
1515
symtridiagonallayout, tridiagonallayout, symmetriclayout,
@@ -40,6 +40,8 @@ const BlockVec = LazyArraysBlockArraysExt.BlockVec
4040

4141
export DiagTrav, KronTrav, blockkron, BlockKron, BlockBroadcastArray, BlockVcat, BlockHcat, BlockHvcat, unitblocks
4242

43+
## TODO: export diagtrav, invdiagtrav
44+
4345
include("tridiag.jl")
4446
include("bidiag.jl")
4547
include("special.jl")

src/blockconcat.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,8 +488,11 @@ MemoryLayout(::Type{BlockBroadcastArray{T,N,FF,Args}}) where {T,N,FF,Args} = blo
488488

489489
resize!(c::BlockBroadcastVector{T,typeof(vcat)}, N::Block{1}) where T = BlockBroadcastVector{T}(vcat, resize!.(c.args, N)...)
490490

491+
####
492+
# BlockVec
493+
####
491494

492-
495+
const BlockVec = LazyBandedMatrices.LazyArraysBlockArraysExt.BlockVec
493496

494497
####
495498
# summary

src/blockkron.jl

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,22 @@ function getindex(A::InvDiagTrav{T}, k::Int, j::Int) where T
237237
end
238238
end
239239

240-
invdiagtrav(a) = InvDiagTrav(a)
240+
diagtrav(a::AbstractMatrix) = DiagTrav(a)
241+
function diagtrav(a::AbstractArray{T,3}; dims=1:3) where T
242+
if dims == 1:3
243+
DiagTrav(a)
244+
else
245+
@assert dims == 1:2
246+
ret = BlockedMatrix{T}(undef, (_krontrav_axes(axes(a,1), axes(a,2)), axes(a,3)))
247+
forin axes(a,3)
248+
ret[:,ℓ] = DiagTrav(view(a,:,:,ℓ))
249+
end
250+
ret
251+
end
252+
end
253+
254+
diagtrav(a::InvDiagTrav) = a.vector
255+
invdiagtrav(a::AbstractVector) = InvDiagTrav(a)
241256
invdiagtrav(a::DiagTrav) = a.array
242257

243258
-(A::DiagTrav) = DiagTrav(-A.array)

test/test_blockkron.jl

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ using LazyBandedMatrices, FillArrays, BandedMatrices, BlockBandedMatrices, Block
44

55
using LinearAlgebra
66
import BlockBandedMatrices: isbandedblockbanded, isbanded, BandedBlockBandedStyle, BandedLayout, _BandedBlockBandedMatrix
7-
import LazyBandedMatrices: KronTravBandedBlockBandedLayout, BroadcastBandedLayout, BroadcastBandedBlockBandedLayout, arguments, call, blockcolsupport, InvDiagTrav, invdiagtrav, pad, krontrav
7+
import LazyBandedMatrices: KronTravBandedBlockBandedLayout, BroadcastBandedLayout, BroadcastBandedBlockBandedLayout, arguments, call, blockcolsupport, InvDiagTrav, invdiagtrav, pad, krontrav, diagtrav
88
import ArrayLayouts: FillLayout, OnesLayout
99
import LazyArrays: resizedata!, FillLayout, arguments, colsupport, call, LazyArrayStyle
1010
import BandedMatrices: BandedColumns
@@ -24,7 +24,7 @@ LinearAlgebra.factorize(A::MyLazyArray) = factorize(A.data)
2424
@testset "Kron" begin
2525
@testset "DiagTrav" begin
2626
A = [1 2 3; 4 5 6; 7 8 9]
27-
@test DiagTrav(A) == Vector(DiagTrav(A)) == [1, 4, 2, 7, 5, 3]
27+
@test DiagTrav(A) == Vector(DiagTrav(A)) == diagtrav(A) == [1, 4, 2, 7, 5, 3]
2828
@test resize!(DiagTrav(A), Block(2)) == [1, 4,2]
2929
@test maximum(abs, DiagTrav(A)) == 7
3030
@test copy(DiagTrav(A)) == DiagTrav(A)
@@ -51,14 +51,18 @@ LinearAlgebra.factorize(A::MyLazyArray) = factorize(A.data)
5151
@test resize!(DiagTrav(A), Block(2)) == [1, 3,2]
5252

5353
A = DiagTrav(randn(3,3,3))
54+
@test A == diagtrav(A.array)
5455
@test A[Block(1)] == A[1:1,1,1]
5556
@test A[Block(2)] == [A.array[2,1,1], A.array[1,2,1], A.array[1,1,2]]
5657
@test A[Block(3)] == [A.array[3,1,1], A.array[2,2,1], A.array[2,1,2],
5758
A.array[1,3,1], A.array[1,2,2], A.array[1,1,3]]
5859
@test A == [A[Block(1)]; A[Block(2)]; A[Block(3)]]
5960

61+
A = randn(3,3,3)
62+
@test diagtrav(A; dims=1:2) == [diagtrav(A[:,:,1]) diagtrav(A[:,:,2]) diagtrav(A[:,:,3])]
63+
6064
A = reshape(1:9,3,3)'
61-
@test DiagTrav(A) == Vector(DiagTrav(A)) == [1, 4, 2, 7, 5, 3]
65+
@test DiagTrav(A) == Vector(DiagTrav(A)) == diagtrav(A) == [1, 4, 2, 7, 5, 3]
6266
A = reshape(1:12,3,4)'
6367
@test DiagTrav(A) == [1, 4, 2, 7, 5, 3, 10, 8, 6]
6468
A = reshape(1:12,3,4)
@@ -84,6 +88,7 @@ LinearAlgebra.factorize(A::MyLazyArray) = factorize(A.data)
8488
@testset "InvDiagTrav" begin
8589
A = [1 2 3; 4 5 6; 7 8 9]
8690
@test invdiagtrav(BlockedVector(DiagTrav(A))) == invdiagtrav(DiagTrav(A)) == [1 2 3; 4 5 0; 7 0 0]
91+
@test diagtrav(invdiagtrav(diagtrav(A))) == diagtrav(invdiagtrav(BlockedVector(diagtrav(A)))) == diagtrav(A)
8792
end
8893

8994
@testset "BlockKron" begin

0 commit comments

Comments
 (0)