Staging
v0.5.1
https://github.com/python/cpython
Revision c2fa18ca20e9ad1b8931eec61ece2a93e24766db authored by Gregory P. Smith on 02 January 2010, 22:25:29 UTC, committed by Gregory P. Smith on 02 January 2010, 22:25:29 UTC
was compiled with Py_DEBUG defined.  Otherwise the builtins are not compiled by
default for many developers due to OpenSSL being present, making it easier for
bugs to slip by.  A future commit will add test code compare the behaviors of
all implementations when they are all available.
1 parent b538d54
Raw File
Tip revision: c2fa18ca20e9ad1b8931eec61ece2a93e24766db authored by Gregory P. Smith on 02 January 2010, 22:25:29 UTC
Always compile the all versions of the hashlib algorithm modules when Python
Tip revision: c2fa18c
atof.c

/* 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... */

#include "pyconfig.h"

#include <ctype.h>

double atof(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;
}
back to top