繁琐的问题

时间:2016-08-30 05:19:27

标签: math 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。

错误点是什么?

UPDATE2

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

1 个答案:

答案 0 :(得分:1)

看起来你从this paper获取此功能(没有归属!)。代码中充满了明显的拼写错误,但如果您阅读下面的段落,则说明:

  

此计算假设 x和y的小数范围从-1到1 。只要允许小数点浮动,该算法对其他范围有效。通过一些扩展,该算法可以很好地处理浮点数据。

带回家留言:请务必阅读您计划使用的任何代码的随附文档,特别是如果您不了解它的工作原理。