JuliaMath / NaNMath.jl

Julia math built-ins which return NaN and accumulator functions which ignore NaN
Other
52 stars 26 forks source link

no methods implemented for integer arrays #26

Open mvhulten opened 6 years ago

mvhulten commented 6 years ago

Maybe this is a specific case of #17, but I don't understand everything in that issue. All users (even myself!) will understand this issue:

julia> mean([1 2 3])
2.0

julia> NaNMath.mean([1 2 3])
ERROR: MethodError: no method matching mean(::Array{Int64,2})
You may have intended to import Base.mean
Closest candidates are:
  mean(::AbstractArray{T<:AbstractFloat,N} where N) where T<:AbstractFloat at /home/mhu027/.julia/v0.6/NaNMath/src/NaNMath.jl:163

julia> NaNMath.mean([1 2 π])
2.047197551196598

It would be a useful feature if the NaNMath routines will accept more types like integer.

I am using Julia 0.6.2 and NaNMath 0.3.0.

carmagnole commented 6 years ago

Since NaN is defined as a float-point number in IEEE 754, I guess NaNMath deals with floats as default. I use something like nanmean(x) = any(isnan, x) ? NaNMath.mean(x) : mean(x) as circumvention.

xgdgsc commented 3 years ago

Also in casual use cases accepting Array of Any would also help.