Skip to content

Commit 3de52e9

Browse files
authored
Overload simplifiable for ∞-KronTrav multiplication (#139)
* Overload simplifiable for ∞-KronTrav multiplication * Update test_lazybandedinf.jl
1 parent e58914d commit 3de52e9

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

ext/LazyBandedMatricesInfiniteArraysExt.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import LazyBandedMatrices: _krontrav_axes, _block_interlace_axes, _broadcast_sub
88
import InfiniteArrays: InfFill, TridiagonalToeplitzLayout, BidiagonalToeplitzLayout, LazyArrayStyle, OneToInf
99
import LazyBandedMatrices.ArrayLayouts: MemoryLayout, sublayout, RangeCumsum, Mul
1010
import LazyBandedMatrices.BlockArrays: sizes_from_blocks, BlockedOneTo, BlockSlice1, BlockSlice
11-
import LazyBandedMatrices.LazyArrays: BroadcastBandedLayout, AbstractPaddedLayout
11+
import LazyBandedMatrices.LazyArrays: BroadcastBandedLayout, AbstractPaddedLayout, simplifiable
1212

1313
const OneToInfCumsum = RangeCumsum{Int,OneToInf{Int}}
1414

@@ -39,6 +39,7 @@ MemoryLayout(::Type{<:KronTrav{<:Any,2,<:Any,NTuple{2,BlockedOneTo{Int,OneToInfC
3939
sublayout(::InfKronTravBandedBlockBandedLayout, ::Type{<:NTuple{2,BlockSlice1}}) = BroadcastBandedLayout{typeof(*)}()
4040
sublayout(::InfKronTravBandedBlockBandedLayout, ::Type{<:NTuple{2,BlockSlice{BlockRange{1,Tuple{OneTo{Int}}}}}}) = KronTravBandedBlockBandedLayout()
4141

42+
simplifiable(::Mul{InfKronTravBandedBlockBandedLayout, InfKronTravBandedBlockBandedLayout}) = Val(true)
4243
copy(M::Mul{InfKronTravBandedBlockBandedLayout, InfKronTravBandedBlockBandedLayout}) = KronTrav((krontravargs(M.A) .* krontravargs(M.B))...)
4344

4445
_broadcast_sub_arguments(::InfKronTravBandedBlockBandedLayout, M, V) = _broadcast_sub_arguments(KronTravBandedBlockBandedLayout(), M, V)

test/test_lazybandedinf.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ using LazyBandedMatrices, InfiniteArrays, ArrayLayouts, LazyArrays, BlockArrays,
22
using InfiniteArrays: TridiagonalToeplitzLayout, BidiagonalToeplitzLayout, TridiagonalToeplitzLayout
33
using Base: oneto
44
using BlockArrays: blockcolsupport
5-
using LazyArrays: arguments
5+
using LazyArrays: arguments, simplifiable
66
using LazyBandedMatrices: BroadcastBandedBlockBandedLayout
77

88
const InfiniteArraysBlockArraysExt = Base.get_extension(InfiniteArrays, :InfiniteArraysBlockArraysExt)
@@ -103,6 +103,10 @@ const InfKronTravBandedBlockBandedLayout = LazyBandedMatricesInfiniteArraysExt.I
103103
@test bandwidths(view(A, Block(1, 1))) == (1, 1)
104104

105105
@test A*A isa KronTrav
106+
@test *(A,A,A) isa KronTrav
107+
@test *(A,A,A,A) isa KronTrav
108+
@test *(A,A,A,A,A) isa KronTrav
109+
@test simplifiable(*,A,A) == Val(true)
106110
@test (A*A)[Block.(Base.OneTo(3)), Block.(Base.OneTo(3))] A[Block.(1:3), Block.(1:4)]A[Block.(1:4), Block.(1:3)]
107111

108112
@testset "mul" begin

0 commit comments

Comments
 (0)