E.V.E
v2023.02.15
 
Loading...
Searching...
No Matches
Fused multiply add family

Detailed Description

These functions implements accurate versions of the operations \(\pm x \pm yz\) and \(\pm xy \pm z\).

The required accuracy is in two directions

  1. the computation is done with only one rounding
  2. there is no intermediate overflow

The implementation of these two properties can always be obtained calling the decorated pedantic version of these functions. (or the lower or upper versions, that must guarantee on ordering against the mathematical correct result)

Take care that can be very expensive if the proper hardware capabilities are not present.

By themselves the regular version of these function acts with mere operators * + and minus if the intrinsics are not at hand and if there is no possibility of maping the std implementation

fam, fanm, fma, fms, fnma, fnmsfsm, fsnm.

Variables

constexpr auto eve::fam = functor<fam_t>
 strict_elementwise_callable computing the fused add multiply of its three parameters.
 
constexpr auto eve::fanm = functor<fanm_t>
 Computes the fused add negate multiply of its three parameters.
 
constexpr auto eve::fma = functor<fma_t>
 strict_elementwise_callable computing the fused multiply add of its three parameters.
 
constexpr auto eve::fms = functor<fms_t>
 strict_elementwise_callable computing the fused multiply substract of its three parameters.
 
constexpr auto eve::fnma = functor<fnma_t>
 strict_elementwise_callable computing the fused multiply add of its three parameters.
 
constexpr auto eve::fnms = functor<fnms_t>
 strict_elementwise_callable computing the fused multiply add of its three parameters.
 
constexpr auto eve::fsm = functor<fsm_t>
 strict_elementwise_callable computing the fused add multiply of its three parameters.
 
constexpr auto eve::fsnm = functor<fsnm_t>
 strict_elementwise_callable computing the fused add multiply of its three parameters.