32-Bit IEEE 754 Float API
exponent_t vect_f32_max_exponent()
从IEEE754浮点数向量中获取最大(32位BFP)指数。
此函数用于确定将IEEE754单精度浮点数向量转换为32位BFP向量时要使用的BFP指数。
如果将返回的指数与 vect_f32_to_vect_s32() 一起使用,则它将导致BFP向量中没有头空间 - 也就是说,BFP向量的最小允许指数。最小允许指数是根据浮点元素中找到的最大指数来确定的。
具体而言,对每个元素使用 FSEXP 指令来确定其指数。返回的值是 FSEXP 指令给出的最大指数加上 30。
b[] 必须从双字对齐的地址开始。
注意: 如果需要,在转换为32位BFP向量时,可以通过将所需头空间的数量添加到此函数返回的指数上来包含额外的头空间。
参数:
-
const float b[]– [in] 输入的IEEE754单精度浮点数向量 -
const unsigned length– [in] 向量 中的元素数量
返回值:
用于转换为32位BFP向量的指数。
参见:
vect_f32_to_vect_s32,vect_s32_to_vect_f32
异常:
-
ET_LOAD_STORE如果b不是双字对齐的,则引发异常(参见 笔记:向量对齐) -
ET_ARITHMETIC如果b的任何元素是无穷大或非数字,则引发异常。
参考性能:

void vect_f32_to_vect_s32()
将IEEE754单精度浮点数向量转换为32位BFP向量。
该函数将IEEE754单精度浮点数向量 转换为32位BFP向量的尾数向量 ,给定BFP向量的指数 。从概念上讲,输出向量 的元素表示与输入向量相同的值。
由于输出指数 被所有输出向量的元素共享,即使输出向量具有32位的尾数,如果输入元素 的指数跨越较大范围,某些元素可能会丢失精度。
可以使用函数 vect_f32_max_exponent() 来确定最小化输出向量头空间的 的值。
操作:
对于 ,
参数:
int32_t a[]– [out] 表示32位输出尾数向量 ,必须从双字对齐的地址开始。const float b[]– [in] 表示IEEE754浮点数输入向量 ,必须从双字对齐的地址开始,可以在原地安全地更新。const unsigned length– [in] 向量中的元素数量。const exponent_t a_exp– [in] 与输出向量 相关联的指数
参见:
vect_f32_max_exponent,vect_s32_to_vect_f32
异常:
-
ET_LOAD_STORE如果a或b不是双字对齐的,则引发异常(参见 笔记:向量对齐) -
ET_ARITHMETIC如果b的任何元素是无穷大或非数字,则引发异常。
参考性能:

float vect_f32_dot()
计算两个IEEE754单精度浮点数向量的内积。
该函数接受两个IEEE754单精度浮点数向量,并计算它们的内积,即逐元素乘积的总和。使用FMACC指令进行计算,以获得完全精度的加法。
返回内积 。
操作:
参数:
const float b[]– [in] 输入向量const float c[]– [in] 输入向量const unsigned length– [in] 向量 和 中的元素数量
返回值: 内积
参考性能:

void vect_f32_add()
将两个IEEE754单精度浮点数向量相加。
该函数接受两个IEEE754单精度浮点数向量,并计算两个向量的逐元素和。
a[] 是输出向量 ,结果将存放在其中。
b[] 和 c[] 分别是输入 向量 和 。
a、b 和 c 必须从双字对齐的地址开始。
该操作可以在 b[] 或 c[] 上安全地原地执行。
操作:
参数:
float a[]– [out] 输出向量const float b[]– [in] 输入向量const float c[]– [in] 输入向量const unsigned length– [in] 向量 、 和 中的元素数量
异常:
如果 a、b 或 c 不是双字对齐的,则引发 ET_LOAD_STORE 异常(参见 笔记:向量对齐)
参考性能:

void vect_complex_f32_add()
将两个复数的IEEE754单精度浮点数向量相加。
该函数接受两个复数的IEEE754单精度浮点数向量,并计算两个向量的逐元素和。
a[] 是输出向量 ,结果将存放在其中。
b[] 和 c[] 分别是复数输入向量 和 。
a、b 和 c 必须从双字对齐的地址开始。
该操作可以在 b[] 或 c[] 上安全地原地执行。
操作:
参数:
complex_float_t a[]– [out] 输出向量const complex_float_t b[]– [in] 输入向量const complex_float_t c[]– [in] 输入向量const unsigned length– [in] 向量 、 和 中的元素数量
异常:
如果 a、b 或 c 不是双字对齐的,则引发 ET_LOAD_STORE 异常(参见 笔记:向量对齐)
参考性能:

void vect_complex_f32_mul()
将两个复数的IEEE754单精度浮点数向量相乘。
该函数接受两个复数的浮点向量 和 作为输入。每个输出元素 的计算结果为 乘以 (使用复数乘法)。
a[] 是输出向量 ,结果将存放在其中。
b[] 和 c[] 分别是复数输入向量 和 。
a、b 和 c 必须从双字对齐的地址开始。
该操作可以在 b[] 或 c[] 上安全地原地执行。
操作:
参数:
complex_float_t a[]– [out] 输出向量const complex_float_t b[]– [in] 输入向量const complex_float_t c[]– [in] 输入向量const unsigned length– [in] 向量 、 和 中的元素数量
异常:
如果 a、b 或 c 不是双字对齐的,则引发 ET_LOAD_STORE 异常(参见 笔记:向量对齐)
参考性能:

void vect_complex_f32_conj_mul()
将两个复数型 IEEE754 浮点向量进行共轭相乘。
此函数接受两个复数浮点向量 和 作为输入。每个输出元素 计算为 乘以 的共轭(使用复数乘法)。
a[] 是输出向量 ,用于存放结果。
b[] 和 c[] 是复数输入向量 和 。
a、b 和 c 必须从双字对齐的地址开始。
此操作可以在 b[] 或 c[] 上安全地原地执行。
操作:
参数:
-
complex_float_t a[]– [out] 输出向量 -
const complex_float_t b[]– [in] 输入向量 -
const complex_float_t c[]– [in] 输入向量 -
const unsigned length– [in] 向量 、 和 中的元素数量
异常:
ET_LOAD_STORE如果a、b或c不是双字对齐的,则引发异常(参见 笔记:向量对齐)
参考性能:

void vect_complex_f32_macc()
将两个复数型 IEEE754 浮点向量的乘积加到第三个浮点向量中。
此函数接受三个复数浮点向量 、 和 作为输入。每个输出元素 计算为输入 加上 乘以 。
a[] 是累加器向量 ,同时用作输入和输出。
b[] 和 c[] 是复数输入向量 和 。
a、b 和 c 必须从双字对齐的地址开始。
操作:
参数:
-
complex_float_t a[]– [inout] 输入/输出累加器向量 -
const complex_float_t b[]– [in] 输入向量 -
const complex_float_t c[]– [in] 输入向量 -
const unsigned length– [in] 向量 、 和 中的元素数量
异常:
ET_LOAD_STORE如果a、b或c不是双字对齐的,则引发异常(参见 笔记:向量对齐)
参考性能:

void vect_complex_f32_conj_macc()
将两个复数型 IEEE754 浮点向量的乘积加到第三个浮点向量中。
此函数接受三个复数浮点向量 、 和 作为输入。每个输出元素 计算为输入 加上 乘以 的共轭。
a[] 是累加器向量 ,同时用作输入和输出。
b[] 和 c[] 是复数输入向量 和 。
a、b 和 c 必须从双字对齐的地址开始。
操作:
参数:
-
complex_float_t a[]– [inout] 输入/输出累加器向量 -
const complex_float_t b[]– [in] 输入向量 -
const complex_float_t c[]– [in] 输入向量 -
const unsigned length– [in] 向量 、 和 中的元素数量
异常:
ET_LOAD_STORE如果a、b或c不是双字对齐的,则引发异常(参见 笔记:向量对齐)
参考性能:
