# FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
```FMA(3)		       FreeBSD Library Functions Manual			FMA(3)

NAME

LIBRARY
Math Library (libm, -lm)

SYNOPSIS
#include <math.h>

double
fma(double	x, double y, double z);

float
fmaf(float	x, float y, float z);

DESCRIPTION
The fma() and fmaf() functions return (x *	y) + z,	computed with only one
rounding error.  Using the	ordinary multiplication	and addition opera-
tors, by contrast,	results	in two roundings: one for the intermediate
product and one for the final result.

For instance, the expression 1.2e100 * 2.0e208 - 1.4e308 produces infin-
ity due to	overflow in the	intermediate product, whereas fma(1.2e100,
2.0e208, -1.4e308)	returns	approximately 1.0e308.

The fused multiply-add operation is often used to improve the accuracy of
calculations such as dot products.	 It may	also be	used to	improve	per-
formance on machines that implement it natively.  The macros FP_FAST_FMA
and FP_FAST_FMAF may be defined in	<math.h> to indicate that fma()	and
fmaf() (respectively) have	comparable or faster speed than	a multiply
operation followed	by an add operation.

IMPLEMENTATION NOTES
In	general, fma() and fmaf() will behave as one would expect if x * y + z
were computed with	unbounded precision and	range, then rounded to the
precision of the return type.  However, on	some platforms,	if z is	NaN,
these functions may not raise an exception	even when the computation of x
* y would have otherwise generated	an invalid exception.

fenv(3), math(3)

STANDARDS
The fma() and fmaf() functions conform to ISO/IEC 9899:1999
(``ISO C99'').  A fused multiply-add operation with virtually identical
characteristics appears in	IEEE draft standard 754R.

HISTORY
These routines first appeared in FreeBSD 5.4.

FreeBSD	10.3		       January 22, 2005			  FreeBSD 10.3
```

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | IMPLEMENTATION NOTES | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=fma&sektion=3&manpath=FreeBSD+5.4-RELEASE>

home | help