以下C语言函数来自fastapprox项目。
static inline float
fasterlog2 (float x)
{
union { float f; uint32_t i; } vx = { x };
float y = vx.i;
y *= 1.1920928955078125e-7f;
return y - 126.94269504f;
}
这里有没有专家可以解释一下为什么上述代码中使用的指数偏置是126.94269504而不是127?这个偏置值更精确吗?
float y = vx.i;
,提示 "可能会丢失数据"。 - Weather Vane