diff options
author | Guido van Rossum <guido@python.org> | 1995-02-19 15:54:36 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1995-02-19 15:54:36 (GMT) |
commit | 2b7e04a9d934afdedde936f2806a6723e62777de (patch) | |
tree | f7901ae35e5734590ad263a2a502761b78998d7e /Python | |
parent | c388068431943e7d1760aa52ed06fd6eb7987e39 (diff) | |
download | cpython-2b7e04a9d934afdedde936f2806a6723e62777de.zip cpython-2b7e04a9d934afdedde936f2806a6723e62777de.tar.gz cpython-2b7e04a9d934afdedde936f2806a6723e62777de.tar.bz2 |
for __SC__
Diffstat (limited to 'Python')
-rw-r--r-- | Python/atof.c | 76 | ||||
-rw-r--r-- | Python/strtod.c | 4 |
2 files changed, 80 insertions, 0 deletions
diff --git a/Python/atof.c b/Python/atof.c new file mode 100644 index 0000000..894490a --- /dev/null +++ b/Python/atof.c @@ -0,0 +1,76 @@ +/*********************************************************** +Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, +The Netherlands. + + All Rights Reserved + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose and without fee is hereby granted, +provided that the above copyright notice appear in all copies and that +both that copyright notice and this permission notice appear in +supporting documentation, and that the names of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + +/* Just in case you haven't got an atof() around... + This one doesn't check for bad syntax or overflow, + and is slow and inaccurate. + But it's good enough for the occasional string literal... */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <ctype.h> + +double atof(s) + char *s; +{ + double a = 0.0; + int e = 0; + int c; + while ((c = *s++) != '\0' && isdigit(c)) { + a = a*10.0 + (c - '0'); + } + if (c == '.') { + while ((c = *s++) != '\0' && isdigit(c)) { + a = a*10.0 + (c - '0'); + e = e-1; + } + } + if (c == 'e' || c == 'E') { + int sign = 1; + int i = 0; + c = *s++; + if (c == '+') + c = *s++; + else if (c == '-') { + c = *s++; + sign = -1; + } + while (isdigit(c)) { + i = i*10 + (c - '0'); + c = *s++; + } + e += i*sign; + } + while (e > 0) { + a *= 10.0; + e--; + } + while (e < 0) { + a *= 0.1; + e++; + } + return a; +} diff --git a/Python/strtod.c b/Python/strtod.c index bcdef32..dddc98b 100644 --- a/Python/strtod.c +++ b/Python/strtod.c @@ -1,3 +1,7 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + /* comp.sources.misc strtod(), as posted in comp.lang.tcl, with bugfix for "123000.0" and acceptance of space after 'e' sign nuked. |