Light | Dark

# docs.GL

GLSL 4
GLSL ES 3

# fma

## Name

fma — perform a fused multiply-add operation

## Declaration

`genType fma(` | genType a,
| genType b,
| genType c`)`;

## Parameters

`a`

  Specifies the first multiplicand.

`b`

  Specifies the second multiplicand.

`c`

  Specifies the value to be added to the result.

## Description

`fma` performs, where possible, a fused multiply-add operation, returning `a * b + c`. In use cases where the return value is eventually consumed by a variable declared as `precise`:

- `fma`() is considered a single operation, whereas the expression `a * b + c` consumed by a variable declared as `precise` is considered two operations.

- The precision of `fma`() can differ from the precision of the expression `a * b + c`.

- `fma`() will be computed with the same precision as any other `fma`() consumed by a `precise` variable, giving invariant results for the same input values of `a`, `b` and `c`.

Otherwise, in the absense of `precise` consumption, there are no special constraints on the number of operations or difference in precision between `fma`() and the expression `a * b + c`.

## Version Support

| OpenGL ES Shading Language Version
--- | ---
Function Name | 1.00 | 3.00 | 3.10
`fma` | - | - | ✔

## Copyright

Copyright © 2011-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. https://opencontent.org/openpub/.

Think you can improve this page? Edit this page on GitHub.