]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
for __SC__
authorGuido van Rossum <guido@python.org>
Sun, 19 Feb 1995 15:54:36 +0000 (15:54 +0000)
committerGuido van Rossum <guido@python.org>
Sun, 19 Feb 1995 15:54:36 +0000 (15:54 +0000)
Python/atof.c [new file with mode: 0644]
Python/strtod.c

diff --git a/Python/atof.c b/Python/atof.c
new file mode 100644 (file)
index 0000000..894490a
--- /dev/null
@@ -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;
+}
index bcdef328fa9efb983250cbaac7545096163650ad..dddc98bb5677c7fb411ae019d9366e0d9ad10584 100644 (file)
@@ -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.