我正在努力解决如何在不同精度的定点数上实现算术.我读过R. Yates的论文,但我还是输了.在下文中,我使用Yates的符号,其中A(n,m)指定带有n整数位,m小数位和n + m + 1位的整数的带符号定点格式.
简短的问题:究竟是怎样一个A(a,b)*A(c,d)并A(a,b)+A(c,d)进行时a!=c和b=! d?
长问题:在我的FFT算法中,我生成一个随机信号,其值在-10V和10V之间,有符号输入(in),它被缩放到A(15,16),并且旋转因子(tw)被缩放到A(2,29).两者都存储为ints.像这样的东西:
float temp = (((float)rand() / (float)(RAND_MAX)) * (MAX_SIG - MIN_SIG)) + MIN_SIG;
int in_seq[i][j] = (int)(roundf(temp *(1 << numFracBits)));
Run Code Online (Sandbox Code Playgroud)
同样适用于旋转因素.
现在我需要表演
res = a*tw
问题:
a)我该如何实现?
b)大小应该res是64位吗?
c)我可以制作'res'A(17,14)因为我知道范围a和tw?如果是的话,我应该a*tw按2 ^ 14缩放以存储正确的值 …