Namespaces
Variants
Views
Actions

std::fma

From cppreference.com
 
 
 
Common mathematical functions
Functions
Basic operations
remainder(C++11)
remquo(C++11)
fma(C++11)
fmax(C++11)
fmin(C++11)
fdim(C++11)
nan
nanf
nanl
(C++11)
(C++11)
(C++11)
Exponential functions
exp
exp2(C++11)
expm1(C++11)
log
log10
log1p(C++11)
log2(C++11)
Power functions
sqrt
cbrt(C++11)
hypot(C++11)
pow
Trigonometric and hyperbolic functions
sinh
cosh
tanh
asinh(C++11)
acosh(C++11)
atanh(C++11)
Error and gamma functions
erf(C++11)
erfc(C++11)
lgamma(C++11)
tgamma(C++11)
Nearest integer floating point operations
ceil
floor
round
lround
llround
(C++11)
(C++11)
(C++11)
trunc(C++11)
nearbyint(C++11)
rint
lrint
llrint
(C++11)
(C++11)
(C++11)
Floating point manipulation functions
ldexp
scalbn
scalbln
(C++11)
(C++11)
ilogb(C++11)
logb(C++11)
frexp
modf
nextafter
nexttoward
(C++11)
(C++11)
copysign(C++11)
Classification
fpclassify(C++11)
isfinite(C++11)
isinf(C++11)
isnan(C++11)
isnormal(C++11)
signbit(C++11)
Macro constants
FP_NORMAL
FP_SUBNORMAL
FP_ZERO
FP_INFINITE
FP_NAN
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
FLT_EVAL_METHOD(C++11)
 
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) [edit]
(C++11)
signed remainder as well as the three last bits of the division operation
(function) [edit]