Отвечая на вопрос, где я предложил -ffast-math
, в комментарии указывалось, что это опасно.
Мое личное чувство заключается в том, что за пределами научных расчетов все в порядке. Я также полагаю, что серьезные финансовые приложения используют неподвижную точку вместо плавающей точки.
Конечно, если вы хотите использовать его в своем проекте, окончательный ответ - проверить его в своем проекте и посмотреть, насколько он влияет на него. Но я думаю, что общий ответ могут дать люди, которые пытались и имеют опыт такой оптимизации:
Может ли ffast-math
безопасно использоваться в обычном проекте?
Учитывая, что плавающая точка IEEE 754 имеет ошибки округления, предполагается, что вы уже живете с неточными вычислениями.
Этот ответ был особенно озадачен тем фактом, что -ffast-math
выполняет гораздо больше, чем операции переупорядочения, что приведет к немного другому результату (не проверяет NaN или ноль, отключает нулевой знак, чтобы назвать несколько), но я не вижу, какие из них в конечном итоге будут в реальном коде.
Я попытался придумать типичное использование плавающих точек, и именно это я придумал:
- GUI (2D, 3D, физический движок, анимация)
- автоматизация (например, автомобильная электроника)
- робототехника
- промышленные измерения (например, напряжение)
и школьные проекты, но здесь это не имеет особого значения.