diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2019-06-02 08:16:49 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-02 08:16:49 (GMT) |
commit | 5ae299ac78abb628803ab7dee0997364547f5cc8 (patch) | |
tree | 243cb704ac7c8421e7406722912cc50e20b5ebad /Modules/clinic/mathmodule.c.h | |
parent | d71f3170ac9c850f6d1f9bffaa628dc473df5e75 (diff) | |
download | cpython-5ae299ac78abb628803ab7dee0997364547f5cc8.zip cpython-5ae299ac78abb628803ab7dee0997364547f5cc8.tar.gz cpython-5ae299ac78abb628803ab7dee0997364547f5cc8.tar.bz2 |
bpo-37128: Add math.perm(). (GH-13731)
Diffstat (limited to 'Modules/clinic/mathmodule.c.h')
-rw-r--r-- | Modules/clinic/mathmodule.c.h | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/Modules/clinic/mathmodule.c.h b/Modules/clinic/mathmodule.c.h index 92ec4be..0efe5cc 100644 --- a/Modules/clinic/mathmodule.c.h +++ b/Modules/clinic/mathmodule.c.h @@ -638,6 +638,41 @@ exit: return return_value; } +PyDoc_STRVAR(math_perm__doc__, +"perm($module, n, k, /)\n" +"--\n" +"\n" +"Number of ways to choose k items from n items without repetition and with order.\n" +"\n" +"It is mathematically equal to the expression n! / (n - k)!.\n" +"\n" +"Raises TypeError if the arguments are not integers.\n" +"Raises ValueError if the arguments are negative or if k > n."); + +#define MATH_PERM_METHODDEF \ + {"perm", (PyCFunction)(void(*)(void))math_perm, METH_FASTCALL, math_perm__doc__}, + +static PyObject * +math_perm_impl(PyObject *module, PyObject *n, PyObject *k); + +static PyObject * +math_perm(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *n; + PyObject *k; + + if (!_PyArg_CheckPositional("perm", nargs, 2, 2)) { + goto exit; + } + n = args[0]; + k = args[1]; + return_value = math_perm_impl(module, n, k); + +exit: + return return_value; +} + PyDoc_STRVAR(math_comb__doc__, "comb($module, n, k, /)\n" "--\n" @@ -674,4 +709,4 @@ math_comb(PyObject *module, PyObject *const *args, Py_ssize_t nargs) exit: return return_value; } -/*[clinic end generated code: output=6709521e5e1d90ec input=a9049054013a1b77]*/ +/*[clinic end generated code: output=a82b0e705b6d0ec0 input=a9049054013a1b77]*/ |