Print this page
5261 libm should stop using synonyms.h
5298 fabs is 0-sized, confuses dis(1) and others
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Approved by: Gordon Ross <gwr@nexenta.com>


  75  *
  76  *      For x in [1.75,16/3]
  77  *         erfc(x) = exp(-x*x)*(1/x)*R1(1/x)/S1(1/x)
  78  *         erf(x)  = 1 - erfc(x)
  79  *      precision: absolute error of R1/S1 is bounded by 2**-124.03
  80  *
  81  *      For x in [16/3,107]
  82  *         erfc(x) = exp(-x*x)*(1/x)*R2(1/x)/S2(1/x)
  83  *         erf(x)  = 1 - erfc(x) (if x>=9 simple return erf(x)=1 with inexact)
  84  *      precision: absolute error of R2/S2 is bounded by 2**-120.07
  85  *
  86  *      Else if inf > x >= 107
  87  *         erf(x)  = 1 with inexact 
  88  *         erfc(x) = 0 with underflow
  89  *      
  90  *      Special case:
  91  *         erf(inf)  = 1
  92  *         erfc(inf) = 0
  93  */
  94 
  95 #pragma weak erfl = __erfl
  96 #pragma weak erfcl = __erfcl
  97 
  98 #include "libm.h"
  99 #include "longdouble.h"
 100 
 101 static long double
 102 tiny        = 1e-40L,
 103 nearunfl    = 1e-4000L,
 104 half        = 0.5L,
 105 one         = 1.0L,
 106 onehalf     = 1.5L,
 107 L16_3       = 16.0L/3.0L;
 108 /*
 109  * Coefficients for even polynomial P for erf(x)=x+x*P(x^2) on [0,0.84375]
 110  */
 111 static long double P[] = {      /* 21 coeffs */
 112    1.283791670955125738961589031215451715556e-0001L,
 113   -3.761263890318375246320529677071815594603e-0001L,
 114    1.128379167095512573896158903121205899135e-0001L,
 115   -2.686617064513125175943235483344625046092e-0002L,
 116    5.223977625442187842111846652980454568389e-0003L,




  75  *
  76  *      For x in [1.75,16/3]
  77  *         erfc(x) = exp(-x*x)*(1/x)*R1(1/x)/S1(1/x)
  78  *         erf(x)  = 1 - erfc(x)
  79  *      precision: absolute error of R1/S1 is bounded by 2**-124.03
  80  *
  81  *      For x in [16/3,107]
  82  *         erfc(x) = exp(-x*x)*(1/x)*R2(1/x)/S2(1/x)
  83  *         erf(x)  = 1 - erfc(x) (if x>=9 simple return erf(x)=1 with inexact)
  84  *      precision: absolute error of R2/S2 is bounded by 2**-120.07
  85  *
  86  *      Else if inf > x >= 107
  87  *         erf(x)  = 1 with inexact
  88  *         erfc(x) = 0 with underflow
  89  *
  90  *      Special case:
  91  *         erf(inf)  = 1
  92  *         erfc(inf) = 0
  93  */
  94 
  95 #pragma weak __erfl = erfl
  96 #pragma weak __erfcl = erfcl
  97 
  98 #include "libm.h"
  99 #include "longdouble.h"
 100 
 101 static long double
 102 tiny        = 1e-40L,
 103 nearunfl    = 1e-4000L,
 104 half        = 0.5L,
 105 one         = 1.0L,
 106 onehalf     = 1.5L,
 107 L16_3       = 16.0L/3.0L;
 108 /*
 109  * Coefficients for even polynomial P for erf(x)=x+x*P(x^2) on [0,0.84375]
 110  */
 111 static long double P[] = {      /* 21 coeffs */
 112    1.283791670955125738961589031215451715556e-0001L,
 113   -3.761263890318375246320529677071815594603e-0001L,
 114    1.128379167095512573896158903121205899135e-0001L,
 115   -2.686617064513125175943235483344625046092e-0002L,
 116    5.223977625442187842111846652980454568389e-0003L,