strtodI.c (112158) | strtodI.c (165743) |
---|---|
1/**************************************************************** 2 3The author of this software is David M. Gay. 4 5Copyright (C) 1998, 2000 by Lucent Technologies 6All Rights Reserved 7 8Permission to use, copy, modify, and distribute this software and --- 12 unchanged lines hidden (view full) --- 21SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 22WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 23IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 24ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 25THIS SOFTWARE. 26 27****************************************************************/ 28 | 1/**************************************************************** 2 3The author of this software is David M. Gay. 4 5Copyright (C) 1998, 2000 by Lucent Technologies 6All Rights Reserved 7 8Permission to use, copy, modify, and distribute this software and --- 12 unchanged lines hidden (view full) --- 21SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 22WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 23IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 24ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 25THIS SOFTWARE. 26 27****************************************************************/ 28 |
29/* Please send bug reports to 30 David M. Gay 31 Bell Laboratories, Room 2C-463 32 600 Mountain Avenue 33 Murray Hill, NJ 07974-0636 34 U.S.A. 35 dmg@bell-labs.com 36 */ | 29/* Please send bug reports to David M. Gay (dmg at acm dot org, 30 * with " at " changed at "@" and " dot " changed to "."). */ |
37 38#include "gdtoaimp.h" 39 40 static double 41#ifdef KR_headers 42ulpdown(d) double *d; 43#else 44ulpdown(double *d) --- 11 unchanged lines hidden (view full) --- 56 57 int 58#ifdef KR_headers 59strtodI(s, sp, dd) CONST char *s; char **sp; double *dd; 60#else 61strtodI(CONST char *s, char **sp, double *dd) 62#endif 63{ | 31 32#include "gdtoaimp.h" 33 34 static double 35#ifdef KR_headers 36ulpdown(d) double *d; 37#else 38ulpdown(double *d) --- 11 unchanged lines hidden (view full) --- 50 51 int 52#ifdef KR_headers 53strtodI(s, sp, dd) CONST char *s; char **sp; double *dd; 54#else 55strtodI(CONST char *s, char **sp, double *dd) 56#endif 57{ |
64#ifdef Sudden_Underflow 65 static FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, 1 }; 66#else 67 static FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, 0 }; 68#endif | 58 static FPI fpi = { 53, 1-1023-53+1, 2046-1023-53+1, 1, SI }; |
69 ULong bits[2], sign; 70 Long exp; 71 int j, k; 72 typedef union { 73 double d[2]; 74 ULong L[4]; 75 } U; 76 U *u; --- 83 unchanged lines hidden (view full) --- 160 else { 161 u->L[_0] = 0x7fefffffL; 162 u->L[_1] = 0xffffffffL; 163 } 164 } 165 break; 166 167 case STRTOG_NaN: | 59 ULong bits[2], sign; 60 Long exp; 61 int j, k; 62 typedef union { 63 double d[2]; 64 ULong L[4]; 65 } U; 66 U *u; --- 83 unchanged lines hidden (view full) --- 150 else { 151 u->L[_0] = 0x7fefffffL; 152 u->L[_1] = 0xffffffffL; 153 } 154 } 155 break; 156 157 case STRTOG_NaN: |
168 u->L[_0] = u->L[2+_0] = 0x7fffffff | sign; 169 u->L[_1] = u->L[2+_1] = (ULong)-1; | 158 u->L[0] = u->L[2] = d_QNAN0; 159 u->L[1] = u->L[3] = d_QNAN1; |
170 break; 171 172 case STRTOG_NaNbits: 173 u->L[_0] = u->L[2+_0] = 0x7ff00000 | sign | bits[1]; 174 u->L[_1] = u->L[2+_1] = bits[0]; 175 } 176 return k; 177 } | 160 break; 161 162 case STRTOG_NaNbits: 163 u->L[_0] = u->L[2+_0] = 0x7ff00000 | sign | bits[1]; 164 u->L[_1] = u->L[2+_1] = bits[0]; 165 } 166 return k; 167 } |