Предположим a
, b
, c
и d
объявлены double
(или float
). Всегда ли следующие выражения?
! ( (a >= b) && (c <= d) ) || ( (a-c) >= (b-d) )
! ( (a > b) && (c <= d) ) || ( (a-c) > (b-d) )
! ( (a >= b) && (c < d) ) || ( (a-c) > (b-d) )
Есть ли какая-либо гарантия от IEEE 754 или текущего стандарта C или С++? И будет ли любой компилятор оптимизировать это как просто true во время компиляции? Меня интересуют в основном обычные значения, не столько в субнормальных или специальных значениях.
Мне кажется, что это должно зависеть от ошибок округления при вычитании в основном.