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) + z
dö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 veyax = 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 = NaNnot ( 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 _matherr
belirtildiğ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 double
alı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