Import of libtommath 0.35 From ltm-0.35.tar.bz2 SHA1 of 3f193dbae9351e92d02530994fa18236f7fde01c
author Matt Johnston Wed, 08 Mar 2006 13:16:18 +0000 97db060d0ef5
line wrap: on
line source
```#include <tommath.h>
/* LibTomMath, multiple-precision integer library -- Tom St Denis
*
* LibTomMath is a library that provides multiple-precision
* integer arithmetic as well as number theoretic functionality.
*
* The library was designed directly after the MPI library by
* Michael Fromberger but has been written from scratch with
*
* The library is free for all purposes without any express
* guarantee it works.
*
* Tom St Denis, [email protected], http://math.libtomcrypt.org
*/

/* stores a bignum as a ASCII string in a given radix (2..64) */
{
int     res, digs;
mp_int  t;
mp_digit d;
char   *_s = str;

/* check range of the radix */
return MP_VAL;
}

/* quick out if its zero */
if (mp_iszero(a) == 1) {
*str++ = '0';
*str = '\0';
return MP_OKAY;
}

if ((res = mp_init_copy (&t, a)) != MP_OKAY) {
return res;
}

/* if it is negative output a - */
if (t.sign == MP_NEG) {
++_s;
*str++ = '-';
t.sign = MP_ZPOS;
}

digs = 0;
while (mp_iszero (&t) == 0) {
if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) {
mp_clear (&t);
return res;
}
*str++ = mp_s_rmap[d];
++digs;
}

/* reverse the digits of the string.  In this case _s points
* to the first digit [exluding the sign] of the number]
*/
bn_reverse ((unsigned char *)_s, digs);

/* append a NULL so the string is properly terminated */
*str = '\0';

mp_clear (&t);
return MP_OKAY;
}

#endif
```