首页 > 其他分享 >聊聊 fft 的单位根

聊聊 fft 的单位根

时间:2024-02-17 15:55:04浏览次数:34  
标签:计算 loj double fft 单位根 https 聊聊

与 ntt 不同,处理 fft 的单位根要更加复杂,主要原因是考虑精度的问题.

我们可以认为直接从三角函数计算出的单位根精度是最高的.

当然由于 \(\sin(x)\) 和 \(\cos(x)\) 的渐进估计涉及到高次项,因此使用 long double 计算单位根再转成 double 是一点点意义的(如果 long double 精度好于 double).

但是,全部使用三角函数计算显然过于昂贵.(三角函数是相当慢的.)

ps : 常见的 fft 写法对单位根做了 \(n\) 次乘法,可谓是精度飞天了.

一个很简单的想法说我们可以只计算 \(\log n\) 个单位根然后用它们的乘积组合出剩下所需的单位根.

一个比较合理的实现是计算 \(2^1\),\(2^2\),\(2^3\)... 次本原单位根然后按二进制组合.

这样只经过了 \(\log n\) 次乘法,是一种不错的办法.

参见 https://loj.ac/s/2005800

这个思想是可以在线计算单位根而无需预处理出 \(O(n)\) 量级的表的.

参见 https://loj.ac/s/2005807

另一个很简单的想法是我们可以使用光速幂的思路.

计算 \(\sqrt n\) 个单位根然后用它们的乘积组合出剩下所需的单位根.

这样只经过了 \(1\) 次乘法,能够维持相当高的精度.

参见 https://loj.ac/s/2005809

当然用这个思想在线计算是很简单的,直接做即可.

参见 https://loj.ac/s/2005850

对常规实现来说,在线计算的意义并不是很大,但有些实现中在线计算单位根能减少内存访问从而大大减少常数.

标签:计算,loj,double,fft,单位根,https,聊聊
From: https://www.cnblogs.com/QedDust/p/18018053

相关文章

  • 【多项式】【模版】FFT NTT
    多项式若\(A(x)=a_0+a_1x+a_2x^2+\dotsa_nx^n(a_n\ne0)\),则称\(A\)是\(n\)次多项式。初中概念,但在OI中可以玩出花来。多项式的表示方式像上面的介绍一样,用系数\(a_0,a_1,\dotsa_n\)来表示多项式的方法称为系数表示法。还有一种表示多项式的方法,就是对于\(n\)......
  • 单位根反演
    单位根反演通常用于求\(\sum\limits_{i=0}^n[x\midi]f_i\)。形式\[[n\midk]=\frac{1}{n}\sum\limits_{i=0}^{n-1}\omega_n^{ik}\]其中\(\omega_n\)是\(n\)次单位根,模意义下可以被原根替换。证明当\(n\midk\)时,\(\omega_n^{ki}=1\)。所以右边等于\(\frac{1}{n}......
  • 单位根反演学习笔记
    单位根反演\[[n|a]=\dfrac{1}{n}\sum\limits_{k=0}^{n-1}w^{ak}_{n}\]证明:当\(i\not\equiv0\pmodn\)时,由等比数列求和公式可得:原式\(=\dfrac{1}{n}\times\dfrac{w^{an}_n-1}{w^a_{n}-1}\),而右边分子为0,分母不为0,因此和为0。当\(i\equiv0\pmodn\)时,有原式\(=\dfrac{1}{n}......
  • 【.NET】聊聊 IChangeToken 接口
    由于两个月的奋战,导致很久没更新了。就是上回老周说的那个产线和机械手搬货的项目,好不容易等到工厂放假了,我就偷偷乐了。当然也过年了,老周先给大伙伴们拜年了,P话不多讲,就祝大家身体健康、生活愉快。其实生活和健康是密不可分的,想活得好,就得健康。包括身体健康、思想健康、心理健康......
  • 2024 年,我想和这个世界聊聊
    这些主要记录一些过去的趣事和我干过的一些傻逼事件,外人当玩笑看就好。我主要就是写给自己看的。因为是写给自己的,大家就不要要求语法和华丽的词藻了。我在家人看春晚的时候写的,全家人都在看春晚我窝在房间写文章,确实有一些异样的体验。转眼间,他妈就2024年了。这篇文章其实......
  • P4721 【模板】分治 FFT
    最具经济性的写法:\(\mathcalO(n^2)\)暴力拿下\(80\)分,遂跑路。一题多解了,分两部分:分治和多项式求逆。分治考虑cdq分治,每次把\(f_{l\dotsmid}\)和\(g_{1\dotsn-1}\)卷起来,贡献直接加到\(f_{mid+1\dotsr}\)里,要注意一下顺序,先递归左区间,再算当前区间,最......
  • 聊聊在不确定环境下的个人成长
    调整心态去年疫情放开后,本想着今年大干一场,做好的经济腾飞的准备,出乎意料的是,没想到今年行情这么的差,尤其对于未来的市场经济大家也是没有什么信心,目前很多企业发展不如预期,许多人感到沮丧,我认为与其有情绪倒不如面对现实,接受环境的变化,调整好心态适应变化。不要再用过去经济增长......
  • 聊聊BUG的根因分析
    这篇文章的灵感,来自前几天技术交流群讨论的内容,也是广大测试同学日常接触最多但也最容易忽视的一点:bug根因分析。bug嘛,一说起来大家都熟,毕竟测试这个岗位,最初的时候,被称为“捉虫者”。软件测试岗位工作的日常,就是执行用例验证开发交付的软件系统是否达标,存在哪些bug,然后提单子并......
  • 换个角度聊聊「Web3+AI」:这个未来需要多久才来?
    撰文:Babywhale,TechubNews 文章来源TechubNews作者,搜TehubNews下载查看更多Web3资讯。2023年至今,笔者一直在关注欧科云链研究院有关于AI和Web3相关的研究报告,想了解这个过去的「知识盲区」有怎样的发展。去年年底到2024年初,在研究了欧科云链研究院与澎湃共同发表的Web3......
  • 面试官:你能简单聊聊MyBatis执行流程
    本文分享自华为云社区《面试必问|聊聊MyBatis执行流程?》,作者:冰河。MyBatis源码解析大家应该都知道Mybatis源码也是对Jbdc的再一次封装,不管怎么进行包装,还是会有获取链接、preparedStatement、封装参数、执行这些步骤的。配置解析过程Stringresource="mybatis-config.x......