找回密码
 欢迎注册
楼主: forcal

[讨论] 用Forcal封装HugeCalc大数算法库

[复制链接]
 楼主| 发表于 2010-10-28 13:51:22 | 显示全部楼层
不是的,是 HugeCalc 内含了反跟踪反破解技术。
gxqcn 发表于 2010-10-27 07:58

那是发生冲突了,呵呵!
但我这个窗口若弹不出来,就无法退出一些较长时间的循环。例如不小心写了一个无限循环,想要退出它。
有什么两全的办法吗?
我的窗口线程仅检测执行Forcal函数的线程是否还在运行。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-10-28 14:43:32 | 显示全部楼层
你确认是调用 HugeCalc 后无法弹出该窗口吗?
那么请试一试:在加载 HugeCalc 成功后,再创建该窗口线程。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-10-28 16:04:55 | 显示全部楼层
你确认是调用 HugeCalc 后无法弹出该窗口吗?
那么请试一试:在加载 HugeCalc 成功后,再创建该窗口线程。。。
gxqcn 发表于 2010-10-28 14:43

这个窗口的表现类似于windows的计算器,当计算时间较长时就弹出一个窗口要求用户确认是否结束计算。

此窗口仅在需要时(即Forcal正在计算且时间较长,约3~5秒后创建)才创建,故加载 HugeCalc 成功后并不立即创建,当执行Forcal函数几秒后才创建。

发现加载HugeCalc 后该窗口就不出现了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-10-28 16:14:22 | 显示全部楼层
打扰郭先生了,问题找到了,与HugeCalc 无关,是我这个窗口的问题。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-10-28 16:27:39 | 显示全部楼层
43# forcal

那比较奇怪了。
HugeCalc 仅仅在加载初期进行反跟踪反破解,而后就一切正常了。

你修改下线程,不弹出窗口,看是否仍在激活状态?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-10-28 18:52:06 | 显示全部楼层
45# gxqcn
这个问题若不是封装HugeCalc,可能还得晚些时候发现,要谢谢HugeCalc!呵呵。

我使用FcHugeCalc的过程是这样的:打开OpenFC(Forcal演示程序),此时使用了默认工作区文件,而默认工作区文件中没有加载FcHugeCalc;然后我打开另一个含FcHugeCalc的工作区文件,重新设置工作区,这样OpenFC要关闭所有文件、窗口等,再重新打开,有一个与监视窗口相关的变量没有重新设置,故监视窗口出不来了。

现已修正此bug。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-10-29 11:58:53 | 显示全部楼层
forcal 兄,你的forcal32w在我的机子上用不了,说什么:
1.jpg
是不是操作系统的问题,这台是Win7,不过在WinXp上装过没问题
还有如何使用下面的代码?
!using["math","sys"];
(:a,b,k,t0)=
t0=clock(),
oo{
  a=rand[1000,1000], b=rand[1000,1000],
  k=a*b  //矩阵乘
},
[clock()-t0]/1000;
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-10-29 16:06:18 | 显示全部楼层
forcal 兄,你的forcal32w在我的机子上用不了,说什么:
2270
是不是操作系统的问题,这台是Win7,不过在WinXp上装过没问题
还有如何使用下面的代码?
!using["math","sys"];
(:a,b,k,t0)=
t0=clock(),
oo{ ...
G-Spider 发表于 2010-10-29 11:58

AutoMfc是我写的一个可自动运行扩展名为“afc”的文件的小程序,有一些注册表操作,以建立“afc”文件和AutoMfc之间的关联,没有在win7(我目前没有64位系统)下测试过。

OpenFC是目前最好的演示程序,可演示以上代码,似乎在win7下可以运行。
OpenFC下载:http://www.forcal.net/xiazai/forcal9/openfc32w.rar
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-11-5 22:41:29 | 显示全部楼层
计算下列式子:
1:1! + 2! + 3! + ... ... + 1000!
2:1! *  2! *  3! * ... ... *  1000!

Forcal+HugeCalc代码:
  1. !using["HugeCalc"];
  2. i: main(:i,a,sum,pro)=
  3.    oo{a=HI(0),sum=HI(0),pro=HI(1)},
  4.    i=0,(++i<=1000).while{oo{sum.=sum+a.Fac(i), pro.=pro*a}},
  5.    printff["\r\nsum=\r\n"], sum.Show(),
  6.    printff["\r\npro=\r\n"], pro.Show();
复制代码
耗时约11~12秒。

Mathematica 、maple、matlab等如何呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-11-10 16:31:07 | 显示全部楼层
LS 的题目就题论题来说,还可以有很多优化,有些是数学算法层面上的,
有些则可以通过调用 HugeCalc 导出的高效函数而提速,
比如,大家可能不常用的函数:Product(..)、SumsOfLikePowers(..)
  1. #include <ostream.h>
  2. #include <iostream.h>

  3. #include "../../../HugeCalc_API/CppAPI/Include/HugeCalc.h"    // 公共接口
  4. #include "../../../HugeCalc_API/CppAPI/Include/HugeInt.h"    // 10进制系统

  5. #pragma message( "automatic link to ../../../HugeCalc_API/CppAPI/Lib/HugeCalc.lib" )
  6. #pragma comment( lib, "../../../HugeCalc_API/CppAPI/Lib/HugeCalc.lib" )

  7. int main(int argc, char* argv[])
  8. {
  9.     CHugeInt hi[1000], sum, pro;
  10.     CHugeInt * hi_prt[1000];

  11.     HugeCalc::EnableTimer( TRUE );
  12.     HugeCalc::ResetTimer();

  13.     hi[0] = 1;
  14.     hi_prt[0] = &hi[0];
  15.     for ( UINT32 i=1; i<1000; ++i )
  16.     {
  17.         hi[i] = hi[i-1] * (i+1);
  18.         hi_prt[i] = &hi[i];
  19.     }

  20.     CVECTOR_HHUGEINT vhi( (const class CHugeInt **const)hi_prt, 1000 );
  21.     sum.SumsOfLikePowers( vhi, 1 );
  22.     pro.SumsOfLikePowers( vhi, 0 );

  23. //  cout << "sum = " << sum.GetStr() << endl;
  24. //  cout << "pro = " << pro.GetStr() << endl;

  25.     cout << HugeCalc::GetTimerStr() << endl;

  26.     return 0;
  27. }
复制代码
如果不输出结果,在我的机器上仅需 0.637215 s;
输出结果,则总耗时 0.881359 s;
如果是输出到 DOS 屏幕,需要的时间略多点,共需要 4.693113 s
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-12-22 11:34 , Processed in 0.026127 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表