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_RADIX n (n is long )
|
scalbn(x,n) |
x * FLT_RADIX n (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_RADIX y (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
, включая:
- GNU libc's libm
- Sun's FDLIBM, которая была использована как основа для FreeBSD's msun, которая, в свою очередь, является основой Julia's OpenLibm
- Arénaire project’s CRlibm (Correctly Rounded mathematical library)
- AMD's libm
Ссылки
[править | править код]math.h
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.)- Справка по функциям math.h
- Математическая библиотека libm (рус.)