X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/f4535c6454395e6d56ce0091a07b6d4f7d54a47f..ab6ce636633a45ab3b1046150b30aee43eca8d42:/gf-arith.c diff --git a/gf-arith.c b/gf-arith.c index f380a35d..eabbff83 100644 --- a/gf-arith.c +++ b/gf-arith.c @@ -179,11 +179,17 @@ void gf_div(mp **qq, mp **rr, mp *a, mp *b) int gf_irreduciblep(mp *f) { - unsigned long m = mp_bits(f) - 1; + unsigned long m; mp *u = MP_TWO; mp *v = MP_NEW; - m /= 2; + if (MP_ZEROP(f)) + return (0); + else if (MP_LEN(f) == 1) { + if (f->v[0] < 2) return (0); + if (f->v[0] < 4) return (1); + } + m = (mp_bits(f) - 1)/2; while (m) { u = gf_sqr(u, u); gf_div(0, &u, u, f);