📄 hugecalc.h
字号:
//*****************************************************************
// 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 + -