CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
平方和

函数

void csky_power_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
 浮点数组中所有元素的平方和 更多...
 
void csky_power_int32 (int32 *pSrc, uint32_t blockSize, q63_t *pResult)
 32位整数所有元素的平方之和 更多...
 
void csky_power_q15 (q15_t *pSrc, uint32_t blockSize, q63_t *pResult)
 Q15数组中所有元素的平方和 更多...
 
void csky_power_q31 (q31_t *pSrc, uint32_t blockSize, q63_t *pResult)
 Q31数组中所有元素的平方和 更多...
 
void csky_power_q7 (q7_t *pSrc, uint32_t blockSize, q31_t *pResult)
 Q7数组中所有元素的平方和 更多...
 

简要说明

计算输入数组中元素的平方和. 算法如下:

        Result = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + pSrc[2] * pSrc[2] + ... + pSrc[blockSize-1] * pSrc[blockSize-1];

为浮点,Q31,Q15,Q7分别提供了不同的函数。

函数说明

void csky_power_f32 ( float32_t pSrc,
uint32_t  blockSize,
float32_t pResult 
)
参数
[in]*pSrc指向输入数组
[in]blockSize输入数组的长度
[out]*pResult返回的平方和结果
返回
none.
void csky_power_int32 ( int32 *  pSrc,
uint32_t  blockSize,
q63_t pResult 
)
参数
[in]*pSrc指向输入向量
[in]blockSize输入向量的长度
[out]*pResult输出返回值
返回
none.

缩放和溢出时的行为:

这个函数的输入为32位整数,元素平法后扩展为64位整数,相加使用了 64位累加器。相加结果会被饱和,最后的结果会在[0x0, 0x7fffffffffffffff] 之间。因此,在使用时,需要注意溢出。
void csky_power_q15 ( q15_t pSrc,
uint32_t  blockSize,
q63_t pResult 
)
参数
[in]*pSrc指向输入数组
[in]blockSize输入数组的长度
[out]*pResult返回的平方和结果
返回
none.

缩放和溢出行为:

函数实现使用了一个内部64位累加器。 输入数据表示为1.15格式。 中间乘法生成2.30格式的结果,结果在34.30格式的64位累加器累加。 因为有33位保护位,所以不会有溢出的风险。同时还可以保存所有的中间乘法结果的精度。 最后,返回结果是 34.30 格式.
void csky_power_q31 ( q31_t pSrc,
uint32_t  blockSize,
q63_t pResult 
)
参数
[in]*pSrc指向输入数组
[in]blockSize输入数组的长度
[out]*pResult返回的平方和结果
返回
none.

缩放和溢出行为:

函数实现使用了一个内部64位累加器。 输入数据表示为1.31格式。 中间乘法生成2.62格式,然后截断为2.48格式的结果,结果在16.48格式的64位累加器累加。 因为有15位保护位,所以不会有溢出的风险。同时还可以保存所有的中间乘法结果的精度. 最后,返回结果是 16.48 格式.
void csky_power_q7 ( q7_t pSrc,
uint32_t  blockSize,
q31_t pResult 
)
参数
[in]*pSrc指向输入数组
[in]blockSize输入数组的长度
[out]*pResult返回的平方和结果
返回
none.

缩放和溢出行为:

函数实现使用了一个内部32位累加器。 输入数据表示为1.7格式。 中间乘法生成2.14格式的结果,结果在18.14格式的64位累加器累加。 因为有17位保护位,所以不会有溢出的风险。同时还可以保存所有的中间乘法结果的精度 最后,返回结果是 18.14 格式.