Scalar IEEE 754 Float API
void f32_unpack()
将IEEE 754单精度浮点数解包为32位尾数和指数。
示例:
// 解包 1.52345246 * 10^(-5)
float val = 1.52345246e-5;
int32_t mant;
exponent_t exp;
f32_unpack(&mant, &exp, val);
printf("%ld * 2^(%d) <-- %e\n", mant, exp, val);
参数:
int32_t *mantissa– [out] 解包后的尾数exponent_t *exp– [out] 解包后的指数const float input– [in] 要解包的浮点数值
void f32_unpack_s16()
将IEEE 754单精度浮点数解包为16位尾数和指数。请注意,此操作可能导致精度损失。
示例:
// 解包 1.52345246 * 10^(-5)
float val = 1.52345246e-5;
int16_t mant;
exponent_t exp;
f32_unpack_s16(&mant, &exp, val);
printf("%ld * 2^(%d) <-- %e\n", mant, exp, val);
参数:
int16_t *mantissa– [out] 解包后的尾数exponent_t *exp– [out] 解包后的指数const float input– [in] 要解包的浮点数值
float_s32_t f32_to_float_s32()
将IEEE754的float转换为float_s32_t。
参数:
const float x– [in] 输入值
返回值:
float_s32_t表示x
异常:
ET_ARITHMETIC如果x是无穷大或NaN,则引发异常
float_s32_t f64_to_float_s32()
将IEEE754的double转换为float_s32_t。请注意,此操作可能导致精度损失。
参数:
const double x– [in] 输入值
返回值:
float_s32_t表示x
异常:
ET_ARITHMETIC如果x是无穷大或NaN,则引发异常
float f32_sin()
获取指定角度的正弦值。使用截断为8项的的幂级数展开计算。
参数:
const float theta– [in] 要计算正弦值的角度(以弧度为单位)
返回值:
- 角度的正弦值
异常:
ET_ARITHMETIC如果是无穷大或NaN,则引发异常
float f32_cos()
获取指定角度的余弦值。使用截断为8项的的幂级数展开计算。
参数:
const float theta– [in] 要计算余弦值的角度(以弧度为单位)
返回值:
- 角度的余弦值
异常:
ET_ARITHMETIC如果是无穷大或NaN,则引发异常
float f32_log2()
获取指定值的以2为底的对数。此函数使用截断为11项的的幂级数展开计算。
参数:
const float x– [in] 要获取对数的输入值。
返回值:
异常:
ET_ARITHMETIC如果是无穷大或NaN,则引发异常
float f32_power_series()
使用指定的系数计算幂级数求和。此函数用于计算幂级数的前项之和,从项开始截断。
b是一个包含系数的元素向量,它与相应的的幂相乘。
是的长度,也是要求和的项数。
计算过程:
参数:
const float x– [in] 输入值。const float b[]– [in] 系数向量。const unsigned N– [in] 要求和的幂级数项数。
返回值:
- ,前项幂级数的和。
异常:
ET_ARITHMETIC如果或的任何元素是无穷大或NaN,则引发异常。
float f32_normA()
将输入以规范化形式A表示。
此函数在内部用于将float值转换为某些特定目的所需的表示形式。
特别地,此函数的行为类似于frexpf(),其中保证返回值要么为,要么满足