From 0a711ab4a7d2ef5ab348856ac9b5bc4b0bc4dcc0 Mon Sep 17 00:00:00 2001 From: Douglas Bates Date: Sat, 2 Apr 2022 10:57:46 -0500 Subject: [PATCH 1/4] Consistent return type from `lstirling_asym(x::Float32)` As described in #140 --- src/misc.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/misc.jl b/src/misc.jl index aac3abf..8cd1ea8 100644 --- a/src/misc.jl +++ b/src/misc.jl @@ -66,7 +66,7 @@ lstirling_asym(x::BigFloat) = loggamma(x) + x - log(x)*(x - big(0.5)) - log2π/b lstirling_asym(x::Integer) = lstirling_asym(float(x)) const lstirlingF64 = Float64[lstirling_asym(k) for k in big(1):big(64)] -const lstirlingF32 = Float64[lstirling_asym(k) for k in big(1):big(40)] +const lstirlingF32 = Float32.(view(lstirlingF64, 1:40)) function lstirling_asym(x::Float64) isinteger(x) && (0 < x ≤ length(lstirlingF64)) && return lstirlingF64[Int(x)] From 0e0b6c036eac576a0dcc37589d85caa0907d8f4a Mon Sep 17 00:00:00 2001 From: Douglas Bates Date: Sat, 2 Apr 2022 14:12:10 -0500 Subject: [PATCH 2/4] Avoid broadcasting Co-authored-by: David Widmann --- src/misc.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/misc.jl b/src/misc.jl index 8cd1ea8..1a34e08 100644 --- a/src/misc.jl +++ b/src/misc.jl @@ -66,7 +66,7 @@ lstirling_asym(x::BigFloat) = loggamma(x) + x - log(x)*(x - big(0.5)) - log2π/b lstirling_asym(x::Integer) = lstirling_asym(float(x)) const lstirlingF64 = Float64[lstirling_asym(k) for k in big(1):big(64)] -const lstirlingF32 = Float32.(view(lstirlingF64, 1:40)) +const lstirlingF32 = [Float32(lstirlingF64[i]) for i in 1:40] function lstirling_asym(x::Float64) isinteger(x) && (0 < x ≤ length(lstirlingF64)) && return lstirlingF64[Int(x)] From 5e8e405584a124468ea3884263d0037f5a5d459e Mon Sep 17 00:00:00 2001 From: Douglas Bates Date: Sat, 2 Apr 2022 16:41:10 -0500 Subject: [PATCH 3/4] Add tests --- test/misc.jl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/misc.jl b/test/misc.jl index 1d5d7f0..361c314 100644 --- a/test/misc.jl +++ b/test/misc.jl @@ -70,3 +70,10 @@ end @test isone(binompdf(n, p, k)) end end + +@testset "lstirling_asym" begin + # can test for equality here because the lhs is the way the value is created + @test Float32(lstirling_asym(1.0)) == @inferred lstirling_asym(1.0f0) + # for 64.0f0 the expansion is used but for 64.0 the BigFloat value is rounded + @test Float32(lstirling_asym(64.0)) ≈ @inferred lstirling_asym(64.0f0) +end \ No newline at end of file From a82437f551f6c96be72517395958723590ba8feb Mon Sep 17 00:00:00 2001 From: Douglas Bates Date: Sat, 2 Apr 2022 16:47:30 -0500 Subject: [PATCH 4/4] Add newline --- test/misc.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/misc.jl b/test/misc.jl index 361c314..d57a94c 100644 --- a/test/misc.jl +++ b/test/misc.jl @@ -76,4 +76,4 @@ end @test Float32(lstirling_asym(1.0)) == @inferred lstirling_asym(1.0f0) # for 64.0f0 the expansion is used but for 64.0 the BigFloat value is rounded @test Float32(lstirling_asym(64.0)) ≈ @inferred lstirling_asym(64.0f0) -end \ No newline at end of file +end