|
158 | 158 | end
|
159 | 159 | end
|
160 | 160 |
|
161 |
| -@inline function _mapreduce(f, op, D::Tuple, init, sz::Size{S}, a::StaticArray) where {S} |
162 |
| - b = _mapreduce(f, op, first(D), init, sz, a) |
163 |
| - return _mapreduce(f, op, Base.tail(D), init, Size(b), b) |
164 |
| -end |
165 |
| -_mapreduce(f, op, D::Tuple{}, init, sz::Size{S}, a::StaticArray) where {S} = a |
| 161 | +@inline _mapreduce(f, op, D::Tuple{<:Any}, init, sz::Size{S}, a::StaticArray) where {S} = |
| 162 | + _mapreduce(f, op, first(D), init, sz, a) |
166 | 163 |
|
167 | 164 | @generated function _mapfoldl(f, op, dims::Val{D}, init,
|
168 | 165 | ::Size{S}, a::StaticArray) where {S,D}
|
@@ -215,6 +212,14 @@ reduce(::typeof(hcat), A::StaticArray{<:Tuple,<:StaticVecOrMatLike}) =
|
215 | 212 | @inline _reduce(op, a::StaticArray, dims, init = _InitialValue()) =
|
216 | 213 | _mapreduce(identity, op, dims, init, Size(a), a)
|
217 | 214 |
|
| 215 | +@inline function _reduce(op, a::StaticArray, dims::Tuple, init = _InitialValue()) |
| 216 | + b = _reduce(op, a, first(dims), init) |
| 217 | + return _reduce(op, b, Base.tail(dims)) |
| 218 | +end |
| 219 | +_reduce(op, a::StaticArray, dims::Tuple{}, ::_InitialValue) = a |
| 220 | +_reduce(op, a::StaticArray, dims::Tuple{}, init) = op.(init, a) |
| 221 | + |
| 222 | + |
218 | 223 | ################
|
219 | 224 | ## (map)foldl ##
|
220 | 225 | ################
|
|
0 commit comments