*.c: Reformat docstrings.
[catacomb-python] / mp.c
diff --git a/mp.c b/mp.c
index f29474a..ad68e03 100644 (file)
--- a/mp.c
+++ b/mp.c
@@ -804,20 +804,20 @@ static PyMethodDef mp_pymethods[] = {
   METH (sqr,           "X.sqr() -> X^2")
   METH (sqrt,          "X.sqrt() -> largest integer <= sqrt(X)")
   METH (gcd,           "X.gcd(Y) -> gcd(X, Y)")
-  METH (gcdx,
-        "X.gcdx(Y) -> (gcd(X, Y), U, V) with X U + Y V = gcd(X, Y)")
+  METH (gcdx,          "X.gcdx(Y) -> (gcd(X, Y), U, V) "
+                                               "with X U + Y V = gcd(X, Y)")
   METH (modinv,        "X.modinv(Y) -> multiplicative inverse of Y mod X")
   METH (modsqrt,       "X.modsqrt(Y) -> square root of Y mod X, if X prime")
-  METH (leastcongruent,
-        "X.leastcongruent(B, M) -> smallest Z >= B with Z == X (mod M)")
+  METH (leastcongruent, "X.leastcongruent(B, M) -> "
+                                      "smallest Z >= B with Z == X (mod M)")
   KWMETH(primep,       "X.primep([rng = rand]) -> X is prime?")
   KWMETH(tostring,     "X.tostring([radix = 10]) -> STR")
   KWMETH(storel,       "X.storel([len = -1]) -> little-endian bytes")
   KWMETH(storeb,       "X.storeb([len = -1]) -> big-endian bytes")
-  KWMETH(storel2c,
-        "X.storel2c([len = -1]) -> little-endian bytes, two's complement")
-  KWMETH(storeb2c,
-        "X.storeb2c([len = -1]) -> big-endian bytes, two's complement")
+  KWMETH(storel2c,     "X.storel2c([len = -1]) -> "
+                                    "little-endian bytes, two's complement")
+  KWMETH(storeb2c,     "X.storeb2c([len = -1]) -> "
+                                       "big-endian bytes, two's complement")
   METH (tobuf,         "X.tobuf() -> buffer format")
 #undef METHNAME
   { 0 }
@@ -892,20 +892,20 @@ static PyTypeObject mp_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"Multiprecision integers, similar to `long' but more efficient and\n\
-versatile.  Support all the standard arithmetic operations, with\n\
-implicit conversions from `PrimeFilter', and other objects which\n\
-convert to `long'.\n\
-\n\
-Constructor MP(X, [radix = R]) attempts to convert X to an `MP'.  If\n\
-X is a string, it's read in radix-R form, or we look for a prefix\n\
-if R = 0.  Other acceptable things are field elements, elliptic curve\n\
-points, group elements, Python `int' and `long' objects, and anything\n\
-with an integer conversion.\n\
-\n\
-Notes:\n\
-\n\
-  * Use `//' for integer division: `/' gives exact rational division.",
+  "Multiprecision integers, similar to `long' but more efficient and\n"
+  "versatile.  Support all the standard arithmetic operations, with\n"
+  "implicit conversions from `PrimeFilter', and other objects which\n"
+  "convert to `long'.\n"
+  "\n"
+  "Constructor MP(X, [radix = R]) attempts to convert X to an `MP'.  If\n"
+  "X is a string, it's read in radix-R form, or we look for a prefix\n"
+  "if R = 0.  Other acceptable things are field elements, elliptic curve\n"
+  "points, group elements, Python `int' and `long' objects, and anything\n"
+  "with an integer conversion.\n"
+  "\n"
+  "Notes:\n"
+  "\n"
+  "  * Use `//' for integer division: `/' gives exact rational division.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -1070,15 +1070,15 @@ static PyObject *mmget_livep(PyObject *me, void *hunoz)
 
 static PyGetSetDef mpmul_pygetset[] = {
 #define GETSETNAME(op, name) mm##op##_##name
-  GET  (livep,                 "MM.livep -> flag: object still valid?")
+  GET  (livep,         "MM.livep -> flag: object still valid?")
 #undef GETSETNAME
   { 0 }
 };
 
 static PyMethodDef mpmul_pymethods[] = {
 #define METHNAME(name) mmmeth_##name
-  METH (factor,                "MM.factor(ITERABLE) or MM.factor(I, ...)")
-  METH (done,                  "MM.done() -> PRODUCT")
+  METH (factor,        "MM.factor(ITERABLE) or MM.factor(I, ...)")
+  METH (done,          "MM.done() -> PRODUCT")
 #undef METHNAME
   { 0 }
 };
@@ -1108,7 +1108,7 @@ static PyTypeObject *mpmul_pytype, mpmul_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"MPMul(N_0, N_1, ....): an object for multiplying many small integers.",
+  "MPMul(N_0, N_1, ....): an object for multiplying many small integers.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -1337,15 +1337,15 @@ static PyMethodDef mpmont_pymethods[] = {
   METH (int,           "M.int(X) -> XR")
   METH (mul,           "M.mul(XR, YR) -> ZR where Z = X Y")
   METH (expr,          "M.expr(XR, N) -> ZR where Z = X^N mod M.m")
-  METH (mexpr,         "\
-M.mexpr([(XR0, N0), (XR1, N1), ...]) = ZR where Z = X0^N0 X1^N1 ... mod M.m\n\
-\t(the list may be flattened if this more convenient.)")
+  METH (mexpr,         "M.mexpr([(XR0, N0), (XR1, N1), ...]) = ZR "
+                                       "where Z = X0^N0 X1^N1 ... mod M.m\n"
+                   "\t(the list may be flattened if this more convenient.)")
   METH (reduce,        "M.reduce(XR) -> X")
   METH (ext,           "M.ext(XR) -> X")
   METH (exp,           "M.exp(X, N) -> X^N mod M.m")
-  METH (mexp,          "\
-M.mexp([(X0, N0), (X1, N1), ...]) = X0^N0 X1^N1 ... mod M.m\n\
-\t(the list may be flattened if this more convenient.)")
+  METH (mexp,          "M.mexp([(X0, N0), (X1, N1), ...]) = "
+                                                 "X0^N0 X1^N1 ... mod M.m\n"
+                   "\t(the list may be flattened if this more convenient.)")
 #undef METHNAME
   { 0 }
 };
