Есть ли опция компилятора GNU C, которая генерирует программы с плавающей запятой, которые работают быстрее, но менее точно, чем настройка по умолчанию?

0

Я искал вариант GNU C, чтобы мои программы с плавающей запятой могли быть сгенерированы для кода, который работает быстрее, хотя и менее точен, чем код, созданный настройкой gnu по умолчанию.

Скажем, у меня есть программа my_fp_prog.c

double sqrt_two(return sqrt(2));

Хотя точный ответ должен быть 1.414...., мне нужен только ответ 1.4 или даже 1.5 или 1.3, это нормально для меня, но мне нужна более быстрая программа. Конечно, мы используем более дешевый алгоритм sqrt, но то, что я ищу, является вариантом компилятора, который выполняет эту работу. Надеюсь, такой вариант существует.

  • 1
    Как насчет жесткого кодирования квадратного корня из двух в константу? Поначалу я знаю, что это звучит дьявольски, но вскоре вы поймете, что только пожиратели пирогов с заварным кремом избегают магических констант.
  • 2
    gcc.gnu.org/wiki/FloatingPointMath
Показать ещё 7 комментариев
Теги:
floating-point
performance
precision

1 ответ

4
Лучший ответ

Из справочной страницы GCC:

-ffast-math

Устанавливает -fno-math-errno, -funsafe-math-Optimizations, -ffinite-math-Only -fno-rounding-math, -fno-rounding-math, -fno-signaling-nans и -fcx-limited-range.

Эта опция __FAST_MATH__ определить макрос препроцессора __FAST_MATH__.

Эта опция не -O какой-либо -O кроме -Ofast поскольку это может привести к некорректному выходу для программ, которые зависят от точной реализации правил/спецификаций IEEE или ISO для математических функций. Тем не менее, он может дать более быстрый код для программ, для которых не требуются гарантии этих спецификаций.

  • 3
    Хотя это на самом деле правильно, я сомневаюсь, что это поможет столько, сколько хочет ОП. Использование явных аппроксимаций, вероятно, будет работать лучше и не приводит к потенциальным ошибкам за пределами той местности, где вы хотите использовать быстрые аппроксимации.
  • 2
    @R .. ОП спрашивает, как сделать константу быстрее. Ничто не поможет им так много, как они хотят.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню