Мы знаем, что компиляторы все лучше и лучше оптимизируют наш код и заставляют его работать быстрее, но мой вопрос: существуют ли компиляторы, которые могут оптимизировать операции с плавающей запятой для обеспечения большей точности?
Например, основное правило состоит в том, чтобы выполнять умножение перед сложением, потому что умножение и деление с использованием чисел с плавающей запятой не вносит таких больших неточностей, как сложение и вычитание, но может увеличить величину неточностей, вносимых сложением и вычитанием, поэтому следует во многих случаях выполняться в первую очередь.
Итак, операция с плавающей запятой, например
y = x*(a + b); // faster but less accurate
Следует изменить на
y = x*a + x*b; // slower but more accurate
Существуют ли какие-либо компиляторы, которые оптимизируют для повышения точности с плавающей запятой за счет скорости, как я показал выше? Или главная забота о скорости компиляторов без учета точности операций с плавающей запятой?
Спасибо
Обновление: выбранный ответ показал очень хороший пример, когда этот тип оптимизации не будет работать, поэтому компилятор не сможет заранее узнать, как точнее оценить y. Спасибо за встречный пример.
y = x*(a + b)
иy = x*a + x*b
? - person Robert Harvey   schedule 14.01.2010