社区
数据结构与算法
帖子详情
FNT的实际编程讨论
yaos
2004-07-15 06:34:58
FNT涉及到几个数据
M,一个大数,
n,2的方幂,变换的长度
a,一个小数,M的类似原根的东西
...全文
435
29
打赏
收藏
FNT的实际编程讨论
FNT涉及到几个数据 M,一个大数, n,2的方幂,变换的长度 a,一个小数,M的类似原根的东西
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yaos
2004-07-26
打赏
举报
回复
apfloat是三项式变换
GMP是2^n + 1形式变换
kerbcurb
2004-07-23
打赏
举报
回复
hfloat研究过吗?apfloat下面的两个链接可以找到
yaos
2004-07-22
打赏
举报
回复
只有第二卷有这方面的内容啊
kerbcurb
2004-07-22
打赏
举报
回复
我有第一册的中文版
yaos
2004-07-18
打赏
举报
回复
这次可以了,TAOCP写错了 :)
WinNTL首字母大写 :)
都可以下载了
yaos
2004-07-18
打赏
举报
回复
抱歉,没测试 :)
我看看
shines77
2004-07-17
打赏
举报
回复
Donald e. Knuth - The Art Of Computer Programming Volume2
下不了啊,MIRACL可以
您访问的文件不存在,请查看如下原因:
1、服务器区分大小写,请您检查地址中的大小写;
(Abc.htm和abc.htm被认为是不同的文件)
2、文件名或文件夹名只能是英文字母或者数字,不能是中文;
3、确认文件的确切路径,是否在该文件夹中。
yaos
2004-07-17
打赏
举报
回复
2我可以解释,1没有发言权
你想问什么?我不太明白
如果问m,n比较小的情况,是用普通乘法做的
比较大的时候,用NTT,分成数组做变换,然后2个数组对应项相乘,乘法如果位数大,再用NTT乘,位数小,用3-Toom算法,再小用karatsuba算法,再小普通乘法
yaos
2004-07-17
打赏
举报
回复
做好了,还有几个好东西,自己看,都更新成为最新的了
yaos
2004-07-17
打赏
举报
回复
高德纳的书上乘法有详细的算法,直到FFT都有
比看apfloat简单啊 :)
我有PDF,给大家传上来吧
http://yaojialin.51.net/download
大部分东西都有
kerbcurb
2004-07-17
打赏
举报
回复
apfloat我在看,内容较多,完全看下来需要一些时间。
yaos
2004-07-17
打赏
举报
回复
程序
a = 1;
for (i = bitLength(n) - 1; i >= 0; i ++)
{
a = sqr(a);
if (bitAt(i))
a = mul(a, m);
}
yaos
2004-07-17
打赏
举报
回复
汗,看错了
:)
乘方通用方法:
m ^ n, n化成二进制,从最高位开始
a = 1
对每个bit循环
1、a = a * a,
2、如果该位是1,再a = a * m
最后输出a,O(n(logn)^2)的复杂度
shines77
2004-07-17
打赏
举报
回复
to kerbcurb():
你可以看看apfloat,乘方其实很简单的,里面有个函数pow,看看就知道了
to all:
apfloat中的FNT里有我在找的FFT中的four step(即six step)步骤,可以对Cache优化,我想之所以叫FNT是因为有FFT的思想在里面,所以才称fast
kerbcurb
2004-07-16
打赏
举报
回复
都是高手,我来学习,请教一问题
我在几位的的帖子中看到以下的计算
1)n!
2)m^n
当n和m达到一定程度,肯定是大数相乘,大数相乘我有自己的代码,但是数度却是慢,没法和几位相比,想问在计算1)和2)时,还没有变成大数的时候,在细节上是如何处理的,GxQcn朋友介绍过一部分内容,yaos和shines以及liangbch(宝宝)三位朋友是如何处理的,能介绍一下吗,谢谢!
yaos
2004-07-16
打赏
举报
回复
似乎说的有点问题,嘿嘿,感觉
这么小的模只能计算8位二进制的数组
yaos
2004-07-16
打赏
举报
回复
参考资料列表
1、高德纳 计算机程序设计艺术 Vol. 2 英文版PDF
2、孙琦 等 快速数论变换 科学版
3、C语言数值算法大全 电子工业版
4、GMP 4.1.2的PDF文档
5、GMP程序注释
讲FFT的书我不知道还能找到不,里边有优化的基4,8等的FFT算法
嘿嘿,差不多全了
yaos
2004-07-16
打赏
举报
回复
流程是把两个乘数分成
两个数组a b
计算a = FNT(a) b = FNT(b)
然后计算 c[i] = a[i] * b[i]
然后计算 c = IFNT(c)
数组c就是a b的卷积,经过简单规约后c变成乘积
yaos
2004-07-16
打赏
举报
回复
一般保证规约前最大的结果不要超过M / 2,就能保证唯一性
gxqcn
2004-07-16
打赏
举报
回复
“每个存储单位(apfloat 每个存储单位范围为0-999999999) 的最大值,必须小于M”
因为要做模运算,如果大于了M,可能造成不同的input,得到相同的output,那就问题大了。
加载更多回复(9)
网络
编程
万字详解
网络
编程
网络互联 随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。 网络互连:将多台计算机连接在一起,完成数据共享。 数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。根据网络互连的规模不同,可以划分为局域网和广域网。 局域网LAN 局域网,即Local Area Network,简称LAN。 Local即标识了局域网是本地,局部组建的一种私有网络。 局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域
python趣味
编程
-5分钟实现一个F1 赛车公路游戏(含源码、步骤讲解)
Python 中的 F1 赛道游戏是一款简单的基于图形用户界面的游戏。下面的代码是 pygame 库,是 Python
编程
语言的开源模块,专门用于帮助您制作游戏和其他多媒体应用程序。这款 Python 语言的 F1 赛道游戏可以免费下载开源代码,它是为想要学习 Python 的初学者创建的。下面给出了代码,该代码是用于游戏中使用的音频声音的功能。在下面给出的代码中,这是用于游戏中使用的标题的功能。在下面给出的代码中,它用于按钮和文本中使用的颜色的功能。在下面给出的代码中,这是用于游戏中使用的图像的功能。
斑马
编程
指令中文版
ZPLII命令参考 ^A 缩放/点阵字体 ^A(可缩放/点阵字体)命令用于内置的True Type字体。可缩放字体(也可以认为是平滑矢量字体)能够以点为单位来对横向、纵向进行扩展。点阵字体由点阵象素组成,通常高度高度大于宽度。 内置的的缩放字体(A0=CG Triumvirate Bold Condensed)默认为不旋转,15点高,12点宽。打印机将从^A命令得到
frame buffer device驱动程序
后续的几篇里面会详细介绍如何编写一个显卡的驱动程序。framebuffer device在内核里面作为显卡驱动模型,许多函数和数据结构都是特定,正是这些特定的东西为我们的
编程
提供了方便。要开发frame buffer device驱动,你应该阅读Source/Source/Documentation/fb下面的说明文件,三个重要文件00-INDEX, framebuffer.txt,internals.txt,其他文件都是针对具体显卡芯片的说明了。文件00-INDEX译文文档/documentation/f
TypeScript 中文手册(新年版)
为了让程序有价值,我们需要能够处理最简单的数据单元:数字,字符串,结构体,布尔值等。TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。我们提过使用var声明时,它不在乎你声明多少次;你只会得到1个。var x;var x;var x;在上面的例子里,所有x的声明
实际
上都引用一个相同的x,并且这是完全有效的代码。这经常会成为bug的来源。好的是,let声明就不会这么宽松了。let x = 10;let x = 20;
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章