Big Integer class. More...
#include <big_int.h>
Public Member Functions | |
Construction | |
BigInt () | |
Constructs a big integer (initialised to zero) More... | |
BigInt (uint32_t value) | |
Constructs a big integer (initialised to value) More... | |
BigInt (int32_t value) | |
Constructs a big integer (initialised to value) More... | |
BigInt (uint64_t value) | |
Constructs a big integer (initialised to value) More... | |
BigInt (int64_t value) | |
Constructs a big integer (initialised to value) More... | |
BigInt (const BigInt &other) | |
Copy constructor. More... | |
~BigInt () | |
Destructor. More... | |
BigInt & | operator= (const BigInt &other) |
Operations | |
void | read_unsigned_octets (const unsigned char *input_str, unsigned int input_length) |
void | zero () |
bool | make_prime (unsigned int num_bits) |
int | cmp_z () const |
Compare a <=> 0. Returns <0 if a<0, 0 if a=0, >0 if a>0. More... | |
void | set_bit (unsigned int bit_number, unsigned int value) |
int | significant_bits () const |
void | sieve (const uint32_t *primes, unsigned int num_primes, std::vector< unsigned char > &sieve) |
uint32_t | mod_d (uint32_t d) const |
Compute c = a (mod d). Result will always be 0 <= c < d. More... | |
void | div_d (uint32_t d, BigInt *q, uint32_t *r) const |
Compute the quotient q = a / d and remainder r = a mod d, for a single digit d. Respects the sign of its divisor (single digits are unsigned anyway). More... | |
bool | fermat (uint32_t w) const |
Using w as a witness, try pseudo-primality testing based on Fermat's little theorem. More... | |
bool | pprime (int nt) const |
Performs nt iteration of the Miller-Rabin probabilistic primality test on a. More... | |
void | set (int32_t d) |
Sets a value. More... | |
void | set (uint32_t d) |
void | set (uint64_t d) |
void | set (int64_t d) |
void | get (uint32_t &d) |
Gets a value. More... | |
void | get (uint64_t &d) |
void | get (int64_t &d) |
void | get (int32_t &d) |
void | exptmod (const BigInt *b, const BigInt *m, BigInt *c) const |
Compute c = (a ** b) mod m. More... | |
void | mod (const BigInt *m, BigInt *c) const |
Compute c = a (mod m). Result will always be 0 <= c < m. More... | |
void | div (const BigInt &b, BigInt *q, BigInt *r) const |
Compute q = a / b and r = a mod b. More... | |
void | div (uint32_t d, BigInt *q, BigInt *r) const |
BigInt | operator+ (const BigInt &b) |
Compute result = this + b. More... | |
BigInt | operator+ (uint32_t d) |
BigInt | operator+= (const BigInt &b) |
Compute this += b. More... | |
BigInt | operator+= (uint32_t d) |
BigInt | operator- (const BigInt &b) |
Compute result = this - b. More... | |
BigInt | operator- (uint32_t d) |
BigInt | operator-= (const BigInt &b) |
Compute this -= b. More... | |
BigInt | operator-= (uint32_t d) |
BigInt | operator* (const BigInt &b) |
Compute result = this * b. More... | |
BigInt | operator* (uint32_t d) |
BigInt | operator*= (const BigInt &b) |
Compute this *= b. More... | |
BigInt | operator*= (uint32_t d) |
BigInt | operator/ (const BigInt &b) |
Compute result = this / b. More... | |
BigInt | operator/ (uint32_t d) |
BigInt | operator/= (const BigInt &b) |
Compute this /= b. More... | |
BigInt | operator/= (uint32_t d) |
BigInt | operator% (const BigInt &b) |
Compute result = this % b. More... | |
BigInt | operator% (uint32_t d) |
BigInt | operator%= (const BigInt &b) |
Compute this %= b. More... | |
BigInt | operator%= (uint32_t d) |
int | cmp (const BigInt *b) const |
int | cmp_d (uint32_t d) const |
Compare a <=> d. Returns <0 if a<d, 0 if a=d, >0 if a>d. More... | |
void | neg (BigInt *b) const |
Compute b = -a. 'a' and 'b' may be identical. More... | |
unsigned int | trailing_zeros () const |
void | sqrmod (const BigInt *m, BigInt *c) const |
void | sqr (BigInt *b) const |
void | random () |
Assigns a random value to a. More... | |
void | exch (BigInt *mp2) |
Exchange mp1 and mp2 without allocating any intermediate memory. More... | |
bool | invmod (const BigInt *m, BigInt *c) const |
Compute c = a^-1 (mod m), if there is an inverse for a (mod m). More... | |
void | xgcd (const BigInt *b, BigInt *g, BigInt *x, BigInt *y) const |
Compute g = (a, b) and values x and y satisfying Bezout's identity. More... | |
void | abs (BigInt *b) const |
Compute b = |a|. 'a' and 'b' may be identical. More... | |
bool | is_even () const |
Returns a true if number is even. More... | |
bool | is_odd () const |
Returns a true if number is odd. More... | |
void | div_2 (BigInt *c) const |
Compute c = a / 2, disregarding the remainder. More... | |
void | to_unsigned_octets (unsigned char *output_str, unsigned int output_length) const |
int | unsigned_octet_size () const |
Big Integer class.