Skip to content

Commit 1417255

Browse files
authored
Avoid creating static array due to bug in ClassicalOPs.jl (#83)
* Avoid creating static array * Update Project.toml * add tests
1 parent b93bc59 commit 1417255

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "QuasiArrays"
22
uuid = "c4ea9172-b204-11e9-377d-29865faadc5c"
33
authors = ["Sheehan Olver <[email protected]>"]
4-
version = "0.9.1"
4+
version = "0.9.2"
55

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

src/lazyquasiarrays.jl

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,15 @@ subbroadcaststyle(::AbstractQuasiArrayStyle{N}, _) where N = DefaultArrayStyle{N
9595

9696
# TODO: generalise
9797
subbroadcaststyle(::AbstractQuasiArrayStyle{2}, ::Type{<:Tuple{Number,Number}}) = DefaultArrayStyle{0}()
98-
subbroadcaststyle(::AbstractQuasiArrayStyle{2}, ::Type{<:Tuple{Number,JR}}) where JR = Base.BroadcastStyle(JR)
99-
subbroadcaststyle(::AbstractQuasiArrayStyle{2}, ::Type{<:Tuple{KR,Number}}) where KR = Base.BroadcastStyle(KR)
98+
subbroadcaststyle(::AbstractQuasiArrayStyle{2}, ::Type{<:Tuple{Number,JR}}) where JR = _lazyiflazystyle(Base.BroadcastStyle(JR))
99+
subbroadcaststyle(::AbstractQuasiArrayStyle{2}, ::Type{<:Tuple{KR,Number}}) where KR = _lazyiflazystyle(Base.BroadcastStyle(KR))
100100

101101
subbroadcaststyle(::LazyQuasiArrayStyle{2}, ::Type{<:Tuple{Number,Number}}) = DefaultArrayStyle{0}()
102-
subbroadcaststyle(::LazyQuasiArrayStyle{2}, ::Type{<:Tuple{Number,JR}}) where JR = Base.BroadcastStyle(JR)
103-
subbroadcaststyle(::LazyQuasiArrayStyle{2}, ::Type{<:Tuple{KR,Number}}) where KR = Base.BroadcastStyle(KR)
102+
subbroadcaststyle(::LazyQuasiArrayStyle{2}, ::Type{<:Tuple{Number,JR}}) where JR = _lazyiflazystyle(Base.BroadcastStyle(JR))
103+
subbroadcaststyle(::LazyQuasiArrayStyle{2}, ::Type{<:Tuple{KR,Number}}) where KR = _lazyiflazystyle(Base.BroadcastStyle(KR))
104+
105+
_lazyiflazystyle(_) = DefaultArrayStyle{1}()
106+
_lazyiflazystyle(laz::LazyArrayStyle) = laz
104107

105108
layout_broadcasted(_, f, args...) = Broadcasted{typeof(combine_styles(args...))}(f, args)
106109

test/test_quasibroadcast.jl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# This file is based on a part of Julia. License is MIT: https://julialang.org/license
22

3-
using QuasiArrays, LazyArrays, Base64, Test
3+
using QuasiArrays, LazyArrays, Base64, StaticArrays, Test
44
import Base: OneTo, Slice
55
import Base.Broadcast: check_broadcast_axes, newindex, broadcasted, broadcastable, Broadcasted, DefaultArrayStyle, BroadcastStyle
66
import QuasiArrays: QuasiCartesianIndex, QuasiCartesianIndices, DefaultQuasiArrayStyle, SubQuasiArray
@@ -266,7 +266,7 @@ import QuasiArrays: QuasiCartesianIndex, QuasiCartesianIndices, DefaultQuasiArra
266266
end
267267
@testset "constvec .$op mat" begin
268268
B = BroadcastQuasiArray(op, c, A)
269-
@test B * b op.(c, A) * b
269+
@test B * b op.(c, A) * b
270270
@test B * A op.(c, A) * A
271271
@test A * B A * op.(c, A)
272272
end
@@ -281,7 +281,16 @@ import QuasiArrays: QuasiCartesianIndex, QuasiCartesianIndices, DefaultQuasiArra
281281
B = BroadcastQuasiArray(+, A, 2A)
282282
C = BroadcastQuasiArray(-, A, 2A)
283283
@test B*C 3A * (-A)
284-
@test C*B (-A) * 3A
284+
@test C*B (-A) * 3A
285285
end
286286
end
287+
288+
@testset "Static Broadcasting" begin
289+
a = QuasiArray(randn(3,2), [0.1,0.2,0.3], [0.2,0.3])
290+
v = view(a, SVector(0.1,0.2),0.2)
291+
@test Base.BroadcastStyle(typeof(v)) isa DefaultArrayStyle{1}
292+
293+
v = view(a, BroadcastArray(+, [0.1,0.2]), 0.2)
294+
@test Base.BroadcastStyle(typeof(v)) isa LazyArrays.LazyArrayStyle{1}
295+
end
287296
end

0 commit comments

Comments
 (0)