|
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