def mont(x): return MPMont(x)
def barrett(x): return MPBarrett(x)
def reduce(x): return MPReduce(x)
- def factorial(x):
- 'factorial(X) -> X!'
- if x < 0: raise ValueError, 'factorial argument must be > 0'
- return MPMul.product(xrange(1, x + 1))
- factorial = staticmethod(factorial)
_augment(MP, _tmp)
class _tmp:
return (z);
}
+static PyObject *meth__MP_factorial(PyObject *me, PyObject *arg)
+{
+ unsigned long i;
+ mp *x;
+ if (!PyArg_ParseTuple(arg, "OO&:factorial", &me, convulong, &i))
+ return (0);
+ x = mp_factorial(i);
+ return mp_pywrap(x);
+}
+
#define LOADOP(pre, py, name) \
static PyObject *meth__##py##_##name(PyObject *me, PyObject *arg) \
{ \
Parse STR as a binary polynomial, according to radix. If radix is zero,\n\
read a prefix from STR to decide radix: allow `0' for octal, `0x' for hex\n\
or `R_' for other radix R.")
+ METH (_MP_factorial, "\
+factorial(I) -> I!: compute factorial")
METH (_MP_loadl, "\
loadl(STR) -> X: read little-endian bytes")
METH (_MP_loadb, "\