@@ -284,16 +284,16 @@ reduce(::typeof(hcat), A::StaticArray{<:Tuple,<:StaticVecOrMatLike}) =
284284# TODO : change to use Base.reduce_empty/Base.reduce_first
285285@inline iszero (a:: StaticArray{<:Tuple,T} ) where {T} = reduce ((x,y) -> x && iszero (y), a, init= true )
286286
287- @inline sum (a:: StaticArray{<:Tuple,T} ; dims= :) where {T} = _reduce (+ , a, dims)
288- @inline sum (f, a:: StaticArray{<:Tuple,T} ; dims= :) where {T} = _mapreduce (f, + , dims, _InitialValue () , Size (a), a)
289- @inline sum (f:: Union{Function, Type} , a:: StaticArray{<:Tuple,T} ; dims= :) where {T} = _mapreduce (f, + , dims, _InitialValue () , Size (a), a) # avoid ambiguity
287+ @inline sum (a:: StaticArray{<:Tuple,T} ; dims= :, init = _InitialValue ()) where {T} = _reduce (+ , a, dims, init )
288+ @inline sum (f, a:: StaticArray{<:Tuple,T} ; dims= :, init = _InitialValue ()) where {T} = _mapreduce (f, + , dims, init , Size (a), a)
289+ @inline sum (f:: Union{Function, Type} , a:: StaticArray{<:Tuple,T} ; dims= :, init = _InitialValue ()) where {T} = _mapreduce (f, + , dims, init , Size (a), a) # avoid ambiguity
290290
291- @inline prod (a:: StaticArray{<:Tuple,T} ; dims= :) where {T} = _reduce (* , a, dims)
292- @inline prod (f, a:: StaticArray{<:Tuple,T} ; dims= :) where {T} = _mapreduce (f, * , dims, _InitialValue () , Size (a), a)
293- @inline prod (f:: Union{Function, Type} , a:: StaticArray{<:Tuple,T} ; dims= :) where {T} = _mapreduce (f, * , dims, _InitialValue () , Size (a), a)
291+ @inline prod (a:: StaticArray{<:Tuple,T} ; dims= :, init = _InitialValue ()) where {T} = _reduce (* , a, dims, init )
292+ @inline prod (f, a:: StaticArray{<:Tuple,T} ; dims= :, init = _InitialValue ()) where {T} = _mapreduce (f, * , dims, init , Size (a), a)
293+ @inline prod (f:: Union{Function, Type} , a:: StaticArray{<:Tuple,T} ; dims= :, init = _InitialValue ()) where {T} = _mapreduce (f, * , dims, init , Size (a), a)
294294
295- @inline count (a:: StaticArray{<:Tuple,Bool} ; dims= :) = _reduce (+ , a, dims)
296- @inline count (f, a:: StaticArray ; dims= :) = _mapreduce (x-> f (x):: Bool , + , dims, _InitialValue () , Size (a), a)
295+ @inline count (a:: StaticArray{<:Tuple,Bool} ; dims= :, init = 0 ) = _reduce (+ , a, dims, init )
296+ @inline count (f, a:: StaticArray ; dims= :, init = 0 ) = _mapreduce (x-> f (x):: Bool , + , dims, init , Size (a), a)
297297
298298@inline all (a:: StaticArray{<:Tuple,Bool} ; dims= :) = _reduce (& , a, dims, true ) # non-branching versions
299299@inline all (f:: Function , a:: StaticArray ; dims= :) = _mapreduce (x-> f (x):: Bool , & , dims, true , Size (a), a)
0 commit comments