annotate Python/atof.c @ 13658:f79434ee41fa legacy-trunk

Mass ANSIfication of function definitions. Doesn't cover all 'extern' declarations yet, those come later.
author Thomas Wouters <thomas@python.org>
date Sat, 22 Jul 2000 18:47:25 +0000
parents 87ee82e5c56d
children 6f6f965c5e2d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2396
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /***********************************************************
13255
916fb024ce94 Change copyright notice.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
2 Copyright (c) 2000, BeOpen.com.
916fb024ce94 Change copyright notice.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
3 Copyright (c) 1995-2000, Corporation for National Research Initiatives.
916fb024ce94 Change copyright notice.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
4 Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
916fb024ce94 Change copyright notice.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
5 All rights reserved.
2396
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
13255
916fb024ce94 Change copyright notice.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
7 See the file "Misc/COPYRIGHT" for information on usage and
916fb024ce94 Change copyright notice.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
8 redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
2396
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 ******************************************************************/
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
10
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 /* Just in case you haven't got an atof() around...
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 This one doesn't check for bad syntax or overflow,
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 and is slow and inaccurate.
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 But it's good enough for the occasional string literal... */
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 #include "config.h"
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
17
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 #include <ctype.h>
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
19
13658
f79434ee41fa Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents: 13256
diff changeset
20 double atof(char *s)
2396
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 double a = 0.0;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 int e = 0;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 int c;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 while ((c = *s++) != '\0' && isdigit(c)) {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 a = a*10.0 + (c - '0');
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 if (c == '.') {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 while ((c = *s++) != '\0' && isdigit(c)) {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 a = a*10.0 + (c - '0');
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 e = e-1;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 if (c == 'e' || c == 'E') {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 int sign = 1;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 int i = 0;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 c = *s++;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 if (c == '+')
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 c = *s++;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 else if (c == '-') {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 c = *s++;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 sign = -1;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 while (isdigit(c)) {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 i = i*10 + (c - '0');
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 c = *s++;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 e += i*sign;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 while (e > 0) {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 a *= 10.0;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 e--;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 while (e < 0) {
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 a *= 0.1;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 e++;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 }
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 return a;
29ca45eb3ab7 for __SC__
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 }