求浮点函数int_to_qty的精确逆函数实现方案
实现逆函数
qty_to_int的需求说明 背景
已知C语言函数int_to_qty的标准实现对应x86汇编,其功能逻辑为:将无符号整数转换为32位浮点数,依次执行乘以常量、加上另一个常量操作后得到最终结果。
实现要求
需编写逆函数unsigned qty_to_int(float qty),满足以下全量测试条件:
对所有满足0≤i<2^24的无符号整数i,必须保证int_to_qty(qty_to_int(int_to_qty(i))) == int_to_qty(i)。
关键注意点
- 在
4≤int_to_qty(x)<8的区间内,原函数转换结果的差异主要为1ulp(浮点数最小精度单位),这部分是实现的核心难点。 - 在
8≤int_to_qty(x)<8.5的区间内,原函数不具备单射特性,逆函数返回该区间内任意对应的整数即可。
内容的提问来源于stack exchange,提问作者D0SBoots
相关产品推荐
相关产品推荐

