因此,我知道,你一般不认为对两个平点数字进行比较。 但是,在William Kahan s 。 • 如何在Floating-Point 截肢中无端评估圆环 他展示了以下代码(假体编码,我相信):
Real Function T(Real z) :
T := exp(z) ; ... rounded, of course.
If (T = 1) Return( T ) ; ... when |z| is very tiny.
If (T = 0) Return( T := –1/z ) ; ... when exp(z) underflows.
Return( T := ( T – 1 )/log(T) ) ; ... in all other cases.
End T .
现在,我很有兴趣在C或C++中落实这一点,我有两个相关问题:
a) 如果我认为T是两倍,则比较(T = 1)或(T == (0) 0和1将转换成两倍,以保持多型表述所涉及的价值观的准确性?
b) 这是否仍算是比较了平等的两个浮动点数?