fma
, , fmaf
fmal
Умножает два значения вместе, добавляет третье значение, а затем округляет результат, а затем теряет только небольшое количество точности из-за промежуточного округления.
Синтаксис
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
Параметры
x
Первое значение для перемножения.
y
Второе значение для перемножения.
z
Значение для сложения.
Возвращаемое значение
Возвращает приблизительно (x * y) + z
. Затем возвращаемое значение округляется с помощью текущего форматов округления, хотя во многих случаях возвращает неправильно округленные результаты, поэтому значение может быть неисправным до половины ulp от правильного значения.
В случае неудачи может возвращать одно из следующих значений:
Проблема | Возврат |
---|---|
x = INFINITY, y = 0 илиx = 0, y = INFINITY |
Не число |
x или y = точное значение ± INFINITY, z = INFINITY с противоположным знаком |
Не число |
x или y = NaN |
Не число |
не (x = 0, y = неопределенное значение) и z = NaNне ( x = неопределенное значение, y =0) и z = NaN |
Не число |
Ошибка переполнения диапазона | HUGE_VAL ±, ±HUGE_VALF или ±HUGE_VALL |
Ошибка недостаточного заполнения диапазона | правильное значение (после округления). |
Ошибки сообщаются, как указано в _matherr
.
Замечания
Поскольку C++ допускает перегрузки, можно вызывать перегрузки функции fma
, принимающие и возвращающие типы float
и long double
. В программе C, если вы не используете <макрос tgmath.h> для вызова этой функции, fma
всегда принимает и возвращает значение double
.
Если вы используете <макрос tgmath.h>fma()
, тип аргумента определяет, какая версия функции выбрана. Дополнительные сведения см . в разделе "Математика с универсальным типом".
Эта функция вычисляет значение с бесконечной точностью, после чего округляет результат.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Function | Заголовок C | Заголовок C++ |
---|---|---|
fma , , fmaf fmal |
<math.h> | <cmath> |
fma Макрос |
<tgmath.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Справочник по алфавитной функции
remainder
, , remainderf
remainderl
remquo
, , remquof
remquol