Компиляция с -msse2
на процессоре Intel / AMD, поддерживающем его, позволит вам почти у цели.Не позволяйте какой-либо библиотеке переводить FPU в режим FTZ / DNZ, и вы будете в основном настроены (несмотря на ошибки процессора).
Для других архитектур ответ будет другим.Те архитектуры, которые не предлагают какого-либо удобного способа получения точной семантики IEEE 754 (например, процессоры IA32 до SSE2), требуют использования библиотеки эмуляции с плавающей запятой для получения желаемого результата с очень высокой потерей производительности.
Если ваша целевая архитектура поддерживает инструкцию fmadd
(умножение и сложение без промежуточного округления), убедитесь, что ваш компилятор не использует ее, если у вас есть явные умножения и сложения в исходном коде.GCC не должен делать это, если вы не используете опцию -ffast-math.