matlab - CORDIC算法中的初始点
问题描述
我试图减少使用 CORDIC 算法计算乘法所需的迭代次数,因为我在连续函数中使用该算法来计算平方函数。这是假设的算法-1<x<1'
function z=square(x)
y=x;
z=0;
for i=1:15
if (x > 0)
x = x - 2^(-i);
z = z + y*2^(-i);
else
x = x + 2^(-i);
z = z - y*2^(-i);
end
end
return
end
我已经知道乘法结果的接近值(来自上一个结果(调用它pr
))和值x
(x 的值是连续的)。无论如何它有助于减少迭代次数吗?
解决方案
如果您将同一个常数乘以两次,例如a.x
and a.x'
,那么您可以将 delta 相乘并相加a.(x' - x)
,后者的有效数字较少。
如果两个因素都不同,您仍然可以使用
x'.y' = (x'- x).(y' - y) + x.(y' - y) + (x' - x).y + x.y
也许第一项可以忽略不计。
对于一个正方形,
x'² = (x'- x)² + 2.x.(x' - x) + x²
推荐阅读
- c++ - C ++程序从main开始执行并在main结束?
- python - 这个正则表达式中我的命名组有什么问题
- python - python类对象属性
- python - 如何使用原始数据框创建电影 X 类型的数据框?
- bash - BASH:替代 cd 或在他所在的目录中执行脚本
- java - sling servlet 上的发布请求不适用于发布实例
- javascript - 如何使用 Jointjs 绘制 uml 自关联
- spring - Bean 属性“listpoints”不可写或设置方法无效
- javascript - JavaScript 中“工厂设计模式”的性能优化
- graphql - 在另一个查询中重用 GraphQL 查询而不重复