The
fma()
function takes three arguments x, y and z, and returnsx*y+z
without losing precision. It is defined in <cmath> header file.
Syntax
fma(double x, double y, double z)
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.
Return value
Returns x*y+z
as if calculated to infinite precision and rounded once to fit the result type.
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);
Example : C++ fma()
#include <stdio.h> #include <math.h> int main () { double x,y,z,result; x = 11.0, y = 22.0, z = 33.0; #ifdef FP_FAST_FMA result = fma(x,y,z); #else result = x*y+z; #endif printf ("11.0 * 22.0 + 33.0 = %f\n", result); return 0; }
Output
11.0 * 22.0 + 33.0 = 275.000000