📄 hugecalc.h
字号:
HHUGEINT HI_bitAnd( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_bitXor( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_bitOr( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_abs( HHUGEINT hHugeInt );
HHUGEINT HI_negate( HHUGEINT hHugeInt );
HHUGEINT HI_swap( HHUGEINT hLeft, HHUGEINT hRight );
HHUGEINT HI_ceil( HHUGEINT hHugeInt, const UINT32 u32DecDigits );
HHUGEINT HI_truncate( HHUGEINT hHugeInt, const UINT32 u32DecDigits );
HHUGEINT HI_floor( HHUGEINT hHugeInt, const UINT32 u32DecDigits );
HHUGEINT HI_random( HHUGEINT hHugeInt, const UINT32 u32DecDigits );
HHUGEINT HI_generatePrime( HHUGEINT hHugeInt, const UINT32 u32DecDigits );
/* Returns the largest prime number less than the argument. */
HHUGEINT HI_previousPrime( HHUGEINT hResult, const HHUGEINT hBenchmark );
/* Returns the smallest prime number greater than the argument. */
HHUGEINT HI_nextPrime( HHUGEINT hResult, const HHUGEINT hBenchmark );
/* + */
HHUGEINT HI_add( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_add_u32( HHUGEINT hResult, const HHUGEINT hLeft, const UINT32 u32Num );
/* - */
HHUGEINT HI_sub( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_sub_u32( HHUGEINT hResult, const HHUGEINT hLeft, const UINT32 u32Num );
/* * */
HHUGEINT HI_mul( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_mul_u32( HHUGEINT hResult, const HHUGEINT hLeft, const UINT32 u32Num );
/* Division, return quotient */
HHUGEINT HI_divRem( HHUGEINT hQuotient, const HHUGEINT hDividend, const HHUGEINT hDivisor, HHUGEINT hRemainder /*= NULL*/ );
HHUGEINT HI_div_s32( HHUGEINT hQuotient, const HHUGEINT hDividend, const SINT32 s32Divisor, SINT32 * const pRemainder /*= NULL*/ );
/* % */
HHUGEINT HI_mod( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
/* Power */
HHUGEINT HI_pow( HHUGEINT hResult, const HHUGEINT hBase, const UINT32 u32Exp );
/* Extraction */
HHUGEINT HI_rootRem( HHUGEINT hRoot, const HHUGEINT hRadicand, const UINT32 u32Exp, HHUGEINT hRemainder /*= NULL*/, BOOL * const pIsReal /*= NULL*/ );
/* Logarithm */
const UINT32 HI_log_u32( const HHUGEINT hHugeInt, const UINT32 u32Base, BOOL * const pIsExact /*= NULL*/ );
const UINT32 HI_log( const HHUGEINT hHugeInt, const HHUGEINT hBase, BOOL * const pIsExact /*= NULL*/ );
/* "PrimeFactorial(n) gives the product of the first n primes." */
HHUGEINT HI_primeFactorial( HHUGEINT hResult, const UINT32 u32Index );
/* Factorial, Permutation, Combination */
HHUGEINT HI_factorial( HHUGEINT hResult, const UINT32 n );
HHUGEINT HI_factorial2( HHUGEINT hResult, const UINT32 n );
HHUGEINT HI_permutation( HHUGEINT hResult, const UINT32 n, const UINT32 r );
HHUGEINT HI_combination( HHUGEINT hResult, const UINT32 n, const UINT32 r );
/* Fibonacci numbers */
HHUGEINT HI_fibonacci( HHUGEINT hResult, const SINT32 n );
/* Lucas numbers */
HHUGEINT HI_lucas( HHUGEINT hResult, const SINT32 n );
/* MulMod */
HHUGEINT HI_mulMod( HHUGEINT hResult, const HHUGEINT hMultiplicand, const HHUGEINT hMultiplier, const HHUGEINT hMod );
/* InvertMod: x = InvertMod( b, m ) && !(!x) <==> ( b * x ) mod m = 1 */
HHUGEINT HI_invertMod_u32( HHUGEINT hResult, const UINT32 u32InvertBase, const HHUGEINT hMod );
HHUGEINT HI_invertMod( HHUGEINT hResult, const HHUGEINT hInvertBase, const HHUGEINT hMod );
/* PowMod */
const UINT32 HI_powMod_u32_u32( const UINT32 u32Base, const HHUGEINT hExp, const UINT32 u32Mod );
HHUGEINT HI_powMod_u32( HHUGEINT hResult, const UINT32 u32Base, const HHUGEINT hExp, const HHUGEINT hMod );
HHUGEINT HI_powMod( HHUGEINT hResult, const HHUGEINT hBase, const HHUGEINT hExp, const HHUGEINT hMod );
/* ModPowTen: *this %= 10^u32Exp */
HHUGEINT HI_modPowTen( HHUGEINT hHugeInt, const UINT32 u32Exp );
/* Greatest Common Divisor */
HHUGEINT HI_gcd( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_gcd_vhi( HHUGEINT hResult, const LPCHUGEINT_CVECTOR 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. */
HHUGEINT HI_gcdEx( HHUGEINT hResult, HHUGEINT x, HHUGEINT y, const HHUGEINT u, const HHUGEINT v );
/* Lowest Common Multiple */
HHUGEINT HI_lcm( HHUGEINT hResult, const HHUGEINT hLeft, const HHUGEINT hRight );
HHUGEINT HI_lcm_v32( HHUGEINT hResult, const UINT32_CVECTOR vU32Num );
HHUGEINT HI_lcm_vhi( HHUGEINT hResult, const LPCHUGEINT_CVECTOR vLpHugeInt );
HHUGEINT HI_product_v32( HHUGEINT hResult, const UINT32_CVECTOR vU32Num );
HHUGEINT HI_product_vhi( HHUGEINT hResult, const LPCHUGEINT_CVECTOR vLpHugeInt );
/* if u32Exp==0, then call function: Product( ... ); */
HHUGEINT HI_sumsOfLikePowers_v32( HHUGEINT hResult, const UINT32_CVECTOR vU32Num, const UINT32 u32Exp /*= 1*/ );
HHUGEINT HI_sumsOfLikePowers_vhi( HHUGEINT hResult, const LPCHUGEINT_CVECTOR vLpHugeInt, const UINT32 u32Exp /*= 1*/ );
/* Output */
const LPCTSTR HI_getStr( const HHUGEINT hHugeInt, const BYTE byFormat /*= FS_DEFAULT*/, UINT32 * const pStrLen /*= NULL*/ );
/* no "0x" */
const LPCTSTR HI_getHexStr( const HHUGEINT hHugeInt, const BYTE byFormat /*= FS_DEFAULT*/, UINT32 * const pStrLen /*= NULL*/ );
/* This function can convert the huge integer to a string of digits in another Radix system. */
const LPCTSTR HI_getStrRadix( const HHUGEINT hHugeInt, const UINT32 u32Radix /*= 16*/, UINT32 * const pDigits /*= NULL*/, const BYTE byFormat /*= FS_DEFAULT*/, const UINT32 u32BandLength /*= 4*/, UINT32 * const pStrLen /*= NULL*/ );
void HI_freeStrBuffer( const HHUGEINT hHugeInt );
#endif /* #ifndef _NO_HI */
#ifndef _NO_HX
/* constructor */
HHUGEINTX HX_new( void );
/* destructor */
void HX_delete( HHUGEINTX hHugeIntX );
const UINT32 HX_getCount( void );
/* reload operators */
HHUGEINTX HX_set_s32( HHUGEINTX hHugeIntX, const SINT32 s32Num );
HHUGEINTX HX_set_s64( HHUGEINTX hHugeIntX, const SINT64 s64Num );
HHUGEINTX HX_set_u32( HHUGEINTX hHugeIntX, const UINT32 u32Num );
HHUGEINTX HX_set_u64( HHUGEINTX hHugeIntX, const UINT64 u64Num );
HHUGEINTX HX_set_str( HHUGEINTX hHugeIntX, const LPCTSTR lpszNum );
#ifndef _NO_HI
HHUGEINTX HX_set_hi( HHUGEINTX hHugeIntX, const HHUGEINT hRight );
#endif /* #ifndef _NO_HI */
HHUGEINTX HX_set_hx( HHUGEINTX hHugeIntX, const HHUGEINTX hRight );
#ifndef _NO_RC
HHUGEINTX HX_set_rc( HHUGEINTX hHugeIntX, const HRADIXCONVERTER hRight );
#endif /* #ifndef _NO_RC */
HHUGEINTX HX_setHexStr( HHUGEINTX hHugeIntX, const LPCTSTR lpszHexNum );
HHUGEINTX HX_setText( HHUGEINTX hHugeIntX, const LPCTSTR lpszText );
/* Return non-zero if the value of (*this) fits in SINT32, UINT32, SINT64 or UINT64, respectively. Otherwise, return zero. */
const SINT32 HX_get_s32( const HHUGEINTX hHugeIntX );
const SINT64 HX_get_s64( const HHUGEINTX hHugeIntX );
const UINT32 HX_get_u32( const HHUGEINTX hHugeIntX );
const UINT64 HX_get_u64( const HHUGEINTX hHugeIntX );
/* CompareAbs */
const SINT32 HX_compareAbs_s32( const HHUGEINTX hLeft, const SINT32 s32Num );
const SINT32 HX_compareAbs_u32( const HHUGEINTX hLeft, const UINT32 u32Num );
const SINT32 HX_compareAbs_hx( const HHUGEINTX hLeft, const HHUGEINTX hRight );
/* Compare */
const SINT32 HX_compare_s32( const HHUGEINTX hLeft, const SINT32 s32Num );
const SINT32 HX_compare_u32( const HHUGEINTX hLeft, const UINT32 u32Num );
const SINT32 HX_compare_hx( const HHUGEINTX hLeft, const HHUGEINTX hRight );
/* get property */
const SIGN HX_getSign( const HHUGEINTX hHugeIntX );
const BOOL HX_isZero( const HHUGEINTX hHugeIntX );
const BOOL HX_isAbsOne( const HHUGEINTX hHugeIntX );
const BOOL HX_isOdd( const HHUGEINTX hHugeIntX );
const BOOL HX_isEven( const HHUGEINTX hHugeIntX );
const BOOL HX_isBitOne( const HHUGEINTX hHugeIntX, const UINT32 u32BitIndex );
const BOOL HX_isPrime( const HHUGEINTX hHugeIntX );
const PRIMALITY HX_testPrimality( const HHUGEINTX hHugeIntX, const UINT32 u32Repeat /*= 5*/ );
const UINT32 HX_getBits( const HHUGEINTX hHugeIntX );
const UINT32 HX_getDigits( const HHUGEINTX hHugeIntX );
const UINT32 HX_getTailBitZeros( const HHUGEINTX hHugeIntX );
HHUGEINTX HX_bitLShift( HHUGEINTX hHugeIntX, const UINT32 u32BitLShift );
HHUGEINTX HX_bitRShift( HHUGEINTX hHugeIntX, const UINT32 u32BitRShift );
HHUGEINTX HX_bitAnd( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_bitXor( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_bitOr( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_abs( HHUGEINTX hHugeIntX );
HHUGEINTX HX_negate( HHUGEINTX hHugeIntX );
HHUGEINTX HX_swap( HHUGEINTX hLeft, HHUGEINTX hRight );
HHUGEINTX HX_ceil( HHUGEINTX hHugeIntX, const UINT32 u32Bits );
HHUGEINTX HX_truncate( HHUGEINTX hHugeIntX, const UINT32 u32Bits );
HHUGEINTX HX_floor( HHUGEINTX hHugeIntX, const UINT32 u32Bits );
HHUGEINTX HX_random( HHUGEINTX hHugeIntX, const UINT32 u32Bits );
HHUGEINTX HX_generatePrime( HHUGEINTX hHugeIntX, const UINT32 u32Bits );
/* Returns the largest prime number less than the argument. */
HHUGEINTX HX_previousPrime( HHUGEINTX hResult, const HHUGEINTX hBenchmark );
/* Returns the smallest prime number greater than the argument. */
HHUGEINTX HX_nextPrime( HHUGEINTX hResult, const HHUGEINTX hBenchmark );
/* + */
HHUGEINTX HX_add( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_add_u32( HHUGEINTX hResult, const HHUGEINTX hLeft, const UINT32 u32Num );
/* - */
HHUGEINTX HX_sub( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_sub_u32( HHUGEINTX hResult, const HHUGEINTX hLeft, const UINT32 u32Num );
/* * */
HHUGEINTX HX_mul( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_mul_u32( HHUGEINTX hResult, const HHUGEINTX hLeft, const UINT32 u32Num );
/* Division, return quotient */
HHUGEINTX HX_divRem( HHUGEINTX hQuotient, const HHUGEINTX hDividend, const HHUGEINTX hDivisor, HHUGEINTX hRemainder /*= NULL*/ );
HHUGEINTX HX_div_s32( HHUGEINTX hQuotient, const HHUGEINTX hDividend, const SINT32 s32Divisor, SINT32 * const pRemainder /*= NULL*/ );
/* % */
HHUGEINTX HX_mod( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
/* Power */
HHUGEINTX HX_pow( HHUGEINTX hResult, const HHUGEINTX hBase, const UINT32 u32Exp );
/* Extraction */
HHUGEINTX HX_rootRem( HHUGEINTX hRoot, const HHUGEINTX hRadicand, const UINT32 u32Exp, HHUGEINTX hRemainder /*= NULL*/, BOOL * const pIsReal /*= NULL*/ );
/* Logarithm */
const UINT32 HX_log_u32( const HHUGEINTX hHugeIntX, const UINT32 u32Base, BOOL * const pIsExact /*= NULL*/ );
const UINT32 HX_log( const HHUGEINTX hHugeIntX, const HHUGEINTX hBase, BOOL * const pIsExact /*= NULL*/ );
/* "PrimeFactorial(n) gives the product of the first n primes." */
HHUGEINTX HX_primeFactorial( HHUGEINTX hResult, const UINT32 u32Index );
/* Factorial, Permutation, Combination */
HHUGEINTX HX_factorial( HHUGEINTX hResult, const UINT32 n );
HHUGEINTX HX_factorial2( HHUGEINTX hResult, const UINT32 n );
HHUGEINTX HX_permutation( HHUGEINTX hResult, const UINT32 n, const UINT32 r );
HHUGEINTX HX_combination( HHUGEINTX hResult, const UINT32 n, const UINT32 r );
/* Fibonacci numbers */
HHUGEINTX HX_fibonacci( HHUGEINTX hResult, const SINT32 n );
/* Lucas numbers */
HHUGEINTX HX_lucas( HHUGEINTX hResult, const SINT32 n );
/* MulMod */
HHUGEINTX HX_mulMod( HHUGEINTX hResult, const HHUGEINTX hMultiplicand, const HHUGEINTX hMultiplier, const HHUGEINTX hMod );
/* InvertMod: x = InvertMod( b, m ) && !(!x) <==> ( b * x ) mod m = 1 */
HHUGEINTX HX_invertMod_u32( HHUGEINTX hResult, const UINT32 u32InvertBase, const HHUGEINTX hMod );
HHUGEINTX HX_invertMod( HHUGEINTX hResult, const HHUGEINTX hInvertBase, const HHUGEINTX hMod );
/* PowMod */
const UINT32 HX_powMod_u32_u32( const UINT32 u32Base, const HHUGEINTX hExp, const UINT32 u32Mod );
HHUGEINTX HX_powMod_u32( HHUGEINTX hResult, const UINT32 u32Base, const HHUGEINTX hExp, const HHUGEINTX hMod );
HHUGEINTX HX_powMod( HHUGEINTX hResult, const HHUGEINTX hBase, const HHUGEINTX hExp, const HHUGEINTX hMod );
/* ModPowTen: *this %= 2^u32Exp */
HHUGEINTX HX_modPowTwo( HHUGEINTX hHugeIntX, const UINT32 u32Exp );
/* Greatest Common Divisor */
HHUGEINTX HX_gcd( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_gcd_vhx( HHUGEINTX hResult, const LPCHUGEINTX_CVECTOR 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. */
HHUGEINTX HX_gcdEx( HHUGEINTX hResult, HHUGEINTX x, HHUGEINTX y, const HHUGEINTX u, const HHUGEINTX v );
/* Lowest Common Multiple */
HHUGEINTX HX_lcm( HHUGEINTX hResult, const HHUGEINTX hLeft, const HHUGEINTX hRight );
HHUGEINTX HX_lcm_v32( HHUGEINTX hResult, const UINT32_CVECTOR vU32Num );
HHUGEINTX HX_lcm_vhx( HHUGEINTX hResult, const LPCHUGEINTX_CVECTOR vLpHugeIntX );
HHUGEINTX HX_product_v32( HHUGEINTX hResult, const UINT32_CVECTOR vU32Num );
HHUGEINTX HX_product_vhx( HHUGEINTX hResult, const LPCHUGEINTX_CVECTOR vLpHugeIntX );
/* if u32Exp==0, then call function: Product( ... ); */
HHUGEINTX HX_sumsOfLikePowers_v32( HHUGEINTX hResult, const UINT32_CVECTOR vU32Num, const UINT32 u32Exp /*= 1*/ );
HHUGEINTX HX_sumsOfLikePowers_vhx( HHUGEINTX hResult, const LPCHUGEINTX_CVECTOR vLpHugeIntX, const UINT32 u32Exp /*= 1*/ );
/* Output */
const LPCTSTR HX_getStr( const HHUGEINTX hHugeIntX, const BYTE byFormat /*= FS_DEFAULT*/, UINT32 * const pStrLen /*= NULL*/ );
/* no "0x" */
const LPCTSTR HX_getHexStr( const HHUGEINTX hHugeIntX, const BYTE byFormat /*= FS_DEFAULT*/, UINT32 * const pStrLen /*= NULL*/ );
/* This function can convert the huge integer to a string of digits in another Radix system. */
const LPCTSTR HX_getStrRadix( const HHUGEINTX hHugeIntX, const UINT32 u32Radix /*= 10*/, UINT32 * const pDigits/* = NULL*/, const BYTE byFormat /*= FS_DEFAULT*/, const UINT32 u32BandLength /*= 3*/, UINT32 * const pStrLen /*= NULL*/ );
const LPCTSTR HX_getText( const HHUGEINTX hHugeIntX );
void HX_freeStrBuffer( const HHUGEINTX hHugeIntX );
#endif /* #ifndef _NO_HX */
#ifndef _NO_RC
HRADIXCONVERTER RC_new( const UINT32 u32Radix );
/* For bases up to 36, case is ignored; upper-case and lower-case letters have the same value. For bases */
/* 37 to 62, upper-case letter represent the usual 10..35 while lower-case letter represent 36..61. */
HRADIXCONVERTER RC_new_str( const UINT32 u32Radix, const LPCTSTR lpszNum );
void RC_delete( HRADIXCONVERTER hRadixConverter );
const UINT32 RC_getCount( void );
HRADIXCONVERTER RC_convert2Radix( HRADIXCONVERTER hRadixConverter, const UINT32 u32NewRadix );
HRADIXCONVERTER RC_set_rc( HRADIXCONVERTER hRadixConverter, const HRADIXCONVERTER hRight );
#ifndef _NO_HI
HRADIXCONVERTER RC_set_hi( HRADIXCONVERTER hRadixConverter, const HHUGEINT hRight );
#endif /* #ifndef _NO_HI */
#ifndef _NO_HX
HRADIXCONVERTER RC_set_hx( HRADIXCONVERTER hRadixConverter, const HHUGEINTX hRight );
#endif /* #ifndef _NO_HX */
HRADIXCONVERTER RC_set_s32( HRADIXCONVERTER hRadixConverter, const SINT32 s32Num );
HRADIXCONVERTER RC_set_s64( HRADIXCONVERTER hRadixConverter, const SINT64 s64Num );
HRADIXCONVERTER RC_set_u32( HRADIXCONVERTER hRadixConverter, const UINT32 u32Num );
HRADIXCONVERTER RC_set_u64( HRADIXCONVERTER hRadixConverter, const UINT64 u64Num );
/* Return non-zero if the value of (*this) fits in SINT32, UINT32, SINT64 or UINT64, respectively. Otherwise, return zero. */
const SINT32 RC_get_s32( const HRADIXCONVERTER hRadixConverter );
const SINT64 RC_get_s64( const HRADIXCONVERTER hRadixConverter );
const UINT32 RC_get_u32( const HRADIXCONVERTER hRadixConverter );
const UINT64 RC_get_u64( const HRADIXCONVERTER hRadixConverter );
void RC_resetRadix( HRADIXCONVERTER hRadixConverter, const UINT32 u32Radix );
void RC_resetSign( HRADIXCONVERTER hRadixConverter, const SIGN enumSign );
void RC_resetVector( HRADIXCONVERTER hRadixConverter, const UINT32_CVECTOR Vector );
void RC_clearVector( HRADIXCONVERTER hRadixConverter );
const UINT32 RC_getRadix( const HRADIXCONVERTER hRadixConverter );
const SIGN RC_getSign( const HRADIXCONVERTER hRadixConverter );
void RC_getVector( const HRADIXCONVERTER hRadixConverter, UINT32_CVECTOR * const pVector );
const UINT64 RC_sumOfDigits( const HRADIXCONVERTER hRadixConverter );
#endif /* #ifndef _NO_RC */
#ifdef __cplusplus
}
#endif
#endif /* !defined(AFX_HUGECALC_H__99330C8A_F843_4e32_876B_D0DF036B4E05__INCLUDED_) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -