Merged revisions 59245-59254 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r59245 | georg.brandl | 2007-11-30 23:04:45 +0100 (Fri, 30 Nov 2007) | 2 lines

  Move lchmod() docs to correct place, and add versionadded tags.
........
  r59249 | christian.heimes | 2007-11-30 23:36:10 +0100 (Fri, 30 Nov 2007) | 2 lines

  Backport of -r59242:59246 from py3k
  Fixed problem with regrtest caused by the additional of objects to _abcoll.
........
  r59253 | christian.heimes | 2007-12-01 02:03:20 +0100 (Sat, 01 Dec 2007) | 1 line

  Although pyconfig.h claims that WIN32 is obsolete it is still required for the locale module. locale.getdefaultlocale() fails silently w/o the WIN32 macro.
........
  r59254 | christian.heimes | 2007-12-01 12:20:10 +0100 (Sat, 01 Dec 2007) | 3 lines

  Feature #1534
  Added PyFloat_GetMax(), PyFloat_GetMin() and PyFloat_GetInfo() to the float API.
  Added a dictionary sys.float_info with information about the internal floating point type to the sys module.
........
This commit is contained in:
Christian Heimes 2007-12-01 12:22:32 +00:00
parent 85984227ab
commit 938526609f
10 changed files with 144 additions and 20 deletions

View file

@ -9,6 +9,7 @@
#include "formatter_unicode.h"
#include <ctype.h>
#include <float.h>
#if !defined(__STDC__)
extern double fmod(double, double);
@ -48,6 +49,52 @@ fill_free_list(void)
return p + N_FLOATOBJECTS - 1;
}
double
PyFloat_GetMax(void)
{
return DBL_MAX;
}
double
PyFloat_GetMin(void)
{
return DBL_MIN;
}
PyObject *
PyFloat_GetInfo(void)
{
PyObject *d, *tmp;
#define SET_FLOAT_CONST(d, key, const) \
tmp = PyFloat_FromDouble(const); \
if (tmp == NULL) return NULL; \
if (PyDict_SetItemString(d, key, tmp)) return NULL; \
Py_DECREF(tmp)
#define SET_INT_CONST(d, key, const) \
tmp = PyInt_FromLong(const); \
if (tmp == NULL) return NULL; \
if (PyDict_SetItemString(d, key, tmp)) return NULL; \
Py_DECREF(tmp)
d = PyDict_New();
SET_FLOAT_CONST(d, "max", DBL_MAX);
SET_INT_CONST(d, "max_exp", DBL_MAX_EXP);
SET_INT_CONST(d, "max_10_exp", DBL_MAX_10_EXP);
SET_FLOAT_CONST(d, "min", DBL_MIN);
SET_INT_CONST(d, "min_exp", DBL_MIN_EXP);
SET_INT_CONST(d, "min_10_exp", DBL_MIN_10_EXP);
SET_INT_CONST(d, "dig", DBL_DIG);
SET_INT_CONST(d, "mant_dig", DBL_MANT_DIG);
SET_FLOAT_CONST(d, "epsilon", DBL_EPSILON);
SET_INT_CONST(d, "radix", FLT_RADIX);
SET_INT_CONST(d, "rounds", FLT_ROUNDS);
return d;
}
PyObject *
PyFloat_FromDouble(double fval)
{