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

[擂台] 计算百万位e

[复制链接]
 楼主| 发表于 2008-12-16 13:14:48 | 显示全部楼层
mathe的算法并不快,那个计算过程需要b次多重精度乘法运算,而我的算法则不用,只是做后阶段计算$e^a$复杂度较高。 下面我们用数学语言重新描述一下我的算法,这个算法使用于以$10^k$为基的多重精度运算。 若 $e^x=10^d*e^a$ 这里, $d in ZZ, a d= |__x/log(10)__| $ |_ _| 表示向下取整 $=> a=x - d*log(10)$ 故 $e^x=10^d*e^a$ 类似的使用于2进制的算法 若 $e^x=2^b*e^a$ 这里, $b in ZZ, a b= |__ x/log(10) __|$ |_ _| 表示向下取整 $=> a=x - b*log(10)$ 故 $e^x=2^b*e^a$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 13:33:28 | 显示全部楼层

回复 81# liangbch 的帖子

哦,明白了。 你的算法在10进制下,乘以 10^d 是个简单“移位”运算而已。 但无论如何,似乎都要将常数 ln(10)(或 ln(2)) 保留足够的精度以应付尾数 $a$ 的计算。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 13:43:38 | 显示全部楼层
假如 $e^x$ 指定精度的计算可以足够快, 那么对于其它底数,即便指数为正整数的,通过换底成 $e^x$ 形式去计算指定精度,是否更划算?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-16 15:14:16 | 显示全部楼层
是啊,但前提是必须事先对数运算log(x).   你能注意到,对于采用十进制,余项$e^a$, $a
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 15:30:36 | 显示全部楼层
计算一个12位小质数的对数到32位,速度有多快? 一秒钟计算1000000次能达到么?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-16 16:02:54 | 显示全部楼层
我所说的小质数指2,3,5,7这样前32个甚至前16个小质数。计算他们的对数对于计算普通的数的对数很有帮助。 你所说的那个达到12位数字的质数不是通常意义的小质数,计算他们的对数不具有特别的意义。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 16:12:17 | 显示全部楼层
我根据大家的思路也想了下 先假设x是个高精度的数,所以写成2进制就有点麻烦了 考虑科学记数法,把x写成a*10^b,其中a在[1,10),b为整数 这样 e^x =e^(a*10^b) =(e^a)^(10^b) =(e^a)^(2^b*5^b) =(e^a)^(2^(4b)*0.625^b) =(e^(a*0.625^b))^(2^4b) 这样就计算 c=a*0.625^b d=e^c 然后把d平方4b次 还有就是计算ln(x)有什么好的方法呀? 其实我在写大数计算,所以在寻找好的算法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 16:14:33 | 显示全部楼层
呵呵 我也想知道如何最快速计算对数 media2005的圆周率和阶乘的问题 到目前懒得算了 高精度浮点太慢了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-16 16:33:09 | 显示全部楼层
以我目前的思路,求一个12位质数的对数和求一个12位任意数的对数没有什么区别,至于速度。我还没有完全是实现这个程序,无法给出数据。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 17:42:29 | 显示全部楼层
ln(x)也可以用x=a*10^b展开 ln(x)=ln(a*10^b)=ln(a)+b*ln(10) 所以如果有ln(x)在x比较小的时候的快速算法就OK啦
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-11-21 21:27 , Processed in 0.038432 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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