Bagikan melalui


fma, fmaf, fmal

Mengalikan dua nilai bersama-sama, menambahkan nilai ketiga, lalu membulatkan hasil, sementara hanya kehilangan sejumlah kecil presisi karena pembulatan perantara.

Sintaks

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

Parameter

x
Nilai pertama untuk dikalikan.

y
Nilai kedua untuk dikalikan.

z
Nilai yang akan ditambahkan.

Nilai hasil

Mengembalikan sekitar (x * y) + z. Nilai yang dikembalikan kemudian dibulatkan menggunakan format pembulatan saat ini, meskipun dalam banyak kasus, nilai tersebut mengembalikan hasil yang salah dibulatkan dan dengan demikian nilainya mungkin tidak ada hingga setengah ulp dari nilai yang benar.

Jika tidak, dapat mengembalikan salah satu nilai berikut:

Masalah Tampilkan
x = INFINITY, y = 0 atau

x = 0, y = TAK TERBATAS
NaN
x atau y = persis ± INFINITY, z = INFINITY dengan tanda berlawanan NaN
x atau y = NaN NaN
not (x = 0, y= indefinite) dan z = NaN

not (x=indefinite, y=0) dan z = NaN
NaN
Kesalahan rentang luapan HUGE_VAL±, ±HUGE_VALF, atau ±HUGE_VALL
Kesalahan rentang aliran bawah nilai yang benar, setelah pembulatan.

Kesalahan dilaporkan seperti yang ditentukan dalam _matherr.

Keterangan

Karena C++ memungkinkan kelebihan beban, Anda dapat memanggil kelebihan beban fma yang mengambil dan mengembalikan float dan long double jenis. Dalam program C, kecuali Anda menggunakan <makro tgmath.h> untuk memanggil fungsi ini, fma selalu mengambil dan mengembalikan double.

Jika Anda menggunakan <makro tgmath.h>fma() , jenis argumen menentukan versi fungsi mana yang dipilih. Lihat Matematika generik jenis untuk detailnya.

Fungsi ini menghitung nilai seolah-olah diambil untuk presisi tak terbatas, dan kemudian membulatkan hasil akhir.

Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.

Persyaratan

Function Header C Header C++
fma, fmaf, fmal <matematika.h> <cmath>
fma makro <tgmath.h>

Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.

Baca juga

Referensi fungsi alfabet
remainder, remainderf, remainderl
remquo, remquof, remquol