78#define SC_DT_MIXED_COMMA_OPERATORS
101#define SC_BIGINT_CONFIG_TEMPLATE_CLASS_HAS_STORAGE
104#if !defined(SC_BIGINT_CONFIG_TEMPLATE_CLASS_HAS_NO_BASE_CLASS) && \
105 !defined(SC_BIGINT_CONFIG_TEMPLATE_CLASS_HAS_STORAGE) && \
106 !defined(SC_BIGINT_CONFIG_BASE_CLASS_HAS_STORAGE)
107#error no BIGINT_CONFIG specified!
116#if defined(SC_BIGINT_CONFIG_BASE_CLASS_HAS_STORAGE)
117# define SC_FREE_DIGIT(FLAG)
119# define SC_FREE_DIGIT(FLAG) { m_free = FLAG; }
127#define SC_BASE_VEC_DIGITS 8
129#if !defined(SC_BASE_VEC_DIGITS)
130#error no SC_BASE_VEC_DIGITS specified!
140#define BITS_PER_BYTE 8
141#define BYTE_RADIX 256
146#define LOG2_BITS_PER_BYTE 3
151#define BYTES_PER_DIGIT_TYPE 4
152#define BITS_PER_DIGIT_TYPE 32
163#define BYTES_PER_DIGIT (std::numeric_limits<sc_digit>::digits/8)
164#define BITS_PER_DIGIT 32
167#define DIGIT_RADIX ((sc_carry)1 << BITS_PER_DIGIT)
168#define DIGIT_MASK (DIGIT_RADIX - 1)
184#if BITS_PER_DIGIT == 32
185# define SC_BIT_INDEX(BIT) ( (BIT)&(std::numeric_limits<sc_digit>::digits-1) )
186# define SC_DIGIT_INDEX(BIT_INDEX) ((BIT_INDEX)>>5)
187# define SC_MASK_DIGIT(v) (v)
188# define SC_DIGIT_COUNT(BIT_WIDTH) ((BIT_WIDTH+BITS_PER_DIGIT-1)/BITS_PER_DIGIT)
190# define SC_BIT_INDEX(BIT) ((BIT)%BITS_PER_DIGIT)
191# define SC_DIGIT_INDEX(BIT) ((BIT)/BITS_PER_DIGIT)
192# define SC_MASK_DIGIT(v) ((v) & DIGIT_MASK)
193# define SC_DIGIT_COUNT(BIT) (SC_DIGIT_INDEX(BIT)+1)
195#define SC_BIT_MASK(BITS) ~( (std::numeric_limits<sc_digit>::max() ) << SC_BIT_INDEX(BITS) )
196#define SC_BIT_MASK1(BITS) ~( (std::numeric_limits<sc_digit>::max()-1) << SC_BIT_INDEX(BITS) )
203#define BITS_PER_HALF_DIGIT (BITS_PER_DIGIT / 2)
204#define HALF_DIGIT_RADIX (1ul << BITS_PER_HALF_DIGIT)
205#define HALF_DIGIT_MASK (HALF_DIGIT_RADIX - 1)
208#define DIV_CEIL2(x, y) (((x) - 1) / (y) + 1)
212#define DIV_CEIL(x) DIV_CEIL2(x, BITS_PER_DIGIT)
222#if BITS_PER_DIGIT < 32
230#define BITS_PER_CHAR 8
231#define BITS_PER_INT (sizeof(int) * BITS_PER_CHAR)
232#define BITS_PER_LONG (sizeof(long) * BITS_PER_CHAR)
233#define BITS_PER_INT64 (sizeof(::sc_dt::int64) * BITS_PER_CHAR)
234#define BITS_PER_UINT (sizeof(unsigned int) * BITS_PER_CHAR)
235#define BITS_PER_ULONG (sizeof(unsigned long) * BITS_PER_CHAR)
236#define BITS_PER_UINT64 (sizeof(::sc_dt::uint64) * BITS_PER_CHAR)
239#define DIGITS_PER_CHAR 1
240#define DIGITS_PER_INT ((BITS_PER_INT+(BITS_PER_DIGIT-1))/BITS_PER_DIGIT)
241#define DIGITS_PER_LONG ((BITS_PER_LONG+(BITS_PER_DIGIT-1))/BITS_PER_DIGIT)
242#define DIGITS_PER_INT64 ((BITS_PER_INT64+(BITS_PER_DIGIT-1))/BITS_PER_DIGIT)
243#define DIGITS_PER_UINT ((BITS_PER_UINT+(BITS_PER_DIGIT-1))/BITS_PER_DIGIT)
244#define DIGITS_PER_ULONG ((BITS_PER_ULONG+(BITS_PER_DIGIT-1))/BITS_PER_DIGIT)
245#define DIGITS_PER_UINT64 ((BITS_PER_UINT64+(BITS_PER_DIGIT-1))/BITS_PER_DIGIT)
255#define LLWIDTH BITS_PER_INT64
256#define INTWIDTH BITS_PER_INT
260#define SC_INTWIDTH 64
constexpr uint64 UINT_ONE
constexpr uint64 UINT64_32ONES
unsigned long long uint64
constexpr int byte_one_bits[256]
constexpr uint64 UINT64_ZERO
constexpr small_type NB_DEFAULT_BASE
constexpr uint64 UINT_ZERO
constexpr uint64 UINT64_ONE
::std::ios::fmtflags fmtflags