2012-04-13 11 views
5

Wszystkie informacje, które można znaleźć w dokumentacji i Internecie dla opcji -ffinite-math-only to "Zezwalaj na optymalizacje dla arytmetyki zmiennoprzecinkowej, które zakładają, że argumenty i wyniki nie są NaN lub + -Infs." Nie wydaje mi się, żeby to było. Czy ktokolwiek wie dokładnie, jakie są optymalizacje? DziękiJakie są optymalizacje ułatwione dzięki -ffinite-math-only?

+0

Być może 'x == x' zostanie zoptymalizowane na true. – Mysticial

+1

http://gcc.gnu.org/wiki/FloatingPointMath – janneb

Odpowiedz

8

Wiele małych rzeczy mogą być zoptymalizowane pod tym założeniem, jak:

  • x == x ->1
  • x * 1 ->x
  • x >= y ->!(x < y) i podobne.
  • x/x ->1, jeśli kompilator może udowodnić, że jest to x != 0.
  • może umożliwić kompilatorowi użycie instrukcji sprzętowych max/min dla wyrażeń takich jak x > y ? x : y.
  • ... dużo więcej

często zobaczyć to założenie wraz z założeniami jak „znak od zera nie ma znaczenia”, które następnie umożliwia rzeczy jak:

  • x - x ->0
  • 0/x ->0
  • x * 0 ->0