Close

## C++ fma()

Last Updated on Wednesday 5th Oct 2022

The `fma()` function takes three arguments x, y and z, and returns `x*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

```

```