📄 hugeint.h
字号:
// HugeInt.h: interface for the CHugeInt class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HUGEINT_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_)
#define AFX_HUGEINT_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "HugeCalc.h"
#include "CarryParam.h"
class CHugeSInt;
class CHugeInt;
#ifndef _CHUGEINT_VECTOR
#define _CHUGEINT_VECTOR
#ifndef __SGI_STL_VECTOR
typedef vector< CHugeInt > CHUGEINT_VECTOR;
#else
typedef vector< CHugeInt, malloc_alloc > CHUGEINT_VECTOR;
#endif
#endif // !defined(_CHUGEINT_VECTOR)
#ifndef _LPCHUGEINT_VECTOR
#define _LPCHUGEINT_VECTOR
#ifndef __SGI_STL_VECTOR
typedef vector< CONST CHugeInt * > LPCHUGEINT_VECTOR;
#else
typedef vector< CONST CHugeInt *, malloc_alloc > LPCHUGEINT_VECTOR;
#endif
#endif // !defined(_LPCHUGEINT_VECTOR)
#define HUGEINT_API HUGECALC_API
class HUGEINT_API CHugeInt
{
friend class CHugeIntX;
friend CCarryParam& CCarryParam::operator =( CONST CHugeInt& right );
// CompareAbs
HUGEINT_API friend CONST SINT32 CompareAbs( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST SINT32 CompareAbs( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST SINT32 CompareAbs( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST SINT32 CompareAbs( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST SINT32 CompareAbs( CONST CHugeInt& left, CONST CHugeInt& right );
// Compare
HUGEINT_API friend CONST SINT32 Compare( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST SINT32 Compare( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST SINT32 Compare( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST SINT32 Compare( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST SINT32 Compare( CONST CHugeInt& left, CONST CHugeInt& right );
// PowMod
HUGEINT_API friend CONST UINT32 PowMod( CONST UINT32 u32Base, CONST CHugeInt& hugeExp, CONST UINT32 u32Mod );
HUGEINT_API friend CONST SINT64 PowMod( CONST CHugeInt& hugeBase, CONST UINT32 u32Exp, CONST UINT32 u32Mod );
HUGEINT_API friend CONST SINT64 PowMod( CONST CHugeInt& hugeBase, CONST SINT32 s32Exp, CONST UINT32 u32Mod );
HUGEINT_API friend CONST SINT64 PowMod( CONST CHugeInt& hugeBase, CONST CHugeInt& hugeExp, CONST UINT32 u32Mod );
// relation operators
HUGEINT_API friend CONST BOOL operator ==( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator ==( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator ==( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST BOOL operator ==( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST BOOL operator ==( CONST CHugeInt& left, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator !=( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator !=( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator !=( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST BOOL operator !=( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST BOOL operator !=( CONST CHugeInt& left, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator <( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator <( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator <( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST BOOL operator <( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST BOOL operator <( CONST CHugeInt& left, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator <=( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator <=( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator <=( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST BOOL operator <=( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST BOOL operator <=( CONST CHugeInt& left, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator >( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator >( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator >( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST BOOL operator >( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST BOOL operator >( CONST CHugeInt& left, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator >=( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator >=( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST BOOL operator >=( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST BOOL operator >=( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST BOOL operator >=( CONST CHugeInt& left, CONST CHugeInt& right );
// +
HUGEINT_API friend CONST CHugeInt operator +( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST CHugeInt operator +( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST CHugeInt operator +( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST CHugeInt operator +( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST CHugeInt operator +( CONST CHugeInt& left, CONST CHugeInt& right );
// -
HUGEINT_API friend CONST CHugeInt operator -( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST CHugeInt operator -( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST CHugeInt operator -( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST CHugeInt operator -( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST CHugeInt operator -( CONST CHugeInt& left, CONST CHugeInt& right );
// *
HUGEINT_API friend CONST CHugeInt operator *( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST CHugeInt operator *( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST CHugeInt operator *( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST CHugeInt operator *( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST CHugeInt operator *( CONST CHugeInt& left, CONST CHugeInt& right );
// Division, return quotient
HUGEINT_API friend CONST SINT64 Div( CONST UINT32 u32Dividend, CONST CHugeInt& hugeDivisor, UINT32 * CONST pRemainder = NULL );
HUGEINT_API friend CONST SINT32 Div( CONST SINT32 s32Dividend, CONST CHugeInt& hugeDivisor, SINT32 * CONST pRemainder = NULL );
// /
HUGEINT_API friend CONST SINT64 operator /( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST SINT32 operator /( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST CHugeInt operator /( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST CHugeInt operator /( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST CHugeInt operator /( CONST CHugeInt& left, CONST CHugeInt& right );
// %
HUGEINT_API friend CONST UINT32 operator %( CONST UINT32 u32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST SINT32 operator %( CONST SINT32 s32Num, CONST CHugeInt& right );
HUGEINT_API friend CONST SINT64 operator %( CONST CHugeInt& left, CONST UINT32 u32Num );
HUGEINT_API friend CONST SINT32 operator %( CONST CHugeInt& left, CONST SINT32 s32Num );
HUGEINT_API friend CONST CHugeInt operator %( CONST CHugeInt& left, CONST CHugeInt& right );
public:
// Constructor
explicit CHugeInt( VOID );
explicit CHugeInt( CONST UINT32& u32Num );
explicit CHugeInt( CONST SINT32& s32Num );
explicit CHugeInt( CONST UINT64& u64Num );
explicit CHugeInt( CONST SINT64& s64Num );
explicit CHugeInt( CONST LPCTSTR lpszNum );
explicit CHugeInt( CONST CCarryParam& CarryParam );
explicit CHugeInt( CONST CHugeInt& right );
explicit CHugeInt( CONST CHugeIntX& right );
// destructor
/*virtual */~CHugeInt( );
static CONST SIZE_T GetCount( VOID );
// reload operator ->
CHugeInt * CONST operator ->( VOID );
// get property
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -