- 注册时间
- 2010-7-23
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 851
- 在线时间
- 小时
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?欢迎注册
×
关于Forcal,请访问:http://www.forcal.net/
演示程序OpenFC下载:http://www.forcal.net/xiazai/forcal9/openfc32w.rar
FcHugeCalc扩展库下载:http://www.forcal.net/xiazai/forcal9/FcHugeCalc.rar
FcHugeCalc源代码下载:http://www.forcal.net/xiazai/forcal9/FcHugeCalcCode.rar
我对大数计算不熟悉,许多问题还要向版主gxqcn及各位朋友们请教哦。欢迎大家给出任何改进的建议!
FcHugeCalc源代码是公开的,感兴趣的朋友可以自由修改它。
=====================================
Forcal扩展库之FcHugeCalc:郭先强超大整数完全精度快速算法库
=====================================
用法:
1、下载OpenFC,无需安装,仅需按readme设置好。
2、复制FcHugeCalc32W.dll和HugeCalc.dll两个文件到文件夹“OpenFC\dll”。
3、打开工作区文件“OpenFC.ini”,在#LOAD{... ...}中添加如下行:
"dll\FcHugeCalc32W.dll" //郭先强超大整数完全精度快速算法库
4、执行“设置->重载动态库扩展”。
5、可能需要注册后才能正常使用,参考“HugeCalc.chm”。
=====================================
当前可用的函数:
1、HugeCalc::DelAllHC():销毁所有的HugeCalc对象
2、HugeCalc::NowHCNum(100):查看当前存在,尚未销毁的HugeCalc对象,最多显示100个对象
3、HugeCalc::newhc(HI)、HugeCalc::newhc(HIX)、HugeCalc::newhc(VUI32):申请HugeInt对象、申请HugeIntX对象、申请VECTOR_UINT32对象
4、HugeCalc::delhc(p):销毁HugeCalc对象p,p是由函数newhc返回的对象指针
5、HugeCalc::nstr(p,"123"):给HugeCalc对象p赋值为123
6、HugeCalc::show(p):输出HugeCalc对象p的内容
7、HugeCalc::add(a,b,c):计算a=b+c,在函数oo可直接用运算符计算b+c,返回一个临时对象
8、HugeCalc::sub(a,b,c):计算a=b-c,在函数oo可直接用运算符计算b-c,返回一个临时对象
9、HugeCalc::mul(a,b,c):计算a=b*c,在函数oo可直接用运算符计算b*c,返回一个临时对象
10、HugeCalc::div(a,b,c):计算a=b/c,在函数oo可直接用运算符计算b/c,返回一个临时对象
11、HugeCalc::mod(a,b,c):计算a=b%c,在函数oo可直接用运算符计算b%c,返回一个临时对象
12、HugeCalc::pow(a,b,c):计算a=b^c
13、HugeCalc::fac(a,100):计算a=100!
14、HugeCalc::NextPrime(a,b):计算a=比b大的最小的素数
=====================================
例子1:- SetTalk[false]; //关闭计算结果及运行错误输出,并不阻止函数的输出
- !using["HugeCalc"]; //使用命名空间HugeCalc,可简化函数的使用
- mvar: //使用隐含模块变量声明方式
- i: printff["\r\n"], //输出一个换行符
- a=newhc[HI].nstr["1111111111111111111111111111111"].free[], //申请HugeInt对象并赋值,自动销毁该对象
- b=newhc[HI].nstr["11111111112222222222222"].free[], //申请HugeInt对象并赋值,自动销毁该对象
- c=newhc[HI].add[a,b].show[].free[], //申请HugeInt对象c,计算c=a+b并输出结果,自动销毁该对象
- printff["\r\n"], //输出一个换行符
- oo{[a+(b+c)+(a+b)].show[]}; //函数oo中的运算符是重载的,计算a+(b+c)+(a+b)并输出结果
复制代码 -------------------------------------
例子2:- SetTalk[false];
- !using["HugeCalc"];
- mvar:
- i: printff["\r\n"],
- a=newhc[HI].nstr["1111111111111111111111111111111"].free[],
- b=newhc[HI].nstr["11111111112222222222222"].free[],
- oo{[c=a%b, a+(b-a%b)*(a+b/c)].show[]};
复制代码 -------------------------------------
例子3:- !using["HugeCalc"];
- mvar:
- i: oo{
- printff["\r\n"],
- //函数oofree[]指出由oo函数销毁该对象
- a=newhc[HI].nstr["1111111111111111111111111111111"].oofree[],
- b=newhc[HI].nstr["11111111112222222222222"].oofree[],
- c=newhc[HI].oofree[],
- [d=[a*b], c.pow(a,10), a+(d-a%b)*(a+c/b)].show[]
- };
复制代码 =====================================
forcal 2010.7.29 |
|