Much wider support for Catacomb in all its glory.
[catacomb-perl] / field.xs
index 5121979..78067c4 100644 (file)
--- a/field.xs
+++ b/field.xs
@@ -97,23 +97,23 @@ type(f)
        OUTPUT:
        RETVAL
 
-mp *
-zero(f)
+fe *
+_zero(f)
        Field *f
        CODE:
        RETVAL = MP_COPY(f->zero);
        OUTPUT:
        RETVAL
 
-mp *
-one(f)
+fe *
+_one(f)
        Field *f
        CODE:
        RETVAL = MP_COPY(f->one);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 m(f)
        Field *f
        CODE:
@@ -121,6 +121,14 @@ m(f)
        OUTPUT:
        RETVAL
 
+fe *
+q(f)
+       Field *f
+       CODE:
+       RETVAL = MP_COPY(f->q);
+       OUTPUT:
+       RETVAL
+
 UV
 nbits(f)
        Field *f
@@ -137,8 +145,8 @@ noctets(f)
        OUTPUT:
        RETVAL
 
-mp *
-rand(f, r = &rand_global)
+fe *
+_rand(f, r = &rand_global)
        Field *f
        grand *r
        CODE:
@@ -155,19 +163,19 @@ samep(f, ff)
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 in(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        RETVAL = F_IN(f, MP_NEW, x);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 out(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        RETVAL = F_OUT(f, MP_NEW, x);
        OUTPUT:
@@ -176,91 +184,93 @@ out(f, x)
 bool
 zerop(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        RETVAL = F_ZEROP(f, x);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 neg(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        RETVAL = F_NEG(f, MP_NEW, x);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 add(f, x, y)
        Field *f
-       mp *x
-       mp *y
+       fe *x
+       fe *y
        CODE:
        RETVAL = F_ADD(f, MP_NEW, x, y);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 sub(f, x, y)
        Field *f
-       mp *x
-       mp *y
+       fe *x
+       fe *y
        CODE:
        RETVAL = F_SUB(f, MP_NEW, x, y);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 mul(f, x, y)
        Field *f
-       mp *x
-       mp *y
+       fe *x
+       fe *y
        CODE:
        RETVAL = F_MUL(f, MP_NEW, x, y);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 sqr(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        RETVAL = F_SQR(f, MP_NEW, x);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 inv(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
+       if (F_ZEROP(f, x))
+         croak("division by zero");
        RETVAL = F_INV(f, MP_NEW, x);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 reduce(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        RETVAL = F_REDUCE(f, MP_NEW, x);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 sqrt(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        RETVAL = F_SQRT(f, MP_NEW, x);
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 quadsolve(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        if (F_TYPE(f) != FTY_BINARY)
          croak("quadsolve only works on binary fields");
@@ -268,10 +278,10 @@ quadsolve(f, x)
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 dbl(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        if (F_TYPE(f) != FTY_PRIME)
          croak("dbl only works on prime fields");
@@ -279,10 +289,10 @@ dbl(f, x)
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 tpl(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        if (F_TYPE(f) != FTY_PRIME)
          croak("tpl only works on prime fields");
@@ -290,10 +300,10 @@ tpl(f, x)
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 qdl(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        if (F_TYPE(f) != FTY_PRIME)
          croak("qdl only works on prime fields");
@@ -301,10 +311,10 @@ qdl(f, x)
        OUTPUT:
        RETVAL
 
-mp *
+fe *
 hlv(f, x)
        Field *f
-       mp *x
+       fe *x
        CODE:
        if (F_TYPE(f) != FTY_PRIME)
          croak("hlv only works on prime fields");
@@ -312,3 +322,10 @@ hlv(f, x)
        OUTPUT:
        RETVAL
 
+SV *
+get(f)
+       Field *f
+       CODE:
+       RETVAL = info_field(f);
+       OUTPUT:
+       RETVAL