summaryrefslogtreecommitdiffstats
path: root/Modules/clinic/mathmodule.c.h
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2019-06-02 08:16:49 (GMT)
committerGitHub <noreply@github.com>2019-06-02 08:16:49 (GMT)
commit5ae299ac78abb628803ab7dee0997364547f5cc8 (patch)
tree243cb704ac7c8421e7406722912cc50e20b5ebad /Modules/clinic/mathmodule.c.h
parentd71f3170ac9c850f6d1f9bffaa628dc473df5e75 (diff)
downloadcpython-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.h37
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]*/