核心问题的倍增
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.
重要信息:请务必阅读随附的文档以了解您计划使用的任何代码,尤其是当您不了解其工作原理时。
这是 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.
重要信息:请务必阅读随附的文档以了解您计划使用的任何代码,尤其是当您不了解其工作原理时。