用6678想进行优化,打算自己写一个矢量的复数矩阵点乘,一般情况下,复数的第一位放的是实部后面是虚部,但是我在使用内联函数的时候
C_128 = _cmpysp(x0_im_re, y0_im_re);
c = _daddsp(_hid128(C_128), _lod128(C_128));
a3= _complex_mpysp(x0_im_re, y0_im_re);
乘的结果是它把第一位当成是虚部,后面是实部,算出的结果就变成虚部和实部的位置相反,比如a=1+2*I,b=2+5*I,内存显示的结果是9,-8
请问TI员工,如果想正常使用的话怎么办,自带的库中有涉及到复数运算的好像都是这样。
Andy Yin1:
都是把32bit 寄存器的高位当实部,低位当虚部,运算结果也是实部在寄存器高位,虚部在寄存器低位,具体存储在memory的高低顺序取决于大小端,如果是大端,则实部存在低地址,虚部在高地址,小端则相反。