核心问题的倍增

multiply of cordic issue

这是 cordic 乘法函数 我在 运行 上网时得到了一个代码。 但这与预期的数据有很大不同。 如何修改才能使这段代码正确无误?

更新代码

 for (i=1; i=<8; i++)
 { 
  if (x > 0) {
   x = x - pow(2,-i);
   z = z + y*pow(2,-i);
   }
   else{
   x = x + pow(2,-i);
   z = z - y* pow(2,-i);
  }

如果我 运行 x=7, y=8 那么 z=7.000 而不是 56.

哪里错了?

更新2

我得到了正确的答案,但是谢谢,我已经检查了它的工作范围。顺便问一下,有扩展范围算法吗?如何进行范围扩展?

您似乎从 this paper 中获取了此功能(无署名!)。该代码充满了明显的拼写错误,但如果您阅读函数下方的段落,它会说:

This calculation assumes that both x and y are fractional ranging from -1 to 1. The algorithm is valid for other ranges as long as the decimal point is allowed to float. With a few extensions, this algorithm would work well with floating point data.

重要信息:请务必阅读随附的文档以了解您计划使用的任何代码,尤其是当您不了解其工作原理时。