From eb7c5f4b1a0e688be324c8347ea03e14c8fb40b5 Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Fri, 22 Aug 2025 12:25:51 -0600 Subject: [PATCH 1/2] add `logabstanh` fast paths for `Float32`, `Float64` --- src/basicfuns.jl | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/basicfuns.jl b/src/basicfuns.jl index bd20aeb..4784d18 100644 --- a/src/basicfuns.jl +++ b/src/basicfuns.jl @@ -231,6 +231,21 @@ function logabstanh(x::Real) end end +function logabstanh(x::Float32) + a = abs(x) + if abs_x < 0.0625f0 + return log(a) - (1/3f0) * a^2 + end + return log1p(-2/(exp(2*a)+1)) +end +function logabstanh(x::Float64) + a = abs(x) + if a < 0x1p-5 + return log(a) + evalpoly(a*a, (0, -1/3, 7/90, -62/2835)) + end + return log1p(-2/(exp(2*a)+1)) +end + """ $(SIGNATURES) From b0ae0b1a7d19d85396d416b751a0fcb5eeaadf5e Mon Sep 17 00:00:00 2001 From: Oscar Smith Date: Fri, 22 Aug 2025 13:07:25 -0600 Subject: [PATCH 2/2] Update src/basicfuns.jl Co-authored-by: Neven Sajko <4944410+nsajko@users.noreply.github.com> --- src/basicfuns.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/basicfuns.jl b/src/basicfuns.jl index 4784d18..a61171d 100644 --- a/src/basicfuns.jl +++ b/src/basicfuns.jl @@ -233,7 +233,7 @@ end function logabstanh(x::Float32) a = abs(x) - if abs_x < 0.0625f0 + if a < 0.0625f0 return log(a) - (1/3f0) * a^2 end return log1p(-2/(exp(2*a)+1))