【发布时间】:2015-01-12 10:15:13
【问题描述】:
我们知道点 X1 和 X2 有各自的点 Y1 和 Y2,所以我们可以计算任意 X 的 Y:
X - X1 Y - Y1
------- = -------
X2 - X1 Y2 - Y1
我们可以从中得到简单的公式(A):
Y = (X - X1) * (Y2 - Y1) / (X2 - X1) + Y1;
这在数学上应该是等价的 (B):
Y = (X - X1) / (X2 - X1) * (Y2 - Y1) + Y1;
对于整数数学公式 A,只要乘法 (X - X1) * (Y2 - Y1) 结果保持在类型范围内,A 的性能就会更好。公式 B 不起作用,因为如果 X1 <= X <= X2,那么除法将始终等于 0。
对于浮点,两者都应该工作,但我认为 B 会提供更好的准确性,因为乘法结果会保持较小。
我对浮点精度的假设是否正确?
是否有一些我没有考虑到的浮点怪癖?
假设 IEEE 754 浮点表示。
注意 1:我对浮点大小写感兴趣,整数数学非常简单。
注意2:FP公式上的变量可能有非整数值,但NaN和Infs不在问题范围内。
【问题讨论】:
-
请说明:您对具有浮点值还是仅整数值的点感兴趣?
标签: c floating-point interpolation