fma, fmaf, fmal

İki değeri birlikte çarpar, üçüncü bir değer ekler ve ardından sonucu yuvarlar, ancak aracı yuvarlama nedeniyle az miktarda duyarlık kaybeder.

Sözdizimi

double fma(
   double x,
   double y,
   double z
);

float fma(
   float  x,
   float  y,
   float z
); //C++ only

long double fma(
   long double  x,
   long double  y,
   long double z
); //C++ only

float fmaf(
   float  x,
   float  y,
   float z
);

long double fmal(
   long double  x,
   long double  y,
   long double z
);

#define fma(X, Y, Z) // Requires C11 or higher

Parametreler

x
Çarpmak için ilk değer.

y
Çarpmak için ikinci değer.

z
Eklenecek değer.

Dönüş değeri

Yaklaşık olarak (x * y) + zdöndürür. Dönüş değeri daha sonra geçerli yuvarlama biçimi kullanılarak yuvarlanır, ancak çoğu durumda yanlış yuvarlanmış sonuçlar döndürür ve bu nedenle değer doğru değerden yarım ulp'a kadar çıkarılmış olabilir.

Aksi takdirde, aşağıdaki değerlerden birini döndürebilir:

Sorun İade
x = SONSUZLUK, y = 0 veya

x = 0, y = SONSUZLUK
NaN
x or y = tam ± INFINITY, z = INFINITY ve karşıt işareti NaN
x or y = NaN NaN
not (x = 0, y= belirsiz) ve z = NaN

not (x=belirsiz, y=0) ve z = NaN
NaN
Taşma aralığı hatası HUGE_VAL±, ±HUGE_VALF veya ±HUGE_VALL
Yetersiz akış aralığı hatası doğru değer, yuvarlamadan sonra.

Hatalar içinde _matherrbelirtildiği gibi bildirilir.

Açıklamalar

C++ aşırı yüklemeye izin verdiğinden, bu alma ve dönüş float ile long double türlerinin fma aşırı yüklemelerini çağırabilirsiniz. C programında, bu işlevi çağırmak için tgmath.h makrosunu <kullanmıyorsanız, fma her zaman bir doublealır ve döndürür.>

tgmath.h>fma() makroyu <kullanırsanız, işlevin hangi sürümünün seçili olduğunu bağımsız değişkenin türü belirler. Ayrıntılar için bkz . Tür genel matematik .

Bu işlev, değeri sonsuz duyarlık için alınmış gibi hesaplar ve ardından nihai sonucu yuvarlar.

Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bu davranışı değiştirmek için bkz. CRT'de Genel durum.

Gereksinimler

İşlev C üst bilgisi C++ üst bilgisi
fma, fmaf, fmal <math.h> <cmath>
fma Makro <tgmath.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Ayrıca bkz.

Alfabetik işlev başvurusu
remainder, remainderf, remainderl
remquo, remquof, remquol