fma()函数采用三个参数x,y和z,并返回x * y + z,而不会损失精度
此函数在<cmath>头文件中定义。
double fma(double x, double y, double z); float fma(float x, float y, float z); long double fma(long double x, long double y, long double z); Promoted fma(Type1 x, Type2 y, Type z); // 用于算术类型的组合
从C ++ 11开始,如果传递给fma()的参数为long double,则返回类型Promoted为long double。如果不是,则返回类型Promoted为double。
[数学] x*y+z = fma(x, y, z) [C++ 语言]
fma()接受三个参数。
x -要相乘的第一个参数。
y -第二个参数要与x相乘。
z -要添加到x和y乘积的第三个参数。
fma()函数的返回结果x*y+z就像计算得出的精度一样,并四舍五入一次以适合结果类型。
#include <cmath> using namespace std; int main() { double x = 2.0, y = 3.1, z = 3.0, result; result = fma(x, y, z); cout << "fma(x, y, z) = " << result << endl; long double xLD = 3.4, resultLD; resultLD = fma(xLD, y, z); cout << "fma(xLD, y, z) = " << resultLD << endl; return 0; }
运行该程序时,输出为:
fma(x, y, z) = 9.2 fma(xLD, y, z) = 13.54