fma, fmaf, fmal -
умножение
и сложение
чисел с
плавающей
запятой
Math library (
libm,
-lm)
#include <math.h>
double fma(double x, double y, double z);
float fmaf(float x, float y, float z);
long double fmal(long double x, long double y, long double z);
fma(),
fmaf(),
fmal():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
Эти
функции
вычисляют
x *
y +
z.
Результат
округляется
как единая
тернарная
операция
согласно
текущему
режиму
округления
(смотрите
fenv(3)).
Данные
функции
возвращают
результат
x *
y +
z,
округлённый
как для
единой
тернарной
операции.
Если
значение
x
или
y равно
NaN, будет
возвращено
NaN.
Если
x
умноженное
на
y
стремится
к
бесконечности
и значение
z равно
минус
бесконечности,
то будет
сгенерирована
ошибка
выхода за
пределы
области, а в
качестве
результата
будет
возвращено
NaN.
Если
x или
y
равно
бесконечности,
не равно 0 и
z
не равно NaN,
то будет
сгенерирована
ошибка
выхода за
пределы
области, а в
качестве
результата
будет
возвращено
NaN.
Если
x или
y
равно
бесконечности,
не равно 0, а
z
равно NaN, то
будет
сгенерирована
ошибка
выхода за
пределы
области, а в
качестве
результата
будет
возвращено
NaN.
Если
x
умноженное
на
y не
равно
бесконечности
умноженной
на 0 (или
наоборот) и
значение
z
равно NaN, то
будет
возвращено
NaN.
Если
происходит
переполнение
результата,
возникает
ошибка
диапазона,
и
возвращается
бесконечность
с
математически
правильным
знаком.
Если в
результате
исчерпана
степень
числа,
возникает
ошибка
диапазона
и
возвращается
0 со знаком.
Смотрите
math_error(7), чтобы
определить,
какие
ошибки
могут
возникать
при вызове
этих
функций.
Могут
возникать
следующие
ошибки:
- Ошибка
области: x *
y + z или x * y
некорректно
и z не равно
NaN
- Возникает
исключение
неправильной
плавающей
точки ( FE_INVALID).
- Ошибка
диапазона:
результат
превысил
разрядность
- Вызывается
исключение
переполнения
плавающей
запятой (
FE_OVERFLOW).
- Ошибка
диапазона:
результат
исчерпал
степень
- Возникает
исключение
исчерпания
степени
чисел с
плавающей
запятой (
FE_UNDERFLOW).
Эти
функции не
изменяют
errno.
These functions were added in glibc 2.1.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
fma(), fmaf(), fmal() |
Безвредность
в нитях |
MT-Safe |
C99, POSIX.1-2001, POSIX.1-2008.
remainder(3),
remquo(3)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitry Bolkhovskikh
<
[email protected]>, Yuri Kozlov <
[email protected]> и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]