Angenommen a
, b
, c
und d
sind double
erklärt (oder float
). Sind die folgenden Ausdrücke immer wahr?Sind Schwimmer Ungleichheiten garantiert konsistent sein
! ((a >= b) && (c <= d)) || ((a-c) >= (b-d))
! ((a > b) && (c <= d)) || ((a-c) > (b-d))
! ((a >= b) && (c < d)) || ((a-c) > (b-d))
Gibt es eine Garantie von dem IEEE 754 oder der aktuellen C oder Standard C++? Und wird jeder Compiler das zum Zeitpunkt der Kompilierung einfach als wahr optimieren? Ich interessiere mich hauptsächlich für normale Werte, nicht so sehr für subnormale oder spezielle Werte.
Scheint mir, dass dies hauptsächlich auf Abrundungsfehler während der Subtraktion abhängen sollte.
"wird jeder Compiler das zur Kompilierungszeit als einfach wahr optimieren" - warum versuchst du es nicht? –
@ 101010 "wenn' a! = B' ihre darstellenden Bits sind auch anders "- falsch. (+0 und -0, NaN, etc.) –
Kann der Compiler die Werte von a, b, c und d zur Kompilierzeit kennen? –