Skip to content

Commit 6a50cf2

Browse files
committed
Add missing BroadcastStyle and MemoryLayouts for cache styles
1 parent d7d4f63 commit 6a50cf2

File tree

3 files changed

+18
-3
lines changed

3 files changed

+18
-3
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "LazyArrays"
22
uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02"
3-
version = "2.9"
3+
version = "2.9.1"
44

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

src/cache.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,8 @@ MemoryLayout(C::Type{CachedArray{T,N,DAT,ARR}}) where {T,N,DAT,ARR} = cachedlayo
333333

334334
MemoryLayout(::Type{<:AbstractCachedArray}) = GenericCachedLayout()
335335

336+
transposelayout(::GenericCachedLayout) = GenericCachedLayout()
337+
336338
#####
337339
# broadcasting
338340
#
@@ -345,10 +347,11 @@ CachedArrayStyle(::Val{N}) where N = CachedArrayStyle{N}()
345347
CachedArrayStyle{M}(::Val{N}) where {N,M} = CachedArrayStyle{N}()
346348

347349
BroadcastStyle(::Type{<:AbstractCachedArray{<:Any,N}}) where N = CachedArrayStyle{N}()
350+
BroadcastStyle(::Type{<:AdjOrTrans{<:Any, <:AbstractCachedArray{<:Any,N}}}) where N = CachedArrayStyle{N}()
348351
BroadcastStyle(::Type{<:SubArray{<:Any,N,<:AbstractCachedArray{<:Any,M}}}) where {N,M} = CachedArrayStyle{M}()
352+
BroadcastStyle(::Type{<:SubArray{<:Any,N,<:AdjOrTrans{<:Any, <:AbstractCachedArray{<:Any,M}}}}) where {N,M} = CachedArrayStyle{M}()
349353
BroadcastStyle(::CachedArrayStyle{N}, ::LazyArrayStyle{M}) where {N,M} = CachedArrayStyle{max(M, N)}()
350354

351-
352355
broadcasted(::AbstractLazyArrayStyle, op, A::CachedArray) = CachedArray(broadcast(op, cacheddata(A)), broadcast(op, A.array))
353356
layout_broadcasted(::CachedLayout, _, op, A::AbstractArray, c::Number) = CachedArray(broadcast(op, cacheddata(A), c), broadcast(op, A.array, c))
354357
layout_broadcasted(_, ::CachedLayout, op, c::Number, A::CachedArray) = CachedArray(broadcast(op, c, cacheddata(A)), broadcast(op, c, A.array))

test/cachetests.jl

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ using LazyArrays, FillArrays, LinearAlgebra, ArrayLayouts, SparseArrays, Test
44
using StaticArrays
55
import LazyArrays: CachedArray, CachedMatrix, CachedVector, PaddedLayout, CachedLayout, resizedata!, zero!,
66
CachedAbstractArray, CachedAbstractVector, CachedAbstractMatrix, AbstractCachedArray, AbstractCachedMatrix,
7-
PaddedColumns, cacheddata, maybe_cacheddata
7+
PaddedColumns, cacheddata, maybe_cacheddata, Accumulate, CachedArrayStyle, GenericCachedLayout
88

99
using ..InfiniteArrays
1010
using .InfiniteArrays: OneToInf
@@ -539,6 +539,18 @@ using Infinities
539539
C = [1, 2, 3]
540540
@test maybe_cacheddata(C) === C
541541
end
542+
543+
@testset "Missing BroadcastStyles/MemoryLayouts with CachedArrayStyles" begin
544+
A = typeof(view(Accumulate(*, [1, 2, 3])', 1:1, 1:2))
545+
B = typeof(view(transpose(Accumulate(*, [1, 2, 3])), 1:1, 1:2))
546+
C = typeof(Accumulate(*, [1, 2, 3])')
547+
@test Base.BroadcastStyle(A) == CachedArrayStyle{1}()
548+
@test Base.BroadcastStyle(B) == CachedArrayStyle{1}()
549+
@test Base.BroadcastStyle(C) == CachedArrayStyle{1}()
550+
@test MemoryLayout(A) == GenericCachedLayout()
551+
@test MemoryLayout(B) == GenericCachedLayout()
552+
@test MemoryLayout(C) == DualLayout{GenericCachedLayout}()
553+
end
542554
end
543555

544556
end # module

0 commit comments

Comments
 (0)