Go to the documentation of this file.
47 #define MP_HWBITS (MP_WBITS >> 1)
48 #define MP_WBYTES (MP_WBITS >> 3)
49 #define MP_WNIBBLES (MP_WBITS >> 2)
52 # define MP_WORDS_TO_BITS(x) ((x) << 6)
53 # define MP_WORDS_TO_NIBBLES(x) ((x) << 4)
54 # define MP_WORDS_TO_BYTES(x) ((x) << 3)
55 # define MP_BITS_TO_WORDS(x) ((x) >> 6)
56 # define MP_NIBBLES_TO_WORDS(x) ((x) >> 4)
57 # define MP_BYTES_TO_WORDS(x) ((x) >> 3)
58 #elif (MP_WBITS == 32)
59 # define MP_WORDS_TO_BITS(x) ((x) << 5)
60 # define MP_WORDS_TO_NIBBLES(x) ((x) << 3)
61 # define MP_WORDS_TO_BYTES(x) ((x) << 2)
62 # define MP_BITS_TO_WORDS(x) ((x) >> 5)
63 # define MP_NIBBLES_TO_WORDS(x) ((x) >> 3)
64 # define MP_BYTES_TO_WORDS(x) ((x) >> 2)
69 #define MP_MSBMASK (((mpw) 0x1) << (MP_WBITS-1))
70 #define MP_LSBMASK ((mpw) 0x1)
71 #define MP_ALLMASK ~((mpw) 0x0)
78 # define mpcopy(size, dst, src) memcpy(dst, src, MP_WORDS_TO_BYTES(size))
85 # define mpmove(size, dst, src) memmove(dst, src, MP_WORDS_TO_BYTES(size))
117 int mpodd (
size_t size,
const mpw* data);
127 int mpeven(
size_t size,
const mpw* data);
137 int mpz (
size_t size,
const mpw* data);
147 int mpnz (
size_t size,
const mpw* data);
159 int mpeq (
size_t size,
const mpw* xdata,
const mpw* ydata);
171 int mpne (
size_t size,
const mpw* xdata,
const mpw* ydata);
184 int mpgt (
size_t size,
const mpw* xdata,
const mpw* ydata);
197 int mplt (
size_t size,
const mpw* xdata,
const mpw* ydata);
210 int mpge (
size_t size,
const mpw* xdata,
const mpw* ydata);
223 int mple (
size_t size,
const mpw* xdata,
const mpw* ydata);
234 int mpcmp(
size_t size,
const mpw* xdata,
const mpw* ydata);
247 int mpeqx(
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
260 int mpnex(
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
274 int mpgtx(
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
288 int mpltx(
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
302 int mpgex(
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
316 int mplex(
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
327 int mpcmpx(
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
440 void mpand(
size_t size,
mpw* xdata,
const mpw* ydata);
450 void mpor(
size_t size,
mpw* xdata,
const mpw* ydata);
460 void mpxor(
size_t size,
mpw* xdata,
const mpw* ydata);
490 void mpsetws(
size_t size,
mpw* xdata,
size_t y);
502 void mpsetx(
size_t xsize,
mpw* xdata,
size_t ysize,
const mpw* ydata);
524 int mpadd (
size_t size,
mpw* xdata,
const mpw* ydata);
536 int mpaddx(
size_t xsize,
mpw* xdata,
size_t ysize,
const mpw* ydata);
558 int mpsub (
size_t size,
mpw* xdata,
const mpw* ydata);
570 int mpsubx(
size_t xsize,
mpw* xdata,
size_t ysize,
const mpw* ydata);
590 size_t mpsize(
size_t size,
const mpw* data);
599 size_t mpbits(
size_t size,
const mpw* data);
608 void mplshift(
size_t size,
mpw* data,
size_t count);
611 void mprshift(
size_t size,
mpw* data,
size_t count);
669 void mpmul(
mpw* result,
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata);
675 void mpsqr(
mpw* result,
size_t size,
const mpw* data);
687 void mpmod (
mpw* result,
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw*ydata,
mpw* wksp);
690 void mpndivmod(
mpw* result,
size_t xsize,
const mpw* xdata,
size_t ysize,
const mpw* ydata,
mpw* wksp);
703 void mpfprint(FILE* f,
size_t size,
const mpw* data);
713 int i2osp(
byte* osdata,
size_t ossize,
const mpw* idata,
size_t isize);
716 int os2ip(
mpw* idata,
size_t isize,
const byte* osdata,
size_t ossize);
719 int hs2ip(
mpw* idata,
size_t isize,
const char* hsdata,
size_t hssize);