2
#ifdef BN_MP_RADIX_SIZE_C
3
/* LibTomMath, multiple-precision integer library -- Tom St Denis
5
* LibTomMath is a library that provides multiple-precision
6
* integer arithmetic as well as number theoretic functionality.
8
* The library was designed directly after the MPI library by
9
* Michael Fromberger but has been written from scratch with
10
* additional optimizations in place.
12
* The library is free for all purposes without any express
15
* Tom St Denis, tomstdenis@gmail.com, http://libtom.org
18
/* returns size of ASCII reprensentation */
19
int mp_radix_size (mp_int * a, int radix, int *size)
27
/* special case for binary */
29
*size = mp_count_bits (a) + (a->sign == MP_NEG ? 1 : 0) + 1;
33
/* make sure the radix is in range */
34
if (radix < 2 || radix > 64) {
38
if (mp_iszero(a) == MP_YES) {
43
/* digs is the digit count */
46
/* if it's negative add one for the sign */
47
if (a->sign == MP_NEG) {
51
/* init a copy of the input */
52
if ((res = mp_init_copy (&t, a)) != MP_OKAY) {
56
/* force temp to positive */
59
/* fetch out all of the digits */
60
while (mp_iszero (&t) == MP_NO) {
61
if ((res = mp_div_d (&t, (mp_digit) radix, &t, &d)) != MP_OKAY) {
69
/* return digs + 1, the 1 is for the NULL byte that would be required. */
76
/* $Source: /cvs/libtom/libtommath/bn_mp_radix_size.c,v $ */
77
/* $Revision: 1.5 $ */
78
/* $Date: 2006/12/28 01:25:13 $ */