| File: | src/lib/libc/gdtoa/strtof.c |
| Warning: | line 80, column 2 Undefined or garbage value returned to caller |
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" ); |