-ffast-math
tidak lebih dari sekedar melanggar kepatuhan IEEE yang ketat.
Pertama-tama, tentu saja, itu benar- benar melanggar kepatuhan IEEE, memungkinkan misalnya penataan ulang instruksi untuk sesuatu yang secara matematis sama (idealnya) tetapi tidak persis sama di floating point.
Kedua, ini menonaktifkan pengaturanerrno
setelah fungsi matematika instruksi tunggal, yang berarti menghindari penulisan ke variabel thread-lokal (ini dapat membuat perbedaan 100% untuk fungsi-fungsi pada beberapa arsitektur).
Ketiga, itu membuat asumsi bahwa semua matematika terbatas , yang berarti bahwa tidak ada pemeriksaan untuk NaN (atau nol) dibuat di tempat di mana mereka akan memiliki efek yang merugikan. Secara sederhana diasumsikan bahwa ini tidak akan terjadi.
Keempat, ini memungkinkan pendekatan timbal balik untuk pembagian dan akar kuadrat resiprokal.
Lebih jauh lagi, ia menonaktifkan ditandatangani nol (kode menganggap nol ditandatangani tidak ada, bahkan jika target mendukungnya) dan pembulatan matematika, yang memungkinkan antara lain lipat konstan pada waktu kompilasi.
Terakhir, ini menghasilkan kode yang mengasumsikan bahwa tidak ada gangguan hardware yang dapat terjadi karena pensinyalan / penjebakan matematika (yaitu, jika ini tidak dapat dinonaktifkan pada arsitektur target dan akibatnya terjadi , mereka tidak akan ditangani).