chiark
/
gitweb
/
~mdw
/
catacomb-python
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '1.2.x' into 1.3.x
[catacomb-python]
/
mp.c
diff --git
a/mp.c
b/mp.c
index ab15d3fd10e115c476f1623e1eb162c37bb1d68f..1448bc237c2c680253f6fa4c5498c183ca2930c1 100644
(file)
--- a/
mp.c
+++ b/
mp.c
@@
-528,9
+528,9
@@
static PyObject *mp_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
mp *z;
mp_pyobj *zz = 0;
int radix = 0;
mp *z;
mp_pyobj *zz = 0;
int radix = 0;
-
char *
kwlist[] = { "x", "radix", 0 };
+
static const char *const
kwlist[] = { "x", "radix", 0 };
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:new",
kwlist
, &x, &radix))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:new",
KWLIST
, &x, &radix))
goto end;
if (MP_PYCHECK(x)) RETURN_OBJ(x);
if (!good_radix_p(radix, 1)) VALERR("bad radix");
goto end;
if (MP_PYCHECK(x)) RETURN_OBJ(x);
if (!good_radix_p(radix, 1)) VALERR("bad radix");
@@
-662,8
+662,8
@@
end:
static PyObject *mpmeth_tostring(PyObject *me, PyObject *arg, PyObject *kw)
{
int radix = 10;
static PyObject *mpmeth_tostring(PyObject *me, PyObject *arg, PyObject *kw)
{
int radix = 10;
-
char *
kwlist[] = { "radix", 0 };
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "|i:tostring",
kwlist
, &radix))
+
static const char *const
kwlist[] = { "radix", 0 };
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "|i:tostring",
KWLIST
, &radix))
goto end;
if (!good_radix_p(radix, 0)) VALERR("bad radix");
return (mp_topystring(MP_X(me), radix, 0, 0, 0));
goto end;
if (!good_radix_p(radix, 0)) VALERR("bad radix");
return (mp_topystring(MP_X(me), radix, 0, 0, 0));
@@
-703,11
+703,11
@@
end:
PyObject *arg, PyObject *kw) \
{ \
long len = -1; \
PyObject *arg, PyObject *kw) \
{ \
long len = -1; \
-
char *kwlist[] = { "len", 0 };
\
+
static const char *const kwlist[] = { "len", 0 };
\
PyObject *rc = 0; \
\
if (!PyArg_ParseTupleAndKeywords(arg, kw, "|l:" #name, \
PyObject *rc = 0; \
\
if (!PyArg_ParseTupleAndKeywords(arg, kw, "|l:" #name, \
-
kwlist
, &len)) \
+
KWLIST
, &len)) \
goto end; \
if (len < 0) { \
len = mp_octets##c(MP_X(me)); \
goto end; \
if (len < 0) { \
len = mp_octets##c(MP_X(me)); \
@@
-766,10
+766,10
@@
static PyObject *mpmeth_tobuf(PyObject *me, PyObject *arg)
static PyObject *mpmeth_primep(PyObject *me, PyObject *arg, PyObject *kw)
{
grand *r = &rand_global;
static PyObject *mpmeth_primep(PyObject *me, PyObject *arg, PyObject *kw)
{
grand *r = &rand_global;
-
char *
kwlist[] = { "rng", 0 };
+
static const char *const
kwlist[] = { "rng", 0 };
PyObject *rc = 0;
PyObject *rc = 0;
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&",
kwlist
, convgrand, &r))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "|O&",
KWLIST
, convgrand, &r))
goto end;
rc = getbool(pgen_primep(MP_X(me), r));
end:
goto end;
rc = getbool(pgen_primep(MP_X(me), r));
end:
@@
-905,7
+905,7
@@
with an integer conversion.\n\
\n\
Notes:\n\
\n\
\n\
Notes:\n\
\n\
- * Use `//' for
division. MPs don't have `/'
division.",
+ * Use `//' for
integer division. `/' gives exact rational
division.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-937,10
+937,10
@@
static PyObject *meth__MP_fromstring(PyObject *me,
PyObject *z = 0;
mp *zz;
mptext_stringctx sc;
PyObject *z = 0;
mp *zz;
mptext_stringctx sc;
-
char *
kwlist[] = { "class", "x", "radix", 0 };
+
static const char *const
kwlist[] = { "class", "x", "radix", 0 };
if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|i:fromstring",
if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|i:fromstring",
-
kwlist
, &me, &p, &len, &r))
+
KWLIST
, &me, &p, &len, &r))
goto end;
if (!good_radix_p(r, 1)) VALERR("bad radix");
sc.buf = p; sc.lim = p + len;
goto end;
if (!good_radix_p(r, 1)) VALERR("bad radix");
sc.buf = p; sc.lim = p + len;
@@
-1108,7
+1108,7
@@
static PyTypeObject *mpmul_pytype, mpmul_pytype_skel = {
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"
A
n object for multiplying many small integers.",
+"
MPMul(N_0, N_1, ....): a
n object for multiplying many small integers.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-1301,10
+1301,10
@@
static void mpmont_pydealloc(PyObject *me)
static PyObject *mpmont_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
{
mpmont_pyobj *mm = 0;
static PyObject *mpmont_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
{
mpmont_pyobj *mm = 0;
-
char *
kwlist[] = { "m", 0 };
+
static const char *const
kwlist[] = { "m", 0 };
mp *xx = 0;
mp *xx = 0;
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
kwlist
, convmp, &xx))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
KWLIST
, convmp, &xx))
goto end;
if (!MP_POSP(xx) || !MP_ODDP(xx)) VALERR("m must be positive and odd");
mm = (mpmont_pyobj *)ty->tp_alloc(ty, 0);
goto end;
if (!MP_POSP(xx) || !MP_ODDP(xx)) VALERR("m must be positive and odd");
mm = (mpmont_pyobj *)ty->tp_alloc(ty, 0);
@@
-1375,7
+1375,7
@@
static PyTypeObject *mpmont_pytype, mpmont_pytype_skel = {
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"
A
Montgomery reduction context.",
+"
MPMont(N): a
Montgomery reduction context.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-1455,10
+1455,10
@@
static PyObject *mpbarrett_pynew(PyTypeObject *ty,
PyObject *arg, PyObject *kw)
{
mpbarrett_pyobj *mb = 0;
PyObject *arg, PyObject *kw)
{
mpbarrett_pyobj *mb = 0;
-
char *
kwlist[] = { "m", 0 };
+
static const char *const
kwlist[] = { "m", 0 };
mp *xx = 0;
mp *xx = 0;
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
kwlist
, convmp, &xx))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
KWLIST
, convmp, &xx))
goto end;
if (!MP_POSP(xx)) VALERR("m must be positive");
mb = (mpbarrett_pyobj *)ty->tp_alloc(ty, 0);
goto end;
if (!MP_POSP(xx)) VALERR("m must be positive");
mb = (mpbarrett_pyobj *)ty->tp_alloc(ty, 0);
@@
-1514,7
+1514,7
@@
static PyTypeObject *mpbarrett_pytype, mpbarrett_pytype_skel = {
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"
A
Barrett reduction context.",
+"
MPBarrett(N): a
Barrett reduction context.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-1585,10
+1585,10
@@
static PyObject *mpreduce_pynew(PyTypeObject *ty,
{
mpreduce_pyobj *mr = 0;
mpreduce r;
{
mpreduce_pyobj *mr = 0;
mpreduce r;
-
char *
kwlist[] = { "m", 0 };
+
static const char *const
kwlist[] = { "m", 0 };
mp *xx = 0;
mp *xx = 0;
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
kwlist
, convmp, &xx))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
KWLIST
, convmp, &xx))
goto end;
if (!MP_POSP(xx)) VALERR("m must be positive");
if (mpreduce_create(&r, xx)) VALERR("bad modulus (must be 2^k - ...)");
goto end;
if (!MP_POSP(xx)) VALERR("m must be positive");
if (mpreduce_create(&r, xx)) VALERR("bad modulus (must be 2^k - ...)");
@@
-1642,7
+1642,7
@@
static PyTypeObject *mpreduce_pytype, mpreduce_pytype_skel = {
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"
A reduction context for reduction modulo primes of special form
.",
+"
MPReduce(N): a reduction context for reduction modulo Solinas primes
.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-1721,7
+1721,7
@@
static PyObject *mpcrt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
{
mpcrt_mod *v = 0;
Py_ssize_t n, i = 0, j;
{
mpcrt_mod *v = 0;
Py_ssize_t n, i = 0, j;
-
char *
kwlist[] = { "mv", 0 };
+
static const char *const
kwlist[] = { "mv", 0 };
PyObject *q = 0, *x;
mp *xx = MP_NEW, *y = MP_NEW, *g = MP_NEW;
mpmul mm;
PyObject *q = 0, *x;
mp *xx = MP_NEW, *y = MP_NEW, *g = MP_NEW;
mpmul mm;
@@
-1729,7
+1729,7
@@
static PyObject *mpcrt_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
if (PyTuple_Size(arg) > 1)
q = arg;
if (PyTuple_Size(arg) > 1)
q = arg;
- else if (!PyArg_ParseTupleAndKeywords(arg, kw, "O:new",
kwlist
, &q))
+ else if (!PyArg_ParseTupleAndKeywords(arg, kw, "O:new",
KWLIST
, &q))
goto end;
Py_INCREF(q);
if (!PySequence_Check(q)) TYERR("want a sequence of moduli");
goto end;
Py_INCREF(q);
if (!PySequence_Check(q)) TYERR("want a sequence of moduli");
@@
-1824,7
+1824,7
@@
static PyTypeObject *mpcrt_pytype, mpcrt_pytype_skel = {
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"
A context for the solution of
Chinese Remainder Theorem problems.",
+"
MPCRT(SEQ): a context for solving
Chinese Remainder Theorem problems.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-1884,9
+1884,9
@@
static PyObject *gf_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
mp *z;
mp_pyobj *zz = 0;
int radix = 0;
mp *z;
mp_pyobj *zz = 0;
int radix = 0;
-
char *
kwlist[] = { "x", "radix", 0 };
+
static const char *const
kwlist[] = { "x", "radix", 0 };
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:gf",
kwlist
, &x, &radix))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O|i:gf",
KWLIST
, &x, &radix))
goto end;
if (GF_PYCHECK(x)) RETURN_OBJ(x);
if (!good_radix_p(radix, 1)) VALERR("radix out of range");
goto end;
if (GF_PYCHECK(x)) RETURN_OBJ(x);
if (!good_radix_p(radix, 1)) VALERR("radix out of range");
@@
-2112,7
+2112,7
@@
but it's much easier to type than `p2' or `c2' or whatever.\n\
\n\
Notes:\n\
\n\
\n\
Notes:\n\
\n\
- * Use `//' for
division. GFs don't have `/'
division.",
+ * Use `//' for
Euclidean division. `/' gives exact rational
division.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-2144,10
+2144,10
@@
static PyObject *meth__GF_fromstring(PyObject *me,
PyObject *z = 0;
mp *zz;
mptext_stringctx sc;
PyObject *z = 0;
mp *zz;
mptext_stringctx sc;
-
char *
kwlist[] = { "class", "x", "radix", 0 };
+
static const char *const
kwlist[] = { "class", "x", "radix", 0 };
if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|i:fromstring",
if (!PyArg_ParseTupleAndKeywords(arg, kw, "Os#|i:fromstring",
-
kwlist
, &me, &p, &len, &r))
+
KWLIST
, &me, &p, &len, &r))
goto end;
if (!good_radix_p(r, 1)) VALERR("bad radix");
sc.buf = p; sc.lim = p + len;
goto end;
if (!good_radix_p(r, 1)) VALERR("bad radix");
sc.buf = p; sc.lim = p + len;
@@
-2262,10
+2262,10
@@
static PyObject *gfreduce_pynew(PyTypeObject *ty,
{
gfreduce_pyobj *mr = 0;
gfreduce r;
{
gfreduce_pyobj *mr = 0;
gfreduce r;
-
char *
kwlist[] = { "m", 0 };
+
static const char *const
kwlist[] = { "m", 0 };
mp *xx = 0;
mp *xx = 0;
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
kwlist
, convgf, &xx))
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&:new",
KWLIST
, convgf, &xx))
goto end;
if (MP_ZEROP(xx)) ZDIVERR("modulus is zero!");
gfreduce_create(&r, xx);
goto end;
if (MP_ZEROP(xx)) ZDIVERR("modulus is zero!");
gfreduce_create(&r, xx);
@@
-2323,7
+2323,7
@@
static PyTypeObject *gfreduce_pytype, gfreduce_pytype_skel = {
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"
A reduction context for reduction modulo sparse irreducibl
e polynomials.",
+"
GFReduce(N): a context for reduction modulo spars
e polynomials.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
@@
-2364,9
+2364,9
@@
static PyObject *gfn_pynew(PyTypeObject *ty, PyObject *arg, PyObject *kw)
{
mp *p = 0, *beta = 0;
gfn_pyobj *gg = 0;
{
mp *p = 0, *beta = 0;
gfn_pyobj *gg = 0;
-
char *
kwlist[] = { "p", "beta", 0 };
+
static const char *const
kwlist[] = { "p", "beta", 0 };
- if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&O&:new",
kwlist
,
+ if (!PyArg_ParseTupleAndKeywords(arg, kw, "O&O&:new",
KWLIST
,
convgf, &p, convgf, &beta))
goto end;
gg = PyObject_New(gfn_pyobj, ty);
convgf, &p, convgf, &beta))
goto end;
gg = PyObject_New(gfn_pyobj, ty);
@@
-2461,8
+2461,8
@@
static PyTypeObject gfn_pytype_skel = {
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
Py_TPFLAGS_BASETYPE,
/* @tp_doc@ */
-"
An object for transforming elements of binary fields between polynomial
\n\
-and normal basis representations.",
+"
GFN(P, BETA): an object for transforming elements of binary fields
\n\
+
between polynomial
and normal basis representations.",
0, /* @tp_traverse@ */
0, /* @tp_clear@ */
0, /* @tp_traverse@ */
0, /* @tp_clear@ */