@@ -25,9 +25,9 @@ for f in (:erf, :erfc)
2525 end
2626end
2727
28- erfc (x:: Float64 ) = ccall ((erfc , libopenlibm), Float64, (Float64,), x)
29- erfc (x:: Float32 ) = ccall ((erfcf , libopenlibm), Float32, (Float32,), x)
30- erfc (x:: Float16 ) = Float16 (erfc (Float32 (x)))
28+ _erfc (x:: Float64 ) = ccall ((_erfc , libopenlibm), Float64, (Float64,), x)
29+ _erfc (x:: Float32 ) = ccall ((_erfcf , libopenlibm), Float32, (Float32,), x)
30+ _erfc (x:: Float16 ) = Float16 (_erfc (Float32 (x)))
3131
3232for f in (:erfcx , :erfi , :dawson , :faddeeva )
3333 internalf = Symbol (:_ , f)
@@ -104,7 +104,7 @@ See also:
104104# Fast erf implementation using a mix of
105105# rational and polynomial approximations.
106106# Highest measured error is 1.01 ULPs at 0x1.39956ac43382fp+0.
107- function erf (x:: Float64 )
107+ function _erf (x:: Float64 )
108108 # Minimax approximation of erf
109109 PA= (0x1 .06 eba8214db68p- 3 , - 0x1 .812746 b037948p- 2 , 0x1 . ce2f21a03872p- 4 ,- 0x1 . b82ce30e6548p- 6 , 0x1 .565 bcc360a2f2p- 8 , - 0x1 . c02d812bc979ap- 11 ,0x1 . f99bddfc1ebe9p- 14 , - 0x1 . f42c457cee912p- 17 , 0x1 . b0e414ec20ee9p- 20 ,- 0x1 .18 c47fd143c5ep- 23 )
110110 # Rational approximation on [0x1p-28, 0.84375]
@@ -142,19 +142,6 @@ function erf(x::Float64)
142142 if (ia < 0x3feb0000 )
143143 # a = |x| < 0.84375.
144144
145- if (ia < 0x3e300000 )
146- # a < 2^(-28).
147- if (ia < 0x00800000 )
148- # a < 2^(-1015).
149- y = fma (TwoOverSqrtPiMinusOne, x, x)
150-
151- # # case of underflow TBD
152- # return check_uflow (y)
153- return y
154- end
155- return x + TwoOverSqrtPiMinusOne * x
156- end
157-
158145 x2 = x * x
159146
160147 if (ia < 0x3fe00000 )
@@ -349,9 +336,9 @@ function erf(x::Float64)
349336
350337end
351338
352- erf (x:: Float32 )= Float32 (erf (Float64 (x)))
339+ _erf (x:: Float32 )= Float32 (_erf (Float64 (x)))
353340
354- erf (x:: Float16 )= Float16 (erf (Float64 (x)))
341+ _erf (x:: Float16 )= Float16 (_erf (Float64 (x)))
355342
356343
357344function erf end
0 commit comments