|
7 | 7 | ArrayPartition(x...) = ArrayPartition((x...,)) |
8 | 8 |
|
9 | 9 | function ArrayPartition(x::S, ::Type{Val{copy_x}}=Val{false}) where {S<:Tuple,copy_x} |
10 | | - T = promote_type(recursive_bottom_eltype.(x)...) |
| 10 | + T = promote_type(map(recursive_bottom_eltype,x)...) |
11 | 11 | if copy_x |
12 | | - return ArrayPartition{T,S}(copy.(x)) |
| 12 | + return ArrayPartition{T,S}(map(copy,x)) |
13 | 13 | else |
14 | 14 | return ArrayPartition{T,S}(x) |
15 | 15 | end |
|
81 | 81 | for op in (:+, :-) |
82 | 82 | @eval begin |
83 | 83 | function Base.$op(A::ArrayPartition, B::ArrayPartition) |
84 | | - Base.broadcast($op, A, B) |
| 84 | + ArrayPartition(map((x, y)->Base.broadcast($op, x, y), A.x, B.x)) |
85 | 85 | end |
86 | 86 |
|
87 | 87 | function Base.$op(A::ArrayPartition, B::Number) |
88 | | - Base.broadcast($op, A, B) |
| 88 | + ArrayPartition(map(y->Base.broadcast($op, y, B), A.x)) |
89 | 89 | end |
90 | 90 |
|
91 | 91 | function Base.$op(A::Number, B::ArrayPartition) |
92 | | - Base.broadcast($op, A, B) |
| 92 | + ArrayPartition(map(y->Base.broadcast($op, A, y), B.x)) |
93 | 93 | end |
94 | 94 | end |
95 | 95 | end |
96 | 96 |
|
97 | 97 | for op in (:*, :/) |
98 | 98 | @eval function Base.$op(A::ArrayPartition, B::Number) |
99 | | - Base.broadcast($op, A, B) |
| 99 | + ArrayPartition(map(y->Base.broadcast($op, y, B), A.x)) |
100 | 100 | end |
101 | 101 | end |
102 | 102 |
|
103 | 103 | function Base.:*(A::Number, B::ArrayPartition) |
104 | | - Base.broadcast(*, A, B) |
| 104 | + ArrayPartition(map(y->Base.broadcast(*, A, y), B.x)) |
105 | 105 | end |
106 | 106 |
|
107 | 107 | function Base.:\(A::Number, B::ArrayPartition) |
108 | | - Base.broadcast(/, B, A) |
| 108 | + ArrayPartition(map(y->Base.broadcast(/, y, A), B.x)) |
109 | 109 | end |
110 | 110 |
|
111 | 111 | Base.:(==)(A::ArrayPartition,B::ArrayPartition) = A.x == B.x |
|
134 | 134 | function Base.copyto!(A::ArrayPartition,src::ArrayPartition) |
135 | 135 | @assert length(src) == length(A) |
136 | 136 | if size.(A.x) == size.(src.x) |
137 | | - A .= src |
| 137 | + map(copyto!, A.x, src.x) |
138 | 138 | else |
139 | 139 | cnt = 0 |
140 | 140 | for i in eachindex(A.x) |
|
281 | 281 |
|
282 | 282 | @inline function Base.copyto!(dest::ArrayPartition, bc::Broadcast.Broadcasted{ArrayPartitionStyle{Style}}) where Style |
283 | 283 | N = npartitions(dest, bc) |
284 | | - @inbounds for i in 1:N |
| 284 | + @inline function f(i) |
285 | 285 | copyto!(dest.x[i], unpack(bc, i)) |
286 | 286 | end |
| 287 | + ntuple(f, Val(N)) |
287 | 288 | dest |
288 | 289 | end |
289 | 290 |
|
|
0 commit comments