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

[擂台] 计算百万位e

[复制链接]
 楼主| 发表于 2008-12-16 18:45:50 | 显示全部楼层
当然,我这个基于利用小质数的对数的查表法,既可以用来计算e^x,也可以用来求log(n)
若 t[ i ]是对数表的一个表项, t[ i ].n 表示真数, t[ i ].v = log(t[ i ].n), t[ i ].n 是一个分数,它的所有质因数都是一定范围内的小质数(12/5的质因数只有2,3,5这3个质数)

    对于求 e^x, 我们需要在对数表中找一个对数值刚刚小于x的表项t[ i ], 如此则  e^x  可化为 t[ i ].n * e^(x-t[ i ].v), 将e^x这个问题转化为求e^y,如果表的项数较多可使得y远小于x。

    对于求 log(x), 我们需要在对数表中找一个真数刚刚小于x的表项t[ i ], 如此则  log(x)  可化为 log( x/ t[ i ].n) + t[ i ].v, 将log(x) 这个问题转化为求log(y),y比x更接近于1。

     所以对于求e^x, 运行过程中需要多重精度乘以单精度的乘法 和 多重精度减法。而对于求log(x),运行过程中需要需要多重精度除以单精度的除法和多重精度加法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-16 19:11:35 | 显示全部楼层

回复 87# 仙剑魔 的帖子

没有看懂你这样做的意思,这样只能使得计算的工作量加大,对提高性能没有好处。我想你还没有实现基于2^k和基于10^k大数运算的经验吧?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 20:15:30 | 显示全部楼层
呵呵

昨天找到了那个问题的新思路了
今天尝试写程序
似乎还比较容易
所以对高精度对数的需求不是很迫切了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 20:30:49 | 显示全部楼层

回复 92# liangbch 的帖子

x^k在k是整数的时候有快速算法
而且x*x还能用FFT

但是ln(x)难求啊...
用级数展开是不现实的,收敛太慢了
我找不到快速的算法呀...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 20:53:37 | 显示全部楼层
原帖由 仙剑魔 于 2008-12-16 20:30 发表
x^k在k是整数的时候有快速算法
而且x*x还能用FFT
...


x^k当k是整数的时候的快速算法 是指数转二进制后从左至右不断地平方及相乘,
对于要求完全精确时,似乎没有更好的手段大幅提高效率了。

但若是指定精度,比如计算一个百位数的一千万次方的前一百位,
则也许存在更优的算法,可以减少一些大数平方及乘法次数。

至于第二句话,那是大数乘法(或平方)所用的快速算法,已属于其大数算法的核心层,
我们现在讨论的是稍高于其上的外围算法,
即便用 liangbch 的算法,最终在用到 x*x 时也会调用到它。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 20:57:47 | 显示全部楼层
存在更快的幂算法
但要复杂的多
参考TAOCP V2
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 21:16:11 | 显示全部楼层
请教liangbch
有什么方法可以快速计算ln(x)的高精度值
x不超过2位数
我曾经尝试
级数展开(速度很不理想)
公式转换(还是不理想)
迭代(稍微好了一点点)
实在没办法...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-16 22:00:23 | 显示全部楼层
给你几个参考:
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-12-16 23:18:00 | 显示全部楼层
想找AGM的原理,但是搜不到...厄...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-12-16 23:25:30 | 显示全部楼层

回复 99# 仙剑魔 的帖子

关于AGM(算术集合平均数),在几乎所有关于圆周率计算的资料都会提到的。
那篇 The logarithm constant: log 2  文章中不是提到了嘛,你还想要什么?
“想找AGM的原理,但是搜不到”,你只是为了应用,要原理干什么,你又不是数学家。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-4-16 13:30 , Processed in 0.045521 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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