/* -*-c-*-
*
- * $Id: f-prime.c,v 1.12 2004/04/08 01:36:15 mdw Exp $
+ * $Id$
*
* Prime fields with Montgomery arithmetic
*
static mp *fout(field *ff, mp *d, mp *x)
{ fctx *f = (fctx *)ff; return (mpmont_reduce(&f->mm, d, x)); }
-static int fzerop(field *ff, mp *x) { return (!MP_LEN(x)); }
+static int fzerop(field *ff, mp *x) { return (MP_ZEROP(x)); }
static mp *fneg(field *ff, mp *d, mp *x)
{ fctx *f = (fctx *)ff; return (mp_sub(d, f->mm.m, x)); }
static mp *fadd(field *ff, mp *d, mp *x, mp *y) {
fctx *f = (fctx *)ff; d = mp_add(d, x, y);
- if (d->f & MP_NEG) d = mp_add(d, d, f->mm.m);
+ if (MP_NEGP(d)) d = mp_add(d, d, f->mm.m);
else if (MP_CMP(d, >, f->mm.m)) d = mp_sub(d, d, f->mm.m);
return (d);
}
static mp *fsub(field *ff, mp *d, mp *x, mp *y) {
fctx *f = (fctx *)ff; d = mp_sub(d, x, y);
- if (d->f & MP_NEG) d = mp_add(d, d, f->mm.m);
+ if (MP_NEGP(d)) d = mp_add(d, d, f->mm.m);
else if (MP_CMP(d, >, f->mm.m)) d = mp_sub(d, d, f->mm.m);
return (d);
}
static mp *fhlv(field *ff, mp *d, mp *x) {
fctx *f = (fctx *)ff;
- if (!MP_LEN(x)) { MP_COPY(x); MP_DROP(d); return (x); }
+ if (MP_ZEROP(x)) { MP_COPY(x); MP_DROP(d); return (x); }
if (x->v[0] & 1) { d = mp_add(d, x, f->mm.m); x = d; }
return (mp_lsr(d, x, 1));
}
{
fctx *f;
- if (!MP_ISPOS(p) || !MP_ISODD(p))
+ if (!MP_POSP(p) || !MP_ODDP(p))
return (0);
f = CREATE(fctx);
f->f.ops = &fops;