X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/d3409d5ecf2492cff862616de72a580d1a8e8dc0..2bdb833f485d3c985a0f930865452fcaafdf95dd:/mp-io.c diff --git a/mp-io.c b/mp-io.c index 0aa2bca..8e76917 100644 --- a/mp-io.c +++ b/mp-io.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: mp-io.c,v 1.1 1999/11/17 18:02:16 mdw Exp $ + * $Id: mp-io.c,v 1.3 1999/11/21 22:13:02 mdw Exp $ * * Loading and storing of multiprecision integers * @@ -30,6 +30,12 @@ /*----- Revision history --------------------------------------------------* * * $Log: mp-io.c,v $ + * Revision 1.3 1999/11/21 22:13:02 mdw + * Add mp version of MPX_BITS. + * + * Revision 1.2 1999/11/19 13:19:06 mdw + * Set flags on results correctly. + * * Revision 1.1 1999/11/17 18:02:16 mdw * New multiprecision integer arithmetic suite. * @@ -58,6 +64,23 @@ size_t mp_octets(const mp *m) return (sz); } +/* --- @mp_bits@ --- * + * + * Arguments: @const mp *m@ = a multiprecision integer + * + * Returns: The number of bits required to represent @m@. + * + * Use: Calculates the external storage required for a multiprecision + * integer. + */ + +unsigned long mp_bits(const mp *m) +{ + unsigned long bits; + MPX_BITS(bits, m->v, m->vl); + return (bits); +} + /* --- @mp_loadl@ --- * * * Arguments: @mp *d@ = destination @@ -76,6 +99,7 @@ mp *mp_loadl(mp *d, const void *pv, size_t sz) { MP_MODIFY(d, MPW_RQ(sz)); mpx_loadl(d->v, d->vl, pv, sz); + d->f &= ~(MP_UNDEF | MP_NEG); mp_shrink(d); return (d); } @@ -120,6 +144,7 @@ mp *mp_loadb(mp *d, const void *pv, size_t sz) { MP_MODIFY(d, MPW_RQ(sz)); mpx_loadb(d->v, d->vl, pv, sz); + d->f &= ~(MP_UNDEF | MP_NEG); mp_shrink(d); return (d); }