[#BloombergLP-bdldfp-DecimalImpUtil-fma-08]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdldfp.adoc[bdldfp]::xref:BloombergLP/bdldfp/DecimalImpUtil.adoc[DecimalImpUtil]::fma
:relfileprefix: ../../../
:mrdocs:

Return `x &ast; y &plus; z`, rounded as one ternary operation&period;

== Synopsis

Declared in `&lt;bdldfp&lowbar;decimalimputil&period;h&gt;`

[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&colon; &ast; If `x` or `y` are quiet NaN, quiet NaN is returned&period; &ast; If any argument is signaling NaN, quiet NaN is returned and the value of the macro `EDOM` is stored into `errno`&period; &ast; If `x&ast;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`&period; &ast; 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`&period; &ast; 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&period;

== Return Value

`x &ast; y &plus; z`, rounded as one ternary operation

== Parameters

[cols="1,4"]
|===
| Name| Description
| *x*
| first multiplicand
| *y*
| second multiplicand
| *z*
| addend
|===


[.small]#Created with https://www.mrdocs.com[MrDocs]#
