"Keith Packard" writes: > That implementation violates the spec though because it does two > binary operations involving two roundings, so you get a different answer > than you would with a true fma. Hrm. C99 and C17 both have macros to detect whether fma is 'fast' or not: FP_FAST_FMA, FP_FAST_FMAF and FP_FAST_FMAL. This page: https://en.cppreference.com/w/cpp/numeric/math/fma has a nice parenthetical comment: "If ... defined, the function std::fma evaluates faster (in addition to being more precise) than the expression x*y+z." If C99 or C17 included 'in addition to being more precise', it would be much more obvious to me that we should include the fall-back fma implementation. So, we should at least change the CPP defines that we have in math_config.h to match the C99 and C17 specs. Is it reasonable to assume that applications which care about accuracy will also be checking these defines and using them as the C++ standard appears to? -- -keith