我想在Ç计算一个非常大的n的阶乘(上百万)来实现程序,用FFT和二元分裂法。阶乘使用FFT
我已经实现了一个简单的库来表示任意精度整数。 要计算FFT和IFFT,我使用twofft.c和four1.c从例程 “数字食谱用C”
达到一定N,一切正常,但当数字(浮动数组)太大时,在归一化和舍入之后,具有错误的值。
例如,如果我有两个数与2000位与40个零结束,我必须将它们相乘彼此(使用FFT),当我计算IFFT,一些结束零成为“一”。 发生这种情况是因为当我四舍五入这个“零”(例如0.50009)时,它们变成了“一个”。 现在,我不知道我的执行是否错误,或者如果我必须以不同的方式舍入这个数字。 我试图同时使用二元分割法和因式分解,但N> = 9000,结果是错。
有办法解决这个问题吗? 感谢您的关注,并对我的英语不好。
请格式化您的问题!除此之外,'C'不能处理如此大的数字。 – 2013-03-11 12:21:14
请发布一个说明您的问题的最小代码示例。 – 2013-03-11 12:21:32
@ bash.d:OP明确表示,他/他实现并使用任意精度整数库来完成当前任务。 – datenwolf 2013-03-11 12:23:51