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) |