iteration - 如何有效且不平凡地实现迭代 Karatsuba?
问题描述
对于迭代 Karatsuba 是否有任何有效的 C/C++ 实现或算法描述,不使用堆栈/队列来模拟递归 Karatsuba 中的函数堆栈?
假设 F x G = (F_1 + F_2 x^n) x (G_1 + G_2 x^n),其中 F 和 G 是 (2n-2) 次多项式。
我的直觉是记住当前两个操作数 F_i 和 G_i 的大小和索引。迭代 Karatsuba 从最小操作数的乘法开始。一旦索引为偶数,计算 ((F_1 + F_2) x (G_1 + G_2)),将其与 (F_1 x G_1) 和 (F_2 x G_2) 合并,“大小”加倍,“索引”减半。
问题是((F_1 + F_2)x(G_1 + G_2))的计算需要另一个(大小,索引)。我想直接将 (F_1 + F_2)/(G_1 + G_2)$ 附加到 F/G 数组的末尾。在那种情况下,计算完成后如何从旧的(大小,索引)中扣除新的(大小,索引)?
解决方案
推荐阅读
- python - 如何在不暴露我的源代码的情况下将 python 嵌入 c++
- javascript - javascript thymeleaf 触发一个 url
- c# - 通过多线程(任务)运行方法的有效方法
- cloudflare - 将名称服务器更改为 Cloudflare 后,phpmyadmin 显示空登录页面
- html - SVG 呈现为内联元素或内联块?
- javascript - 在 Ionic/Angular 中使用 ngIf 时,如何根据按钮的值更改按钮的颜色
- awk - 如何使用 awk 计算包含连续元音的单词?
- excel - VBA将点更改为逗号
- reactjs - TextInput 没有专注于“下一个”
- python - 如何在烧瓶中使用另一个函数的参数