NGL  6.5
The NCCA Graphics Library
internal::BigInteger Class Reference

#include <biginteger.h>

+ Collaboration diagram for internal::BigInteger:

Public Types

typedef uint64_t Type
 

Public Member Functions

 BigInteger (const BigInteger &rhs)
 
 BigInteger (uint64_t u)
 
 BigInteger (const char *decimals, size_t length)
 
BigIntegeroperator= (const BigInteger &rhs)
 
BigIntegeroperator= (uint64_t u)
 
BigIntegeroperator+= (uint64_t u)
 
BigIntegeroperator*= (uint64_t u)
 
BigIntegeroperator*= (uint32_t u)
 
BigIntegeroperator<<= (size_t shift)
 
bool operator== (const BigInteger &rhs) const
 
bool operator== (const Type rhs) const
 
BigIntegerMultiplyPow5 (unsigned exp)
 
bool Difference (const BigInteger &rhs, BigInteger *out) const
 
int Compare (const BigInteger &rhs) const
 
size_t GetCount () const
 
Type GetDigit (size_t index) const
 
bool IsZero () const
 

Private Member Functions

void AppendDecimal64 (const char *begin, const char *end)
 
void PushBack (Type digit)
 

Static Private Member Functions

static uint64_t ParseUint64 (const char *begin, const char *end)
 
static uint64_t MulAdd64 (uint64_t a, uint64_t b, uint64_t k, uint64_t *outHigh)
 

Private Attributes

Type digits_ [kCapacity]
 
size_t count_
 

Static Private Attributes

static const size_t kBitCount = 3328
 
static const size_t kCapacity = kBitCount / sizeof(Type)
 
static const size_t kTypeBit = sizeof(Type) * 8
 

Detailed Description

Definition at line 28 of file biginteger.h.

Member Typedef Documentation

Definition at line 30 of file biginteger.h.

Constructor & Destructor Documentation

internal::BigInteger::BigInteger ( const BigInteger rhs)
inline

Definition at line 32 of file biginteger.h.

References count_, and digits_.

internal::BigInteger::BigInteger ( uint64_t  u)
inlineexplicit

Definition at line 36 of file biginteger.h.

References digits_.

internal::BigInteger::BigInteger ( const char *  decimals,
size_t  length 
)
inline

Definition at line 40 of file biginteger.h.

References AppendDecimal64(), digits_, and RAPIDJSON_ASSERT.

+ Here is the call graph for this function:

Member Function Documentation

void internal::BigInteger::AppendDecimal64 ( const char *  begin,
const char *  end 
)
inlineprivate

Definition at line 224 of file biginteger.h.

References IsZero(), MultiplyPow5(), and ParseUint64().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int internal::BigInteger::Compare ( const BigInteger rhs) const
inline

Definition at line 208 of file biginteger.h.

References count_, and digits_.

+ Here is the caller graph for this function:

bool internal::BigInteger::Difference ( const BigInteger rhs,
BigInteger out 
) const
inline

Definition at line 186 of file biginteger.h.

References Compare(), count_, digits_, and RAPIDJSON_ASSERT.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

size_t internal::BigInteger::GetCount ( ) const
inline

Definition at line 219 of file biginteger.h.

References count_.

Type internal::BigInteger::GetDigit ( size_t  index) const
inline

Definition at line 220 of file biginteger.h.

References count_, digits_, and RAPIDJSON_ASSERT.

bool internal::BigInteger::IsZero ( ) const
inline

Definition at line 221 of file biginteger.h.

References count_, and digits_.

+ Here is the caller graph for this function:

static uint64_t internal::BigInteger::MulAdd64 ( uint64_t  a,
uint64_t  b,
uint64_t  k,
uint64_t outHigh 
)
inlinestaticprivate

Definition at line 249 of file biginteger.h.

+ Here is the caller graph for this function:

BigInteger& internal::BigInteger::MultiplyPow5 ( unsigned  exp)
inline

Definition at line 162 of file biginteger.h.

References RAPIDJSON_UINT64_C2.

+ Here is the caller graph for this function:

BigInteger& internal::BigInteger::operator*= ( uint64_t  u)
inline

Definition at line 87 of file biginteger.h.

References count_, digits_, MulAdd64(), and PushBack().

+ Here is the call graph for this function:

BigInteger& internal::BigInteger::operator*= ( uint32_t  u)
inline

Definition at line 105 of file biginteger.h.

References count_, digits_, and PushBack().

+ Here is the call graph for this function:

BigInteger& internal::BigInteger::operator+= ( uint64_t  u)
inline

Definition at line 70 of file biginteger.h.

References count_, digits_, and PushBack().

+ Here is the call graph for this function:

BigInteger& internal::BigInteger::operator<<= ( size_t  shift)
inline

Definition at line 128 of file biginteger.h.

References count_, digits_, IsZero(), kCapacity, kTypeBit, and RAPIDJSON_ASSERT.

+ Here is the call graph for this function:

BigInteger& internal::BigInteger::operator= ( const BigInteger rhs)
inline

Definition at line 55 of file biginteger.h.

References count_, and digits_.

BigInteger& internal::BigInteger::operator= ( uint64_t  u)
inline

Definition at line 64 of file biginteger.h.

References count_, and digits_.

bool internal::BigInteger::operator== ( const BigInteger rhs) const
inline

Definition at line 154 of file biginteger.h.

References count_, and digits_.

bool internal::BigInteger::operator== ( const Type  rhs) const
inline

Definition at line 158 of file biginteger.h.

References count_, and digits_.

static uint64_t internal::BigInteger::ParseUint64 ( const char *  begin,
const char *  end 
)
inlinestaticprivate

Definition at line 239 of file biginteger.h.

References RAPIDJSON_ASSERT.

+ Here is the caller graph for this function:

void internal::BigInteger::PushBack ( Type  digit)
inlineprivate

Definition at line 234 of file biginteger.h.

References count_, digits_, kCapacity, and RAPIDJSON_ASSERT.

+ Here is the caller graph for this function:

Member Data Documentation

size_t internal::BigInteger::count_
private

Definition at line 284 of file biginteger.h.

Type internal::BigInteger::digits_[kCapacity]
private

Definition at line 283 of file biginteger.h.

const size_t internal::BigInteger::kBitCount = 3328
staticprivate

Definition at line 279 of file biginteger.h.

const size_t internal::BigInteger::kCapacity = kBitCount / sizeof(Type)
staticprivate

Definition at line 280 of file biginteger.h.

const size_t internal::BigInteger::kTypeBit = sizeof(Type) * 8
staticprivate

Definition at line 281 of file biginteger.h.


The documentation for this class was generated from the following file: