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

📄 hugecalc.h

📁 这是一个功能极其强大的软件包
💻 H
📖 第 1 页 / 共 2 页
字号:

//*****************************************************************
// FileDescription:		Quickly Calculate Library for Huge Integer.
// FileVersion:			2004-10-18
// ProductVersion:		3, 0, 2, 1
//
// Portability:			Standard C++
// Base Classes:		None.
// Related Document:	HugeCalc.chm
//
// Copyright 1992-2004 by Guo XianQiang. All rights reserved.
//
//
// Web: http://maths.myrice.com/
// BBS: http://rd.xilubbs.com/
// E-Mail: gxqcn@163.com
//*****************************************************************

// If you find any bug or you want to add some useful function
// please email to me. Redistribution and use in source are
// permitted provided that: source distributions retain this
// entire copyright notice and comment.
// 如果你在使用中发现BUG或添加了功能,请Email我。
// 你可以使用与发布该文件,但不得进行商业用途。
// 你的发布要包含完整的本文件头。

/*
附加说明:

	1、该目录下的文件有 HugeCalc.h、HugeCalc.lib;用它们可完全控制 HugeCalc.dll (Ver3.0.2.1)。

	2、HugeCalc.h 用到了 SGI-STL,所以请到 http://www.sgi.com/tech/stl/download.html 下载安装一份STL,
	   并在 VC 的 Tools->Options->Directories->Include files 中将 SGI-STL 目录加进去并提到最前;
	   但如果您根本不会去调用带有 <vector> 接口的函数,则该过程完全可省略。

	3、调用程序的 name 必须为 HugeCalc.exe,否则 HugeCalc.dll 会拒绝任何服务。

	4、欢迎进行各项测试,如果发现bug,请及时联系,谢谢!

	5、最新版的 HugeCalc.dll 下载地址:http://www.freewebs.com/maths/download/HugeCalc.rar

	6、请务必遵守配套的 HugeCalc.chm 的相关声明!

2004-10-18
郭先强(gxqcn@163.com)
*/

#if !defined(AFX_HUGECALC_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_)
#define AFX_HUGECALC_H__5B7DCBAC_6D89_4C55_B51F_D96B5E741B51__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <WINDOWS.H>

// must use SGI-STL, URL: http://www.sgi.com/tech/stl/download.html
#include <vector>	//stl_vector.h
using namespace std;

#ifndef _HUGECALC_API
	#define _HUGECALC_API
 	#define HUGECALC_API __declspec(dllimport)
#endif

#ifndef _FORMAT_SHOW
	#define _FORMAT_SHOW

	const BYTE FS_NORMAL		= 0x00;	// normal format
	const BYTE FS_BAND			= 0x01;	// ' ' or ',' at pre 3 digits from right
	const BYTE FS_BAND_SPACE	= 0x02;	// must setting "| FS_BAND"
	const BYTE FS_SIGN			= 0x04;	// even if "+"
	const BYTE FS_SIGN_SPACE	= 0x08;	// between sign and number
	const BYTE FS_DEFAULT		= FS_BAND | FS_BAND_SPACE | FS_SIGN_SPACE;	// default format
#endif // !defined(_FORMAT_SHOW)

#ifndef _SINT32
	#define _SINT32
	typedef INT32 SINT32;
#endif // !defined(_SINT32)

#ifndef _ENUM_SIGN
	#define _ENUM_SIGN
	enum SIGN{ SIGN_NEGATIVE = -1, SIGN_ZERO = 0, SIGN_POSITIVE = 1 };
#endif // !defined(_ENUM_SIGN)

#ifndef _U32_VECTOR_DEFINED
	#define _U32_VECTOR_DEFINED
	typedef vector< UINT32 > U32_VECTOR;
#endif // !defined(_U32_VECTOR_DEFINED)

class InternalClass;
class CHugeInt;
typedef vector< CHugeInt > CHUGEINT_VECTOR;

class HUGECALC_API CHugeInt
{
	HUGECALC_API friend const SINT32 CompareAbs( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const SINT32 CompareAbs( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const SINT32 CompareAbs( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const SINT32 CompareAbs( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const SINT32 CompareAbs( const CHugeInt &left, const CHugeInt &right );

	HUGECALC_API friend const SINT32 Compare( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const SINT32 Compare( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const SINT32 Compare( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const SINT32 Compare( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const SINT32 Compare( const CHugeInt &left, const CHugeInt &right );

	// relation operators
	HUGECALC_API friend const BOOL operator ==( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const BOOL operator ==( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator ==( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const BOOL operator ==( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const BOOL operator ==( const CHugeInt &left, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator !=( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const BOOL operator !=( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator !=( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const BOOL operator !=( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const BOOL operator !=( const CHugeInt &left, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator <( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const BOOL operator <( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator <( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const BOOL operator <( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const BOOL operator <( const CHugeInt &left, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator <=( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const BOOL operator <=( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator <=( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const BOOL operator <=( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const BOOL operator <=( const CHugeInt &left, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator >( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const BOOL operator >( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator >( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const BOOL operator >( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const BOOL operator >( const CHugeInt &left, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator >=( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const BOOL operator >=( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const BOOL operator >=( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const BOOL operator >=( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const BOOL operator >=( const CHugeInt &left, const CHugeInt &right );

	// +
	HUGECALC_API friend const CHugeInt operator +( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const CHugeInt operator +( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const CHugeInt operator +( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const CHugeInt operator +( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const CHugeInt operator +( const CHugeInt &left, const CHugeInt &right );

	// -
	HUGECALC_API friend const CHugeInt operator -( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const CHugeInt operator -( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const CHugeInt operator -( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const CHugeInt operator -( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const CHugeInt operator -( const CHugeInt &left, const CHugeInt &right );

	// *
	HUGECALC_API friend const CHugeInt operator *( const UINT32 u32Num, const CHugeInt &right );
	HUGECALC_API friend const CHugeInt operator *( const SINT32 s32Num, const CHugeInt &right );

	HUGECALC_API friend const CHugeInt operator *( const CHugeInt &left, const UINT32 u32Num );
	HUGECALC_API friend const CHugeInt operator *( const CHugeInt &left, const SINT32 s32Num );

	HUGECALC_API friend const CHugeInt operator *( const CHugeInt &left, const CHugeInt &right );

	// Division, return quotient

⌨️ 快捷键说明

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