mirror of
https://github.com/python/cpython.git
synced 2025-09-13 20:27:05 +00:00
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:
parent
9f6d4ceb43
commit
dfdfaab1c5
7 changed files with 120 additions and 0 deletions
|
@ -7,6 +7,7 @@
|
|||
#include "Python.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#include <float.h>
|
||||
|
||||
#if !defined(__STDC__)
|
||||
extern double fmod(double, double);
|
||||
|
@ -46,6 +47,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)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue