Я искал вариант GNU C, чтобы мои программы с плавающей запятой могли быть сгенерированы для кода, который работает быстрее, хотя и менее точен, чем код, созданный настройкой gnu по умолчанию.
Скажем, у меня есть программа my_fp_prog.c
double sqrt_two(return sqrt(2));
Хотя точный ответ должен быть 1.414...., мне нужен только ответ 1.4 или даже 1.5 или 1.3, это нормально для меня, но мне нужна более быстрая программа. Конечно, мы используем более дешевый алгоритм sqrt, но то, что я ищу, является вариантом компилятора, который выполняет эту работу. Надеюсь, такой вариант существует.
Из справочной страницы 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 для математических функций. Тем не менее, он может дать более быстрый код для программ, для которых не требуются гарантии этих спецификаций.