qianyb 发表于 2011-4-22 10:23:15

发现HugeCalc计算2820^2820结果错误

HugeCalc计算$2820^2820$结果是6922位,但实际是9730位的
还有2830,2850,2860等结果也是错误的

gxqcn 发表于 2011-4-22 11:34:30

经debug,问题出在最后一次平方:对尾部“0”的计算时机不对造成的,造成结果少了156*2*9=2808个尾部0。
该平方模块是一段优化算法,它是将要平方的数切分成五段后计算的,被调用到的概率不是很大,且仅仅在底数尾部连续有9个以上的0时出现错误。
经查证,该bug首次出现于 V7.0.1.0 (2007-09-10 公开发布)

非常感谢反馈该bug!看来我得加快升级版本的推出了。。。

2012-10-10 备注:
附件是临时修整版,但对多核支持不完美,经测试,卸载时线程池无法释放(正式版无此问题)。如果您是多核用户,可编辑 Windows\HugeCalc.ini 文件中的 字段,将 NumOfCores 强行设定为 1 即可,副作用时效率会有所下降。
由于家中电脑坏了,所以 HugeCalc 的升级开发暂处于停滞状态,请大家见谅!预计等明年我配置好新机器后将继续开发,且以64位操作系统为优先,敬请期待。。。

qianyb 发表于 2011-4-22 11:37:00

呵呵,我是测试n^n过程发现这个数据比前一个的值还小,所以去网上计算了一下发现的

qianyb 发表于 2011-4-22 11:40:44

还有个建议,在操作过程中因为不符合软件的输入结果时,返回的一个错误提示,而不是直接返回原值
如d=d.Div(d,a)时,结果还是原来d的值,而不是返回d/a的值

gxqcn 发表于 2011-4-22 12:05:23

你可能不清楚,大数算法与普通算法的区别。
大数算法传参数一般是传递指针(或引用),很少传值的,主要是出于效率考虑。
而为了严谨性,许多入参都规定了“只读”属性,为了不破坏它,当检查发现可能会破坏到“只读”属性时就直接返回。
这对许多开发者来说是有好处的,当然对于应用者来说可能感觉多了条限制规则。
也许,在以后的版本中,我会考虑弱化该限定规则。

qianyb 发表于 2011-4-22 12:08:04

我觉得要提示错误好些,否则对函数要非常熟悉才行,要不然计算结果都是错误的,还不知道原因呢

〇〇 发表于 2011-4-24 08:47:24

nice job

云梦 发表于 2011-5-30 08:04:06

我想有HugeCalc的算法库,能否在VB中应用呢?(完善我的高精度科学计算器用)。

gxqcn 发表于 2011-5-30 08:28:41

可以在VB中调用的。
只是当前 HugeCalc 导出接口只有整型的,浮点的需要用户再包装开发。

mathematica 发表于 2013-7-31 21:49:42

要想写一个没有bug的程序,真的好难呀!
页: [1]
查看完整版本: 发现HugeCalc计算2820^2820结果错误