std::fma
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header <cmath>
   | 
||
|   float       fma( float x, float y, float z );  | 
(1) | (since C++11) | 
|   double      fma( double x, double y, double z );  | 
(2) | (since C++11) | 
|   long double fma( long double x, long double y, long double z );  | 
(3) | (since C++11) | 
|   Promoted    fma( Arithmetic x, Arithmetic y, Arithmetic z );  | 
(4) | (since C++11) | 
|   #define FP_FAST_FMA  /* implementation-defined */  | 
(5) | (since C++11) | 
|   #define FP_FAST_FMAF /* implementation-defined */  | 
(6) | (since C++11) | 
|   #define FP_FAST_FMAL /* implementation-defined */  | 
(7) | (since C++11) | 
The fma functions compute (x*y) + z, rounded as one ternary operation, according to the rounding mode characterized by the value of FLT_ROUNDS.
4) If any argument has integral type, it is cast to double. If any other argument is long double, then the return type is long double, otherwise it is double.
5-7) If the macro constants FP_FAST_FMAF, FP_FAST_FMA, or FP_FAST_FMAL are defined, the function std::fma evaluates faster than the expression x*y+z for float, double, and long double arguments, respectively. If defined, these macros evaluate to integer 1.
[edit] Parameters
| x, y, z | - | floating point values | 
[edit] Return value
(x*y) + z, rounded as one ternary operation
[edit] See also
|    (C++11)  | 
   signed remainder of the division operation   (function)  | 
|    (C++11)  | 
   signed remainder as well as the three last bits of the division operation   (function)  |