Name

fma — perform a fused multiply-add operation

Declaration

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

genDType fma(genDType  a,
 genDType  b,
 genDType  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

FunctionVersion 1.10Version 1.20Version 1.30Version 1.40Version 1.50Version 3.30Version 4.00Version 4.10Version 4.20Version 4.30
fma (genType)YYYYYYYYYY
fma (genDType)------YYYY

Copyright

Copyright © 2011 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. http://opencontent.org/openpub/.