e_powf.c (129959) | e_powf.c (176266) |
---|---|
1/* e_powf.c -- float version of e_pow.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 | 1/* e_powf.c -- float version of e_pow.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#ifndef lint 17static char rcsid[] = "$FreeBSD: head/lib/msun/src/e_powf.c 129959 2004-06-01 19:33:30Z bde $"; 18#endif | 16#include <sys/cdefs.h> 17__FBSDID("$FreeBSD: head/lib/msun/src/e_powf.c 176266 2008-02-14 09:42:24Z bde $"); |
19 20#include "math.h" 21#include "math_private.h" 22 23static const float 24bp[] = {1.0, 1.5,}, 25dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */ 26dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */ --- 36 unchanged lines hidden (view full) --- 63 64 GET_FLOAT_WORD(hx,x); 65 GET_FLOAT_WORD(hy,y); 66 ix = hx&0x7fffffff; iy = hy&0x7fffffff; 67 68 /* y==zero: x**0 = 1 */ 69 if(iy==0) return one; 70 | 18 19#include "math.h" 20#include "math_private.h" 21 22static const float 23bp[] = {1.0, 1.5,}, 24dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */ 25dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */ --- 36 unchanged lines hidden (view full) --- 62 63 GET_FLOAT_WORD(hx,x); 64 GET_FLOAT_WORD(hy,y); 65 ix = hx&0x7fffffff; iy = hy&0x7fffffff; 66 67 /* y==zero: x**0 = 1 */ 68 if(iy==0) return one; 69 |
71 /* +-NaN return x+y */ | 70 /* y!=zero: result is NaN if either arg is NaN */ |
72 if(ix > 0x7f800000 || 73 iy > 0x7f800000) | 71 if(ix > 0x7f800000 || 72 iy > 0x7f800000) |
74 return x+y; | 73 return (x+0.0F)+(y+0.0F); |
75 76 /* determine if y is an odd int when x < 0 77 * yisint = 0 ... y is not an integer 78 * yisint = 1 ... y is an odd int 79 * yisint = 2 ... y is an even int 80 */ 81 yisint = 0; 82 if(hx<0) { --- 165 unchanged lines hidden --- | 74 75 /* determine if y is an odd int when x < 0 76 * yisint = 0 ... y is not an integer 77 * yisint = 1 ... y is an odd int 78 * yisint = 2 ... y is an even int 79 */ 80 yisint = 0; 81 if(hx<0) { --- 165 unchanged lines hidden --- |