📄 hugeint.h
字号:
CONST SIGN GetSign( VOID ) CONST;
CONST BOOL operator !( VOID ) CONST;
CONST BOOL IsAbsOne( VOID ) CONST;
CONST BOOL IsOdd( VOID ) CONST;
CONST BOOL IsEven( VOID ) CONST;
CONST SIZE_T GetBits( VOID ) CONST;
CONST SIZE_T GetDigits( VOID ) CONST;
CONST SIZE_T GetTailDecZeros( VOID ) CONST;
// Return non-zero if the value of (*this) fits in SINT32, UINT32, or SINT64, respectively. Otherwise, return zero.
operator SINT32( VOID ) CONST;
operator UINT32( VOID ) CONST;
operator SINT64( VOID ) CONST;
CONST CHugeInt Abs( VOID ) CONST;
CONST CHugeInt operator -( VOID ) CONST;
CHugeInt& Negate( VOID );
CHugeInt& Swap( CHugeInt& right );
CHugeInt& Ceil( CONST UINT32 u32DecPrecision );
CHugeInt& Truncate( CONST UINT32 u32DecPrecision );
CHugeInt& Floor( CONST UINT32 u32DecPrecision );
// reload operators
CHugeInt& operator =( CONST UINT32& u32Num );
CHugeInt& operator =( CONST SINT32& s32Num );
CHugeInt& operator =( CONST UINT64& u64Num );
CHugeInt& operator =( CONST SINT64& s64Num );
CHugeInt& operator =( CONST LPCTSTR lpszNum );
CHugeInt& operator =( CONST CCarryParam& CarryParam );
CHugeInt& operator =( CONST CHugeInt& right );
CHugeInt& operator =( CONST CHugeIntX& right );
CHugeInt& operator +=( CONST UINT32 u32Num );
CHugeInt& operator +=( CONST SINT32 s32Num );
CHugeInt& operator +=( CONST CHugeInt& right );
CHugeInt& operator ++( VOID );
CONST CHugeInt operator ++( CONST INT );
CHugeInt& operator -=( CONST UINT32 u32Num );
CHugeInt& operator -=( CONST SINT32 s32Num );
CHugeInt& operator -=( CONST CHugeInt& right );
CHugeInt& operator --( VOID );
CONST CHugeInt operator --( CONST INT );
CHugeInt& operator *=( CONST UINT32 u32Num );
CHugeInt& operator *=( CONST SINT32 s32Num );
CHugeInt& operator *=( CONST CHugeInt& right );
CHugeInt& operator /=( CONST UINT32 u32Num );
CHugeInt& operator /=( CONST SINT32 s32Num );
CHugeInt& operator /=( CONST CHugeInt& right );
CHugeInt& operator %=( CONST UINT32 u32Num );
CHugeInt& operator %=( CONST SINT32 s32Num );
CHugeInt& operator %=( CONST CHugeInt& right );
CHugeInt& operator <<=( CONST UINT32 u32LShift );
CHugeInt& operator >>=( CONST UINT32 u32RShift );
CONST CHugeInt operator <<( CONST UINT32 u32LShift ) CONST;
CONST CHugeInt operator >>( CONST UINT32 u32RShift ) CONST;
CHugeInt& operator &=( CONST CHugeInt& right );
CHugeInt& operator ^=( CONST CHugeInt& right );
CHugeInt& operator |=( CONST CHugeInt& right );
CONST CHugeInt operator &( CONST CHugeInt& right ) CONST;
CONST CHugeInt operator ^( CONST CHugeInt& right ) CONST;
CONST CHugeInt operator |( CONST CHugeInt& right ) CONST;
// notice: base on decimal system !!
CHugeInt& DecLShift( CONST UINT32 u32DecLShift );
CHugeInt& DecRShift( CONST UINT32 u32DecRShift );
// Multiplication, return product
CHugeInt& Mul( CONST UINT32 u32Multiplicand, CONST CHugeInt& hugeMultiplier );
CHugeInt& Mul( CONST SINT32 s32Multiplicand, CONST CHugeInt& hugeMultiplier );
CHugeInt& Mul( CONST CHugeInt& hugeMultiplicand, CONST UINT32 u32Multiplier );
CHugeInt& Mul( CONST CHugeInt& hugeMultiplicand, CONST SINT32 s32Multiplier );
CHugeInt& Mul( CONST CHugeInt& hugeMultiplicand, CONST CHugeInt& hugeMultiplier );
// Division, return quotient
CHugeInt& Div( CONST CHugeInt& hugeDividend, CONST UINT32 u32Divisor, SINT64 * CONST pRemainder = NULL );
CHugeInt& Div( CONST CHugeInt& hugeDividend, CONST SINT32 s32Divisor, SINT32 * CONST pRemainder = NULL );
CHugeInt& Div( CONST CHugeInt& hugeDividend, CONST CHugeInt& hugeDivisor, CHugeInt * CONST pRemainder = NULL );
CHugeInt& Pow( CONST UINT32 u32Exp );
CHugeInt& Pow( CONST CHugeInt& hugeBase, CONST UINT32 u32Exp );
// Extraction
CHugeInt& Root( CONST CHugeInt& hugeRadicand, CONST UINT32 u32Exp, CHugeInt * CONST pRemainder = NULL, BOOL * CONST pIsReal = NULL );
// Logarithm
CONST UINT32 Log( CONST UINT32 u32Base, BOOL * CONST pIsExact = NULL ) CONST;
CONST UINT32 Log( CONST CHugeInt& hugeBase, BOOL * CONST pIsExact = NULL ) CONST;
// Factorial, Permutation, Combination
CHugeInt& Factorial( CONST UINT32 n, CONST BOOL bDouble = FALSE );
CHugeInt& Permutation( CONST UINT32 n, CONST UINT32 r );
CHugeInt& Combination( CONST UINT32 n, CONST UINT32 r );
// Fibonacci
CHugeInt& Fibonacci( CONST UINT32 n );
// MulMod
CHugeInt& MulMod( CONST CHugeInt& hugeMultiplicand, CONST CHugeInt& hugeMultiplier, CONST CHugeInt& hugeMod );
CHugeInt& MulMod( CONST CHugeInt& hugeMultiplier, CONST CHugeInt& hugeMod );
// InvertMod: x = InvertMod( b, m ) && !(!x) <==> ( b * x ) mod m = 1
CHugeInt& InvertMod( CONST UINT32 u32InvertBase, CONST CHugeInt& hugeMod );
CHugeInt& InvertMod( CONST CHugeInt& hugeInvertBase, CONST CHugeInt& hugeMod );
CHugeInt& InvertMod( CONST CHugeInt& hugeMod );
// PowMod
CHugeInt& PowMod( CONST UINT32 u32Base, CONST UINT32 u32Exp, CONST CHugeInt& hugeMod );
CHugeInt& PowMod( CONST UINT32 u32Base, CONST SINT32 s32Exp, CONST CHugeInt& hugeMod );
CHugeInt& PowMod( CONST UINT32 u32Base, CONST CHugeInt& hugeExp, CONST CHugeInt& hugeMod );
CHugeInt& PowMod( CONST CHugeInt& hugeBase, CONST UINT32 u32Exp, CONST CHugeInt& hugeMod );
CHugeInt& PowMod( CONST CHugeInt& hugeBase, CONST SINT32 s32Exp, CONST CHugeInt& hugeMod );
CHugeInt& PowMod( CONST CHugeInt& hugeBase, CONST CHugeInt& hugeExp, CONST CHugeInt& hugeMod );
// ModPowTen: *this %= 10^u32Exp
CHugeInt& ModPowTen( CONST UINT32 u32Exp );
// Greatest Common Divisor
CHugeInt& Gcd( CONST UINT32 u32Num, CONST CHugeInt& right );
CHugeInt& Gcd( CONST SINT32 s32Num, CONST CHugeInt& right );
CHugeInt& Gcd( CONST CHugeInt& left, CONST UINT32 u32Num );
CHugeInt& Gcd( CONST CHugeInt& left, CONST SINT32 s32Num );
CHugeInt& Gcd( CONST CHugeInt& left, CONST CHugeInt& right );
CHugeInt& Gcd( CONST CHUGEINT_VECTOR& vHugeInt );
CHugeInt& Gcd( CONST LPCHUGEINT_VECTOR& vLpHugeInt );
// GcdEx: g = GcdEx( x, y, u, v ) = u * x + v * y. g is always positive, even if one or both of u and v are negative.
CHugeInt& GcdEx( CHugeInt& x, CHugeInt& y, CONST CHugeInt& u, CONST CHugeInt& v );
// Lowest Common Multiple
CHugeInt& Lcm( CONST U32_VECTOR& vU32Num );
CHugeInt& Lcm( CONST UINT32 u32Num, CONST CHugeInt& right );
CHugeInt& Lcm( CONST SINT32 s32Num, CONST CHugeInt& right );
CHugeInt& Lcm( CONST CHugeInt& left, CONST UINT32 u32Num );
CHugeInt& Lcm( CONST CHugeInt& left, CONST SINT32 s32Num );
CHugeInt& Lcm( CONST CHugeInt& left, CONST CHugeInt& right );
CHugeInt& Lcm( CONST CHUGEINT_VECTOR& vHugeInt );
CHugeInt& Lcm( CONST LPCHUGEINT_VECTOR& vLpHugeInt );
CHugeInt& Product( CONST U32_VECTOR& vU32Num );
CHugeInt& Product( CONST CHUGEINT_VECTOR& vHugeInt );
CHugeInt& Product( CONST LPCHUGEINT_VECTOR& vLpHugeInt );
// if u32Exp==0, then call function: Product( ... );
CHugeInt& SumsOfLikePowers( CONST U32_VECTOR& vU32Num, CONST UINT32 u32Exp = 1 );
CHugeInt& SumsOfLikePowers( CONST CHUGEINT_VECTOR& vHugeInt, CONST UINT32 u32Exp = 1 );
CHugeInt& SumsOfLikePowers( CONST LPCHUGEINT_VECTOR& vLpHugeInt, CONST UINT32 u32Exp = 1 );
// Output
CONST LPCTSTR ShowStr( CONST BYTE byFormat = FS_DEFAULT, SIZE_T * CONST pStrLen = NULL ) CONST;
// This function can convert the huge integer to a string of digits in another carry system.
CONST LPCTSTR ShowStrCarry( CONST UINT32 u32Carry = 16, UINT32 * CONST pDigits = NULL, CONST BYTE byFormat = FS_DEFAULT, CONST UINT32 u32BandLength = 4, SIZE_T * CONST pStrLen = NULL ) CONST;
VOID FreeStrBuffer( VOID ) CONST;
protected:
private:
explicit CHugeInt( CONST CHugeSInt& right );
CHugeInt& operator =( CONST CHugeSInt& right );
CHugeSInt * CONST m_pHugeSInt;
};
#endif // !defined(AFX_HUGEINT_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -