关于压位大整数
  • 板块学术版
  • 楼主zhangbo1000
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/7 19:41
  • 上次更新2024/6/7 22:19:35
查看原帖
关于压位大整数
760291
zhangbo1000楼主2024/6/7 19:41

考虑到使用 10base10^{base} 进制,即压 basebase 位,那么加减运算的中间量不会超过 ±base\pm base 的范围,理论上可以取 base=18base=18,不过乘法是不超过 base2base^2(一步一取模常数太大)。

但是,最近注意到一个问题,如果使用 FFT 加速乘法,那本身就需要一个辅助数组,这样的 basebase 的值就与中间量大小没有直接联系,实测 FFT 可以压 44 位(55 位需要用更激进的方法优化精度,NTT 没有 FFT 快),那么为了方便可以取 base=16base=16。

但是,这样的话终究是多了一个进制转化,乘法常数大一点点,实际使用中这样搞是否优于全程取 base=4base=4 呢?

FFT 速度参考数据:

我写的大整数乘法效率

通过板题大约 260ms 的优秀版本

非常快且长的指令集版本(不过用的 FHT)

2024/6/7 19:41
加载中...