float my_frexpf(float x, int* y) {
if (x == 0.0f) {
*y = 0;
return 0.0f;
}
int ry = 0;
float abs_x = std::fabs(x);
if (0.5f <= abs_x && abs_x < 1.0f) {
*y = 0;
return x;
} else if (abs_x >= 1.0f) {
while (abs_x >= 1.0f) {
abs_x /= 2.0f;
++ry;
}
*y = ry;
return x / std::pow(2.0f, float(ry));
} else if (abs_x < 0.5f) {
while (abs_x < 0.5f) {
abs_x *= 2.0f;
--ry;
}
*y = ry;
return x * std::pow(2.0f, -float(ry));
}
return x; // Default return (should never reach here)
}
C/C++实现frexpf函数
最新推荐文章于 2024-07-19 19:11:19 发布