[#BloombergLP-bdldfp-DecimalImpUtil-fma-08] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdldfp.adoc[bdldfp]::xref:BloombergLP/bdldfp/DecimalImpUtil.adoc[DecimalImpUtil]::fma :relfileprefix: ../../../ :mrdocs: Return, using the specified `x`, `y`, and `z`, the value of the expression `x * y + z`, rounded as one ternary operation according to the current decimal floating point rounding mode. == Synopsis Declared in `<bdldfp_decimalimputil.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- static xref:BloombergLP/bdldfp/DecimalImpUtil/ValueType32.adoc[DecimalImpUtil::ValueType32] fma( xref:BloombergLP/bdldfp/DecimalImpUtil/ValueType32.adoc[ValueType32] x, xref:BloombergLP/bdldfp/DecimalImpUtil/ValueType32.adoc[ValueType32] y, xref:BloombergLP/bdldfp/DecimalImpUtil/ValueType32.adoc[ValueType32] z); ---- == Description Special value handling: * If `x` or `y` are quiet NaN, quiet NaN is returned. * If any argument is signaling NaN, quiet NaN is returned and the value of the macro `EDOM` is stored into `errno`. * If `x*y` is an exact infinity and `z` is infinity with the opposite sign, quiet NaN is returned and the value of the macro `EDOM` is stored into `errno`. * If `x` is zero and `y` is infinite or if `x` is infinite and `y` is zero, and `z` is not a NaN, then quiet NaN is returned and the value of the macro `EDOM` is stored into `errno`. * If `x` is zero and `y` is infinite or if `x` is infinite and `y` is zero, and `z` is NaN, then quiet NaN is returned. [.small]#Created with https://www.mrdocs.com[MrDocs]#