17db96d56Sopenharmony_ci/*[clinic input]
27db96d56Sopenharmony_cipreserve
37db96d56Sopenharmony_ci[clinic start generated code]*/
47db96d56Sopenharmony_ci
57db96d56Sopenharmony_ciPyDoc_STRVAR(float_is_integer__doc__,
67db96d56Sopenharmony_ci"is_integer($self, /)\n"
77db96d56Sopenharmony_ci"--\n"
87db96d56Sopenharmony_ci"\n"
97db96d56Sopenharmony_ci"Return True if the float is an integer.");
107db96d56Sopenharmony_ci
117db96d56Sopenharmony_ci#define FLOAT_IS_INTEGER_METHODDEF    \
127db96d56Sopenharmony_ci    {"is_integer", (PyCFunction)float_is_integer, METH_NOARGS, float_is_integer__doc__},
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cistatic PyObject *
157db96d56Sopenharmony_cifloat_is_integer_impl(PyObject *self);
167db96d56Sopenharmony_ci
177db96d56Sopenharmony_cistatic PyObject *
187db96d56Sopenharmony_cifloat_is_integer(PyObject *self, PyObject *Py_UNUSED(ignored))
197db96d56Sopenharmony_ci{
207db96d56Sopenharmony_ci    return float_is_integer_impl(self);
217db96d56Sopenharmony_ci}
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ciPyDoc_STRVAR(float___trunc____doc__,
247db96d56Sopenharmony_ci"__trunc__($self, /)\n"
257db96d56Sopenharmony_ci"--\n"
267db96d56Sopenharmony_ci"\n"
277db96d56Sopenharmony_ci"Return the Integral closest to x between 0 and x.");
287db96d56Sopenharmony_ci
297db96d56Sopenharmony_ci#define FLOAT___TRUNC___METHODDEF    \
307db96d56Sopenharmony_ci    {"__trunc__", (PyCFunction)float___trunc__, METH_NOARGS, float___trunc____doc__},
317db96d56Sopenharmony_ci
327db96d56Sopenharmony_cistatic PyObject *
337db96d56Sopenharmony_cifloat___trunc___impl(PyObject *self);
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_cistatic PyObject *
367db96d56Sopenharmony_cifloat___trunc__(PyObject *self, PyObject *Py_UNUSED(ignored))
377db96d56Sopenharmony_ci{
387db96d56Sopenharmony_ci    return float___trunc___impl(self);
397db96d56Sopenharmony_ci}
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ciPyDoc_STRVAR(float___floor____doc__,
427db96d56Sopenharmony_ci"__floor__($self, /)\n"
437db96d56Sopenharmony_ci"--\n"
447db96d56Sopenharmony_ci"\n"
457db96d56Sopenharmony_ci"Return the floor as an Integral.");
467db96d56Sopenharmony_ci
477db96d56Sopenharmony_ci#define FLOAT___FLOOR___METHODDEF    \
487db96d56Sopenharmony_ci    {"__floor__", (PyCFunction)float___floor__, METH_NOARGS, float___floor____doc__},
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_cistatic PyObject *
517db96d56Sopenharmony_cifloat___floor___impl(PyObject *self);
527db96d56Sopenharmony_ci
537db96d56Sopenharmony_cistatic PyObject *
547db96d56Sopenharmony_cifloat___floor__(PyObject *self, PyObject *Py_UNUSED(ignored))
557db96d56Sopenharmony_ci{
567db96d56Sopenharmony_ci    return float___floor___impl(self);
577db96d56Sopenharmony_ci}
587db96d56Sopenharmony_ci
597db96d56Sopenharmony_ciPyDoc_STRVAR(float___ceil____doc__,
607db96d56Sopenharmony_ci"__ceil__($self, /)\n"
617db96d56Sopenharmony_ci"--\n"
627db96d56Sopenharmony_ci"\n"
637db96d56Sopenharmony_ci"Return the ceiling as an Integral.");
647db96d56Sopenharmony_ci
657db96d56Sopenharmony_ci#define FLOAT___CEIL___METHODDEF    \
667db96d56Sopenharmony_ci    {"__ceil__", (PyCFunction)float___ceil__, METH_NOARGS, float___ceil____doc__},
677db96d56Sopenharmony_ci
687db96d56Sopenharmony_cistatic PyObject *
697db96d56Sopenharmony_cifloat___ceil___impl(PyObject *self);
707db96d56Sopenharmony_ci
717db96d56Sopenharmony_cistatic PyObject *
727db96d56Sopenharmony_cifloat___ceil__(PyObject *self, PyObject *Py_UNUSED(ignored))
737db96d56Sopenharmony_ci{
747db96d56Sopenharmony_ci    return float___ceil___impl(self);
757db96d56Sopenharmony_ci}
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ciPyDoc_STRVAR(float___round____doc__,
787db96d56Sopenharmony_ci"__round__($self, ndigits=None, /)\n"
797db96d56Sopenharmony_ci"--\n"
807db96d56Sopenharmony_ci"\n"
817db96d56Sopenharmony_ci"Return the Integral closest to x, rounding half toward even.\n"
827db96d56Sopenharmony_ci"\n"
837db96d56Sopenharmony_ci"When an argument is passed, work like built-in round(x, ndigits).");
847db96d56Sopenharmony_ci
857db96d56Sopenharmony_ci#define FLOAT___ROUND___METHODDEF    \
867db96d56Sopenharmony_ci    {"__round__", _PyCFunction_CAST(float___round__), METH_FASTCALL, float___round____doc__},
877db96d56Sopenharmony_ci
887db96d56Sopenharmony_cistatic PyObject *
897db96d56Sopenharmony_cifloat___round___impl(PyObject *self, PyObject *o_ndigits);
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_cistatic PyObject *
927db96d56Sopenharmony_cifloat___round__(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
937db96d56Sopenharmony_ci{
947db96d56Sopenharmony_ci    PyObject *return_value = NULL;
957db96d56Sopenharmony_ci    PyObject *o_ndigits = Py_None;
967db96d56Sopenharmony_ci
977db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("__round__", nargs, 0, 1)) {
987db96d56Sopenharmony_ci        goto exit;
997db96d56Sopenharmony_ci    }
1007db96d56Sopenharmony_ci    if (nargs < 1) {
1017db96d56Sopenharmony_ci        goto skip_optional;
1027db96d56Sopenharmony_ci    }
1037db96d56Sopenharmony_ci    o_ndigits = args[0];
1047db96d56Sopenharmony_ciskip_optional:
1057db96d56Sopenharmony_ci    return_value = float___round___impl(self, o_ndigits);
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ciexit:
1087db96d56Sopenharmony_ci    return return_value;
1097db96d56Sopenharmony_ci}
1107db96d56Sopenharmony_ci
1117db96d56Sopenharmony_ciPyDoc_STRVAR(float_conjugate__doc__,
1127db96d56Sopenharmony_ci"conjugate($self, /)\n"
1137db96d56Sopenharmony_ci"--\n"
1147db96d56Sopenharmony_ci"\n"
1157db96d56Sopenharmony_ci"Return self, the complex conjugate of any float.");
1167db96d56Sopenharmony_ci
1177db96d56Sopenharmony_ci#define FLOAT_CONJUGATE_METHODDEF    \
1187db96d56Sopenharmony_ci    {"conjugate", (PyCFunction)float_conjugate, METH_NOARGS, float_conjugate__doc__},
1197db96d56Sopenharmony_ci
1207db96d56Sopenharmony_cistatic PyObject *
1217db96d56Sopenharmony_cifloat_conjugate_impl(PyObject *self);
1227db96d56Sopenharmony_ci
1237db96d56Sopenharmony_cistatic PyObject *
1247db96d56Sopenharmony_cifloat_conjugate(PyObject *self, PyObject *Py_UNUSED(ignored))
1257db96d56Sopenharmony_ci{
1267db96d56Sopenharmony_ci    return float_conjugate_impl(self);
1277db96d56Sopenharmony_ci}
1287db96d56Sopenharmony_ci
1297db96d56Sopenharmony_ciPyDoc_STRVAR(float_hex__doc__,
1307db96d56Sopenharmony_ci"hex($self, /)\n"
1317db96d56Sopenharmony_ci"--\n"
1327db96d56Sopenharmony_ci"\n"
1337db96d56Sopenharmony_ci"Return a hexadecimal representation of a floating-point number.\n"
1347db96d56Sopenharmony_ci"\n"
1357db96d56Sopenharmony_ci">>> (-0.1).hex()\n"
1367db96d56Sopenharmony_ci"\'-0x1.999999999999ap-4\'\n"
1377db96d56Sopenharmony_ci">>> 3.14159.hex()\n"
1387db96d56Sopenharmony_ci"\'0x1.921f9f01b866ep+1\'");
1397db96d56Sopenharmony_ci
1407db96d56Sopenharmony_ci#define FLOAT_HEX_METHODDEF    \
1417db96d56Sopenharmony_ci    {"hex", (PyCFunction)float_hex, METH_NOARGS, float_hex__doc__},
1427db96d56Sopenharmony_ci
1437db96d56Sopenharmony_cistatic PyObject *
1447db96d56Sopenharmony_cifloat_hex_impl(PyObject *self);
1457db96d56Sopenharmony_ci
1467db96d56Sopenharmony_cistatic PyObject *
1477db96d56Sopenharmony_cifloat_hex(PyObject *self, PyObject *Py_UNUSED(ignored))
1487db96d56Sopenharmony_ci{
1497db96d56Sopenharmony_ci    return float_hex_impl(self);
1507db96d56Sopenharmony_ci}
1517db96d56Sopenharmony_ci
1527db96d56Sopenharmony_ciPyDoc_STRVAR(float_fromhex__doc__,
1537db96d56Sopenharmony_ci"fromhex($type, string, /)\n"
1547db96d56Sopenharmony_ci"--\n"
1557db96d56Sopenharmony_ci"\n"
1567db96d56Sopenharmony_ci"Create a floating-point number from a hexadecimal string.\n"
1577db96d56Sopenharmony_ci"\n"
1587db96d56Sopenharmony_ci">>> float.fromhex(\'0x1.ffffp10\')\n"
1597db96d56Sopenharmony_ci"2047.984375\n"
1607db96d56Sopenharmony_ci">>> float.fromhex(\'-0x1p-1074\')\n"
1617db96d56Sopenharmony_ci"-5e-324");
1627db96d56Sopenharmony_ci
1637db96d56Sopenharmony_ci#define FLOAT_FROMHEX_METHODDEF    \
1647db96d56Sopenharmony_ci    {"fromhex", (PyCFunction)float_fromhex, METH_O|METH_CLASS, float_fromhex__doc__},
1657db96d56Sopenharmony_ci
1667db96d56Sopenharmony_ciPyDoc_STRVAR(float_as_integer_ratio__doc__,
1677db96d56Sopenharmony_ci"as_integer_ratio($self, /)\n"
1687db96d56Sopenharmony_ci"--\n"
1697db96d56Sopenharmony_ci"\n"
1707db96d56Sopenharmony_ci"Return integer ratio.\n"
1717db96d56Sopenharmony_ci"\n"
1727db96d56Sopenharmony_ci"Return a pair of integers, whose ratio is exactly equal to the original float\n"
1737db96d56Sopenharmony_ci"and with a positive denominator.\n"
1747db96d56Sopenharmony_ci"\n"
1757db96d56Sopenharmony_ci"Raise OverflowError on infinities and a ValueError on NaNs.\n"
1767db96d56Sopenharmony_ci"\n"
1777db96d56Sopenharmony_ci">>> (10.0).as_integer_ratio()\n"
1787db96d56Sopenharmony_ci"(10, 1)\n"
1797db96d56Sopenharmony_ci">>> (0.0).as_integer_ratio()\n"
1807db96d56Sopenharmony_ci"(0, 1)\n"
1817db96d56Sopenharmony_ci">>> (-.25).as_integer_ratio()\n"
1827db96d56Sopenharmony_ci"(-1, 4)");
1837db96d56Sopenharmony_ci
1847db96d56Sopenharmony_ci#define FLOAT_AS_INTEGER_RATIO_METHODDEF    \
1857db96d56Sopenharmony_ci    {"as_integer_ratio", (PyCFunction)float_as_integer_ratio, METH_NOARGS, float_as_integer_ratio__doc__},
1867db96d56Sopenharmony_ci
1877db96d56Sopenharmony_cistatic PyObject *
1887db96d56Sopenharmony_cifloat_as_integer_ratio_impl(PyObject *self);
1897db96d56Sopenharmony_ci
1907db96d56Sopenharmony_cistatic PyObject *
1917db96d56Sopenharmony_cifloat_as_integer_ratio(PyObject *self, PyObject *Py_UNUSED(ignored))
1927db96d56Sopenharmony_ci{
1937db96d56Sopenharmony_ci    return float_as_integer_ratio_impl(self);
1947db96d56Sopenharmony_ci}
1957db96d56Sopenharmony_ci
1967db96d56Sopenharmony_ciPyDoc_STRVAR(float_new__doc__,
1977db96d56Sopenharmony_ci"float(x=0, /)\n"
1987db96d56Sopenharmony_ci"--\n"
1997db96d56Sopenharmony_ci"\n"
2007db96d56Sopenharmony_ci"Convert a string or number to a floating point number, if possible.");
2017db96d56Sopenharmony_ci
2027db96d56Sopenharmony_cistatic PyObject *
2037db96d56Sopenharmony_cifloat_new_impl(PyTypeObject *type, PyObject *x);
2047db96d56Sopenharmony_ci
2057db96d56Sopenharmony_cistatic PyObject *
2067db96d56Sopenharmony_cifloat_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
2077db96d56Sopenharmony_ci{
2087db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2097db96d56Sopenharmony_ci    PyObject *x = NULL;
2107db96d56Sopenharmony_ci
2117db96d56Sopenharmony_ci    if ((type == &PyFloat_Type ||
2127db96d56Sopenharmony_ci         type->tp_init == PyFloat_Type.tp_init) &&
2137db96d56Sopenharmony_ci        !_PyArg_NoKeywords("float", kwargs)) {
2147db96d56Sopenharmony_ci        goto exit;
2157db96d56Sopenharmony_ci    }
2167db96d56Sopenharmony_ci    if (!_PyArg_CheckPositional("float", PyTuple_GET_SIZE(args), 0, 1)) {
2177db96d56Sopenharmony_ci        goto exit;
2187db96d56Sopenharmony_ci    }
2197db96d56Sopenharmony_ci    if (PyTuple_GET_SIZE(args) < 1) {
2207db96d56Sopenharmony_ci        goto skip_optional;
2217db96d56Sopenharmony_ci    }
2227db96d56Sopenharmony_ci    x = PyTuple_GET_ITEM(args, 0);
2237db96d56Sopenharmony_ciskip_optional:
2247db96d56Sopenharmony_ci    return_value = float_new_impl(type, x);
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_ciexit:
2277db96d56Sopenharmony_ci    return return_value;
2287db96d56Sopenharmony_ci}
2297db96d56Sopenharmony_ci
2307db96d56Sopenharmony_ciPyDoc_STRVAR(float___getnewargs____doc__,
2317db96d56Sopenharmony_ci"__getnewargs__($self, /)\n"
2327db96d56Sopenharmony_ci"--\n"
2337db96d56Sopenharmony_ci"\n");
2347db96d56Sopenharmony_ci
2357db96d56Sopenharmony_ci#define FLOAT___GETNEWARGS___METHODDEF    \
2367db96d56Sopenharmony_ci    {"__getnewargs__", (PyCFunction)float___getnewargs__, METH_NOARGS, float___getnewargs____doc__},
2377db96d56Sopenharmony_ci
2387db96d56Sopenharmony_cistatic PyObject *
2397db96d56Sopenharmony_cifloat___getnewargs___impl(PyObject *self);
2407db96d56Sopenharmony_ci
2417db96d56Sopenharmony_cistatic PyObject *
2427db96d56Sopenharmony_cifloat___getnewargs__(PyObject *self, PyObject *Py_UNUSED(ignored))
2437db96d56Sopenharmony_ci{
2447db96d56Sopenharmony_ci    return float___getnewargs___impl(self);
2457db96d56Sopenharmony_ci}
2467db96d56Sopenharmony_ci
2477db96d56Sopenharmony_ciPyDoc_STRVAR(float___getformat____doc__,
2487db96d56Sopenharmony_ci"__getformat__($type, typestr, /)\n"
2497db96d56Sopenharmony_ci"--\n"
2507db96d56Sopenharmony_ci"\n"
2517db96d56Sopenharmony_ci"You probably don\'t want to use this function.\n"
2527db96d56Sopenharmony_ci"\n"
2537db96d56Sopenharmony_ci"  typestr\n"
2547db96d56Sopenharmony_ci"    Must be \'double\' or \'float\'.\n"
2557db96d56Sopenharmony_ci"\n"
2567db96d56Sopenharmony_ci"It exists mainly to be used in Python\'s test suite.\n"
2577db96d56Sopenharmony_ci"\n"
2587db96d56Sopenharmony_ci"This function returns whichever of \'unknown\', \'IEEE, big-endian\' or \'IEEE,\n"
2597db96d56Sopenharmony_ci"little-endian\' best describes the format of floating point numbers used by the\n"
2607db96d56Sopenharmony_ci"C type named by typestr.");
2617db96d56Sopenharmony_ci
2627db96d56Sopenharmony_ci#define FLOAT___GETFORMAT___METHODDEF    \
2637db96d56Sopenharmony_ci    {"__getformat__", (PyCFunction)float___getformat__, METH_O|METH_CLASS, float___getformat____doc__},
2647db96d56Sopenharmony_ci
2657db96d56Sopenharmony_cistatic PyObject *
2667db96d56Sopenharmony_cifloat___getformat___impl(PyTypeObject *type, const char *typestr);
2677db96d56Sopenharmony_ci
2687db96d56Sopenharmony_cistatic PyObject *
2697db96d56Sopenharmony_cifloat___getformat__(PyTypeObject *type, PyObject *arg)
2707db96d56Sopenharmony_ci{
2717db96d56Sopenharmony_ci    PyObject *return_value = NULL;
2727db96d56Sopenharmony_ci    const char *typestr;
2737db96d56Sopenharmony_ci
2747db96d56Sopenharmony_ci    if (!PyUnicode_Check(arg)) {
2757db96d56Sopenharmony_ci        _PyArg_BadArgument("__getformat__", "argument", "str", arg);
2767db96d56Sopenharmony_ci        goto exit;
2777db96d56Sopenharmony_ci    }
2787db96d56Sopenharmony_ci    Py_ssize_t typestr_length;
2797db96d56Sopenharmony_ci    typestr = PyUnicode_AsUTF8AndSize(arg, &typestr_length);
2807db96d56Sopenharmony_ci    if (typestr == NULL) {
2817db96d56Sopenharmony_ci        goto exit;
2827db96d56Sopenharmony_ci    }
2837db96d56Sopenharmony_ci    if (strlen(typestr) != (size_t)typestr_length) {
2847db96d56Sopenharmony_ci        PyErr_SetString(PyExc_ValueError, "embedded null character");
2857db96d56Sopenharmony_ci        goto exit;
2867db96d56Sopenharmony_ci    }
2877db96d56Sopenharmony_ci    return_value = float___getformat___impl(type, typestr);
2887db96d56Sopenharmony_ci
2897db96d56Sopenharmony_ciexit:
2907db96d56Sopenharmony_ci    return return_value;
2917db96d56Sopenharmony_ci}
2927db96d56Sopenharmony_ci
2937db96d56Sopenharmony_ciPyDoc_STRVAR(float___format____doc__,
2947db96d56Sopenharmony_ci"__format__($self, format_spec, /)\n"
2957db96d56Sopenharmony_ci"--\n"
2967db96d56Sopenharmony_ci"\n"
2977db96d56Sopenharmony_ci"Formats the float according to format_spec.");
2987db96d56Sopenharmony_ci
2997db96d56Sopenharmony_ci#define FLOAT___FORMAT___METHODDEF    \
3007db96d56Sopenharmony_ci    {"__format__", (PyCFunction)float___format__, METH_O, float___format____doc__},
3017db96d56Sopenharmony_ci
3027db96d56Sopenharmony_cistatic PyObject *
3037db96d56Sopenharmony_cifloat___format___impl(PyObject *self, PyObject *format_spec);
3047db96d56Sopenharmony_ci
3057db96d56Sopenharmony_cistatic PyObject *
3067db96d56Sopenharmony_cifloat___format__(PyObject *self, PyObject *arg)
3077db96d56Sopenharmony_ci{
3087db96d56Sopenharmony_ci    PyObject *return_value = NULL;
3097db96d56Sopenharmony_ci    PyObject *format_spec;
3107db96d56Sopenharmony_ci
3117db96d56Sopenharmony_ci    if (!PyUnicode_Check(arg)) {
3127db96d56Sopenharmony_ci        _PyArg_BadArgument("__format__", "argument", "str", arg);
3137db96d56Sopenharmony_ci        goto exit;
3147db96d56Sopenharmony_ci    }
3157db96d56Sopenharmony_ci    if (PyUnicode_READY(arg) == -1) {
3167db96d56Sopenharmony_ci        goto exit;
3177db96d56Sopenharmony_ci    }
3187db96d56Sopenharmony_ci    format_spec = arg;
3197db96d56Sopenharmony_ci    return_value = float___format___impl(self, format_spec);
3207db96d56Sopenharmony_ci
3217db96d56Sopenharmony_ciexit:
3227db96d56Sopenharmony_ci    return return_value;
3237db96d56Sopenharmony_ci}
3247db96d56Sopenharmony_ci/*[clinic end generated code: output=a6e6467624a92a43 input=a9049054013a1b77]*/
325