math.h

math.h — заголовочный файл стандартной библиотеки языка программирования С, разработанный для выполнения простых математических операций. Большинство функций привлекают использование чисел с плавающей точкой. C++ также реализует данные функции для обеспечения совместимости, все они содержатся в заголовочном файле cmath.

Все эти функции принимают double, если не определено иначе. Для работы с типами float и long double используются функции с постфиксами f и l соответственно. Все функции, принимающие или возвращающие угол, работают с радианами.

Базовые функции править

Имя Описание
abs Возвращает абсолютную величину целого числа
acos арккосинус
asin арксинус
atan арктангенс
atan2 арктангенс с двумя параметрами
ceil округление до ближайшего большего целого числа
cos косинус
cosh гиперболический косинус
exp вычисление экспоненты
fabs абсолютная величина (числа с плавающей точкой)
floor округление до ближайшего меньшего целого числа
fmod вычисление остатка от деления нацело для чисел с плавающей точкой
frexp разбивает число с плавающей точкой на мантиссу и показатель степени.
ldexp умножение числа с плавающей точкой на целую степень двух
log натуральный логарифм
log10 логарифм по основанию 10
modf(x,p) извлекает целую и дробную части (с учетом знака) из числа с плавающей точкой
pow(x,y) результат возведения x в степень y, xy
round математическое округление
sin синус
sinh гиперболический синус
sqrt квадратный корень
tan тангенс
tanh гиперболический тангенс

Функции стандарта C++ править

Имя Описание
acosh гиперболический ареакосинус
asinh гиперболический ареасинус
atanh гиперболический ареатангенс
cbrt кубический корень
copysign(x,y) возвращает величину, абсолютное значение которой равно x, но знак которой соответствует знаку y
erf функция ошибок
erfc дополнительная функция ошибок
exp2(x) значение числа 2, возведённого в степень x, 2x
expm1(x) значение функции ex − 1
fdim(x,y) вычисление положительной разницы между x и y, fmax(xy, 0)
fma(x,y,z) значение функции (x * y) + z (см. FMA)
fmax(x,y) наибольшее значение среди x и y
fmin(x,y) наименьшее значение среди x и y
hypot(x,y) гипотенуза, sqrt(x² + y²)
ilogb экспонента числа с плавающей точкой, конвертированная в int
lgamma натуральный логарифм абсолютного значения гамма-функции
llrint округление до ближайшего целого (возвращает long long)
lrint округление до ближайшего целого (возвращает long)
llround округление до ближайшего целого в направлении от нуля (возвращает long long)
lround округление до ближайшего целого в направлении от нуля (возвращает long)
log1p(x) натуральный логарифм 1 + x
log2 логарифм по основанию 2
logb целочисленная часть логарифма x по основанию 2
nan(s) возвращает нечисловое значение 'Not a Number'
nearbyint округление аргумента до целого значения в формате числа с плавающей точкой
nextafter(x,y) следующий ближайшее представимое для x (по направлению к y)
nexttoward(x,y) то же, что и nextafter, но y имеет тип long double
remainder(x,y) вычисляет остаток от деления согласно стандарту IEC 60559
remquo(x,y,p) то же, что и remainder, но сохраняет коэффициент по указателю p (как int)
rint округление до целого (возвращает int) с вызовом ошибки inexact, если результат отличается от аргумента.
round округление до целого (возвращает double)
scalbln(x,n) x * FLT_RADIXn (n is long)
scalbn(x,n) x * FLT_RADIXn (n is int)
tgamma гамма-функция
trunc отбрасывание дробной части

Расширения XSI править

Эти функции не описаны в стандартах ANSI или ISO C, но могут присутствовать в системах в качестве расширений X/Open.

Имя Описание
j0(x) значение функций Бесселя первого рода порядков 0 для аргумента x
j1(x) значение функций Бесселя первого рода порядков 1 для аргумента x
jn(n,x) значение функций Бесселя первого рода порядка n
scalb(x,y) x * FLT_RADIXy (x и y типа double)
y0(x) значение функций Бесселя второго рода порядков 0 для аргумента x
y1(x) значение функций Бесселя второго рода порядков 1 для аргумента x
yn(n,x) значение функций Бесселя второго рода порядка n

Использование функций конвертации double-string ecvt, fcvt и gcvt не рекомендуется в пользу sprintf.

libm править

Под Linux и FreeBSD математические функции (объявленные в math.h) хранятся отдельно в математической библиотеке libm. Таким образом, если любая из этих инструкций используется, при сборке компоновщику должна быть передана опция -lm.

Существует несколько реализаций libm, включая:

Ссылки править