Функция fma () принимает три аргумента x, y и z и возвращает x * y + z без потери точности.
Эта функция определена в заголовочном файле.
прототип fma () (в соответствии со стандартом C ++ 11)
двойной fma (двойной x, двойной y, двойной z); float fma (float x, float y, float z); длинный двойной фма (длинный двойной x, длинный двойной y, длинный двойной z); Повышенный fma (Type1 x, Type2 y, Type z); // Для комбинаций арифметических типов
Начиная с C ++ 11, если какой-либо аргумент, переданный в fma (), имеет значение long double
, возвращаемый тип Promoted равен long double
. Если нет, то тип возвращаемого значения Promoted - double
.
(Математика) x * y + z = fma (x, y, z) (Программирование на C ++)
fma () Параметры
Fma () принимает три аргумента.
- x - первый аргумент для умножения.
- y - второй аргумент, который нужно умножить на x.
- z - третий аргумент, добавляемый к произведению x и y.
fma () Возвращаемое значение
Функция fma () возвращает значение, x*y+z
как если бы оно было вычислено с бесконечной точностью и округлено один раз, чтобы соответствовать типу результата.
Пример: как работает fma ()?
#include using namespace std; int main() ( double x = 2.0, y = 3.1, z = 3.0, result; result = fma(x, y, z); cout << "fma(x, y, z) = " << result << endl; long double xLD = 3.4, resultLD; resultLD = fma(xLD, y, z); cout << "fma(xLD, y, z) = " << resultLD << endl; return 0; )
Когда вы запустите программу, вывод будет:
fma (x, y, z) = 9,2 fma (xLD, y, z) = 13,54