| /*[clinic input] |
| preserve |
| [clinic start generated code]*/ |
| |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # include "pycore_gc.h" // PyGC_Head |
| # include "pycore_runtime.h" // _Py_ID() |
| #endif |
| #include "pycore_abstract.h" // _PyNumber_Index() |
| #include "pycore_modsupport.h" // _PyArg_UnpackKeywords() |
| |
| PyDoc_STRVAR(_decimal_Context_Etiny__doc__, |
| "Etiny($self, /)\n" |
| "--\n" |
| "\n" |
| "Return a value equal to Emin - prec + 1.\n" |
| "\n" |
| "This is the minimum exponent value for subnormal results. When\n" |
| "underflow occurs, the exponent is set to Etiny."); |
| |
| #define _DECIMAL_CONTEXT_ETINY_METHODDEF \ |
| {"Etiny", (PyCFunction)_decimal_Context_Etiny, METH_NOARGS, _decimal_Context_Etiny__doc__}, |
| |
| static PyObject * |
| _decimal_Context_Etiny_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Context_Etiny(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Context_Etiny_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_Etop__doc__, |
| "Etop($self, /)\n" |
| "--\n" |
| "\n" |
| "Return a value equal to Emax - prec + 1.\n" |
| "\n" |
| "This is the maximum exponent if the _clamp field of the context is set\n" |
| "to 1 (IEEE clamp mode). Etop() must not be negative."); |
| |
| #define _DECIMAL_CONTEXT_ETOP_METHODDEF \ |
| {"Etop", (PyCFunction)_decimal_Context_Etop, METH_NOARGS, _decimal_Context_Etop__doc__}, |
| |
| static PyObject * |
| _decimal_Context_Etop_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Context_Etop(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Context_Etop_impl(self); |
| } |
| |
| #if defined(CONFIG_32) |
| |
| PyDoc_STRVAR(_decimal_Context__unsafe_setprec__doc__, |
| "_unsafe_setprec($self, x, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define _DECIMAL_CONTEXT__UNSAFE_SETPREC_METHODDEF \ |
| {"_unsafe_setprec", (PyCFunction)_decimal_Context__unsafe_setprec, METH_O, _decimal_Context__unsafe_setprec__doc__}, |
| |
| static PyObject * |
| _decimal_Context__unsafe_setprec_impl(PyObject *self, Py_ssize_t x); |
| |
| static PyObject * |
| _decimal_Context__unsafe_setprec(PyObject *self, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t x; |
| |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(arg); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| x = ival; |
| } |
| return_value = _decimal_Context__unsafe_setprec_impl(self, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| #endif /* defined(CONFIG_32) */ |
| |
| #if defined(CONFIG_32) |
| |
| PyDoc_STRVAR(_decimal_Context__unsafe_setemin__doc__, |
| "_unsafe_setemin($self, x, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define _DECIMAL_CONTEXT__UNSAFE_SETEMIN_METHODDEF \ |
| {"_unsafe_setemin", (PyCFunction)_decimal_Context__unsafe_setemin, METH_O, _decimal_Context__unsafe_setemin__doc__}, |
| |
| static PyObject * |
| _decimal_Context__unsafe_setemin_impl(PyObject *self, Py_ssize_t x); |
| |
| static PyObject * |
| _decimal_Context__unsafe_setemin(PyObject *self, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t x; |
| |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(arg); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| x = ival; |
| } |
| return_value = _decimal_Context__unsafe_setemin_impl(self, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| #endif /* defined(CONFIG_32) */ |
| |
| #if defined(CONFIG_32) |
| |
| PyDoc_STRVAR(_decimal_Context__unsafe_setemax__doc__, |
| "_unsafe_setemax($self, x, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define _DECIMAL_CONTEXT__UNSAFE_SETEMAX_METHODDEF \ |
| {"_unsafe_setemax", (PyCFunction)_decimal_Context__unsafe_setemax, METH_O, _decimal_Context__unsafe_setemax__doc__}, |
| |
| static PyObject * |
| _decimal_Context__unsafe_setemax_impl(PyObject *self, Py_ssize_t x); |
| |
| static PyObject * |
| _decimal_Context__unsafe_setemax(PyObject *self, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t x; |
| |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(arg); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| x = ival; |
| } |
| return_value = _decimal_Context__unsafe_setemax_impl(self, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| #endif /* defined(CONFIG_32) */ |
| |
| PyDoc_STRVAR(_decimal_Context_clear_traps__doc__, |
| "clear_traps($self, /)\n" |
| "--\n" |
| "\n" |
| "Set all traps to False."); |
| |
| #define _DECIMAL_CONTEXT_CLEAR_TRAPS_METHODDEF \ |
| {"clear_traps", (PyCFunction)_decimal_Context_clear_traps, METH_NOARGS, _decimal_Context_clear_traps__doc__}, |
| |
| static PyObject * |
| _decimal_Context_clear_traps_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Context_clear_traps(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Context_clear_traps_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_clear_flags__doc__, |
| "clear_flags($self, /)\n" |
| "--\n" |
| "\n" |
| "Reset all flags to False."); |
| |
| #define _DECIMAL_CONTEXT_CLEAR_FLAGS_METHODDEF \ |
| {"clear_flags", (PyCFunction)_decimal_Context_clear_flags, METH_NOARGS, _decimal_Context_clear_flags__doc__}, |
| |
| static PyObject * |
| _decimal_Context_clear_flags_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Context_clear_flags(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Context_clear_flags_impl(self); |
| } |
| |
| PyDoc_STRVAR(context_init__doc__, |
| "Context(prec=None, rounding=None, Emin=None, Emax=None, capitals=None,\n" |
| " clamp=None, flags=None, traps=None)\n" |
| "--\n" |
| "\n" |
| "Create context.\n" |
| "\n" |
| "The context affects almost all operations and controls rounding,\n" |
| "Over/Underflow, raising of exceptions and much more. A new context\n" |
| "can be constructed as follows:\n" |
| "\n" |
| " >>> c = Context(prec=28, Emin=-425000000, Emax=425000000,\n" |
| " ... rounding=ROUND_HALF_EVEN, capitals=1, clamp=1,\n" |
| " ... traps=[InvalidOperation, DivisionByZero, Overflow],\n" |
| " ... flags=[])\n" |
| " >>>"); |
| |
| static int |
| context_init_impl(PyObject *self, PyObject *prec, PyObject *rounding, |
| PyObject *emin, PyObject *emax, PyObject *capitals, |
| PyObject *clamp, PyObject *status, PyObject *traps); |
| |
| static int |
| context_init(PyObject *self, PyObject *args, PyObject *kwargs) |
| { |
| int return_value = -1; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 8 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(prec), &_Py_ID(rounding), &_Py_ID(Emin), &_Py_ID(Emax), &_Py_ID(capitals), &_Py_ID(clamp), &_Py_ID(flags), &_Py_ID(traps), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"prec", "rounding", "Emin", "Emax", "capitals", "clamp", "flags", "traps", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "Context", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[8]; |
| PyObject * const *fastargs; |
| Py_ssize_t nargs = PyTuple_GET_SIZE(args); |
| Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0; |
| PyObject *prec = Py_None; |
| PyObject *rounding = Py_None; |
| PyObject *emin = Py_None; |
| PyObject *emax = Py_None; |
| PyObject *capitals = Py_None; |
| PyObject *clamp = Py_None; |
| PyObject *status = Py_None; |
| PyObject *traps = Py_None; |
| |
| fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 8, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!fastargs) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| if (fastargs[0]) { |
| prec = fastargs[0]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| if (fastargs[1]) { |
| rounding = fastargs[1]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| if (fastargs[2]) { |
| emin = fastargs[2]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| if (fastargs[3]) { |
| emax = fastargs[3]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| if (fastargs[4]) { |
| capitals = fastargs[4]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| if (fastargs[5]) { |
| clamp = fastargs[5]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| if (fastargs[6]) { |
| status = fastargs[6]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| traps = fastargs[7]; |
| skip_optional_pos: |
| return_value = context_init_impl(self, prec, rounding, emin, emax, capitals, clamp, status, traps); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_IEEEContext__doc__, |
| "IEEEContext($module, bits, /)\n" |
| "--\n" |
| "\n" |
| "Return a context, initialized as one of the IEEE interchange formats.\n" |
| "\n" |
| "The argument must be a multiple of 32 and less than\n" |
| "IEEE_CONTEXT_MAX_BITS."); |
| |
| #define _DECIMAL_IEEECONTEXT_METHODDEF \ |
| {"IEEEContext", (PyCFunction)_decimal_IEEEContext, METH_O, _decimal_IEEEContext__doc__}, |
| |
| static PyObject * |
| _decimal_IEEEContext_impl(PyObject *module, Py_ssize_t bits); |
| |
| static PyObject * |
| _decimal_IEEEContext(PyObject *module, PyObject *arg) |
| { |
| PyObject *return_value = NULL; |
| Py_ssize_t bits; |
| |
| { |
| Py_ssize_t ival = -1; |
| PyObject *iobj = _PyNumber_Index(arg); |
| if (iobj != NULL) { |
| ival = PyLong_AsSsize_t(iobj); |
| Py_DECREF(iobj); |
| } |
| if (ival == -1 && PyErr_Occurred()) { |
| goto exit; |
| } |
| bits = ival; |
| } |
| return_value = _decimal_IEEEContext_impl(module, bits); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_copy__doc__, |
| "copy($self, /)\n" |
| "--\n" |
| "\n" |
| "Return a duplicate of the context with all flags cleared."); |
| |
| #define _DECIMAL_CONTEXT_COPY_METHODDEF \ |
| {"copy", _PyCFunction_CAST(_decimal_Context_copy), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_copy__doc__}, |
| |
| static PyObject * |
| _decimal_Context_copy_impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Context_copy(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "copy() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Context_copy_impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Context___copy____doc__, |
| "__copy__($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define _DECIMAL_CONTEXT___COPY___METHODDEF \ |
| {"__copy__", _PyCFunction_CAST(_decimal_Context___copy__), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context___copy____doc__}, |
| |
| static PyObject * |
| _decimal_Context___copy___impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Context___copy__(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "__copy__() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Context___copy___impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Context___reduce____doc__, |
| "__reduce__($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define _DECIMAL_CONTEXT___REDUCE___METHODDEF \ |
| {"__reduce__", _PyCFunction_CAST(_decimal_Context___reduce__), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context___reduce____doc__}, |
| |
| static PyObject * |
| _decimal_Context___reduce___impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Context___reduce__(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "__reduce__() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Context___reduce___impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_getcontext__doc__, |
| "getcontext($module, /)\n" |
| "--\n" |
| "\n" |
| "Get the current default context."); |
| |
| #define _DECIMAL_GETCONTEXT_METHODDEF \ |
| {"getcontext", (PyCFunction)_decimal_getcontext, METH_NOARGS, _decimal_getcontext__doc__}, |
| |
| static PyObject * |
| _decimal_getcontext_impl(PyObject *module); |
| |
| static PyObject * |
| _decimal_getcontext(PyObject *module, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_getcontext_impl(module); |
| } |
| |
| PyDoc_STRVAR(_decimal_setcontext__doc__, |
| "setcontext($module, context, /)\n" |
| "--\n" |
| "\n" |
| "Set a new default context."); |
| |
| #define _DECIMAL_SETCONTEXT_METHODDEF \ |
| {"setcontext", (PyCFunction)_decimal_setcontext, METH_O, _decimal_setcontext__doc__}, |
| |
| PyDoc_STRVAR(_decimal_localcontext__doc__, |
| "localcontext($module, /, ctx=None, **kwargs)\n" |
| "--\n" |
| "\n" |
| "Return a context manager for a copy of the supplied context.\n" |
| "\n" |
| "That will set the default context to a copy of ctx on entry to the\n" |
| "with-statement and restore the previous default context when exiting\n" |
| "the with-statement. If no context is specified, a copy of the current\n" |
| "default context is used."); |
| |
| #define _DECIMAL_LOCALCONTEXT_METHODDEF \ |
| {"localcontext", _PyCFunction_CAST(_decimal_localcontext), METH_FASTCALL|METH_KEYWORDS, _decimal_localcontext__doc__}, |
| |
| static PyObject * |
| _decimal_localcontext_impl(PyObject *module, PyObject *local, PyObject *prec, |
| PyObject *rounding, PyObject *Emin, |
| PyObject *Emax, PyObject *capitals, |
| PyObject *clamp, PyObject *flags, PyObject *traps); |
| |
| static PyObject * |
| _decimal_localcontext(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 9 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(ctx), &_Py_ID(prec), &_Py_ID(rounding), &_Py_ID(Emin), &_Py_ID(Emax), &_Py_ID(capitals), &_Py_ID(clamp), &_Py_ID(flags), &_Py_ID(traps), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"ctx", "prec", "rounding", "Emin", "Emax", "capitals", "clamp", "flags", "traps", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "localcontext", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[9]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *local = Py_None; |
| PyObject *prec = Py_None; |
| PyObject *rounding = Py_None; |
| PyObject *Emin = Py_None; |
| PyObject *Emax = Py_None; |
| PyObject *capitals = Py_None; |
| PyObject *clamp = Py_None; |
| PyObject *flags = Py_None; |
| PyObject *traps = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| if (args[0]) { |
| local = args[0]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| skip_optional_pos: |
| if (!noptargs) { |
| goto skip_optional_kwonly; |
| } |
| if (args[1]) { |
| prec = args[1]; |
| if (!--noptargs) { |
| goto skip_optional_kwonly; |
| } |
| } |
| if (args[2]) { |
| rounding = args[2]; |
| if (!--noptargs) { |
| goto skip_optional_kwonly; |
| } |
| } |
| if (args[3]) { |
| Emin = args[3]; |
| if (!--noptargs) { |
| goto skip_optional_kwonly; |
| } |
| } |
| if (args[4]) { |
| Emax = args[4]; |
| if (!--noptargs) { |
| goto skip_optional_kwonly; |
| } |
| } |
| if (args[5]) { |
| capitals = args[5]; |
| if (!--noptargs) { |
| goto skip_optional_kwonly; |
| } |
| } |
| if (args[6]) { |
| clamp = args[6]; |
| if (!--noptargs) { |
| goto skip_optional_kwonly; |
| } |
| } |
| if (args[7]) { |
| flags = args[7]; |
| if (!--noptargs) { |
| goto skip_optional_kwonly; |
| } |
| } |
| traps = args[8]; |
| skip_optional_kwonly: |
| return_value = _decimal_localcontext_impl(module, local, prec, rounding, Emin, Emax, capitals, clamp, flags, traps); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_from_float__doc__, |
| "from_float($type, f, /)\n" |
| "--\n" |
| "\n" |
| "Class method that converts a float to a decimal number, exactly.\n" |
| "\n" |
| "Since 0.1 is not exactly representable in binary floating point,\n" |
| "Decimal.from_float(0.1) is not the same as Decimal(\'0.1\').\n" |
| "\n" |
| " >>> Decimal.from_float(0.1)\n" |
| " Decimal(\'0.1000000000000000055511151231257827021181583404541015625\')\n" |
| " >>> Decimal.from_float(float(\'nan\'))\n" |
| " Decimal(\'NaN\')\n" |
| " >>> Decimal.from_float(float(\'inf\'))\n" |
| " Decimal(\'Infinity\')\n" |
| " >>> Decimal.from_float(float(\'-inf\'))\n" |
| " Decimal(\'-Infinity\')"); |
| |
| #define _DECIMAL_DECIMAL_FROM_FLOAT_METHODDEF \ |
| {"from_float", _PyCFunction_CAST(_decimal_Decimal_from_float), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, _decimal_Decimal_from_float__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_from_float_impl(PyTypeObject *type, PyTypeObject *cls, |
| PyObject *pyfloat); |
| |
| static PyObject * |
| _decimal_Decimal_from_float(PyObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "from_float", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *pyfloat; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| pyfloat = args[0]; |
| return_value = _decimal_Decimal_from_float_impl((PyTypeObject *)type, cls, pyfloat); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_from_number__doc__, |
| "from_number($type, number, /)\n" |
| "--\n" |
| "\n" |
| "Class method that converts a real number to a decimal number, exactly.\n" |
| "\n" |
| " >>> Decimal.from_number(314) # int\n" |
| " Decimal(\'314\')\n" |
| " >>> Decimal.from_number(0.1) # float\n" |
| " Decimal(\'0.1000000000000000055511151231257827021181583404541015625\')\n" |
| " >>> Decimal.from_number(Decimal(\'3.14\')) # another decimal instance\n" |
| " Decimal(\'3.14\')"); |
| |
| #define _DECIMAL_DECIMAL_FROM_NUMBER_METHODDEF \ |
| {"from_number", _PyCFunction_CAST(_decimal_Decimal_from_number), METH_METHOD|METH_FASTCALL|METH_KEYWORDS|METH_CLASS, _decimal_Decimal_from_number__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_from_number_impl(PyTypeObject *type, PyTypeObject *cls, |
| PyObject *number); |
| |
| static PyObject * |
| _decimal_Decimal_from_number(PyObject *type, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "from_number", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *number; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| number = args[0]; |
| return_value = _decimal_Decimal_from_number_impl((PyTypeObject *)type, cls, number); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_create_decimal_from_float__doc__, |
| "create_decimal_from_float($self, f, /)\n" |
| "--\n" |
| "\n" |
| "Create a new Decimal instance from float f.\n" |
| "\n" |
| "Unlike the Decimal.from_float() class method, this function observes\n" |
| "the context limits."); |
| |
| #define _DECIMAL_CONTEXT_CREATE_DECIMAL_FROM_FLOAT_METHODDEF \ |
| {"create_decimal_from_float", _PyCFunction_CAST(_decimal_Context_create_decimal_from_float), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_create_decimal_from_float__doc__}, |
| |
| static PyObject * |
| _decimal_Context_create_decimal_from_float_impl(PyObject *context, |
| PyTypeObject *cls, |
| PyObject *f); |
| |
| static PyObject * |
| _decimal_Context_create_decimal_from_float(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "create_decimal_from_float", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *f; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| f = args[0]; |
| return_value = _decimal_Context_create_decimal_from_float_impl(context, cls, f); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(dec_new__doc__, |
| "Decimal(value=\'0\', context=None)\n" |
| "--\n" |
| "\n" |
| "Construct a new Decimal object.\n" |
| "\n" |
| "value can be an integer, string, tuple, or another Decimal object. If\n" |
| "no value is given, return Decimal(\'0\'). The context does not affect\n" |
| "the conversion and is only passed to determine if the InvalidOperation\n" |
| "trap is active."); |
| |
| static PyObject * |
| dec_new_impl(PyTypeObject *type, PyObject *value, PyObject *context); |
| |
| static PyObject * |
| dec_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(value), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"value", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "Decimal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject * const *fastargs; |
| Py_ssize_t nargs = PyTuple_GET_SIZE(args); |
| Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0; |
| PyObject *value = NULL; |
| PyObject *context = Py_None; |
| |
| fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!fastargs) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| if (fastargs[0]) { |
| value = fastargs[0]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| context = fastargs[1]; |
| skip_optional_pos: |
| return_value = dec_new_impl(type, value, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_create_decimal__doc__, |
| "create_decimal($self, num=\'0\', /)\n" |
| "--\n" |
| "\n" |
| "Create a new Decimal instance from num, using self as the context.\n" |
| "\n" |
| "Unlike the Decimal constructor, this function observes the context\n" |
| "limits."); |
| |
| #define _DECIMAL_CONTEXT_CREATE_DECIMAL_METHODDEF \ |
| {"create_decimal", _PyCFunction_CAST(_decimal_Context_create_decimal), METH_FASTCALL, _decimal_Context_create_decimal__doc__}, |
| |
| static PyObject * |
| _decimal_Context_create_decimal_impl(PyObject *context, PyObject *num); |
| |
| static PyObject * |
| _decimal_Context_create_decimal(PyObject *context, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| PyObject *num = NULL; |
| |
| if (!_PyArg_CheckPositional("create_decimal", nargs, 0, 1)) { |
| goto exit; |
| } |
| if (nargs < 1) { |
| goto skip_optional; |
| } |
| num = args[0]; |
| skip_optional: |
| return_value = _decimal_Context_create_decimal_impl(context, num); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___format____doc__, |
| "__format__($self, format_spec, override=<unrepresentable>, /)\n" |
| "--\n" |
| "\n" |
| "Formats the Decimal according to format_spec."); |
| |
| #define _DECIMAL_DECIMAL___FORMAT___METHODDEF \ |
| {"__format__", _PyCFunction_CAST(_decimal_Decimal___format__), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal___format____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___format___impl(PyObject *dec, PyTypeObject *cls, |
| PyObject *fmtarg, PyObject *override); |
| |
| static PyObject * |
| _decimal_Decimal___format__(PyObject *dec, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "__format__", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *fmtarg; |
| PyObject *override = NULL; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!PyUnicode_Check(args[0])) { |
| _PyArg_BadArgument("__format__", "argument 1", "str", args[0]); |
| goto exit; |
| } |
| fmtarg = args[0]; |
| if (nargs < 2) { |
| goto skip_optional_posonly; |
| } |
| override = args[1]; |
| skip_optional_posonly: |
| return_value = _decimal_Decimal___format___impl(dec, cls, fmtarg, override); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_as_integer_ratio__doc__, |
| "as_integer_ratio($self, /)\n" |
| "--\n" |
| "\n" |
| "Return a pair of integers whose ratio is exactly equal to the original.\n" |
| "\n" |
| "The ratio is in lowest terms and with a positive denominator.\n" |
| "Raise OverflowError on infinities and a ValueError on NaNs."); |
| |
| #define _DECIMAL_DECIMAL_AS_INTEGER_RATIO_METHODDEF \ |
| {"as_integer_ratio", _PyCFunction_CAST(_decimal_Decimal_as_integer_ratio), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_as_integer_ratio__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_as_integer_ratio_impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal_as_integer_ratio(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "as_integer_ratio() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal_as_integer_ratio_impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_to_integral_value__doc__, |
| "to_integral_value($self, /, rounding=None, context=None)\n" |
| "--\n" |
| "\n" |
| "Round to the nearest integer without signaling Inexact or Rounded.\n" |
| "\n" |
| "The rounding mode is determined by the rounding parameter if given,\n" |
| "else by the given context. If neither parameter is given, then the\n" |
| "rounding mode of the current default context is used."); |
| |
| #define _DECIMAL_DECIMAL_TO_INTEGRAL_VALUE_METHODDEF \ |
| {"to_integral_value", _PyCFunction_CAST(_decimal_Decimal_to_integral_value), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_to_integral_value__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_to_integral_value_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *rounding, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_to_integral_value(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(rounding), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"rounding", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_integral_value", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *rounding = Py_None; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| if (args[0]) { |
| rounding = args[0]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_to_integral_value_impl(self, cls, rounding, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_to_integral__doc__, |
| "to_integral($self, /, rounding=None, context=None)\n" |
| "--\n" |
| "\n" |
| "Identical to the to_integral_value() method.\n" |
| "\n" |
| "The to_integral() name has been kept for compatibility with older\n" |
| "versions."); |
| |
| #define _DECIMAL_DECIMAL_TO_INTEGRAL_METHODDEF \ |
| {"to_integral", _PyCFunction_CAST(_decimal_Decimal_to_integral), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_to_integral__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_to_integral_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *rounding, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_to_integral(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(rounding), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"rounding", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_integral", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *rounding = Py_None; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| if (args[0]) { |
| rounding = args[0]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_to_integral_impl(self, cls, rounding, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_to_integral_exact__doc__, |
| "to_integral_exact($self, /, rounding=None, context=None)\n" |
| "--\n" |
| "\n" |
| "Round to the nearest integer.\n" |
| "\n" |
| "Decimal.to_integral_exact() signals Inexact or Rounded as appropriate\n" |
| "if rounding occurs. The rounding mode is determined by the rounding\n" |
| "parameter if given, else by the given context. If neither parameter is\n" |
| "given, then the rounding mode of the current default context is used."); |
| |
| #define _DECIMAL_DECIMAL_TO_INTEGRAL_EXACT_METHODDEF \ |
| {"to_integral_exact", _PyCFunction_CAST(_decimal_Decimal_to_integral_exact), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_to_integral_exact__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_to_integral_exact_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *rounding, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_to_integral_exact(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(rounding), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"rounding", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_integral_exact", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *rounding = Py_None; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| if (args[0]) { |
| rounding = args[0]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_to_integral_exact_impl(self, cls, rounding, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___round____doc__, |
| "__round__($self, ndigits=<unrepresentable>, /)\n" |
| "--\n" |
| "\n" |
| "Return the Integral closest to self, rounding half toward even."); |
| |
| #define _DECIMAL_DECIMAL___ROUND___METHODDEF \ |
| {"__round__", _PyCFunction_CAST(_decimal_Decimal___round__), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal___round____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___round___impl(PyObject *self, PyTypeObject *cls, |
| PyObject *ndigits); |
| |
| static PyObject * |
| _decimal_Decimal___round__(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "__round__", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *ndigits = NULL; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (nargs < 1) { |
| goto skip_optional_posonly; |
| } |
| ndigits = args[0]; |
| skip_optional_posonly: |
| return_value = _decimal_Decimal___round___impl(self, cls, ndigits); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_as_tuple__doc__, |
| "as_tuple($self, /)\n" |
| "--\n" |
| "\n" |
| "Return a tuple representation of the number."); |
| |
| #define _DECIMAL_DECIMAL_AS_TUPLE_METHODDEF \ |
| {"as_tuple", _PyCFunction_CAST(_decimal_Decimal_as_tuple), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_as_tuple__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_as_tuple_impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal_as_tuple(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "as_tuple() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal_as_tuple_impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_exp__doc__, |
| "exp($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return the value of the (natural) exponential function e**x.\n" |
| "\n" |
| "The function always uses the ROUND_HALF_EVEN mode and the result is\n" |
| "correctly rounded."); |
| |
| #define _DECIMAL_DECIMAL_EXP_METHODDEF \ |
| {"exp", _PyCFunction_CAST(_decimal_Decimal_exp), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_exp__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_exp_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_exp(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "exp", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_exp_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_ln__doc__, |
| "ln($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return the natural (base e) logarithm of the operand.\n" |
| "\n" |
| "The function always uses the ROUND_HALF_EVEN mode and the result is\n" |
| "correctly rounded."); |
| |
| #define _DECIMAL_DECIMAL_LN_METHODDEF \ |
| {"ln", _PyCFunction_CAST(_decimal_Decimal_ln), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_ln__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_ln_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_ln(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "ln", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_ln_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_log10__doc__, |
| "log10($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return the base ten logarithm of the operand.\n" |
| "\n" |
| "The function always uses the ROUND_HALF_EVEN mode and the result is\n" |
| "correctly rounded."); |
| |
| #define _DECIMAL_DECIMAL_LOG10_METHODDEF \ |
| {"log10", _PyCFunction_CAST(_decimal_Decimal_log10), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_log10__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_log10_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_log10(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "log10", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_log10_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_next_minus__doc__, |
| "next_minus($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Returns the largest representable number smaller than itself."); |
| |
| #define _DECIMAL_DECIMAL_NEXT_MINUS_METHODDEF \ |
| {"next_minus", _PyCFunction_CAST(_decimal_Decimal_next_minus), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_next_minus__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_next_minus_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_next_minus(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "next_minus", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_next_minus_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_next_plus__doc__, |
| "next_plus($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Returns the smallest representable number larger than itself."); |
| |
| #define _DECIMAL_DECIMAL_NEXT_PLUS_METHODDEF \ |
| {"next_plus", _PyCFunction_CAST(_decimal_Decimal_next_plus), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_next_plus__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_next_plus_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_next_plus(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "next_plus", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_next_plus_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_normalize__doc__, |
| "normalize($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Normalize the number by stripping trailing 0s\n" |
| "\n" |
| "This also change anything equal to 0 to 0e0. Used for producing\n" |
| "canonical values for members of an equivalence class. For example,\n" |
| "Decimal(\'32.100\') and Decimal(\'0.321000e+2\') both normalize to\n" |
| "the equivalent value Decimal(\'32.1\')."); |
| |
| #define _DECIMAL_DECIMAL_NORMALIZE_METHODDEF \ |
| {"normalize", _PyCFunction_CAST(_decimal_Decimal_normalize), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_normalize__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_normalize_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_normalize(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "normalize", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_normalize_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_sqrt__doc__, |
| "sqrt($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return the square root of the argument to full precision.\n" |
| "\n" |
| "The result is correctly rounded using the ROUND_HALF_EVEN rounding mode."); |
| |
| #define _DECIMAL_DECIMAL_SQRT_METHODDEF \ |
| {"sqrt", _PyCFunction_CAST(_decimal_Decimal_sqrt), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_sqrt__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_sqrt_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_sqrt(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "sqrt", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_sqrt_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_compare__doc__, |
| "compare($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Compare self to other.\n" |
| "\n" |
| "Return a decimal value:\n" |
| "\n" |
| " a or b is a NaN ==> Decimal(\'NaN\')\n" |
| " a < b ==> Decimal(\'-1\')\n" |
| " a == b ==> Decimal(\'0\')\n" |
| " a > b ==> Decimal(\'1\')"); |
| |
| #define _DECIMAL_DECIMAL_COMPARE_METHODDEF \ |
| {"compare", _PyCFunction_CAST(_decimal_Decimal_compare), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_compare__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_compare_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_compare(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_compare_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_compare_signal__doc__, |
| "compare_signal($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Identical to compare, except that all NaNs signal."); |
| |
| #define _DECIMAL_DECIMAL_COMPARE_SIGNAL_METHODDEF \ |
| {"compare_signal", _PyCFunction_CAST(_decimal_Decimal_compare_signal), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_compare_signal__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_compare_signal_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_compare_signal(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare_signal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_compare_signal_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_max__doc__, |
| "max($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Maximum of self and other.\n" |
| "\n" |
| "If one operand is a quiet NaN and the other is numeric, the numeric\n" |
| "operand is returned."); |
| |
| #define _DECIMAL_DECIMAL_MAX_METHODDEF \ |
| {"max", _PyCFunction_CAST(_decimal_Decimal_max), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_max__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_max_impl(PyObject *self, PyTypeObject *cls, PyObject *other, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_max(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "max", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_max_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_max_mag__doc__, |
| "max_mag($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "As the max() method, but compares the absolute values of the operands."); |
| |
| #define _DECIMAL_DECIMAL_MAX_MAG_METHODDEF \ |
| {"max_mag", _PyCFunction_CAST(_decimal_Decimal_max_mag), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_max_mag__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_max_mag_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_max_mag(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "max_mag", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_max_mag_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_min__doc__, |
| "min($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Minimum of self and other.\n" |
| "\n" |
| "If one operand is a quiet NaN and the other is numeric, the numeric\n" |
| "operand is returned."); |
| |
| #define _DECIMAL_DECIMAL_MIN_METHODDEF \ |
| {"min", _PyCFunction_CAST(_decimal_Decimal_min), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_min__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_min_impl(PyObject *self, PyTypeObject *cls, PyObject *other, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_min(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "min", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_min_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_min_mag__doc__, |
| "min_mag($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "As the min() method, but compares the absolute values of the operands."); |
| |
| #define _DECIMAL_DECIMAL_MIN_MAG_METHODDEF \ |
| {"min_mag", _PyCFunction_CAST(_decimal_Decimal_min_mag), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_min_mag__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_min_mag_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_min_mag(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "min_mag", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_min_mag_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_next_toward__doc__, |
| "next_toward($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Returns the number closest to self, in the direction towards other.\n" |
| "\n" |
| "If the two operands are unequal, return the number closest to the first\n" |
| "operand in the direction of the second operand. If both operands are\n" |
| "numerically equal, return a copy of the first operand with the sign set\n" |
| "to be the same as the sign of the second operand."); |
| |
| #define _DECIMAL_DECIMAL_NEXT_TOWARD_METHODDEF \ |
| {"next_toward", _PyCFunction_CAST(_decimal_Decimal_next_toward), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_next_toward__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_next_toward_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_next_toward(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "next_toward", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_next_toward_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_remainder_near__doc__, |
| "remainder_near($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Return the remainder from dividing self by other.\n" |
| "\n" |
| "This differs from self % other in that the sign of the remainder is\n" |
| "chosen so as to minimize its absolute value. More precisely, the return\n" |
| "value is self - n * other where n is the integer nearest to the exact\n" |
| "value of self / other, and if two integers are equally near then the\n" |
| "even one is chosen.\n" |
| "\n" |
| "If the result is zero then its sign will be the sign of self."); |
| |
| #define _DECIMAL_DECIMAL_REMAINDER_NEAR_METHODDEF \ |
| {"remainder_near", _PyCFunction_CAST(_decimal_Decimal_remainder_near), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_remainder_near__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_remainder_near_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_remainder_near(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "remainder_near", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_remainder_near_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_fma__doc__, |
| "fma($self, /, other, third, context=None)\n" |
| "--\n" |
| "\n" |
| "Fused multiply-add.\n" |
| "\n" |
| "Return self*other+third with no rounding of the intermediate product\n" |
| "self*other.\n" |
| "\n" |
| " >>> Decimal(2).fma(3, 5)\n" |
| " Decimal(\'11\')"); |
| |
| #define _DECIMAL_DECIMAL_FMA_METHODDEF \ |
| {"fma", _PyCFunction_CAST(_decimal_Decimal_fma), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_fma__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_fma_impl(PyObject *self, PyTypeObject *cls, PyObject *other, |
| PyObject *third, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_fma(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 3 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(third), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "third", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "fma", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[3]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2; |
| PyObject *other; |
| PyObject *third; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| third = args[1]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[2]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_fma_impl(self, cls, other, third, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_canonical__doc__, |
| "is_canonical($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is canonical and False otherwise.\n" |
| "\n" |
| "Currently, a Decimal instance is always canonical, so this operation\n" |
| "always returns True."); |
| |
| #define _DECIMAL_DECIMAL_IS_CANONICAL_METHODDEF \ |
| {"is_canonical", (PyCFunction)_decimal_Decimal_is_canonical, METH_NOARGS, _decimal_Decimal_is_canonical__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_canonical_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_canonical(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_canonical_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_finite__doc__, |
| "is_finite($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is a finite number, and False otherwise."); |
| |
| #define _DECIMAL_DECIMAL_IS_FINITE_METHODDEF \ |
| {"is_finite", (PyCFunction)_decimal_Decimal_is_finite, METH_NOARGS, _decimal_Decimal_is_finite__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_finite_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_finite(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_finite_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_infinite__doc__, |
| "is_infinite($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is infinite, and False otherwise."); |
| |
| #define _DECIMAL_DECIMAL_IS_INFINITE_METHODDEF \ |
| {"is_infinite", (PyCFunction)_decimal_Decimal_is_infinite, METH_NOARGS, _decimal_Decimal_is_infinite__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_infinite_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_infinite(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_infinite_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_nan__doc__, |
| "is_nan($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is a (quiet or signaling) NaN, else False."); |
| |
| #define _DECIMAL_DECIMAL_IS_NAN_METHODDEF \ |
| {"is_nan", (PyCFunction)_decimal_Decimal_is_nan, METH_NOARGS, _decimal_Decimal_is_nan__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_nan_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_nan(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_nan_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_qnan__doc__, |
| "is_qnan($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is a quiet NaN, and False otherwise."); |
| |
| #define _DECIMAL_DECIMAL_IS_QNAN_METHODDEF \ |
| {"is_qnan", (PyCFunction)_decimal_Decimal_is_qnan, METH_NOARGS, _decimal_Decimal_is_qnan__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_qnan_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_qnan(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_qnan_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_snan__doc__, |
| "is_snan($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is a signaling NaN and False otherwise."); |
| |
| #define _DECIMAL_DECIMAL_IS_SNAN_METHODDEF \ |
| {"is_snan", (PyCFunction)_decimal_Decimal_is_snan, METH_NOARGS, _decimal_Decimal_is_snan__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_snan_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_snan(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_snan_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_signed__doc__, |
| "is_signed($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument has a negative sign and False otherwise.\n" |
| "\n" |
| "Note that both zeros and NaNs can carry signs."); |
| |
| #define _DECIMAL_DECIMAL_IS_SIGNED_METHODDEF \ |
| {"is_signed", (PyCFunction)_decimal_Decimal_is_signed, METH_NOARGS, _decimal_Decimal_is_signed__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_signed_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_signed(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_signed_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_zero__doc__, |
| "is_zero($self, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is a zero and False otherwise."); |
| |
| #define _DECIMAL_DECIMAL_IS_ZERO_METHODDEF \ |
| {"is_zero", (PyCFunction)_decimal_Decimal_is_zero, METH_NOARGS, _decimal_Decimal_is_zero__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_zero_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_is_zero(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_is_zero_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_normal__doc__, |
| "is_normal($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is a normal number and False otherwise.\n" |
| "\n" |
| "Normal number is a finite nonzero number, which is not subnormal."); |
| |
| #define _DECIMAL_DECIMAL_IS_NORMAL_METHODDEF \ |
| {"is_normal", _PyCFunction_CAST(_decimal_Decimal_is_normal), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_is_normal__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_normal_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_is_normal(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_normal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_is_normal_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_is_subnormal__doc__, |
| "is_subnormal($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return True if the argument is subnormal, and False otherwise.\n" |
| "\n" |
| "A number is subnormal if it is non-zero, finite, and has an adjusted\n" |
| "exponent less than Emin."); |
| |
| #define _DECIMAL_DECIMAL_IS_SUBNORMAL_METHODDEF \ |
| {"is_subnormal", _PyCFunction_CAST(_decimal_Decimal_is_subnormal), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_is_subnormal__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_is_subnormal_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_is_subnormal(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_subnormal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_is_subnormal_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_adjusted__doc__, |
| "adjusted($self, /)\n" |
| "--\n" |
| "\n" |
| "Return the adjusted exponent (exp + digits - 1) of the number."); |
| |
| #define _DECIMAL_DECIMAL_ADJUSTED_METHODDEF \ |
| {"adjusted", (PyCFunction)_decimal_Decimal_adjusted, METH_NOARGS, _decimal_Decimal_adjusted__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_adjusted_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_adjusted(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_adjusted_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_canonical__doc__, |
| "canonical($self, /)\n" |
| "--\n" |
| "\n" |
| "Return the canonical encoding of the argument.\n" |
| "\n" |
| "Currently, the encoding of a Decimal instance is always canonical,\n" |
| "so this operation returns its argument unchanged."); |
| |
| #define _DECIMAL_DECIMAL_CANONICAL_METHODDEF \ |
| {"canonical", (PyCFunction)_decimal_Decimal_canonical, METH_NOARGS, _decimal_Decimal_canonical__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_canonical_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_canonical(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_canonical_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_conjugate__doc__, |
| "conjugate($self, /)\n" |
| "--\n" |
| "\n" |
| "Return self."); |
| |
| #define _DECIMAL_DECIMAL_CONJUGATE_METHODDEF \ |
| {"conjugate", (PyCFunction)_decimal_Decimal_conjugate, METH_NOARGS, _decimal_Decimal_conjugate__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_conjugate_impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal_conjugate(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal_conjugate_impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_radix__doc__, |
| "radix($self, /)\n" |
| "--\n" |
| "\n" |
| "Return Decimal(10).\n" |
| "\n" |
| "This is the radix (base) in which the Decimal class does\n" |
| "all its arithmetic. Included for compatibility with the specification."); |
| |
| #define _DECIMAL_DECIMAL_RADIX_METHODDEF \ |
| {"radix", _PyCFunction_CAST(_decimal_Decimal_radix), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_radix__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_radix_impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal_radix(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "radix() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal_radix_impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_copy_abs__doc__, |
| "copy_abs($self, /)\n" |
| "--\n" |
| "\n" |
| "Return the absolute value of the argument.\n" |
| "\n" |
| "This operation is unaffected by context and is quiet: no flags are\n" |
| "changed and no rounding is performed."); |
| |
| #define _DECIMAL_DECIMAL_COPY_ABS_METHODDEF \ |
| {"copy_abs", _PyCFunction_CAST(_decimal_Decimal_copy_abs), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_copy_abs__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_copy_abs_impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal_copy_abs(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "copy_abs() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal_copy_abs_impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_copy_negate__doc__, |
| "copy_negate($self, /)\n" |
| "--\n" |
| "\n" |
| "Return the negation of the argument.\n" |
| "\n" |
| "This operation is unaffected by context and is quiet: no flags are\n" |
| "changed and no rounding is performed."); |
| |
| #define _DECIMAL_DECIMAL_COPY_NEGATE_METHODDEF \ |
| {"copy_negate", _PyCFunction_CAST(_decimal_Decimal_copy_negate), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_copy_negate__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_copy_negate_impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal_copy_negate(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "copy_negate() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal_copy_negate_impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_logical_invert__doc__, |
| "logical_invert($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Invert all its digits.\n" |
| "\n" |
| "The self must be logical number."); |
| |
| #define _DECIMAL_DECIMAL_LOGICAL_INVERT_METHODDEF \ |
| {"logical_invert", _PyCFunction_CAST(_decimal_Decimal_logical_invert), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_logical_invert__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_logical_invert_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_logical_invert(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_invert", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_logical_invert_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_logb__doc__, |
| "logb($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return the adjusted exponent of the operand as a Decimal instance.\n" |
| "\n" |
| "If the operand is a zero, then Decimal(\'-Infinity\') is returned and the\n" |
| "DivisionByZero condition is raised. If the operand is an infinity then\n" |
| "Decimal(\'Infinity\') is returned."); |
| |
| #define _DECIMAL_DECIMAL_LOGB_METHODDEF \ |
| {"logb", _PyCFunction_CAST(_decimal_Decimal_logb), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_logb__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_logb_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_logb(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logb", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_logb_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_number_class__doc__, |
| "number_class($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Return a string describing the class of the operand.\n" |
| "\n" |
| "The returned value is one of the following ten strings:\n" |
| "\n" |
| " * \'-Infinity\', indicating that the operand is negative infinity.\n" |
| " * \'-Normal\', indicating that the operand is a negative normal\n" |
| " number.\n" |
| " * \'-Subnormal\', indicating that the operand is negative and\n" |
| " subnormal.\n" |
| " * \'-Zero\', indicating that the operand is a negative zero.\n" |
| " * \'+Zero\', indicating that the operand is a positive zero.\n" |
| " * \'+Subnormal\', indicating that the operand is positive and\n" |
| " subnormal.\n" |
| " * \'+Normal\', indicating that the operand is a positive normal\n" |
| " number.\n" |
| " * \'+Infinity\', indicating that the operand is positive infinity.\n" |
| " * \'NaN\', indicating that the operand is a quiet NaN (Not a Number).\n" |
| " * \'sNaN\', indicating that the operand is a signaling NaN."); |
| |
| #define _DECIMAL_DECIMAL_NUMBER_CLASS_METHODDEF \ |
| {"number_class", _PyCFunction_CAST(_decimal_Decimal_number_class), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_number_class__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_number_class_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_number_class(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "number_class", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_number_class_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_to_eng_string__doc__, |
| "to_eng_string($self, /, context=None)\n" |
| "--\n" |
| "\n" |
| "Convert to an engineering-type string.\n" |
| "\n" |
| "Engineering notation has an exponent which is a multiple of 3, so there\n" |
| "are up to 3 digits left of the decimal place. For example,\n" |
| "Decimal(\'123E+1\') is converted to Decimal(\'1.23E+3\').\n" |
| "\n" |
| "The value of context.capitals determines whether the exponent sign is\n" |
| "lower or upper case. Otherwise, the context does not affect the\n" |
| "operation."); |
| |
| #define _DECIMAL_DECIMAL_TO_ENG_STRING_METHODDEF \ |
| {"to_eng_string", _PyCFunction_CAST(_decimal_Decimal_to_eng_string), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_to_eng_string__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_to_eng_string_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_to_eng_string(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 1 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_eng_string", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 0, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[0]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_to_eng_string_impl(self, cls, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_compare_total__doc__, |
| "compare_total($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Compare two operands using their abstract representation.\n" |
| "\n" |
| "Similar to the compare() method, but the result\n" |
| "gives a total ordering on Decimal instances. Two Decimal instances with\n" |
| "the same numeric value but different representations compare unequal\n" |
| "in this ordering:\n" |
| "\n" |
| " >>> Decimal(\'12.0\').compare_total(Decimal(\'12\'))\n" |
| " Decimal(\'-1\')\n" |
| "\n" |
| "Quiet and signaling NaNs are also included in the total ordering. The\n" |
| "result of this function is Decimal(\'0\') if both operands have the same\n" |
| "representation, Decimal(\'-1\') if the first operand is lower in the\n" |
| "total order than the second, and Decimal(\'1\') if the first operand is\n" |
| "higher in the total order than the second operand. See the\n" |
| "specification for details of the total order.\n" |
| "\n" |
| "This operation is unaffected by context and is quiet: no flags are\n" |
| "changed and no rounding is performed. As an exception, the C version\n" |
| "may raise InvalidOperation if the second operand cannot be converted\n" |
| "exactly."); |
| |
| #define _DECIMAL_DECIMAL_COMPARE_TOTAL_METHODDEF \ |
| {"compare_total", _PyCFunction_CAST(_decimal_Decimal_compare_total), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_compare_total__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_compare_total_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_compare_total(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare_total", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_compare_total_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_compare_total_mag__doc__, |
| "compare_total_mag($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "As compare_total(), but ignores the sign of each operand.\n" |
| "\n" |
| "x.compare_total_mag(y) is equivalent to\n" |
| "x.copy_abs().compare_total(y.copy_abs()).\n" |
| "\n" |
| "This operation is unaffected by context and is quiet: no flags are\n" |
| "changed and no rounding is performed. As an exception, the C version\n" |
| "may raise InvalidOperation if the second operand cannot be converted\n" |
| "exactly."); |
| |
| #define _DECIMAL_DECIMAL_COMPARE_TOTAL_MAG_METHODDEF \ |
| {"compare_total_mag", _PyCFunction_CAST(_decimal_Decimal_compare_total_mag), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_compare_total_mag__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_compare_total_mag_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_compare_total_mag(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare_total_mag", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_compare_total_mag_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_copy_sign__doc__, |
| "copy_sign($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Return a copy of *self* with the sign of *other*.\n" |
| "\n" |
| "For example:\n" |
| "\n" |
| " >>> Decimal(\'2.3\').copy_sign(Decimal(\'-1.5\'))\n" |
| " Decimal(\'-2.3\')\n" |
| "\n" |
| "This operation is unaffected by context and is quiet: no flags are\n" |
| "changed and no rounding is performed. As an exception, the C version\n" |
| "may raise InvalidOperation if the second operand cannot be converted\n" |
| "exactly."); |
| |
| #define _DECIMAL_DECIMAL_COPY_SIGN_METHODDEF \ |
| {"copy_sign", _PyCFunction_CAST(_decimal_Decimal_copy_sign), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_copy_sign__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_copy_sign_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_copy_sign(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "copy_sign", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_copy_sign_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_same_quantum__doc__, |
| "same_quantum($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Test whether self and other have the same exponent or both are NaN.\n" |
| "\n" |
| "This operation is unaffected by context and is quiet: no flags are\n" |
| "changed and no rounding is performed. As an exception, the C version\n" |
| "may raise InvalidOperation if the second operand cannot be converted\n" |
| "exactly."); |
| |
| #define _DECIMAL_DECIMAL_SAME_QUANTUM_METHODDEF \ |
| {"same_quantum", _PyCFunction_CAST(_decimal_Decimal_same_quantum), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_same_quantum__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_same_quantum_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_same_quantum(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "same_quantum", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_same_quantum_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_logical_and__doc__, |
| "logical_and($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Applies an \'and\' operation between self and other\'s digits.\n" |
| "\n" |
| "Both self and other must be logical numbers."); |
| |
| #define _DECIMAL_DECIMAL_LOGICAL_AND_METHODDEF \ |
| {"logical_and", _PyCFunction_CAST(_decimal_Decimal_logical_and), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_logical_and__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_logical_and_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_logical_and(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_and", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_logical_and_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_logical_or__doc__, |
| "logical_or($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Applies an \'or\' operation between self and other\'s digits.\n" |
| "\n" |
| "Both self and other must be logical numbers."); |
| |
| #define _DECIMAL_DECIMAL_LOGICAL_OR_METHODDEF \ |
| {"logical_or", _PyCFunction_CAST(_decimal_Decimal_logical_or), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_logical_or__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_logical_or_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_logical_or(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_or", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_logical_or_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_logical_xor__doc__, |
| "logical_xor($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Applies an \'xor\' operation between self and other\'s digits.\n" |
| "\n" |
| "Both self and other must be logical numbers."); |
| |
| #define _DECIMAL_DECIMAL_LOGICAL_XOR_METHODDEF \ |
| {"logical_xor", _PyCFunction_CAST(_decimal_Decimal_logical_xor), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_logical_xor__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_logical_xor_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_logical_xor(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_xor", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_logical_xor_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_rotate__doc__, |
| "rotate($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Returns a rotated copy of self\'s digits, value-of-other times.\n" |
| "\n" |
| "The second operand must be an integer in the range -precision through\n" |
| "precision. The absolute value of the second operand gives the number of\n" |
| "places to rotate. If the second operand is positive then rotation is to\n" |
| "the left; otherwise rotation is to the right. The coefficient of the\n" |
| "first operand is padded on the left with zeros to length precision if\n" |
| "necessary. The sign and exponent of the first operand are unchanged."); |
| |
| #define _DECIMAL_DECIMAL_ROTATE_METHODDEF \ |
| {"rotate", _PyCFunction_CAST(_decimal_Decimal_rotate), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_rotate__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_rotate_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_rotate(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "rotate", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_rotate_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_scaleb__doc__, |
| "scaleb($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Return the first operand with the exponent adjusted the second.\n" |
| "\n" |
| "Equivalently, return the first operand multiplied by 10**other. The\n" |
| "second operand must be an integer."); |
| |
| #define _DECIMAL_DECIMAL_SCALEB_METHODDEF \ |
| {"scaleb", _PyCFunction_CAST(_decimal_Decimal_scaleb), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_scaleb__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_scaleb_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_scaleb(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "scaleb", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_scaleb_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_shift__doc__, |
| "shift($self, /, other, context=None)\n" |
| "--\n" |
| "\n" |
| "Returns a shifted copy of self\'s digits, value-of-other times.\n" |
| "\n" |
| "The second operand must be an integer in the range -precision through\n" |
| "precision. The absolute value of the second operand gives the number\n" |
| "of places to shift. If the second operand is positive, then the shift\n" |
| "is to the left; otherwise the shift is to the right. Digits shifted\n" |
| "into the coefficient are zeros. The sign and exponent of the first\n" |
| "operand are unchanged."); |
| |
| #define _DECIMAL_DECIMAL_SHIFT_METHODDEF \ |
| {"shift", _PyCFunction_CAST(_decimal_Decimal_shift), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_shift__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_shift_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *other, PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_shift(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 2 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(other), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"other", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "shift", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *other; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| other = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| context = args[1]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_shift_impl(self, cls, other, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal_quantize__doc__, |
| "quantize($self, /, exp, rounding=None, context=None)\n" |
| "--\n" |
| "\n" |
| "Quantize *self* so its exponent is the same as that of *exp*.\n" |
| "\n" |
| "Return a value equal to *self* after rounding, with the exponent\n" |
| "of *exp*.\n" |
| "\n" |
| " >>> Decimal(\'1.41421356\').quantize(Decimal(\'1.000\'))\n" |
| " Decimal(\'1.414\')\n" |
| "\n" |
| "Unlike other operations, if the length of the coefficient after the\n" |
| "quantize operation would be greater than precision, then an\n" |
| "InvalidOperation is signaled. This guarantees that, unless there\n" |
| "is an error condition, the quantized exponent is always equal to\n" |
| "that of the right-hand operand.\n" |
| "\n" |
| "Also unlike other operations, quantize never signals Underflow, even\n" |
| "if the result is subnormal and inexact.\n" |
| "\n" |
| "If the exponent of the second operand is larger than that of the first,\n" |
| "then rounding may be necessary. In this case, the rounding mode is\n" |
| "determined by the rounding argument if given, else by the given context\n" |
| "argument; if neither argument is given, the rounding mode of the\n" |
| "current thread\'s context is used."); |
| |
| #define _DECIMAL_DECIMAL_QUANTIZE_METHODDEF \ |
| {"quantize", _PyCFunction_CAST(_decimal_Decimal_quantize), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal_quantize__doc__}, |
| |
| static PyObject * |
| _decimal_Decimal_quantize_impl(PyObject *self, PyTypeObject *cls, |
| PyObject *w, PyObject *rounding, |
| PyObject *context); |
| |
| static PyObject * |
| _decimal_Decimal_quantize(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 3 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { &_Py_ID(exp), &_Py_ID(rounding), &_Py_ID(context), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"exp", "rounding", "context", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "quantize", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[3]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; |
| PyObject *w; |
| PyObject *rounding = Py_None; |
| PyObject *context = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| w = args[0]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| if (args[1]) { |
| rounding = args[1]; |
| if (!--noptargs) { |
| goto skip_optional_pos; |
| } |
| } |
| context = args[2]; |
| skip_optional_pos: |
| return_value = _decimal_Decimal_quantize_impl(self, cls, w, rounding, context); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___ceil____doc__, |
| "__ceil__($self, /)\n" |
| "--\n" |
| "\n" |
| "Return the ceiling as an Integral."); |
| |
| #define _DECIMAL_DECIMAL___CEIL___METHODDEF \ |
| {"__ceil__", _PyCFunction_CAST(_decimal_Decimal___ceil__), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal___ceil____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___ceil___impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal___ceil__(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "__ceil__() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal___ceil___impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___complex____doc__, |
| "__complex__($self, /)\n" |
| "--\n" |
| "\n" |
| "Convert this value to exact type complex."); |
| |
| #define _DECIMAL_DECIMAL___COMPLEX___METHODDEF \ |
| {"__complex__", (PyCFunction)_decimal_Decimal___complex__, METH_NOARGS, _decimal_Decimal___complex____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___complex___impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal___complex__(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal___complex___impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___copy____doc__, |
| "__copy__($self, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define _DECIMAL_DECIMAL___COPY___METHODDEF \ |
| {"__copy__", (PyCFunction)_decimal_Decimal___copy__, METH_NOARGS, _decimal_Decimal___copy____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___copy___impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal___copy__(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal___copy___impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___deepcopy____doc__, |
| "__deepcopy__($self, memo, /)\n" |
| "--\n" |
| "\n"); |
| |
| #define _DECIMAL_DECIMAL___DEEPCOPY___METHODDEF \ |
| {"__deepcopy__", (PyCFunction)_decimal_Decimal___deepcopy__, METH_O, _decimal_Decimal___deepcopy____doc__}, |
| |
| PyDoc_STRVAR(_decimal_Decimal___floor____doc__, |
| "__floor__($self, /)\n" |
| "--\n" |
| "\n" |
| "Return the floor as an Integral."); |
| |
| #define _DECIMAL_DECIMAL___FLOOR___METHODDEF \ |
| {"__floor__", _PyCFunction_CAST(_decimal_Decimal___floor__), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal___floor____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___floor___impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal___floor__(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "__floor__() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal___floor___impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___reduce____doc__, |
| "__reduce__($self, /)\n" |
| "--\n" |
| "\n" |
| "Return state information for pickling."); |
| |
| #define _DECIMAL_DECIMAL___REDUCE___METHODDEF \ |
| {"__reduce__", (PyCFunction)_decimal_Decimal___reduce__, METH_NOARGS, _decimal_Decimal___reduce____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___reduce___impl(PyObject *self); |
| |
| static PyObject * |
| _decimal_Decimal___reduce__(PyObject *self, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal___reduce___impl(self); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___sizeof____doc__, |
| "__sizeof__($self, /)\n" |
| "--\n" |
| "\n" |
| "Returns size in memory, in bytes"); |
| |
| #define _DECIMAL_DECIMAL___SIZEOF___METHODDEF \ |
| {"__sizeof__", (PyCFunction)_decimal_Decimal___sizeof__, METH_NOARGS, _decimal_Decimal___sizeof____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___sizeof___impl(PyObject *v); |
| |
| static PyObject * |
| _decimal_Decimal___sizeof__(PyObject *v, PyObject *Py_UNUSED(ignored)) |
| { |
| return _decimal_Decimal___sizeof___impl(v); |
| } |
| |
| PyDoc_STRVAR(_decimal_Decimal___trunc____doc__, |
| "__trunc__($self, /)\n" |
| "--\n" |
| "\n" |
| "Return the Integral closest to x between 0 and x."); |
| |
| #define _DECIMAL_DECIMAL___TRUNC___METHODDEF \ |
| {"__trunc__", _PyCFunction_CAST(_decimal_Decimal___trunc__), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Decimal___trunc____doc__}, |
| |
| static PyObject * |
| _decimal_Decimal___trunc___impl(PyObject *self, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Decimal___trunc__(PyObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "__trunc__() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Decimal___trunc___impl(self, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_abs__doc__, |
| "abs($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return the absolute value of x."); |
| |
| #define _DECIMAL_CONTEXT_ABS_METHODDEF \ |
| {"abs", _PyCFunction_CAST(_decimal_Context_abs), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_abs__doc__}, |
| |
| static PyObject * |
| _decimal_Context_abs_impl(PyObject *context, PyTypeObject *cls, PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_abs(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "abs", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_abs_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_exp__doc__, |
| "exp($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return e ** x."); |
| |
| #define _DECIMAL_CONTEXT_EXP_METHODDEF \ |
| {"exp", _PyCFunction_CAST(_decimal_Context_exp), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_exp__doc__}, |
| |
| static PyObject * |
| _decimal_Context_exp_impl(PyObject *context, PyTypeObject *cls, PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_exp(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "exp", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_exp_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_ln__doc__, |
| "ln($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return the natural (base e) logarithm of x."); |
| |
| #define _DECIMAL_CONTEXT_LN_METHODDEF \ |
| {"ln", _PyCFunction_CAST(_decimal_Context_ln), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_ln__doc__}, |
| |
| static PyObject * |
| _decimal_Context_ln_impl(PyObject *context, PyTypeObject *cls, PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_ln(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "ln", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_ln_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_log10__doc__, |
| "log10($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return the base 10 logarithm of x."); |
| |
| #define _DECIMAL_CONTEXT_LOG10_METHODDEF \ |
| {"log10", _PyCFunction_CAST(_decimal_Context_log10), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_log10__doc__}, |
| |
| static PyObject * |
| _decimal_Context_log10_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_log10(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "log10", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_log10_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_minus__doc__, |
| "minus($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Minus corresponds to unary prefix minus in Python.\n" |
| "\n" |
| "This operation applies the context to the result."); |
| |
| #define _DECIMAL_CONTEXT_MINUS_METHODDEF \ |
| {"minus", _PyCFunction_CAST(_decimal_Context_minus), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_minus__doc__}, |
| |
| static PyObject * |
| _decimal_Context_minus_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_minus(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "minus", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_minus_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_next_minus__doc__, |
| "next_minus($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return the largest representable number smaller than x."); |
| |
| #define _DECIMAL_CONTEXT_NEXT_MINUS_METHODDEF \ |
| {"next_minus", _PyCFunction_CAST(_decimal_Context_next_minus), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_next_minus__doc__}, |
| |
| static PyObject * |
| _decimal_Context_next_minus_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_next_minus(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "next_minus", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_next_minus_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_next_plus__doc__, |
| "next_plus($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return the smallest representable number larger than x."); |
| |
| #define _DECIMAL_CONTEXT_NEXT_PLUS_METHODDEF \ |
| {"next_plus", _PyCFunction_CAST(_decimal_Context_next_plus), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_next_plus__doc__}, |
| |
| static PyObject * |
| _decimal_Context_next_plus_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_next_plus(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "next_plus", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_next_plus_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_normalize__doc__, |
| "normalize($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Reduce x to its simplest form. Alias for reduce(x)."); |
| |
| #define _DECIMAL_CONTEXT_NORMALIZE_METHODDEF \ |
| {"normalize", _PyCFunction_CAST(_decimal_Context_normalize), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_normalize__doc__}, |
| |
| static PyObject * |
| _decimal_Context_normalize_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_normalize(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "normalize", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_normalize_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_plus__doc__, |
| "plus($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Plus corresponds to the unary prefix plus operator in Python.\n" |
| "\n" |
| "This operation applies the context to the result."); |
| |
| #define _DECIMAL_CONTEXT_PLUS_METHODDEF \ |
| {"plus", _PyCFunction_CAST(_decimal_Context_plus), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_plus__doc__}, |
| |
| static PyObject * |
| _decimal_Context_plus_impl(PyObject *context, PyTypeObject *cls, PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_plus(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "plus", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_plus_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_to_integral_value__doc__, |
| "to_integral_value($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Round to an integer."); |
| |
| #define _DECIMAL_CONTEXT_TO_INTEGRAL_VALUE_METHODDEF \ |
| {"to_integral_value", _PyCFunction_CAST(_decimal_Context_to_integral_value), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_to_integral_value__doc__}, |
| |
| static PyObject * |
| _decimal_Context_to_integral_value_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_to_integral_value(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_integral_value", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_to_integral_value_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_to_integral_exact__doc__, |
| "to_integral_exact($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Round to an integer. Signal if the result is rounded or inexact."); |
| |
| #define _DECIMAL_CONTEXT_TO_INTEGRAL_EXACT_METHODDEF \ |
| {"to_integral_exact", _PyCFunction_CAST(_decimal_Context_to_integral_exact), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_to_integral_exact__doc__}, |
| |
| static PyObject * |
| _decimal_Context_to_integral_exact_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_to_integral_exact(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_integral_exact", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_to_integral_exact_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_to_integral__doc__, |
| "to_integral($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Identical to to_integral_value(x)."); |
| |
| #define _DECIMAL_CONTEXT_TO_INTEGRAL_METHODDEF \ |
| {"to_integral", _PyCFunction_CAST(_decimal_Context_to_integral), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_to_integral__doc__}, |
| |
| static PyObject * |
| _decimal_Context_to_integral_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_to_integral(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_integral", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_to_integral_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_sqrt__doc__, |
| "sqrt($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Square root of a non-negative number to context precision."); |
| |
| #define _DECIMAL_CONTEXT_SQRT_METHODDEF \ |
| {"sqrt", _PyCFunction_CAST(_decimal_Context_sqrt), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_sqrt__doc__}, |
| |
| static PyObject * |
| _decimal_Context_sqrt_impl(PyObject *context, PyTypeObject *cls, PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_sqrt(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "sqrt", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_sqrt_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_add__doc__, |
| "add($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return the sum of x and y."); |
| |
| #define _DECIMAL_CONTEXT_ADD_METHODDEF \ |
| {"add", _PyCFunction_CAST(_decimal_Context_add), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_add__doc__}, |
| |
| static PyObject * |
| _decimal_Context_add_impl(PyObject *context, PyTypeObject *cls, PyObject *x, |
| PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_add(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "add", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_add_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_compare__doc__, |
| "compare($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare x and y numerically."); |
| |
| #define _DECIMAL_CONTEXT_COMPARE_METHODDEF \ |
| {"compare", _PyCFunction_CAST(_decimal_Context_compare), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_compare__doc__}, |
| |
| static PyObject * |
| _decimal_Context_compare_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_compare(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_compare_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_compare_signal__doc__, |
| "compare_signal($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare x and y numerically. All NaNs signal."); |
| |
| #define _DECIMAL_CONTEXT_COMPARE_SIGNAL_METHODDEF \ |
| {"compare_signal", _PyCFunction_CAST(_decimal_Context_compare_signal), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_compare_signal__doc__}, |
| |
| static PyObject * |
| _decimal_Context_compare_signal_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_compare_signal(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare_signal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_compare_signal_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_divide__doc__, |
| "divide($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return x divided by y."); |
| |
| #define _DECIMAL_CONTEXT_DIVIDE_METHODDEF \ |
| {"divide", _PyCFunction_CAST(_decimal_Context_divide), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_divide__doc__}, |
| |
| static PyObject * |
| _decimal_Context_divide_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_divide(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "divide", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_divide_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_divide_int__doc__, |
| "divide_int($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return x divided by y, truncated to an integer."); |
| |
| #define _DECIMAL_CONTEXT_DIVIDE_INT_METHODDEF \ |
| {"divide_int", _PyCFunction_CAST(_decimal_Context_divide_int), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_divide_int__doc__}, |
| |
| static PyObject * |
| _decimal_Context_divide_int_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_divide_int(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "divide_int", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_divide_int_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_max__doc__, |
| "max($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare the values numerically and return the maximum."); |
| |
| #define _DECIMAL_CONTEXT_MAX_METHODDEF \ |
| {"max", _PyCFunction_CAST(_decimal_Context_max), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_max__doc__}, |
| |
| static PyObject * |
| _decimal_Context_max_impl(PyObject *context, PyTypeObject *cls, PyObject *x, |
| PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_max(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "max", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_max_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_max_mag__doc__, |
| "max_mag($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare the values numerically with their sign ignored."); |
| |
| #define _DECIMAL_CONTEXT_MAX_MAG_METHODDEF \ |
| {"max_mag", _PyCFunction_CAST(_decimal_Context_max_mag), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_max_mag__doc__}, |
| |
| static PyObject * |
| _decimal_Context_max_mag_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_max_mag(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "max_mag", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_max_mag_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_min__doc__, |
| "min($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare the values numerically and return the minimum."); |
| |
| #define _DECIMAL_CONTEXT_MIN_METHODDEF \ |
| {"min", _PyCFunction_CAST(_decimal_Context_min), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_min__doc__}, |
| |
| static PyObject * |
| _decimal_Context_min_impl(PyObject *context, PyTypeObject *cls, PyObject *x, |
| PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_min(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "min", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_min_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_min_mag__doc__, |
| "min_mag($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare the values numerically with their sign ignored."); |
| |
| #define _DECIMAL_CONTEXT_MIN_MAG_METHODDEF \ |
| {"min_mag", _PyCFunction_CAST(_decimal_Context_min_mag), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_min_mag__doc__}, |
| |
| static PyObject * |
| _decimal_Context_min_mag_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_min_mag(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "min_mag", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_min_mag_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_multiply__doc__, |
| "multiply($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return the product of x and y."); |
| |
| #define _DECIMAL_CONTEXT_MULTIPLY_METHODDEF \ |
| {"multiply", _PyCFunction_CAST(_decimal_Context_multiply), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_multiply__doc__}, |
| |
| static PyObject * |
| _decimal_Context_multiply_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_multiply(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "multiply", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_multiply_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_next_toward__doc__, |
| "next_toward($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return the number closest to x, in the direction towards y."); |
| |
| #define _DECIMAL_CONTEXT_NEXT_TOWARD_METHODDEF \ |
| {"next_toward", _PyCFunction_CAST(_decimal_Context_next_toward), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_next_toward__doc__}, |
| |
| static PyObject * |
| _decimal_Context_next_toward_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_next_toward(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "next_toward", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_next_toward_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_quantize__doc__, |
| "quantize($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return a value equal to x (rounded), having the exponent of y."); |
| |
| #define _DECIMAL_CONTEXT_QUANTIZE_METHODDEF \ |
| {"quantize", _PyCFunction_CAST(_decimal_Context_quantize), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_quantize__doc__}, |
| |
| static PyObject * |
| _decimal_Context_quantize_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_quantize(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "quantize", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_quantize_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_remainder__doc__, |
| "remainder($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return the remainder from integer division.\n" |
| "\n" |
| "The sign of the result, if non-zero, is the same as that of the\n" |
| "original dividend."); |
| |
| #define _DECIMAL_CONTEXT_REMAINDER_METHODDEF \ |
| {"remainder", _PyCFunction_CAST(_decimal_Context_remainder), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_remainder__doc__}, |
| |
| static PyObject * |
| _decimal_Context_remainder_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_remainder(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "remainder", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_remainder_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_remainder_near__doc__, |
| "remainder_near($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return x - y * n.\n" |
| "\n" |
| "Here n is the integer nearest the exact value of x / y (if the result\n" |
| "is 0 then its sign will be the sign of x)."); |
| |
| #define _DECIMAL_CONTEXT_REMAINDER_NEAR_METHODDEF \ |
| {"remainder_near", _PyCFunction_CAST(_decimal_Context_remainder_near), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_remainder_near__doc__}, |
| |
| static PyObject * |
| _decimal_Context_remainder_near_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_remainder_near(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "remainder_near", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_remainder_near_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_subtract__doc__, |
| "subtract($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return the difference between x and y."); |
| |
| #define _DECIMAL_CONTEXT_SUBTRACT_METHODDEF \ |
| {"subtract", _PyCFunction_CAST(_decimal_Context_subtract), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_subtract__doc__}, |
| |
| static PyObject * |
| _decimal_Context_subtract_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_subtract(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "subtract", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_subtract_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_divmod__doc__, |
| "divmod($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return quotient and remainder of the division x / y."); |
| |
| #define _DECIMAL_CONTEXT_DIVMOD_METHODDEF \ |
| {"divmod", _PyCFunction_CAST(_decimal_Context_divmod), METH_FASTCALL, _decimal_Context_divmod__doc__}, |
| |
| static PyObject * |
| _decimal_Context_divmod_impl(PyObject *context, PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_divmod(PyObject *context, PyObject *const *args, Py_ssize_t nargs) |
| { |
| PyObject *return_value = NULL; |
| PyObject *x; |
| PyObject *y; |
| |
| if (!_PyArg_CheckPositional("divmod", nargs, 2, 2)) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_divmod_impl(context, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_power__doc__, |
| "power($self, /, a, b, modulo=None)\n" |
| "--\n" |
| "\n" |
| "Compute a**b.\n" |
| "\n" |
| "If \'a\' is negative, then \'b\' must be integral. The result will be\n" |
| "inexact unless \'a\' is integral and the result is finite and can be\n" |
| "expressed exactly in \'precision\' digits. In the Python version the\n" |
| "result is always correctly rounded, in the C version the result is\n" |
| "almost always correctly rounded.\n" |
| "\n" |
| "If modulo is given, compute (a**b) % modulo. The following\n" |
| "restrictions hold:\n" |
| "\n" |
| " * all three arguments must be integral\n" |
| " * \'b\' must be nonnegative\n" |
| " * at least one of \'a\' or \'b\' must be nonzero\n" |
| " * modulo must be nonzero and less than 10**prec in absolute value"); |
| |
| #define _DECIMAL_CONTEXT_POWER_METHODDEF \ |
| {"power", _PyCFunction_CAST(_decimal_Context_power), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_power__doc__}, |
| |
| static PyObject * |
| _decimal_Context_power_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *base, PyObject *exp, PyObject *mod); |
| |
| static PyObject * |
| _decimal_Context_power(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| |
| #define NUM_KEYWORDS 3 |
| static struct { |
| PyGC_Head _this_is_not_used; |
| PyObject_VAR_HEAD |
| Py_hash_t ob_hash; |
| PyObject *ob_item[NUM_KEYWORDS]; |
| } _kwtuple = { |
| .ob_base = PyVarObject_HEAD_INIT(&PyTuple_Type, NUM_KEYWORDS) |
| .ob_hash = -1, |
| .ob_item = { _Py_LATIN1_CHR('a'), _Py_LATIN1_CHR('b'), &_Py_ID(modulo), }, |
| }; |
| #undef NUM_KEYWORDS |
| #define KWTUPLE (&_kwtuple.ob_base.ob_base) |
| |
| #else // !Py_BUILD_CORE |
| # define KWTUPLE NULL |
| #endif // !Py_BUILD_CORE |
| |
| static const char * const _keywords[] = {"a", "b", "modulo", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "power", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[3]; |
| Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2; |
| PyObject *base; |
| PyObject *exp; |
| PyObject *mod = Py_None; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| base = args[0]; |
| exp = args[1]; |
| if (!noptargs) { |
| goto skip_optional_pos; |
| } |
| mod = args[2]; |
| skip_optional_pos: |
| return_value = _decimal_Context_power_impl(context, cls, base, exp, mod); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_fma__doc__, |
| "fma($self, x, y, z, /)\n" |
| "--\n" |
| "\n" |
| "Return x multiplied by y, plus z."); |
| |
| #define _DECIMAL_CONTEXT_FMA_METHODDEF \ |
| {"fma", _PyCFunction_CAST(_decimal_Context_fma), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_fma__doc__}, |
| |
| static PyObject * |
| _decimal_Context_fma_impl(PyObject *context, PyTypeObject *cls, PyObject *x, |
| PyObject *y, PyObject *z); |
| |
| static PyObject * |
| _decimal_Context_fma(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "fma", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[3]; |
| PyObject *x; |
| PyObject *y; |
| PyObject *z; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 3, /*maxpos*/ 3, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| z = args[2]; |
| return_value = _decimal_Context_fma_impl(context, cls, x, y, z); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_radix__doc__, |
| "radix($self, /)\n" |
| "--\n" |
| "\n" |
| "Return 10."); |
| |
| #define _DECIMAL_CONTEXT_RADIX_METHODDEF \ |
| {"radix", _PyCFunction_CAST(_decimal_Context_radix), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_radix__doc__}, |
| |
| static PyObject * |
| _decimal_Context_radix_impl(PyObject *context, PyTypeObject *cls); |
| |
| static PyObject * |
| _decimal_Context_radix(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| if (nargs || (kwnames && PyTuple_GET_SIZE(kwnames))) { |
| PyErr_SetString(PyExc_TypeError, "radix() takes no arguments"); |
| return NULL; |
| } |
| return _decimal_Context_radix_impl(context, cls); |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_normal__doc__, |
| "is_normal($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is a normal number, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_NORMAL_METHODDEF \ |
| {"is_normal", _PyCFunction_CAST(_decimal_Context_is_normal), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_normal__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_normal_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_normal(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_normal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_normal_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_subnormal__doc__, |
| "is_subnormal($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is subnormal, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_SUBNORMAL_METHODDEF \ |
| {"is_subnormal", _PyCFunction_CAST(_decimal_Context_is_subnormal), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_subnormal__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_subnormal_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_subnormal(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_subnormal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_subnormal_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_finite__doc__, |
| "is_finite($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is finite, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_FINITE_METHODDEF \ |
| {"is_finite", _PyCFunction_CAST(_decimal_Context_is_finite), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_finite__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_finite_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_finite(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_finite", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_finite_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_infinite__doc__, |
| "is_infinite($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is infinite, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_INFINITE_METHODDEF \ |
| {"is_infinite", _PyCFunction_CAST(_decimal_Context_is_infinite), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_infinite__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_infinite_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_infinite(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_infinite", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_infinite_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_nan__doc__, |
| "is_nan($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is a qNaN or sNaN, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_NAN_METHODDEF \ |
| {"is_nan", _PyCFunction_CAST(_decimal_Context_is_nan), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_nan__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_nan_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_nan(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_nan", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_nan_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_qnan__doc__, |
| "is_qnan($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is a quiet NaN, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_QNAN_METHODDEF \ |
| {"is_qnan", _PyCFunction_CAST(_decimal_Context_is_qnan), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_qnan__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_qnan_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_qnan(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_qnan", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_qnan_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_snan__doc__, |
| "is_snan($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is a signaling NaN, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_SNAN_METHODDEF \ |
| {"is_snan", _PyCFunction_CAST(_decimal_Context_is_snan), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_snan__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_snan_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_snan(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_snan", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_snan_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_signed__doc__, |
| "is_signed($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is negative, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_SIGNED_METHODDEF \ |
| {"is_signed", _PyCFunction_CAST(_decimal_Context_is_signed), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_signed__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_signed_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_signed(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_signed", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_signed_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_zero__doc__, |
| "is_zero($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is a zero, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_ZERO_METHODDEF \ |
| {"is_zero", _PyCFunction_CAST(_decimal_Context_is_zero), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_zero__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_zero_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_zero(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_zero", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_zero_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_is_canonical__doc__, |
| "is_canonical($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return True if x is canonical, False otherwise."); |
| |
| #define _DECIMAL_CONTEXT_IS_CANONICAL_METHODDEF \ |
| {"is_canonical", _PyCFunction_CAST(_decimal_Context_is_canonical), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_is_canonical__doc__}, |
| |
| static PyObject * |
| _decimal_Context_is_canonical_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_is_canonical(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "is_canonical", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_is_canonical_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context__apply__doc__, |
| "_apply($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Apply self to Decimal x."); |
| |
| #define _DECIMAL_CONTEXT__APPLY_METHODDEF \ |
| {"_apply", _PyCFunction_CAST(_decimal_Context__apply), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context__apply__doc__}, |
| |
| static PyObject * |
| _decimal_Context__apply_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context__apply(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "_apply", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context__apply_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| #if defined(EXTRA_FUNCTIONALITY) |
| |
| PyDoc_STRVAR(_decimal_Context_apply__doc__, |
| "apply($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Apply self to Decimal x."); |
| |
| #define _DECIMAL_CONTEXT_APPLY_METHODDEF \ |
| {"apply", _PyCFunction_CAST(_decimal_Context_apply), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_apply__doc__}, |
| |
| static PyObject * |
| _decimal_Context_apply_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_apply(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "apply", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_apply_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| #endif /* defined(EXTRA_FUNCTIONALITY) */ |
| |
| PyDoc_STRVAR(_decimal_Context_canonical__doc__, |
| "canonical($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return a new instance of x."); |
| |
| #define _DECIMAL_CONTEXT_CANONICAL_METHODDEF \ |
| {"canonical", _PyCFunction_CAST(_decimal_Context_canonical), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_canonical__doc__}, |
| |
| static PyObject * |
| _decimal_Context_canonical_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_canonical(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "canonical", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_canonical_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_copy_abs__doc__, |
| "copy_abs($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return a copy of x with the sign set to 0."); |
| |
| #define _DECIMAL_CONTEXT_COPY_ABS_METHODDEF \ |
| {"copy_abs", _PyCFunction_CAST(_decimal_Context_copy_abs), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_copy_abs__doc__}, |
| |
| static PyObject * |
| _decimal_Context_copy_abs_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_copy_abs(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "copy_abs", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_copy_abs_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_copy_decimal__doc__, |
| "copy_decimal($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return a copy of Decimal x."); |
| |
| #define _DECIMAL_CONTEXT_COPY_DECIMAL_METHODDEF \ |
| {"copy_decimal", _PyCFunction_CAST(_decimal_Context_copy_decimal), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_copy_decimal__doc__}, |
| |
| static PyObject * |
| _decimal_Context_copy_decimal_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_copy_decimal(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "copy_decimal", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_copy_decimal_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_copy_negate__doc__, |
| "copy_negate($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return a copy of x with the sign inverted."); |
| |
| #define _DECIMAL_CONTEXT_COPY_NEGATE_METHODDEF \ |
| {"copy_negate", _PyCFunction_CAST(_decimal_Context_copy_negate), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_copy_negate__doc__}, |
| |
| static PyObject * |
| _decimal_Context_copy_negate_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_copy_negate(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "copy_negate", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_copy_negate_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_logb__doc__, |
| "logb($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return the exponent of the magnitude of the operand\'s MSD."); |
| |
| #define _DECIMAL_CONTEXT_LOGB_METHODDEF \ |
| {"logb", _PyCFunction_CAST(_decimal_Context_logb), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_logb__doc__}, |
| |
| static PyObject * |
| _decimal_Context_logb_impl(PyObject *context, PyTypeObject *cls, PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_logb(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logb", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_logb_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_logical_invert__doc__, |
| "logical_invert($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Invert all the digits in the operand.\n" |
| "\n" |
| "The operand must be a logical number.\n" |
| "\n" |
| " >>> ExtendedContext.logical_invert(Decimal(\'0\'))\n" |
| " Decimal(\'111111111\')\n" |
| " >>> ExtendedContext.logical_invert(Decimal(\'1\'))\n" |
| " Decimal(\'111111110\')\n" |
| " >>> ExtendedContext.logical_invert(Decimal(\'111111111\'))\n" |
| " Decimal(\'0\')\n" |
| " >>> ExtendedContext.logical_invert(Decimal(\'101010101\'))\n" |
| " Decimal(\'10101010\')\n" |
| " >>> ExtendedContext.logical_invert(1101)\n" |
| " Decimal(\'111110010\')"); |
| |
| #define _DECIMAL_CONTEXT_LOGICAL_INVERT_METHODDEF \ |
| {"logical_invert", _PyCFunction_CAST(_decimal_Context_logical_invert), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_logical_invert__doc__}, |
| |
| static PyObject * |
| _decimal_Context_logical_invert_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_logical_invert(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_invert", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_logical_invert_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_number_class__doc__, |
| "number_class($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Return an indication of the class of x."); |
| |
| #define _DECIMAL_CONTEXT_NUMBER_CLASS_METHODDEF \ |
| {"number_class", _PyCFunction_CAST(_decimal_Context_number_class), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_number_class__doc__}, |
| |
| static PyObject * |
| _decimal_Context_number_class_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_number_class(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "number_class", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_number_class_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_to_sci_string__doc__, |
| "to_sci_string($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Convert a number to a string using scientific notation."); |
| |
| #define _DECIMAL_CONTEXT_TO_SCI_STRING_METHODDEF \ |
| {"to_sci_string", _PyCFunction_CAST(_decimal_Context_to_sci_string), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_to_sci_string__doc__}, |
| |
| static PyObject * |
| _decimal_Context_to_sci_string_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_to_sci_string(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_sci_string", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_to_sci_string_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_to_eng_string__doc__, |
| "to_eng_string($self, x, /)\n" |
| "--\n" |
| "\n" |
| "Convert a number to a string, using engineering notation."); |
| |
| #define _DECIMAL_CONTEXT_TO_ENG_STRING_METHODDEF \ |
| {"to_eng_string", _PyCFunction_CAST(_decimal_Context_to_eng_string), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_to_eng_string__doc__}, |
| |
| static PyObject * |
| _decimal_Context_to_eng_string_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x); |
| |
| static PyObject * |
| _decimal_Context_to_eng_string(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "to_eng_string", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[1]; |
| PyObject *x; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 1, /*maxpos*/ 1, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| return_value = _decimal_Context_to_eng_string_impl(context, cls, x); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_compare_total__doc__, |
| "compare_total($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare x and y using their abstract representation."); |
| |
| #define _DECIMAL_CONTEXT_COMPARE_TOTAL_METHODDEF \ |
| {"compare_total", _PyCFunction_CAST(_decimal_Context_compare_total), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_compare_total__doc__}, |
| |
| static PyObject * |
| _decimal_Context_compare_total_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_compare_total(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare_total", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_compare_total_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_compare_total_mag__doc__, |
| "compare_total_mag($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Compare x and y using their abstract representation, ignoring sign."); |
| |
| #define _DECIMAL_CONTEXT_COMPARE_TOTAL_MAG_METHODDEF \ |
| {"compare_total_mag", _PyCFunction_CAST(_decimal_Context_compare_total_mag), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_compare_total_mag__doc__}, |
| |
| static PyObject * |
| _decimal_Context_compare_total_mag_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_compare_total_mag(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "compare_total_mag", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_compare_total_mag_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_copy_sign__doc__, |
| "copy_sign($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Copy the sign from y to x."); |
| |
| #define _DECIMAL_CONTEXT_COPY_SIGN_METHODDEF \ |
| {"copy_sign", _PyCFunction_CAST(_decimal_Context_copy_sign), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_copy_sign__doc__}, |
| |
| static PyObject * |
| _decimal_Context_copy_sign_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_copy_sign(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "copy_sign", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_copy_sign_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_logical_and__doc__, |
| "logical_and($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Applies the logical operation \'and\' between each operand\'s digits.\n" |
| "\n" |
| "The operands must be both logical numbers.\n" |
| "\n" |
| " >>> ExtendedContext.logical_and(Decimal(\'0\'), Decimal(\'0\'))\n" |
| " Decimal(\'0\')\n" |
| " >>> ExtendedContext.logical_and(Decimal(\'0\'), Decimal(\'1\'))\n" |
| " Decimal(\'0\')\n" |
| " >>> ExtendedContext.logical_and(Decimal(\'1\'), Decimal(\'0\'))\n" |
| " Decimal(\'0\')\n" |
| " >>> ExtendedContext.logical_and(Decimal(\'1\'), Decimal(\'1\'))\n" |
| " Decimal(\'1\')\n" |
| " >>> ExtendedContext.logical_and(Decimal(\'1100\'), Decimal(\'1010\'))\n" |
| " Decimal(\'1000\')\n" |
| " >>> ExtendedContext.logical_and(Decimal(\'1111\'), Decimal(\'10\'))\n" |
| " Decimal(\'10\')\n" |
| " >>> ExtendedContext.logical_and(110, 1101)\n" |
| " Decimal(\'100\')\n" |
| " >>> ExtendedContext.logical_and(Decimal(110), 1101)\n" |
| " Decimal(\'100\')\n" |
| " >>> ExtendedContext.logical_and(110, Decimal(1101))\n" |
| " Decimal(\'100\')"); |
| |
| #define _DECIMAL_CONTEXT_LOGICAL_AND_METHODDEF \ |
| {"logical_and", _PyCFunction_CAST(_decimal_Context_logical_and), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_logical_and__doc__}, |
| |
| static PyObject * |
| _decimal_Context_logical_and_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_logical_and(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_and", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_logical_and_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_logical_or__doc__, |
| "logical_or($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Applies the logical operation \'or\' between each operand\'s digits.\n" |
| "\n" |
| "The operands must be both logical numbers.\n" |
| "\n" |
| " >>> ExtendedContext.logical_or(Decimal(\'0\'), Decimal(\'0\'))\n" |
| " Decimal(\'0\')\n" |
| " >>> ExtendedContext.logical_or(Decimal(\'0\'), Decimal(\'1\'))\n" |
| " Decimal(\'1\')\n" |
| " >>> ExtendedContext.logical_or(Decimal(\'1\'), Decimal(\'0\'))\n" |
| " Decimal(\'1\')\n" |
| " >>> ExtendedContext.logical_or(Decimal(\'1\'), Decimal(\'1\'))\n" |
| " Decimal(\'1\')\n" |
| " >>> ExtendedContext.logical_or(Decimal(\'1100\'), Decimal(\'1010\'))\n" |
| " Decimal(\'1110\')\n" |
| " >>> ExtendedContext.logical_or(Decimal(\'1110\'), Decimal(\'10\'))\n" |
| " Decimal(\'1110\')\n" |
| " >>> ExtendedContext.logical_or(110, 1101)\n" |
| " Decimal(\'1111\')\n" |
| " >>> ExtendedContext.logical_or(Decimal(110), 1101)\n" |
| " Decimal(\'1111\')\n" |
| " >>> ExtendedContext.logical_or(110, Decimal(1101))\n" |
| " Decimal(\'1111\')"); |
| |
| #define _DECIMAL_CONTEXT_LOGICAL_OR_METHODDEF \ |
| {"logical_or", _PyCFunction_CAST(_decimal_Context_logical_or), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_logical_or__doc__}, |
| |
| static PyObject * |
| _decimal_Context_logical_or_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_logical_or(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_or", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_logical_or_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_logical_xor__doc__, |
| "logical_xor($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Applies the logical operation \'xor\' between each operand\'s digits.\n" |
| "\n" |
| "The operands must be both logical numbers.\n" |
| "\n" |
| " >>> ExtendedContext.logical_xor(Decimal(\'0\'), Decimal(\'0\'))\n" |
| " Decimal(\'0\')\n" |
| " >>> ExtendedContext.logical_xor(Decimal(\'0\'), Decimal(\'1\'))\n" |
| " Decimal(\'1\')\n" |
| " >>> ExtendedContext.logical_xor(Decimal(\'1\'), Decimal(\'0\'))\n" |
| " Decimal(\'1\')\n" |
| " >>> ExtendedContext.logical_xor(Decimal(\'1\'), Decimal(\'1\'))\n" |
| " Decimal(\'0\')\n" |
| " >>> ExtendedContext.logical_xor(Decimal(\'1100\'), Decimal(\'1010\'))\n" |
| " Decimal(\'110\')\n" |
| " >>> ExtendedContext.logical_xor(Decimal(\'1111\'), Decimal(\'10\'))\n" |
| " Decimal(\'1101\')\n" |
| " >>> ExtendedContext.logical_xor(110, 1101)\n" |
| " Decimal(\'1011\')\n" |
| " >>> ExtendedContext.logical_xor(Decimal(110), 1101)\n" |
| " Decimal(\'1011\')\n" |
| " >>> ExtendedContext.logical_xor(110, Decimal(1101))\n" |
| " Decimal(\'1011\')"); |
| |
| #define _DECIMAL_CONTEXT_LOGICAL_XOR_METHODDEF \ |
| {"logical_xor", _PyCFunction_CAST(_decimal_Context_logical_xor), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_logical_xor__doc__}, |
| |
| static PyObject * |
| _decimal_Context_logical_xor_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_logical_xor(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "logical_xor", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_logical_xor_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_rotate__doc__, |
| "rotate($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return a copy of x, rotated by y places."); |
| |
| #define _DECIMAL_CONTEXT_ROTATE_METHODDEF \ |
| {"rotate", _PyCFunction_CAST(_decimal_Context_rotate), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_rotate__doc__}, |
| |
| static PyObject * |
| _decimal_Context_rotate_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_rotate(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "rotate", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_rotate_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_scaleb__doc__, |
| "scaleb($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return the first operand after adding the second value to its exp."); |
| |
| #define _DECIMAL_CONTEXT_SCALEB_METHODDEF \ |
| {"scaleb", _PyCFunction_CAST(_decimal_Context_scaleb), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_scaleb__doc__}, |
| |
| static PyObject * |
| _decimal_Context_scaleb_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_scaleb(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "scaleb", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_scaleb_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_shift__doc__, |
| "shift($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return a copy of x, shifted by y places."); |
| |
| #define _DECIMAL_CONTEXT_SHIFT_METHODDEF \ |
| {"shift", _PyCFunction_CAST(_decimal_Context_shift), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_shift__doc__}, |
| |
| static PyObject * |
| _decimal_Context_shift_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_shift(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "shift", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_shift_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| PyDoc_STRVAR(_decimal_Context_same_quantum__doc__, |
| "same_quantum($self, x, y, /)\n" |
| "--\n" |
| "\n" |
| "Return True if the two operands have the same exponent."); |
| |
| #define _DECIMAL_CONTEXT_SAME_QUANTUM_METHODDEF \ |
| {"same_quantum", _PyCFunction_CAST(_decimal_Context_same_quantum), METH_METHOD|METH_FASTCALL|METH_KEYWORDS, _decimal_Context_same_quantum__doc__}, |
| |
| static PyObject * |
| _decimal_Context_same_quantum_impl(PyObject *context, PyTypeObject *cls, |
| PyObject *x, PyObject *y); |
| |
| static PyObject * |
| _decimal_Context_same_quantum(PyObject *context, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) |
| { |
| PyObject *return_value = NULL; |
| #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) |
| # define KWTUPLE (PyObject *)&_Py_SINGLETON(tuple_empty) |
| #else |
| # define KWTUPLE NULL |
| #endif |
| |
| static const char * const _keywords[] = {"", "", NULL}; |
| static _PyArg_Parser _parser = { |
| .keywords = _keywords, |
| .fname = "same_quantum", |
| .kwtuple = KWTUPLE, |
| }; |
| #undef KWTUPLE |
| PyObject *argsbuf[2]; |
| PyObject *x; |
| PyObject *y; |
| |
| args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, |
| /*minpos*/ 2, /*maxpos*/ 2, /*minkw*/ 0, /*varpos*/ 0, argsbuf); |
| if (!args) { |
| goto exit; |
| } |
| x = args[0]; |
| y = args[1]; |
| return_value = _decimal_Context_same_quantum_impl(context, cls, x, y); |
| |
| exit: |
| return return_value; |
| } |
| |
| #ifndef _DECIMAL_CONTEXT__UNSAFE_SETPREC_METHODDEF |
| #define _DECIMAL_CONTEXT__UNSAFE_SETPREC_METHODDEF |
| #endif /* !defined(_DECIMAL_CONTEXT__UNSAFE_SETPREC_METHODDEF) */ |
| |
| #ifndef _DECIMAL_CONTEXT__UNSAFE_SETEMIN_METHODDEF |
| #define _DECIMAL_CONTEXT__UNSAFE_SETEMIN_METHODDEF |
| #endif /* !defined(_DECIMAL_CONTEXT__UNSAFE_SETEMIN_METHODDEF) */ |
| |
| #ifndef _DECIMAL_CONTEXT__UNSAFE_SETEMAX_METHODDEF |
| #define _DECIMAL_CONTEXT__UNSAFE_SETEMAX_METHODDEF |
| #endif /* !defined(_DECIMAL_CONTEXT__UNSAFE_SETEMAX_METHODDEF) */ |
| |
| #ifndef _DECIMAL_CONTEXT_APPLY_METHODDEF |
| #define _DECIMAL_CONTEXT_APPLY_METHODDEF |
| #endif /* !defined(_DECIMAL_CONTEXT_APPLY_METHODDEF) */ |
| /*[clinic end generated code: output=b288181c82fdc9f1 input=a9049054013a1b77]*/ |