s_expm1f.c (226380) | s_expm1f.c (226596) |
---|---|
1/* s_expm1f.c -- float version of s_expm1.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> | 1/* s_expm1f.c -- float version of s_expm1.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/s_expm1f.c 226380 2011-10-15 07:00:28Z das $"); | 17__FBSDID("$FreeBSD: head/lib/msun/src/s_expm1f.c 226596 2011-10-21 06:26:38Z das $"); |
18 | 18 |
19#include <float.h> 20 |
|
19#include "math.h" 20#include "math_private.h" 21 22static const float 23one = 1.0, 24huge = 1.0e+30, 25tiny = 1.0e-30, 26o_threshold = 8.8721679688e+01,/* 0x42b17180 */ --- 42 unchanged lines hidden (view full) --- 69 else 70 {hi = x + ln2_hi; lo = -ln2_lo; k = -1;} 71 } else { 72 k = invln2*x+((xsb==0)?(float)0.5:(float)-0.5); 73 t = k; 74 hi = x - t*ln2_hi; /* t*ln2_hi is exact here */ 75 lo = t*ln2_lo; 76 } | 21#include "math.h" 22#include "math_private.h" 23 24static const float 25one = 1.0, 26huge = 1.0e+30, 27tiny = 1.0e-30, 28o_threshold = 8.8721679688e+01,/* 0x42b17180 */ --- 42 unchanged lines hidden (view full) --- 71 else 72 {hi = x + ln2_hi; lo = -ln2_lo; k = -1;} 73 } else { 74 k = invln2*x+((xsb==0)?(float)0.5:(float)-0.5); 75 t = k; 76 hi = x - t*ln2_hi; /* t*ln2_hi is exact here */ 77 lo = t*ln2_lo; 78 } |
77 x = hi - lo; | 79 STRICT_ASSIGN(float, x, hi - lo); |
78 c = (hi-x)-lo; 79 } 80 else if(hx < 0x33000000) { /* when |x|<2**-25, return x */ 81 t = huge+x; /* return x with inexact flags when x!=0 */ 82 return x - (t-(huge+x)); 83 } 84 else k = 0; 85 --- 36 unchanged lines hidden --- | 80 c = (hi-x)-lo; 81 } 82 else if(hx < 0x33000000) { /* when |x|<2**-25, return x */ 83 t = huge+x; /* return x with inexact flags when x!=0 */ 84 return x - (t-(huge+x)); 85 } 86 else k = 0; 87 --- 36 unchanged lines hidden --- |