Skip to content

Commit 0a598dc

Browse files
setup recursive broadcast overloads #10
1 parent a4cd668 commit 0a598dc

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/math.jl

+19
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,25 @@ Base.Broadcast.broadcast_indices(::Type{<:AMSA}, A) = indices(A)
2222
broadcast!(f, similar(A), A, Bs...)
2323
end
2424

25+
@inline function Base.Broadcast.broadcast_c(f, ::Type{S}, A::AMSA, Bs::AMSA...) where S<:AMSA
26+
new_A = similar(A)
27+
broadcast!(f,new_A,A,Bs...)
28+
new_A
29+
end
30+
31+
@inline function Base.Broadcast.broadcast_c!(f, ::Type{S}, ::Type, A::AbstractMultiScaleArrayLeaf, Bs::AbstractMultiScaleArrayLeaf...) where S<:AbstractMultiScaleArrayLeaf
32+
broadcast!(f, A.values, (B.values for B in Bs)...)
33+
A
34+
end
35+
36+
@inline function Base.Broadcast.broadcast_c!(f, ::Type{S}, ::Type, A::AMSA, Bs::AMSA...) where S<:AMSA
37+
for i in eachindex(A.nodes)
38+
broadcast!(f, A.nodes[i], (B.nodes[i] for B in Bs)...)
39+
end
40+
broadcast!(f, A.values, (B.values for B in Bs)...)
41+
A
42+
end
43+
2544
+(m::AbstractMultiScaleArray, y::AbstractMultiScaleArray) = m .+ y
2645
+(m::AbstractMultiScaleArray, y::Number) = m .+ y
2746
+(y::Number, m::AbstractMultiScaleArray) = m .+ y

test/indexing_and_creation_tests.jl

-2
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,6 @@ end
122122

123123
### Test math
124124

125-
#broadcast_getindex(cell1, 1)
126-
127125
g = (x, y) -> x*y
128126
@test g.(cell1, 2) == [2.; 4; 6]
129127
# cell1 .= g.(cell1, 2) How to broadcast right???

0 commit comments

Comments
 (0)