Skip to content

Commit 1c9c75e

Browse files
hyrodiumkimikage
authored andcommitted
Enable package extension for Statistics (#277)
1 parent 7f21988 commit 1c9c75e

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

Project.toml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,22 @@ version = "0.8.4"
66
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
77
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
88

9+
[weakdeps]
10+
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
11+
12+
[extensions]
13+
FixedPointNumbersStatisticsExt = "Statistics"
14+
915
[compat]
16+
# Update this version specifier when Statistics.jl v1.11.2 is released.
17+
# https://github.com/JuliaStats/Statistics.jl/issues/165
18+
Statistics = "< 1.11.2"
1019
julia = "1"
1120

1221
[extras]
1322
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
23+
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1424
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1525

1626
[targets]
17-
test = ["Documenter", "Test"]
27+
test = ["Documenter", "Statistics", "Test"]

ext/FixedPointNumbersStatisticsExt.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module FixedPointNumbersStatisticsExt
2+
3+
using FixedPointNumbers
4+
import FixedPointNumbers: Treduce
5+
using Statistics
6+
7+
import Statistics
8+
if isdefined(Statistics, :_mean_promote)
9+
# https://github.com/JuliaMath/FixedPointNumbers.jl/pull/183
10+
Statistics._mean_promote(x::Real, y::FixedPoint) = Treduce(y)
11+
end
12+
13+
end

src/FixedPointNumbers.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import Base: ==, <, <=, -, +, *, /, ~, isapprox,
99
signed, unsigned, copysign, flipsign, signbit,
1010
length
1111

12-
import Statistics # for _mean_promote
1312
import Random: Random, AbstractRNG, SamplerType, rand!
1413

1514
using Base.Checked: checked_add, checked_sub, checked_div
@@ -330,10 +329,6 @@ Base.mul_prod(x::FixedPoint, y::FixedPoint) = Treduce(x) * Treduce(y)
330329
Base.reduce_empty(::typeof(Base.mul_prod), ::Type{F}) where {F<:FixedPoint} = one(Treduce)
331330
Base.reduce_first(::typeof(Base.mul_prod), x::FixedPoint) = Treduce(x)
332331

333-
if isdefined(Statistics, :_mean_promote)
334-
Statistics._mean_promote(x::Real, y::FixedPoint) = Treduce(y)
335-
end
336-
337332
"""
338333
sd, ad = scaledual(s::Number, a)
339334
@@ -376,6 +371,10 @@ function rand!(r::AbstractRNG, A::Array{X}, ::SamplerType{X}) where {T, X <: Fix
376371
A
377372
end
378373

374+
if !isdefined(Base, :get_extension)
375+
include("../ext/FixedPointNumbersStatisticsExt.jl")
376+
end
377+
379378
if VERSION >= v"1.1" # work around https://github.com/JuliaLang/julia/issues/34121
380379
include("precompile.jl")
381380
_precompile_()

0 commit comments

Comments
 (0)