1/* e_j1f.c -- float version of e_j1.c.
2 * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
3 */
4
5/*
6 * ====================================================
7 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
8 *
9 * Developed at SunPro, a Sun Microsystems, Inc. business.
10 * Permission to use, copy, modify, and distribute this
11 * software is freely granted, provided that this notice
12 * is preserved.
13 * ====================================================
14 */
15
16#include <sys/cdefs.h>
17__FBSDID("$FreeBSD: head/lib/msun/src/e_j1f.c 279493 2015-03-01 20:32:47Z kargl $");
18
19#include "math.h"
20#include "math_private.h"
21
22static float ponef(float), qonef(float);
23
24static const float
25huge = 1e30,
--- 188 unchanged lines hidden (view full) ---
214static const float ps2[5] = {
215 2.1436485291e+01, /* 0x41ab7dec */
216 1.2529022980e+02, /* 0x42fa9499 */
217 2.3227647400e+02, /* 0x436846c7 */
218 1.1767937469e+02, /* 0x42eb5bd7 */
219 8.3646392822e+00, /* 0x4105d590 */
220};
221
222static __inline float
223ponef(float x)
224{
225 const float *p,*q;
226 float z,r,s;
227 int32_t ix;
228 GET_FLOAT_WORD(ix,x);
229 ix &= 0x7fffffff;
230 if(ix>=0x41000000) {p = pr8; q= ps8;}
231 else if(ix>=0x409173eb){p = pr5; q= ps5;}
--- 79 unchanged lines hidden (view full) ---
311 2.9533363342e+01, /* 0x41ec4454 */
312 2.5298155212e+02, /* 0x437cfb47 */
313 7.5750280762e+02, /* 0x443d602e */
314 7.3939318848e+02, /* 0x4438d92a */
315 1.5594900513e+02, /* 0x431bf2f2 */
316 -4.9594988823e+00, /* 0xc09eb437 */
317};
318
319static __inline float
320qonef(float x)
321{
322 const float *p,*q;
323 float s,r,z;
324 int32_t ix;
325 GET_FLOAT_WORD(ix,x);
326 ix &= 0x7fffffff;
327 if(ix>=0x41000000) {p = qr8; q= qs8;}
328 else if(ix>=0x409173eb){p = qr5; q= qs5;}
329 else if(ix>=0x4036d917){p = qr3; q= qs3;}
330 else {p = qr2; q= qs2;} /* ix>=0x40000000 */
331 z = one/(x*x);
332 r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
333 s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
334 return ((float).375 + r/s)/x;
335}
2 * Conversion to float by Ian Lance Taylor, Cygnus Support, ian@cygnus.com.
3 */
4
5/*
6 * ====================================================
7 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
8 *
9 * Developed at SunPro, a Sun Microsystems, Inc. business.
10 * Permission to use, copy, modify, and distribute this
11 * software is freely granted, provided that this notice
12 * is preserved.
13 * ====================================================
14 */
15
16#include <sys/cdefs.h>
17__FBSDID("$FreeBSD: head/lib/msun/src/e_j1f.c 279493 2015-03-01 20:32:47Z kargl $");
18
19#include "math.h"
20#include "math_private.h"
21
22static float ponef(float), qonef(float);
23
24static const float
25huge = 1e30,
--- 188 unchanged lines hidden (view full) ---
214static const float ps2[5] = {
215 2.1436485291e+01, /* 0x41ab7dec */
216 1.2529022980e+02, /* 0x42fa9499 */
217 2.3227647400e+02, /* 0x436846c7 */
218 1.1767937469e+02, /* 0x42eb5bd7 */
219 8.3646392822e+00, /* 0x4105d590 */
220};
221
222static __inline float
223ponef(float x)
224{
225 const float *p,*q;
226 float z,r,s;
227 int32_t ix;
228 GET_FLOAT_WORD(ix,x);
229 ix &= 0x7fffffff;
230 if(ix>=0x41000000) {p = pr8; q= ps8;}
231 else if(ix>=0x409173eb){p = pr5; q= ps5;}
--- 79 unchanged lines hidden (view full) ---
311 2.9533363342e+01, /* 0x41ec4454 */
312 2.5298155212e+02, /* 0x437cfb47 */
313 7.5750280762e+02, /* 0x443d602e */
314 7.3939318848e+02, /* 0x4438d92a */
315 1.5594900513e+02, /* 0x431bf2f2 */
316 -4.9594988823e+00, /* 0xc09eb437 */
317};
318
319static __inline float
320qonef(float x)
321{
322 const float *p,*q;
323 float s,r,z;
324 int32_t ix;
325 GET_FLOAT_WORD(ix,x);
326 ix &= 0x7fffffff;
327 if(ix>=0x41000000) {p = qr8; q= qs8;}
328 else if(ix>=0x409173eb){p = qr5; q= qs5;}
329 else if(ix>=0x4036d917){p = qr3; q= qs3;}
330 else {p = qr2; q= qs2;} /* ix>=0x40000000 */
331 z = one/(x*x);
332 r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
333 s = one+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
334 return ((float).375 + r/s)/x;
335}