这是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,我已经检查了它的工作范围。顺便问一下,有扩展范围算法吗?如何进行范围扩展?
发布于 2016-08-30 06:54:49
看起来您从本论文获得了这个函数(没有属性!)。代码中充满了明显的排字,但是如果您阅读下面这段函数,它会说:
这个计算假设x和y都是小数范围从-1到1。只要允许小数点浮动,该算法对其他范围是有效的。通过一些扩展,该算法可以很好地处理浮点数据。
带回家的信息:对于您计划使用的任何代码,请始终阅读附带的文档,特别是当您不了解它是如何工作的时候。
https://stackoverflow.com/questions/39219258
复制相似问题