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