int MP_cmp(T x, T y) { int sx, sy; assert(x); assert(y); sx = sign(x); sy = sign(y); if (sx != sy) return sy - sx; else return XP_cmp(nbytes, x, y); }
int MP_cmpui(T x, unsigned long y) { assert(x); if ((int)sizeof y >= nbytes) { unsigned long v = XP_toint(nbytes, x); if (v < y) return -1; else if (v > y) return 1; else return 0; } else { XP_fromint(nbytes, tmp[2], y); return XP_cmp(nbytes, x, tmp[2]); } }
int MP_cmpi(T x, long y) { int sx, sy = y < 0; assert(x); sx = sign(x); if (sx != sy) return sy - sx; else if ((int)sizeof y >= nbytes) { long v = MP_toint(x); if (v < y) return -1; else if (v > y) return 1; else return 0; } else { MP_fromint(tmp[2], y); return XP_cmp(nbytes, x, tmp[2]); } }
int MP_cmpu(T x, T y) { assert(x); assert(y); return XP_cmp(nbytes, x, y); }
static int cmp(T x, T y) { if (x->ndigits != y->ndigits) return x->ndigits - y->ndigits; else return XP_cmp(x->ndigits, x->digits, y->digits); }