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(x−y, 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, включая:
Ссылки
math.h— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)- Справка по функциям math.h
- Математическая библиотека libm (рус.)