GCC stwierdza, że -funsafe-math-optimizations
pozwala na optymalizacje, które "(a) zakładają, że argumenty i wyniki są prawidłowe i (b) mogą naruszać standardy IEEE lub ANSI", ale to nie jest zbyt dokładne, prawda?Jakie optymalizacje są uwzględnione w optymalizacjach -funsafe-matematycznych?
Co może być "nieważny" argument w tym przypadku? NaNs? Infinites? Podnormały? Liczby ujemne do sqrt()
?
Na ile wyniki mogą odbiegać od standardów IEEE lub ANSI? Czy jest to "po prostu" materiał taki jak operation associativity and ordering, czy może to np. prawdziwe porównania z NaN lub nieprawidłowe porównania z nieskończonymi? Czy zmienna przechowywana może zostać ponownie zaokrąglona po użyciu (tak, aby dla zmiennych można było ocenić 1)? Czy może przestać działać isinf()
/isnan()
?
Czy deweloperzy GCC postępują zgodnie z konkretnym systemem lub dyscypliną w odniesieniu do takich pytań, czy też odpowiedź może różnić się w różny sposób w zależności od wersji?
O ile mi wiadomo, nie zadzieraj z tym. Jednakże '-ffinite-math-only' i' -ffast-matath'. – harold