首页 > 解决方案 > 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 的值是连续的)。无论如何它有助于减少迭代次数吗?

标签: matlabmathnumerical-methodscordicelementary-functions

解决方案


如果您将同一个常数乘以两次,例如a.xand 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²

推荐阅读