32 lines
995 B
C
32 lines
995 B
C
|
#include <gmp.h>
|
||
|
|
||
|
|
||
|
/* Definitions according to limb size used. */
|
||
|
#if BITS_PER_MP_LIMB == 32
|
||
|
# define MAX_DIG_PER_LIMB 9
|
||
|
# define MAX_FAC_PER_LIMB 1000000000UL
|
||
|
#elif BITS_PER_MP_LIMB == 64
|
||
|
# define MAX_DIG_PER_LIMB 19
|
||
|
# define MAX_FAC_PER_LIMB 10000000000000000000ULL
|
||
|
#else
|
||
|
# error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/* Local data structure. */
|
||
|
const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
|
||
|
{ 0, 10, 100,
|
||
|
1000, 10000, 100000L,
|
||
|
1000000L, 10000000L, 100000000L,
|
||
|
1000000000L
|
||
|
#if BITS_PER_MP_LIMB > 32
|
||
|
, 10000000000ULL, 100000000000ULL,
|
||
|
1000000000000ULL, 10000000000000ULL, 100000000000000ULL,
|
||
|
1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
|
||
|
1000000000000000000ULL, 10000000000000000000ULL
|
||
|
#endif
|
||
|
#if BITS_PER_MP_LIMB > 64
|
||
|
#error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB
|
||
|
#endif
|
||
|
};
|