找回密码
 欢迎注册
查看: 19604|回复: 18

[讨论] B计划之长乘法讨论

[复制链接]
发表于 2008-4-14 16:23:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
鉴于和liangbch讨论的基选择问题已经很深入了
这里开一个帖子讨论下乘法的具体做法
详细的内容近期贴出
打算先写个四路的普通乘法函数
然后考虑分治和高级的情况
NTT不打算考虑
那是另外帖子的任务
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-15 09:38:55 | 显示全部楼层
因为还没有想好如何具体测试算法,随便说两句
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<
由目前的资料看,标准的Toom-Cook算法计算的块数应该是在3, 4, 5, 6这四个选择里的,超过6似乎并不能很好的在效率和复杂性上得到平衡,或者说超过6很可能并没有好的算法(纯属猜测,知道的请纠正)。
另外,快速的算法并不是简单的解方程得到系数,而是有预先对应的矩阵的,而且对应阶的矩阵存在很多的,需要在里面选择最小乘法数或者最简单实现的,例如3的最小乘法是5,但最简单实现却需要乘法6个
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-15 21:44:47 | 显示全部楼层
toom-3算法的实质是将 2个 长为 3L的大数乘法转为为 5次 长为 L的大数乘法。如果转化为6次,则没有实际意义,因为这样复杂度将超过分治法。
toom-3算法的复杂为$n^(log_3(5))~~n^1.46497352 $,分治法的复杂度为$ n^{log_2(3)}~~ n^{1.5849625}$。如果将3L的大数乘法转为为 6次 长为 L的大数乘法的大数乘法,则复杂度为:$n^{log_3(6)}~~ n^{1.63093}$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-15 22:05:30 | 显示全部楼层
你没看我发的几个论文啊
有个中文的说了
5次的存在除以3的操作
6次的仅是加减法
而这个方法并不是迭代方法
所以无所谓什么算法复杂度
和你说的并没关系啊
因为他的乘法是归类到低等的分治运算的
不会再进行Toom-3了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-16 07:49:00 | 显示全部楼层
对于大数计算来说,对于长度比较大的L,
多一次L*L(大数乘法)应比多一次(L*L)/3(仅指最后那步大数除以3)耗时要大,
所以分5段应比分6段来得划算,无论算法是否被切换成更低阶的算法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-16 07:52:43 | 显示全部楼层


是啊, 是较大的情况
所以似乎两种情况都需要
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-18 14:39:26 | 显示全部楼层
 对于使用十进制还是二进制,楼主主张使用二进制,这和GMP是一致的。一般说来,在计算远多数输出的情况下,以采用二进制为宜,反之则采用十进制为宜,因为二进制表示输出困难,复杂度较高。
   通常认为,多数应用计算占得比重多,输出所占的比重少。但实际应用中,许多应用使用10进制更有优势,象计算有周率,计算e,计算$ \sqrt 2$,$\log 2$等。所以,以计算圆周率作为demo程序的无一例外的使用了基于10进制的表示法。如apfloat,ooura.
 我的观点,最好的方案如gxq那样,采用2套算法库,一套是基为2进制,另一套是基为10进制的。
 我的计划,目前先实现基为 $ 10^9 $进制的算法,从现在开始,将注意力集中在10进制大数乘法,暂不考虑2进制算法。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-18 14:43:29 | 显示全部楼层


知道
什么叫工业应用
什么叫闹着玩的?

工业应用肯定是二进制库
计算你说的那些都不是工业应用的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-4-18 14:48:22 | 显示全部楼层
有一点可以告诉你,使用2进制的好处大体有2种:
    1.需要做大数的位运算,这个其实使用的并不多。
  2.二进制具有速度优势,特别是大数乘以单精度整数,但是对于大数乘以大数,二进制的优势其实非常有限,甚至可以忽略。
  你我的程序被应用于大规模的工业应用,这种机会太渺茫了,不要好高骛远。

再说了,我也没说放弃2进制库的实现,只是暂时不考虑。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-4-18 14:54:16 | 显示全部楼层
还有就是空间占用

恐怕将来还存在移植问题
10进制移植到64位平台是很困难的
面临改动进制的可能
二进制很可能就改动几个底层汇编就可以了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-4-28 23:45 , Processed in 0.069826 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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