CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数

函数

q31_t csky_dsp_lib_vec_dot_q15 (q15_t *A, q15_t *B, uint32_t N)
 Q15 向量点积 更多...
 
q31_t csky_dsp_lib_vec_dot_q31 (q31_t *A, q31_t *B, uint32_t N)
 Q31 向量点积 更多...
 

简要说明

计算两个向量的点积,其计算过程如下:

for(i=0; i < N; i++)
{
    Result += (*(A+i)) * (*(B+i));
}

支持Q15和Q31两种数据格式。

函数说明

q31_t csky_dsp_lib_vec_dot_q15 ( q15_t A,
q15_t B,
uint32_t  N 
)
参数
[in]*A指向输入缓存a
[in]*B指向输入缓存b
[in]N向量中的元素数量
返回
点积结果

缩放和溢出时的行为:

函数在整个过程中使用了32位算法。当两个Q15的数据相乘后,会产生一个Q30的数。 这些Q30的数会用31位累加器进行累加。最后,结果会用带饱和的左移向左移动一位, 使最后的结果为Q31格式。因此,输出结果会在[0x80000000, 0x7FFFFFFF]之间。
注解
函数中使用了32位累加器,因而只有一位可以用作保护位,在使用的时候需要防止溢出。
q31_t csky_dsp_lib_vec_dot_q31 ( q31_t A,
q31_t B,
uint32_t  N 
)
参数
[in]*A指向输入缓存a
[in]*B指向输入缓存b
[in]N向量中的元素数量
返回
点积结果

缩放和溢出时的行为:

函数在整个过程中使用了64位算法。当两个Q31的数据相乘后,会产生一个Q62的数。 这些Q62的数会用64位累加器进行累加。最后,结果会用带饱和的右移移向右移动31位, 使最后的结果为Q31格式。因此,输出结果会在[0x80000000, 0x7FFFFFFF]之间。
注解
函数中使用了64位累加器,因而只有一位可以用作保护位,在使用的时候需要防止溢出。