fma()函數(shù)采用三個參數(shù)x,y和z,并返回x * y + z,而不會損失精度
此函數(shù)在<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); // 用于算術(shù)類型的組合
從C ++ 11開始,如果傳遞給fma()的參數(shù)為long double,則返回類型Promoted為long double。如果不是,則返回類型Promoted為double。
[數(shù)學(xué)] x*y+z = fma(x, y, z) [C++ 語言]
fma()接受三個參數(shù)。
x -要相乘的第一個參數(shù)。
y -第二個參數(shù)要與x相乘。
z -要添加到x和y乘積的第三個參數(shù)。
fma()函數(shù)的返回結(jié)果x*y+z就像計算得出的精度一樣,并四舍五入一次以適合結(jié)果類型。
#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