This function is defined in <cmath> header file.
fma() prototype [As of C++ 11 standard]
double fma(double x, double y, double z); float fma(float x, float y, float z); long double fma(long double x, long double y, long double z); Promoted fma(Type1 x, Type2 y, Type z); // For combinations of arithmetic types
Since C++11, if any argument passed to fma() is long double
, the return type Promoted is long double
. If not, the return type Promoted is double
.
[Mathematics] x*y+z = fma(x, y, z) [C++ Programming]
fma() Parameters
The fma() takes three arguments.
- x - The first argument to be multiplied.
- y - The second argument to be multiplied with x.
- z - The third argument to be added to the product of x and y.
fma() Return Value
The fma() function returns x*y+z
as if calculated to infinite precision and rounded once to fit the result type.
Example: How fma() works?
#include <cmath>
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;
}
When you run the program, the output will be:
fma(x, y, z) = 9.2 fma(xLD, y, z) = 13.54