Skip to content

Commit 67c36b7

Browse files
committed
BroadcastStyle for BandedMatrices with cached Dat
1 parent d9b2905 commit 67c36b7

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

ext/LazyArraysBandedMatricesExt.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import LazyArrays: sublayout, symmetriclayout, hermitianlayout, applylayout, cac
1111
PaddedColumns, CachedArray, CachedMatrix, LazyLayout, BroadcastLayout, ApplyLayout,
1212
paddeddata, resizedata!, broadcastlayout, _broadcastarray2broadcasted, _broadcast_sub_arguments,
1313
arguments, call, applybroadcaststyle, simplify, simplifiable, islazy_layout, lazymaterialize, _broadcast_mul_mul, _broadcast_mul_simplifiable,
14-
triangularlayout, AbstractCachedMatrix, cache_layout, _mulbanded_copyto!, ApplyBandedLayout, BroadcastBandedLayout
14+
triangularlayout, AbstractCachedMatrix, cache_layout, _mulbanded_copyto!, ApplyBandedLayout, BroadcastBandedLayout, CachedArrayStyle
1515
import Base: BroadcastStyle, similar, copy, broadcasted, getindex, OneTo, oneto, tail, sign, abs
1616
import BandedMatrices: bandedbroadcaststyle, bandwidths, isbanded, bandedcolumns, bandeddata, BandedStyle,
1717
AbstractBandedLayout, AbstractBandedMatrix, BandedColumns, BandedRows, BandedSubBandedMatrix,
@@ -25,6 +25,7 @@ hermitianlayout(::Type{<:Complex}, ::AbstractLazyBandedLayout) = HermitianLayout
2525

2626

2727
bandedbroadcaststyle(::AbstractLazyArrayStyle) = LazyArrayStyle{2}()
28+
bandedbroadcaststyle(::CachedArrayStyle) = CachedArrayStyle{2}()
2829

2930
BroadcastStyle(::AbstractLazyArrayStyle{1}, ::BandedStyle) = LazyArrayStyle{2}()
3031
BroadcastStyle(::BandedStyle, ::AbstractLazyArrayStyle{1}) = LazyArrayStyle{2}()

test/bandedtests.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module LazyBandedTests
22
using ArrayLayouts, LazyArrays, BandedMatrices, LinearAlgebra, Test
33
using BandedMatrices: AbstractBandedLayout, _BandedMatrix, isbanded, BandedStyle, BandedColumns, BandedRows, resize, bandeddata
4-
using LazyArrays: PaddedLayout, PaddedRows, PaddedColumns, arguments, call, LazyArrayStyle, ApplyLayout, simplifiable, resizedata!, MulStyle, LazyLayout, BroadcastLayout
4+
using LazyArrays: PaddedLayout, PaddedRows, Accumulate, PaddedColumns, arguments, call, LazyArrayStyle, ApplyLayout, simplifiable, resizedata!, MulStyle, LazyLayout, BroadcastLayout, CachedArrayStyle
55
using ArrayLayouts: OnesLayout, StridedLayout
66
LazyArraysBandedMatricesExt = Base.get_extension(LazyArrays, :LazyArraysBandedMatricesExt)
77
BroadcastBandedLayout = LazyArraysBandedMatricesExt.BroadcastBandedLayout
@@ -967,6 +967,12 @@ LinearAlgebra.lmul!(β::Number, A::PseudoBandedMatrix) = (lmul!(β, A.data); A)
967967
@test A\D (B*B)\D
968968
@test D\A D\(B*B)
969969
end
970+
971+
@testset "BroadcastStyle with cached data" begin
972+
A = _BandedMatrix(Accumulate(*, 1:10)', 1:10, 0, 0)
973+
@test Base.BroadcastStyle(typeof(A)) == CachedArrayStyle{2}()
974+
@test Base.BroadcastStyle(typeof(A')) == CachedArrayStyle{2}()
975+
end
970976
end
971977

972978
end # module

0 commit comments

Comments
 (0)