Согласно документации, в math.h
есть функция fma()
. Это очень хорошо, и я знаю, как работает FMA и для чего ее использовать. Однако я не уверен, как это реализуется на практике? Меня больше всего интересуют архитектуры x86
и x86_64
.
Есть ли инструкция с плавающей запятой (не векторная) для FMA, возможно, как определено в IEEE-754 2008?
Используется ли инструкция FMA3 или FMA4?
Есть ли что-то внутреннее, чтобы убедиться, что используется настоящая FMA, когда полагается на точность?
-mfma
или-mfma4
или-march=something
, гдеsomething
- это процессор, поддерживающий fma). В Linux вы можете посмотретьsysdeps/ieee754/dbl-64/s_fma.c
в glibc, чтобы получить представление о том, как выглядит резервная функция библиотеки. - person tmyklebu   schedule 20.02.2015