@@ -1375,7 +1375,7 @@ static PyTypeObject *mpmont_pytype, mpmont_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"MPMont(N): a Montgomery reduction context.",
+  "MPMont(N): a Montgomery reduction context.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -1482,9 +1482,9 @@ static PyMethodDef mpbarrett_pymethods[] = {
 #define METHNAME(name) mbmeth_##name
   METH (reduce,        "B.reduce(X) -> X mod B.m")
   METH (exp,           "B.exp(X, N) -> X^N mod B.m")
-  METH (mexp,          "\
-B.mexp([(X0, N0), (X1, N1), ...]) = X0^N0 X1^N1 ... mod B.m\n\
-\t(the list may be flattened if this more convenient.)")
+  METH (mexp,          "B.mexp([(X0, N0), (X1, N1), ...]) = "
+                                                 "X0^N0 X1^N1 ... mod B.m\n"
+                   "\t(the list may be flattened if this more convenient.)")
 #undef METHNAME
   { 0 }
 };
@@ -1514,7 +1514,7 @@ static PyTypeObject *mpbarrett_pytype, mpbarrett_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"MPBarrett(N): a Barrett reduction context.",
+  "MPBarrett(N): a Barrett reduction context.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -1642,7 +1642,7 @@ static PyTypeObject *mpreduce_pytype, mpreduce_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"MPReduce(N): a reduction context for reduction modulo Solinas primes.",
+  "MPReduce(N): a reduction context for reduction modulo Solinas primes.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -1824,7 +1824,7 @@ static PyTypeObject *mpcrt_pytype, mpcrt_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"MPCRT(SEQ): a context for solving Chinese Remainder Theorem problems.",
+  "MPCRT(SEQ): a context for solving Chinese Remainder Theorem problems.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -2011,8 +2011,7 @@ static PyMethodDef gf_pymethods[] = {
   METH (testbit,       "X.testbit(N) -> true/false if bit N set/clear in X")
   METH (sqr,           "X.sqr() -> X^2")
   METH (gcd,           "X.gcd(Y) -> gcd(X, Y)")
-  METH (gcdx,
-        "X.gcdx(Y) -> (gcd(X, Y), U, V) with X U + Y V = gcd(X, Y)")
+  METH (gcdx,   "X.gcdx(Y) -> (gcd(X, Y), U, V) with X U + Y V = gcd(X, Y)")
   METH (modinv,        "X.modinv(Y) -> multiplicative inverse of Y mod X")
   METH (irreduciblep,  "X.irreduciblep() -> true/false")
 #undef METHNAME
@@ -2020,10 +2019,10 @@ static PyMethodDef gf_pymethods[] = {
   KWMETH(tostring,     "X.tostring([radix = 10]) -> STR")
   KWMETH(storel,       "X.storel([len = -1]) -> little-endian bytes")
   KWMETH(storeb,       "X.storeb([len = -1]) -> big-endian bytes")
-  KWMETH(storel2c,
-        "X.storel2c([len = -1]) -> little-endian bytes, two's complement")
-  KWMETH(storeb2c,
-        "X.storeb2c([len = -1]) -> big-endian bytes, two's complement")
+  KWMETH(storel2c,     "X.storel2c([len = -1]) -> "
+                                    "little-endian bytes, two's complement")
+  KWMETH(storeb2c,     "X.storeb2c([len = -1]) -> "
+                                       "big-endian bytes, two's complement")
   METH (tobuf,         "X.tobuf() -> buffer format")
 #undef METHNAME
   { 0 }
@@ -2098,21 +2097,21 @@ static PyTypeObject gf_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"Binary polynomials.  Support almost all the standard arithmetic\n\
-operations.\n\
-\n\
-Constructor GF(X, [radix = R]) attempts to convert X to a `GF'.  If\n\
-X is a string, it's read in radix-R form, or we look for a prefix\n\
-if R = 0.  Other acceptable things are field elements, elliptic curve\n\
-points, group elements, Python `int' and `long' objects, and anything\n\
-with an integer conversion.\n\
-\n\
-The name is hopelessly wrong from a technical point of view, but\n\
-but it's much easier to type than `p2' or `c2' or whatever.\n\
-\n\
-Notes:\n\
-\n\
-  * Use `//' for Euclidean division: `/' gives exact rational division.",
+  "Binary polynomials.  Support almost all the standard arithmetic\n"
+  "operations.\n"
+  "\n"
+  "Constructor GF(X, [radix = R]) attempts to convert X to a `GF'.  If\n"
+  "X is a string, it's read in radix-R form, or we look for a prefix\n"
+  "if R = 0.  Other acceptable things are field elements, elliptic curve\n"
+  "points, group elements, Python `int' and `long' objects, and anything\n"
+  "with an integer conversion.\n"
+  "\n"
+  "The name is hopelessly wrong from a technical point of view, but\n"
+  "but it's much easier to type than `p2' or `c2' or whatever.\n"
+  "\n"
+  "Notes:\n"
+  "\n"
+  "  * Use `//' for Euclidean division: `/' gives exact rational division.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -2290,7 +2289,7 @@ static PyMethodDef gfreduce_pymethods[] = {
 #define METHNAME(name) grmeth_##name
   METH (reduce,        "R.reduce(X) -> X mod B.m")
   METH (trace,        "R.trace(X) -> Tr(X) = x + x^2 + ... + x^{2^{m - 1}}")
-  METH (halftrace,   "R.halftrace(X) -> x + x^{2^2} + ... + x^{2^{m - 1}}")
+  METH (halftrace,    "R.halftrace(X) -> x + x^{2^2} + ... + x^{2^{m - 1}}")
   METH (sqrt,          "R.sqrt(X) -> Y where Y^2 = X mod R")
   METH (quadsolve,     "R.quadsolve(X) -> Y where Y^2 + Y = X mod R")
   METH (exp,           "R.exp(X, N) -> X^N mod B.m")
@@ -2323,7 +2322,7 @@ static PyTypeObject *gfreduce_pytype, gfreduce_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"GFReduce(N): a context for reduction modulo sparse polynomials.",
+  "GFReduce(N): a context for reduction modulo sparse polynomials.",
 
   0,                                   /* @tp_traverse@ */
   0,                                   /* @tp_clear@ */
@@ -2461,8 +2460,8 @@ static PyTypeObject gfn_pytype_skel = {
     Py_TPFLAGS_BASETYPE,
 
   /* @tp_doc@ */
-"GFN(P, BETA): an object for transforming elements of binary fields\n\
-  between polynomial 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@ */
@@ -2489,38 +2488,26 @@ static PyTypeObject gfn_pytype_skel = {
 
 static PyMethodDef methods[] = {
 #define METHNAME(func) meth_##func
-  KWMETH(_MP_fromstring,       "\
-fromstring(STR, [radix = 0]) -> (X, REST)\n\
-\n\
-Parse STR as a large integer, 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.")
-  KWMETH(_GF_fromstring,       "\
-fromstring(STR, [radix = 0]) -> (X, REST)\n\
-\n\
-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_fibonacci,         "\
-fibonacci(I) -> F(I): compute Fibonacci number")
-  METH (_MP_loadl,             "\
-loadl(STR) -> X: read little-endian bytes")
-  METH (_MP_loadb,             "\
-loadb(STR) -> X: read big-endian bytes")
-  METH (_MP_loadl2c,           "\
-loadl2c(STR) -> X: read little-endian bytes, two's complement")
-  METH (_MP_loadb2c,           "\
-loadb2c(STR) -> X: read big-endian bytes, two's complement")
-  METH (_MP_frombuf,           "\
-frombuf(STR) -> (X, REST): read buffer format")
-  METH (_GF_loadl,             "\
-loadl(STR) -> X: read little-endian bytes")
-  METH (_GF_loadb,             "\
-loadb(STR) -> X: read big-endian bytes")
-  METH (_GF_frombuf,           "\
-frombuf(STR) -> (X, REST): read buffer format")
+  KWMETH(_MP_fromstring, "fromstring(STR, [radix = 0]) -> (X, REST)\n"
+    "  Parse STR as a large integer, according to RADIX.  If RADIX is\n"
+    "  zero, read a prefix from STR to decide radix: allow `0b' for binary,\n"
+    "  `0' or `0o' for octal, `0x' for hex, or `R_' for other radix R.")
+  KWMETH(_GF_fromstring, "fromstring(STR, [radix = 0]) -> (X, REST)\n"
+    "  Parse STR as a binary polynomial, according to RADIX.  If RADIX is\n"
+    "  zero, read a prefix from STR to decide radix: allow `0b' for binary,\n"
+    "  `0' or `0o' for octal, `0x' for hex, or `R_' for other radix R.")
+  METH (_MP_factorial, "factorial(I) -> I!: compute factorial")
+  METH (_MP_fibonacci, "fibonacci(I) -> F(I): compute Fibonacci number")
+  METH (_MP_loadl,     "loadl(STR) -> X: read little-endian bytes")
+  METH (_MP_loadb,     "loadb(STR) -> X: read big-endian bytes")
+  METH (_MP_loadl2c,   "loadl2c(STR) -> X: "
+                               "read little-endian bytes, two's complement")
+  METH (_MP_loadb2c,   "loadb2c(STR) -> X: "
+                                  "read big-endian bytes, two's complement")
+  METH (_MP_frombuf,   "frombuf(STR) -> (X, REST): read buffer format")
+  METH (_GF_loadl,     "loadl(STR) -> X: read little-endian bytes")
+  METH (_GF_loadb,     "loadb(STR) -> X: read big-endian bytes")
+  METH (_GF_frombuf,   "frombuf(STR) -> (X, REST): read buffer format")
 #undef METHNAME
   { 0 }
 };