strtof.c (50dad48bb740a8e56d185d9e8c165e0758f46e25) | strtof.c (3c87aa1d3dc1d8dad3efad322852a8e1e76dee55) |
---|---|
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 --- 21 unchanged lines hidden (view full) --- 30 * with " at " changed at "@" and " dot " changed to "."). */ 31 32/* $FreeBSD$ */ 33 34#include "gdtoaimp.h" 35 36 float 37#ifdef KR_headers | 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 --- 21 unchanged lines hidden (view full) --- 30 * with " at " changed at "@" and " dot " changed to "."). */ 31 32/* $FreeBSD$ */ 33 34#include "gdtoaimp.h" 35 36 float 37#ifdef KR_headers |
38strtof(s, sp) CONST char *s; char **sp; | 38strtof_l(s, sp, loc) CONST char *s; char **sp; locale_t loc; |
39#else | 39#else |
40strtof(CONST char *s, char **sp) | 40strtof_l(CONST char *s, char **sp, locale_t loc) |
41#endif 42{ 43 static FPI fpi0 = { 24, 1-127-24+1, 254-127-24+1, 1, SI }; 44 ULong bits[1]; 45 Long exp; 46 int k; 47 union { ULong L[1]; float f; } u; 48#ifdef Honor_FLT_ROUNDS 49#include "gdtoa_fltrnds.h" 50#else 51#define fpi &fpi0 52#endif 53 | 41#endif 42{ 43 static FPI fpi0 = { 24, 1-127-24+1, 254-127-24+1, 1, SI }; 44 ULong bits[1]; 45 Long exp; 46 int k; 47 union { ULong L[1]; float f; } u; 48#ifdef Honor_FLT_ROUNDS 49#include "gdtoa_fltrnds.h" 50#else 51#define fpi &fpi0 52#endif 53 |
54 k = strtodg(s, sp, fpi, &exp, bits); | 54 k = strtodg_l(s, sp, fpi, &exp, bits, loc); |
55 switch(k & STRTOG_Retmask) { 56 case STRTOG_NoNumber: 57 case STRTOG_Zero: 58 u.L[0] = 0; 59 break; 60 61 case STRTOG_Normal: 62 u.L[0] = (bits[0] & 0x7fffff) | ((exp + 0x7f + 23) << 23); --- 14 unchanged lines hidden (view full) --- 77 78 case STRTOG_NaN: 79 u.L[0] = f_QNAN; 80 } 81 if (k & STRTOG_Neg) 82 u.L[0] |= 0x80000000L; 83 return u.f; 84 } | 55 switch(k & STRTOG_Retmask) { 56 case STRTOG_NoNumber: 57 case STRTOG_Zero: 58 u.L[0] = 0; 59 break; 60 61 case STRTOG_Normal: 62 u.L[0] = (bits[0] & 0x7fffff) | ((exp + 0x7f + 23) << 23); --- 14 unchanged lines hidden (view full) --- 77 78 case STRTOG_NaN: 79 u.L[0] = f_QNAN; 80 } 81 if (k & STRTOG_Neg) 82 u.L[0] |= 0x80000000L; 83 return u.f; 84 } |
85 float 86#ifdef KR_headers 87strtof(s, sp) CONST char *s; char **sp; 88#else 89strtof(CONST char *s, char **sp) 90#endif 91{ 92 return strtof_l(s, sp, __get_locale()); 93} 94 |
|