summaryrefslogtreecommitdiffstats
path: root/lib/libm/src/e_jnf.c
diff options
context:
space:
mode:
authormartynas <martynas@openbsd.org>2008-09-07 20:36:06 +0000
committermartynas <martynas@openbsd.org>2008-09-07 20:36:06 +0000
commit7b36286a70b46b494e2bca4a889ab49ef62ba86c (patch)
treeb2b9870e3495ed88715e57b0d4a9888b16264fe0 /lib/libm/src/e_jnf.c
parentsparc now requires this bloated library to be -fPIC (diff)
downloadwireguard-openbsd-7b36286a70b46b494e2bca4a889ab49ef62ba86c.tar.xz
wireguard-openbsd-7b36286a70b46b494e2bca4a889ab49ef62ba86c.zip
- replace dtoa w/ David's gdtoa, version 2008-03-15
- provide proper dtoa locks - use the real strtof implementation - add strtold, __hdtoa, __hldtoa - add %a/%A support - don't lose precision in printf, don't round to double anymore - implement extended-precision versions of libc functions: fpclassify, isnan, isinf, signbit, isnormal, isfinite, now that the ieee.h is fixed - separate vax versions of strtof, and __hdtoa - add complex math support. added functions: cacos, casin, catan, ccos, csin, ctan, cacosh, casinh, catanh, ccosh, csinh, ctanh, cexp, clog, cabs, cpow, csqrt, carg, cimag, conj, cproj, creal, cacosf, casinf, catanf, ccosf, csinf, ctanf, cacoshf, casinhf, catanhf, ccoshf, csinhf, ctanhf, cexpf, clogf, cabsf, cpowf, csqrtf, cargf, cimagf, conjf, cprojf, crealf - add fdim, fmax, fmin - add log2. (adapted implementation e_log.c. could be more acruate & faster, but it's good enough for now) - remove wrappers & cruft in libm, supposed to work-around mistakes in SVID, etc.; use ieee versions. fixes issues in python 2.6 for djm@ - make _digittoint static - proper definitions for i386, and amd64 in ieee.h - sh, powerpc don't really have extended-precision - add missing definitions for mips64 (quad), m{6,8}k (96-bit) float.h for LDBL_* - merge lead to frac for m{6,8}k, for gdtoa to work properly - add FRAC*BITS & EXT_TO_ARRAY32 definitions in ieee.h, for hdtoa&ldtoa to use - add EXT_IMPLICIT_NBIT definition, which indicates implicit normalization bit - add regression tests for libc: fpclassify and printf - arith.h & gd_qnan.h definitions - update ieee.h: hppa doesn't have quad-precision, hppa64 does - add missing prototypes to gdtoaimp - on 64-bit platforms make sure gdtoa doesn't use a long when it really wants an int - etc., what i may have forgotten... - bump libm major, due to removed&changed symbols - no libc bump, since this is riding on djm's libc major crank from a day ago discussed with / requested by / testing theo, sthen@, djm@, jsg@, merdely@, jsing@, tedu@, brad@, jakemsr@, and others. looks good to millert@ parts of the diff ok kettenis@ this commit does not include: - man page changes
Diffstat (limited to 'lib/libm/src/e_jnf.c')
-rw-r--r--lib/libm/src/e_jnf.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/lib/libm/src/e_jnf.c b/lib/libm/src/e_jnf.c
index 3512c9f51a2..c96d9670e27 100644
--- a/lib/libm/src/e_jnf.c
+++ b/lib/libm/src/e_jnf.c
@@ -27,7 +27,7 @@ one = 1.0000000000e+00; /* 0x3F800000 */
static const float zero = 0.0000000000e+00;
float
-__ieee754_jnf(int n, float x)
+jnf(int n, float x)
{
int32_t i,hx,ix, sgn;
float a, b, temp, di;
@@ -45,16 +45,16 @@ __ieee754_jnf(int n, float x)
x = -x;
hx ^= 0x80000000;
}
- if(n==0) return(__ieee754_j0f(x));
- if(n==1) return(__ieee754_j1f(x));
+ if(n==0) return(j0f(x));
+ if(n==1) return(j1f(x));
sgn = (n&1)&(hx>>31); /* even n -- 0, odd n -- sign(x) */
x = fabsf(x);
if(ix==0||ix>=0x7f800000) /* if x is 0 or inf */
b = zero;
else if((float)n<=x) {
/* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
- a = __ieee754_j0f(x);
- b = __ieee754_j1f(x);
+ a = j0f(x);
+ b = j1f(x);
for(i=1;i<n;i++){
temp = b;
b = b*((float)(i+i)/x) - a; /* avoid underflow */
@@ -129,7 +129,7 @@ __ieee754_jnf(int n, float x)
*/
tmp = n;
v = two/x;
- tmp = tmp*__ieee754_logf(fabsf(v*tmp));
+ tmp = tmp*logf(fabsf(v*tmp));
if(tmp<(float)8.8721679688e+01) {
for(i=n-1,di=(float)(i+i);i>0;i--){
temp = b;
@@ -153,14 +153,14 @@ __ieee754_jnf(int n, float x)
}
}
}
- b = (t*__ieee754_j0f(x)/b);
+ b = (t*j0f(x)/b);
}
}
if(sgn==1) return -b; else return b;
}
float
-__ieee754_ynf(int n, float x)
+ynf(int n, float x)
{
int32_t i,hx,ix,ib;
int32_t sign;
@@ -177,12 +177,12 @@ __ieee754_ynf(int n, float x)
n = -n;
sign = 1 - ((n&1)<<1);
}
- if(n==0) return(__ieee754_y0f(x));
- if(n==1) return(sign*__ieee754_y1f(x));
+ if(n==0) return(y0f(x));
+ if(n==1) return(sign*y1f(x));
if(ix==0x7f800000) return zero;
- a = __ieee754_y0f(x);
- b = __ieee754_y1f(x);
+ a = y0f(x);
+ b = y1f(x);
/* quit if b is -inf */
GET_FLOAT_WORD(ib,b);
for(i=1;i<n&&ib!=0xff800000;i++){