|
Namespaces |
namespace | big |
Defines |
#define | BIGHIGHBIT(n) ((n)[sizeof(n) / sizeof(big::word) - 1] & WORDHIGHBIT) |
#define | BIGONETYPE template<class T> |
#define | BIGTWOTYPES template<class T, class Bigger> |
#define | BIGSMALLTYPE template<class Smaller> |
#define | BIGWORDCOUNT_FROMBITCOUNT(bits) ((bits) / 8 / sizeof(big::word)) |
#define | BIGWORDCOUNT(T) (sizeof(T) / sizeof(big::word)) |
#define | BIGBITCOUNT(T) (sizeof(T) * 8) |
#define | BIGDOUBLESIZE(T, var_name) big::word (var_name)[BIGWORDCOUNT(T) * 2] |
#define | BIGHALFSIZE(T, var_name) big::word (var_name)[BIGWORDCOUNT(T) / 2] |
#define | BIGINTFAST INLINE Int<T> & |
#define | BIGINTSLOW Int<T> |
Typedefs |
typedef u32 | word |
typedef word | u128 [BIGWORDCOUNT_FROMBITCOUNT(128)] |
typedef word | u256 [BIGWORDCOUNT_FROMBITCOUNT(256)] |
typedef word | u512 [BIGWORDCOUNT_FROMBITCOUNT(512)] |
typedef word | u1024 [BIGWORDCOUNT_FROMBITCOUNT(1024)] |
typedef word | u2048 [BIGWORDCOUNT_FROMBITCOUNT(2048)] |
typedef word | u4096 [BIGWORDCOUNT_FROMBITCOUNT(4096)] |
typedef word | u8192 [BIGWORDCOUNT_FROMBITCOUNT(8192)] |
typedef word | u16384 [BIGWORDCOUNT_FROMBITCOUNT(16384)] |
typedef word | u32768 [BIGWORDCOUNT_FROMBITCOUNT(32768)] |
Functions |
BIGONETYPE INLINE void | zero (T &n) |
BIGONETYPE INLINE void | usetw (T &a, word b) |
BIGONETYPE INLINE void | ssetw (T &a, word b) |
BIGONETYPE INLINE void | set (T &a, T &b) |
BIGTWOTYPES INLINE void | usetlow (Bigger &a, T &b) |
BIGTWOTYPES INLINE void | ssetlow (Bigger &a, T &b) |
BIGTWOTYPES INLINE void | sethigh (Bigger &a, T &b) |
BIGTWOTYPES INLINE void | takelow (T &a, Bigger &b) |
BIGTWOTYPES INLINE void | takehigh (T &a, Bigger &b) |
BIGONETYPE bool | ugreater (T &a, T &b) |
BIGONETYPE bool | ugreaterOrEqual (T &a, T &b) |
BIGONETYPE bool | sgreater (T &a, T &b) |
BIGONETYPE bool | sgreaterOrEqual (T &a, T &b) |
BIGONETYPE INLINE bool | equal (T &a, T &b) |
BIGONETYPE INLINE bool | isZero (T &n) |
BIGONETYPE void | bAND (T &a, T &b) |
BIGONETYPE void | bOR (T &a, T &b) |
BIGONETYPE void | bXOR (T &a, T &b) |
BIGONETYPE void | bNOT (T &n) |
BIGONETYPE void | shiftLeft1 (T &n) |
BIGONETYPE void | shiftLeft (T &n, u32 s) |
BIGONETYPE void | ushiftRight1 (T &n) |
BIGONETYPE void | ushiftRight (T &n, u32 s) |
BIGONETYPE void | sshiftRight1 (T &n) |
BIGONETYPE void | sshiftRight (T &n, u32 s) |
BIGONETYPE void | add (T &a, T &b) |
BIGONETYPE void | increment (T &n) |
BIGONETYPE void | subtract (T &a, T &b) |
BIGONETYPE void | decrement (T &n) |
BIGONETYPE void | negate (T &n) |
BIGONETYPE void | usquare (T &a) |
BIGTWOTYPES void | umultiply (T &a, T &b, Bigger &m) |
BIGTWOTYPES void | umultiply (Bigger &a, T &b) |
BIGONETYPE void | ssquare (T &a) |
BIGTWOTYPES void | smultiply (T &a, T &b, Bigger &m) |
BIGTWOTYPES void | smultiply (Bigger &a, T &b) |
BIGONETYPE void | udivide (T &a, T &b, T &q, T &r) |
BIGONETYPE void | umodulo (T &a, T &b, T &r) |
BIGONETYPE void | sdivide (T &a, T &b, T &q, T &r) |
BIGONETYPE void | smodulo (T &a, T &b, T &r) |
Variables |
const u32 | WORDBITS = sizeof( word ) * 8 |
const u32 | HALFWORDBITS = sizeof( word ) * 8 / 2 |
const word | WORDHIGHBIT = ( word ) 1 << ( WORDBITS - 1 ) |
const word | WORDALLBITS = ( word ) 0 - 1 |
const word | WORDLOBITS = ( ( word ) 1 << HALFWORDBITS ) - 1 |
const word | WORDHIBITS = WORDALLBITS ^ WORDLOBITS |
(128)2^7-bit to (32768)2^14-bit signed 2's complement & unsigned extended arithmetic
7/30/2004 Fixed VS6 compat 7/28/2004 Fixed macros so they can be used outside of the big namespace Now using pre-processor definitions from types.h for inline assembly 7/26/2004 Removed a lot of assembly, made add/sub assembly optional 7/25/2004 Merged the wrapper class Int<T> from older code 7/24/2004 Replaced trivial assembly code with std:: functions Refined some assembly code with Art of Assembly chapter 9 Added binary ops 7/23/2004 Finished assembly coding Removed Int<T> class, for now Added old C++ code back in with USEASSEMBLY 7/22/2004 Signed arithmetic (needed for ext. Euclidean algo) Cleaned up coding style Began rewriting parts in assembly 7/21/2004 Began writing