File: | src/lib/libc/gdtoa/strtof.c |
Warning: | line 79, column 10 The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /**************************************************************** | |||
2 | ||||
3 | The author of this software is David M. Gay. | |||
4 | ||||
5 | Copyright (C) 1998, 2000 by Lucent Technologies | |||
6 | All Rights Reserved | |||
7 | ||||
8 | Permission to use, copy, modify, and distribute this software and | |||
9 | its documentation for any purpose and without fee is hereby | |||
10 | granted, provided that the above copyright notice appear in all | |||
11 | copies and that both that the copyright notice and this | |||
12 | permission notice and warranty disclaimer appear in supporting | |||
13 | documentation, and that the name of Lucent or any of its entities | |||
14 | not be used in advertising or publicity pertaining to | |||
15 | distribution of the software without specific, written prior | |||
16 | permission. | |||
17 | ||||
18 | LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, | |||
19 | INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. | |||
20 | IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY | |||
21 | SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |||
22 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
23 | IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | |||
24 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF | |||
25 | THIS SOFTWARE. | |||
26 | ||||
27 | ****************************************************************/ | |||
28 | ||||
29 | /* Please send bug reports to David M. Gay (dmg at acm dot org, | |||
30 | * with " at " changed at "@" and " dot " changed to "."). */ | |||
31 | ||||
32 | #include "gdtoaimp.h" | |||
33 | ||||
34 | float | |||
35 | #ifdef KR_headers | |||
36 | strtof(s, sp) CONSTconst char *s; char **sp; | |||
37 | #else | |||
38 | strtof(CONSTconst char *s, char **sp) | |||
39 | #endif | |||
40 | { | |||
41 | static FPI fpi0 = { 24, 1-127-24+1, 254-127-24+1, 1, SI0 }; | |||
42 | ULong bits[1]; | |||
43 | Longint exp; | |||
44 | int k; | |||
45 | union { ULong L[1]; float f; } u; | |||
46 | #ifdef Honor_FLT_ROUNDS | |||
47 | #include "gdtoa_fltrnds.h" | |||
48 | #else | |||
49 | #define fpi&fpi0 &fpi0 | |||
50 | #endif | |||
51 | ||||
52 | k = strtodg__strtodg(s, sp, fpi&fpi0, &exp, bits); | |||
53 | switch(k & STRTOG_Retmask) { | |||
| ||||
54 | case STRTOG_NoNumber: | |||
55 | case STRTOG_Zero: | |||
56 | u.L[0] = 0; | |||
57 | break; | |||
58 | ||||
59 | case STRTOG_Normal: | |||
60 | case STRTOG_NaNbits: | |||
61 | u.L[0] = (bits[0] & 0x7fffff) | ((exp + 0x7f + 23) << 23); | |||
62 | break; | |||
63 | ||||
64 | case STRTOG_Denormal: | |||
65 | u.L[0] = bits[0]; | |||
66 | break; | |||
67 | ||||
68 | case STRTOG_NoMemory: | |||
69 | errno(*__errno()) = ERANGE34; | |||
70 | /* FALLTHROUGH */ | |||
71 | case STRTOG_Infinite: | |||
72 | u.L[0] = 0x7f800000; | |||
73 | break; | |||
74 | ||||
75 | case STRTOG_NaN: | |||
76 | u.L[0] = f_QNAN0x7fc00000; | |||
77 | } | |||
78 | if (k & STRTOG_Neg) | |||
79 | u.L[0] |= 0x80000000L; | |||
| ||||
80 | return u.f; | |||
81 | } | |||
82 | DEF_STRONG(strtof)__asm__(".global " "strtof" " ; " "strtof" " = " "_libc_strtof" ); |