Skip to content

Public API corresponding to _mean_promote #165

Open
@kimikage

Description

@kimikage

There has already been some discussion about the implementation of mean (and functions relying on it) so far, and there are still related issues open.

This issue concerns the behavior of mean with respect to types defined in other packages.
An example case is FixedPointNumbers.jl, but this issue should not be specific to it.

#25 changed the behavior of mean with FixedPoint.
Briefly, it accumulates the sum with the intermediate type Float32, which was formerly Float64.
Therefore, FixedPointNumbers has added a workaround method definitions as below (cf. JuliaMath/FixedPointNumbers.jl#183):

Statistics._mean_promote(x::Real, y::FixedPoint) = Float64(y)

The workaround has worked well so far, but we do not know about that in the future.
The lack of a public API corresponding to _mean_promote is a real problem, especially since Statistics.jl is now an upgradable stdlib.

Ideally, it would be better to have the ability to promote types in three separate steps: initialization, body (i.e., the current _mean_promote), and finalization.
Currently, in the accumulation, the inefficient conversion of fixed-point numbers to floating-point numbers runs.
We should be able to accumulate the sum in fixed-point numbers and finally convert it to a useful floating-point number (Float64).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions