⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hugeintx.h

📁 HugeCalc V5.1.0.1 ----> 这是一套绿色软件
💻 H
📖 第 1 页 / 共 2 页
字号:
	// get property
	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 BOOL IsBitOne( CONST UINT32 u32BitIndex ) CONST;
	CONST SIZE_T GetBits( VOID ) CONST;
	CONST SIZE_T GetDigits( VOID ) CONST;
	CONST SIZE_T GetTailBinZeros( 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 CHugeIntX Abs( VOID ) CONST;
	CONST CHugeIntX operator -( VOID ) CONST;

	CHugeIntX& Negate( VOID );
 	CHugeIntX& Swap( CHugeIntX& right );

	CHugeIntX& Ceil( CONST UINT32 u32BinPrecision );
	CHugeIntX& Truncate( CONST UINT32 u32BinPrecision );
	CHugeIntX& Floor( CONST UINT32 u32BinPrecision );

	// reload operators
	CHugeIntX& operator =( CONST UINT32& u32Num );
	CHugeIntX& operator =( CONST SINT32& s32Num );
	CHugeIntX& operator =( CONST UINT64& u64Num );
	CHugeIntX& operator =( CONST SINT64& s64Num );
	CHugeIntX& operator =( CONST LPCTSTR lpszNum );
	CHugeIntX& operator =( CONST CCarryParam& CarryParam );
	CHugeIntX& operator =( CONST CHugeIntX& right );
	CHugeIntX& operator =( CONST CHugeInt& right );

	CHugeIntX& operator +=( CONST UINT32 u32Num );
	CHugeIntX& operator +=( CONST SINT32 s32Num );
	CHugeIntX& operator +=( CONST CHugeIntX& right );

	CHugeIntX& operator ++( VOID );
	CONST CHugeIntX operator ++( CONST INT );

	CHugeIntX& operator -=( CONST UINT32 u32Num );
	CHugeIntX& operator -=( CONST SINT32 s32Num );
	CHugeIntX& operator -=( CONST CHugeIntX& right );

	CHugeIntX& operator --( VOID );
	CONST CHugeIntX operator --( CONST INT );

	CHugeIntX& operator *=( CONST UINT32 u32Num );
	CHugeIntX& operator *=( CONST SINT32 s32Num );
	CHugeIntX& operator *=( CONST CHugeIntX& right );

	CHugeIntX& operator /=( CONST UINT32 u32Num );
	CHugeIntX& operator /=( CONST SINT32 s32Num );
	CHugeIntX& operator /=( CONST CHugeIntX& right );

	CHugeIntX& operator %=( CONST UINT32 u32Num );
	CHugeIntX& operator %=( CONST SINT32 s32Num );
	CHugeIntX& operator %=( CONST CHugeIntX& right );

	CHugeIntX& operator <<=( CONST UINT32 u32LShift );
	CHugeIntX& operator >>=( CONST UINT32 u32RShift );

	CONST CHugeIntX operator <<( CONST UINT32 u32LShift ) CONST;
	CONST CHugeIntX operator >>( CONST UINT32 u32RShift ) CONST;

	CHugeIntX& operator &=( CONST CHugeIntX& right );
	CHugeIntX& operator ^=( CONST CHugeIntX& right );
	CHugeIntX& operator |=( CONST CHugeIntX& right );

	CONST CHugeIntX operator &( CONST CHugeIntX& right ) CONST;
	CONST CHugeIntX operator ^( CONST CHugeIntX& right ) CONST;
	CONST CHugeIntX operator |( CONST CHugeIntX& right ) CONST;

	// Multiplication, return product
	CHugeIntX& Mul( CONST UINT32 u32Multiplicand, CONST CHugeIntX& hugeMultiplier );
	CHugeIntX& Mul( CONST SINT32 s32Multiplicand, CONST CHugeIntX& hugeMultiplier );

	CHugeIntX& Mul( CONST CHugeIntX& hugeMultiplicand, CONST UINT32 u32Multiplier );
	CHugeIntX& Mul( CONST CHugeIntX& hugeMultiplicand, CONST SINT32 s32Multiplier );

	CHugeIntX& Mul( CONST CHugeIntX& hugeMultiplicand, CONST CHugeIntX& hugeMultiplier );

	// Division, return quotient
	CHugeIntX& Div( CONST CHugeIntX& hugeDividend, CONST UINT32 u32Divisor, SINT64 * CONST pRemainder = NULL );
	CHugeIntX& Div( CONST CHugeIntX& hugeDividend, CONST SINT32 s32Divisor, SINT32 * CONST pRemainder = NULL );

	CHugeIntX& Div( CONST CHugeIntX& hugeDividend, CONST CHugeIntX& hugeDivisor, CHugeIntX * CONST pRemainder = NULL );

	CHugeIntX& Pow( CONST UINT32 u32Exp );
	CHugeIntX& Pow( CONST CHugeIntX& hugeBase, CONST UINT32 u32Exp );

	// Extraction
	CHugeIntX& Root( CONST CHugeIntX& hugeRadicand, CONST UINT32 u32Exp, CHugeIntX * CONST pRemainder = NULL, BOOL * CONST pIsReal = NULL );

	// Logarithm
	CONST UINT32 Log( CONST UINT32 u32Base, BOOL * CONST pIsExact = NULL ) CONST;
	CONST UINT32 Log( CONST CHugeIntX& hugeBase, BOOL * CONST pIsExact = NULL ) CONST;

	// Factorial, Permutation, Combination
	CHugeIntX& Factorial( CONST UINT32 n, CONST BOOL bDouble = FALSE );
	CHugeIntX& Permutation( CONST UINT32 n, CONST UINT32 r );
	CHugeIntX& Combination( CONST UINT32 n, CONST UINT32 r );

	// Fibonacci
	CHugeIntX& Fibonacci( CONST UINT32 n );

	// MulMod
	CHugeIntX& MulMod( CONST CHugeIntX& hugeMultiplicand, CONST CHugeIntX& hugeMultiplier, CONST CHugeIntX& hugeMod );
	CHugeIntX& MulMod( CONST CHugeIntX& hugeMultiplier, CONST CHugeIntX& hugeMod );

	// InvertMod: x = InvertMod( b, m ) && !(!x) <==> ( b * x ) mod m = 1
	CHugeIntX& InvertMod( CONST UINT32 u32InvertBase, CONST CHugeIntX& hugeMod );
	CHugeIntX& InvertMod( CONST CHugeIntX& hugeInvertBase, CONST CHugeIntX& hugeMod );
	CHugeIntX& InvertMod( CONST CHugeIntX& hugeMod );

	// PowMod
	CHugeIntX& PowMod( CONST UINT32 u32Base, CONST UINT32 u32Exp, CONST CHugeIntX& hugeMod );
	CHugeIntX& PowMod( CONST UINT32 u32Base, CONST SINT32 s32Exp, CONST CHugeIntX& hugeMod );
	CHugeIntX& PowMod( CONST UINT32 u32Base, CONST CHugeIntX& hugeExp, CONST CHugeIntX& hugeMod );
	CHugeIntX& PowMod( CONST CHugeIntX& hugeBase, CONST UINT32 u32Exp, CONST CHugeIntX& hugeMod );
	CHugeIntX& PowMod( CONST CHugeIntX& hugeBase, CONST SINT32 s32Exp, CONST CHugeIntX& hugeMod );
	CHugeIntX& PowMod( CONST CHugeIntX& hugeBase, CONST CHugeIntX& hugeExp, CONST CHugeIntX& hugeMod );

	// ModPowTwo: *this %= 2^u32Exp
	CHugeIntX& ModPowTwo( CONST UINT32 u32Exp );

	// Greatest Common Divisor
	CHugeIntX& Gcd( CONST UINT32 u32Num, CONST CHugeIntX& right );
	CHugeIntX& Gcd( CONST SINT32 s32Num, CONST CHugeIntX& right );
	CHugeIntX& Gcd( CONST CHugeIntX& left, CONST UINT32 u32Num );
	CHugeIntX& Gcd( CONST CHugeIntX& left, CONST SINT32 s32Num );

	CHugeIntX& Gcd( CONST CHugeIntX& left, CONST CHugeIntX& right );

	CHugeIntX& Gcd( CONST CHUGEINTX_VECTOR& vHugeIntX );
	CHugeIntX& Gcd( CONST LPCHUGEINTX_VECTOR& vLpHugeIntX );

	// 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.
	CHugeIntX& GcdEx( CHugeIntX& x, CHugeIntX& y, CONST CHugeIntX& u, CONST CHugeIntX& v );

	// Lowest Common Multiple
	CHugeIntX& Lcm( CONST U32_VECTOR& vU32Num );

	CHugeIntX& Lcm( CONST UINT32 u32Num, CONST CHugeIntX& right );
	CHugeIntX& Lcm( CONST SINT32 s32Num, CONST CHugeIntX& right );
	CHugeIntX& Lcm( CONST CHugeIntX& left, CONST UINT32 u32Num );
	CHugeIntX& Lcm( CONST CHugeIntX& left, CONST SINT32 s32Num );

	CHugeIntX& Lcm( CONST CHugeIntX& left, CONST CHugeIntX& right );

	CHugeIntX& Lcm( CONST CHUGEINTX_VECTOR& vHugeIntX );
	CHugeIntX& Lcm( CONST LPCHUGEINTX_VECTOR& vLpHugeIntX );

	CHugeIntX& Product( CONST U32_VECTOR& vU32Num );
	CHugeIntX& Product( CONST CHUGEINTX_VECTOR& vHugeIntX );
	CHugeIntX& Product( CONST LPCHUGEINTX_VECTOR& vLpHugeIntX );

	// if u32Exp==0, then call function: Product( ... );
	CHugeIntX& SumsOfLikePowers( CONST U32_VECTOR& vU32Num, CONST UINT32 u32Exp = 1 );
	CHugeIntX& SumsOfLikePowers( CONST CHUGEINTX_VECTOR& vHugeIntX, CONST UINT32 u32Exp = 1 );
	CHugeIntX& SumsOfLikePowers( CONST LPCHUGEINTX_VECTOR& vLpHugeIntX, 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 = 10, UINT32 * CONST pDigits = NULL, CONST BYTE byFormat = FS_DEFAULT, CONST UINT32 u32BandLength = 3, SIZE_T * CONST pStrLen = NULL ) CONST;
	VOID FreeStrBuffer( VOID ) CONST;

protected:

private:
	explicit CHugeIntX( CONST CHugeSIntX& right );
	CHugeIntX& operator =( CONST CHugeSIntX& right );

	CHugeSIntX * CONST m_pHugeSIntX;
};

#endif // !defined(AFX_HUGEINTX_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -