Floating Point Objects
**********************

PyFloatObject

   This subtype of "PyObject" represents a Python floating point
   object.

PyTypeObject PyFloat_Type

   This instance of "PyTypeObject" represents the Python floating
   point type.  This is the same object as "float" in the Python
   layer.

int PyFloat_Check(PyObject *p)

   Return true if its argument is a "PyFloatObject" or a subtype of
   "PyFloatObject".

int PyFloat_CheckExact(PyObject *p)

   Return true if its argument is a "PyFloatObject", but not a subtype
   of "PyFloatObject".

PyObject* PyFloat_FromString(PyObject *str)
    *Return value: New reference.*

   Create a "PyFloatObject" object based on the string value in *str*,
   or "NULL" on failure.

PyObject* PyFloat_FromDouble(double v)
    *Return value: New reference.*

   Create a "PyFloatObject" object from *v*, or "NULL" on failure.

double PyFloat_AsDouble(PyObject *pyfloat)

   Return a C "double" representation of the contents of *pyfloat*.
   If *pyfloat* is not a Python floating point object but has a
   "__float__()" method, this method will first be called to convert
   *pyfloat* into a float. If "__float__()" is not defined then it
   falls back to "__index__()". This method returns "-1.0" upon
   failure, so one should call "PyErr_Occurred()" to check for errors.

   Changed in version 3.8: Use "__index__()" if available.

double PyFloat_AS_DOUBLE(PyObject *pyfloat)

   Return a C "double" representation of the contents of *pyfloat*,
   but without error checking.

PyObject* PyFloat_GetInfo(void)
    *Return value: New reference.*

   Return a structseq instance which contains information about the
   precision, minimum and maximum values of a float. It’s a thin
   wrapper around the header file "float.h".

double PyFloat_GetMax()

   Return the maximum representable finite float *DBL_MAX* as C
   "double".

double PyFloat_GetMin()

   Return the minimum normalized positive float *DBL_MIN* as C
   "double".
