math.h
Стандартная библиотека языка программирования С |
math.h — заголовочный файл стандартной библиотеки языка программирования С, разработанный для выполнения простых математических операций. Большинство функций привлекают использование чисел с плавающей точкой. C++ также реализует данные функции для обеспечения совместимости, все они содержатся в заголовочном файле cmath.
Все эти функции принимают double
, если не определено иначе. Для работы с типами float
и long double
используются функции с постфиксами f
и l
соответственно.
Все функции, принимающие или возвращающие угол, работают с радианами.
Базовые функции
Имя | Описание |
---|---|
abs |
Возвращает абсолютную величину целого числа |
acos |
арккосинус |
asin |
арксинус |
atan |
арктангенс |
atan2 |
арктангенс с двумя параметрами |
ceil |
округление до ближайшего большего целого числа |
cos |
косинус |
random |
выводит случайное число от 0 до аргумента функции. |
exp |
вычисление экспоненты |
fabs |
абсолютная величина (числа с плавающей точкой) |
floor |
округление до ближайшего меньшего целого числа |
fmod |
вычисление остатка от деления нацело для чисел с плавающей точкой |
frexp |
разбивает число с плавающей точкой на мантиссу и показатель степени. |
ldexp |
умножение числа с плавающей точкой на целую степень двух |
log |
натуральный логарифм |
log10 |
логарифм по основанию 10 |
modf(x,p) |
извлекает целую и дробную части (с учетом знака) из числа с плавающей точкой |
pow(x,y) |
результат возведения x в степень y, xy |
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 [www.gnu.org/software/libc/manual/html_node/Mathematics.html libm]
- Sun's [www.netlib.org/fdlibm/readme FDLIBM], которая была использована как основа для FreeBSD's [svnweb.freebsd.org/base/head/lib/msun/ msun], которая, в свою очередь, является основой Julia's [github.com/JuliaLang/openlibm OpenLibm]
- Arénaire project’s [lipforge.ens-lyon.fr/www/crlibm/ CRlibm] (Correctly Rounded mathematical library)
- AMD's [developer.amd.com/tools-and-sdks/cpu-development/cpu-libraries/libm/ libm]
Напишите отзыв о статье "Math.h"
Ссылки
-
[www.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html math.h]
— основные определения, The Single UNIX® Specification, выпуск 7 от The Open Group (англ.) - [www.dinkumware.com/manuals/?manual=compleat&page=math.html Справка по функциям math.h]
- [www.opennet.ru/docs/RUS/mlib/ Математическая библиотека libm] (рус.)
Отрывок, характеризующий Math.h
– Впрочем, большое количество монастырей и церквей есть всегда признак отсталости народа, – сказал Наполеон, оглядываясь на Коленкура за оценкой этого суждения.Балашев почтительно позволил себе не согласиться с мнением французского императора.
– У каждой страны свои нравы, – сказал он.
– Но уже нигде в Европе нет ничего подобного, – сказал Наполеон.
– Прошу извинения у вашего величества, – сказал Балашев, – кроме России, есть еще Испания, где также много церквей и монастырей.
Этот ответ Балашева, намекавший на недавнее поражение французов в Испании, был высоко оценен впоследствии, по рассказам Балашева, при дворе императора Александра и очень мало был оценен теперь, за обедом Наполеона, и прошел незаметно.
По равнодушным и недоумевающим лицам господ маршалов видно было, что они недоумевали, в чем тут состояла острота, на которую намекала интонация Балашева. «Ежели и была она, то мы не поняли ее или она вовсе не остроумна», – говорили выражения лиц маршалов. Так мало был оценен этот ответ, что Наполеон даже решительно не заметил его и наивно спросил Балашева о том, на какие города идет отсюда прямая дорога к Москве. Балашев, бывший все время обеда настороже, отвечал, что comme tout chemin mene a Rome, tout chemin mene a Moscou, [как всякая дорога, по пословице, ведет в Рим, так и все дороги ведут в Москву,] что есть много дорог, и что в числе этих разных путей есть дорога на Полтаву, которую избрал Карл XII, сказал Балашев, невольно вспыхнув от удовольствия в удаче этого ответа. Не успел Балашев досказать последних слов: «Poltawa», как уже Коленкур заговорил о неудобствах дороги из Петербурга в Москву и о своих петербургских воспоминаниях.
После обеда перешли пить кофе в кабинет Наполеона, четыре дня тому назад бывший кабинетом императора Александра. Наполеон сел, потрогивая кофе в севрской чашке, и указал на стул подло себя Балашеву.
Есть в человеке известное послеобеденное расположение духа, которое сильнее всяких разумных причин заставляет человека быть довольным собой и считать всех своими друзьями. Наполеон находился в этом расположении. Ему казалось, что он окружен людьми, обожающими его. Он был убежден, что и Балашев после его обеда был его другом и обожателем. Наполеон обратился к нему с приятной и слегка насмешливой улыбкой.
– Это та же комната, как мне говорили, в которой жил император Александр. Странно, не правда ли, генерал? – сказал он, очевидно, не сомневаясь в том, что это обращение не могло не быть приятно его собеседнику, так как оно доказывало превосходство его, Наполеона, над Александром.
Балашев ничего не мог отвечать на это и молча наклонил голову.
– Да, в этой комнате, четыре дня тому назад, совещались Винцингероде и Штейн, – с той же насмешливой, уверенной улыбкой продолжал Наполеон. – Чего я не могу понять, – сказал он, – это того, что император Александр приблизил к себе всех личных моих неприятелей. Я этого не… понимаю. Он не подумал о том, что я могу сделать то же? – с вопросом обратился он к Балашеву, и, очевидно, это воспоминание втолкнуло его опять в тот след утреннего гнева, который еще был свеж в нем.
– И пусть он знает, что я это сделаю, – сказал Наполеон, вставая и отталкивая рукой свою чашку. – Я выгоню из Германии всех его родных, Виртембергских, Баденских, Веймарских… да, я выгоню их. Пусть он готовит для них убежище в России!
Балашев наклонил голову, видом своим показывая, что он желал бы откланяться и слушает только потому, что он не может не слушать того, что ему говорят. Наполеон не замечал этого выражения; он обращался к Балашеву не как к послу своего врага, а как к человеку, который теперь вполне предан ему и должен радоваться унижению своего бывшего господина.
– И зачем император Александр принял начальство над войсками? К чему это? Война мое ремесло, а его дело царствовать, а не командовать войсками. Зачем он взял на себя такую ответственность?
Наполеон опять взял табакерку, молча прошелся несколько раз по комнате и вдруг неожиданно подошел к Балашеву и с легкой улыбкой так уверенно, быстро, просто, как будто он делал какое нибудь не только важное, но и приятное для Балашева дело, поднял руку к лицу сорокалетнего русского генерала и, взяв его за ухо, слегка дернул, улыбнувшись одними губами.
– Avoir l'oreille tiree par l'Empereur [Быть выдранным за ухо императором] считалось величайшей честью и милостью при французском дворе.
– Eh bien, vous ne dites rien, admirateur et courtisan de l'Empereur Alexandre? [Ну у, что ж вы ничего не говорите, обожатель и придворный императора Александра?] – сказал он, как будто смешно было быть в его присутствии чьим нибудь courtisan и admirateur [придворным и обожателем], кроме его, Наполеона.
– Готовы ли лошади для генерала? – прибавил он, слегка наклоняя голову в ответ на поклон Балашева.
– Дайте ему моих, ему далеко ехать…
Письмо, привезенное Балашевым, было последнее письмо Наполеона к Александру. Все подробности разговора были переданы русскому императору, и война началась.
После своего свидания в Москве с Пьером князь Андреи уехал в Петербург по делам, как он сказал своим родным, но, в сущности, для того, чтобы встретить там князя Анатоля Курагина, которого он считал необходимым встретить. Курагина, о котором он осведомился, приехав в Петербург, уже там не было. Пьер дал знать своему шурину, что князь Андрей едет за ним. Анатоль Курагин тотчас получил назначение от военного министра и уехал в Молдавскую армию. В это же время в Петербурге князь Андрей встретил Кутузова, своего прежнего, всегда расположенного к нему, генерала, и Кутузов предложил ему ехать с ним вместе в Молдавскую армию, куда старый генерал назначался главнокомандующим. Князь Андрей, получив назначение состоять при штабе главной квартиры, уехал в Турцию.