Czy można włączać/wyłączać opcję -ffast-matath w czasie wykonywania? Na przykład, tworzenie klas FastMath i AccurateMath ze wspólną matematyczną klasą podstawową, aby można było używać obu implementacji w czasie wykonywania? To samo dotyczy flashowania podnormałów do zera, itp.Dynamic -ffast-matath
W szczególności nie wiem, czy kompilacja z opcją -ffast-math wyemitowałaby instrukcję, która po uruchomieniu wpłynęłaby na wszystkie obliczenia numeryczne w wątku (na przykład ustawienie flaga do opróżniania podnormałów do zera).
Należy skompilować dwie wersje, jedną z optymalizacją i jedną bez. Następnie połącz je i wybierz, które wywoływać w czasie wykonywania. – Mysticial
To niefortunne, że http://stackoverflow.com/questions/7420665/what-does-gccs-ffast-math-actually-daje tylko jeden przykład, ale efekt '-ffast-matath' jest w większości (w całości?) wybory w czasie kompilacji, takie jak kompilowanie '/ 10' jako' * 0.1' lub "upraszczanie" 'a + bab' na' 0' (nie jest to zero dla obliczeń IEEE 754). Dlatego, jak mówi Mysticial, nie ma sposobu, aby włączyć i wyłączyć flagę w czasie wykonywania: musisz skompilować dwie wersje, jeśli tego naprawdę chcesz. –
@Mysticial dokonaj komentarza w odpowiedzi - to jedyna wiadomość ... – ldrumm