X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-perl/blobdiff_plain/f9952aec1cf6c64a5681308eea817b6113a37433..fcd15e0b7a3d0f0ca2f30953573f8d1f6b8e8bd2:/gf.xs diff --git a/gf.xs b/gf.xs index 3ea6464..270d69c 100644 --- a/gf.xs +++ b/gf.xs @@ -34,7 +34,7 @@ new(me, sv = 0, radix = 0) SV *sv int radix CODE: - RETVAL = sv ? mp_fromsv(sv, "sv", "Catacomb::GF", radix, 1) : MP_ZERO; + RETVAL = sv ? mp_fromsv(sv, "sv", radix, 1) : MP_ZERO; OUTPUT: RETVAL @@ -72,70 +72,6 @@ loadl(me, sv) OUTPUT: RETVAL -int -metrics(m) - gf *m - INTERFACE_MACRO: - XSINTERFACE_FUNC - XSINTERFACE_FUNC_SETMP - INTERFACE: - octets bits - -SV * -storeb(m, i = -1) - gf *m - int i - PREINIT: - size_t sz; - CODE: - sz = (i < 0) ? mp_octets(m) : i; - RETVAL = NEWSV(0, sz ? sz : 1); - mp_storeb(m, SvPVX(RETVAL), sz); - SvCUR_set(RETVAL, sz); - SvPOK_on(RETVAL); - OUTPUT: - RETVAL - -SV * -storel(m, i = -1) - gf *m - int i - PREINIT: - size_t sz; - CODE: - sz = (i < 0) ? mp_octets(m) : i; - RETVAL = NEWSV(0, sz ? sz : 1); - mp_storel(m, SvPVX(RETVAL), sz); - SvCUR_set(RETVAL, sz); - SvPOK_on(RETVAL); - OUTPUT: - RETVAL - -SV * -tostring(m, radix = 16) - gf *m - int radix - CODE: - RETVAL = NEWSV(0, 0); - mp_writesv(m, RETVAL, radix); - OUTPUT: - RETVAL - -SV * -toint(m) - gf *m - CODE: - RETVAL = newSViv(mp_toiv(m)); - OUTPUT: - RETVAL - -SV * -DESTROY(m) - gf *m - CODE: - mp_drop(m); - XSRETURN_UNDEF; - mp * gf_sqr(a) gf *a @@ -159,9 +95,32 @@ binop(a, b) INTERFACE: add sub mul +mp * +logop(a, b) + gf *a + gf *b + C_ARGS: + MP_NEW, a, b + INTERFACE_MACRO: + XSINTERFACE_FUNC + XSINTERFACE_FUNC_SETMP + INTERFACE: + and or xor nand nor + +mp * +unop(a) + gf *a + C_ARGS: + MP_NEW, a + INTERFACE_MACRO: + XSINTERFACE_FUNC + XSINTERFACE_FUNC_SETMP + INTERFACE: + not + gf * shiftop(a, n) - mp *a + gf *a int n C_ARGS: MP_NEW, a, n @@ -171,14 +130,17 @@ shiftop(a, n) INTERFACE: lsl lsr -int -gf_eq(a, b) +gf * +flipbits(a, n) gf *a - gf *b - CODE: - RETVAL = mp_eq(a, b); - OUTPUT: - RETVAL + unsigned long n + C_ARGS: + MP_NEW, a, n + INTERFACE_MACRO: + XSINTERFACE_FUNC + XSINTERFACE_FUNC_SETMP + INTERFACE: + setbit clearbit int gf_irreduciblep(a) @@ -235,15 +197,6 @@ gcd(a, b) break; } -GF_Reduce * -makereduce(x) - gf *x - CODE: - RETVAL = CREATE(GF_Reduce); - gfreduce_create(RETVAL, x); - OUTPUT: - RETVAL - MODULE = Catacomb PACKAGE = Catacomb::GF::Reduce PREFIX = gfreduce_ GF_Reduce *