Библиотека Arduino Math (math.h) включает в себя ряд полезных математических функций для работы с числами с плавающей точкой.
Макросы библиотеки
Ниже приведены макросы, определенные в заголовке math.h —
макрос
Значение
Описание
МНЕ
+2,7182818284590452354
Константа е.
M_LOG2E
+1,4426950408889634074
/ * log_2 e * /
Логарифм по основанию 2
M_1_PI
+0,31830988618379067154
/ * 1 / пи * /
Константа 1 / пи
M_2_PI
+0,63661977236758134308
/ * 2 / пи * /
Константа 2 / пи
M_2_SQRTPI
+1,12837916709551257390
/ * 2 / sqrt (pi) * /
Константа 2 / квт (пи)
M_LN10
+2,30258509299404568402
/ * log_e 10 * /
Натуральный логарифм 10
M_LN2
+0,69314718055994530942
/ * log_e 2 * /
Натуральный логарифм 2
M_LOG10E
+0,43429448190325182765
/ * log_10 e * /
Логарифм по основанию 10
M_PI
+3,14159265358979323846
/* число Пи */
Постоянная пи
M_PI_2
3.3V1.57079632679489661923
/ * пи / 2 * /
Константа пи / 2
M_PI_4
+0,78539816339744830962
/ * пи / 4 * /
Константа пи / 4
M_SQRT1_2
+0,70710678118654752440
/ * 1 / sqrt (2) * /
Константа 1 / кв.м (2)
M_SQRT2
+1,41421356237309504880
/ * sqrt (2) * /
Квадратный корень из 2
acosf
—
Псевдоним для функции acos ()
asinf
—
Псевдоним для функции asin ()
atan2f
—
Псевдоним для функции atan2 ()
cbrtf
—
Псевдоним для функции cbrt ()
ceilf
—
Псевдоним для функции ceil ()
copysignf
—
Псевдоним для функции copysign ()
coshf
—
Псевдоним для функции cosh ()
ехр
—
Псевдоним для функции exp ()
fabsf
—
Псевдоним для функции fabs ()
fdimf
—
Псевдоним для функции fdim ()
floorf
—
Псевдоним для функции floor ()
fmaxf
—
Псевдоним для функции fmax ()
fminf
—
Псевдоним для функции fmin ()
fmodf
—
Псевдоним для функции fmod ()
frexpf
—
Псевдоним для функции frexp ()
hypotf
—
Псевдоним для функции hypot ()
INFINITY
—
Постоянство бесконечности
isfinitef
—
Псевдоним для функции isfinite ()
isinff
—
Псевдоним для функции isinf ()
isnanf
—
Псевдоним для функции isnan ()
ldexpf
—
Псевдоним для функции ldexp ()
log10f
—
Псевдоним для функции log10 ()
logf
—
Псевдоним для функции log ()
lrintf
—
Псевдоним для функции lrint ()
lroundf
—
Псевдоним для функции lround ()
+1,4426950408889634074
/ * log_2 e * /
+0,31830988618379067154
/ * 1 / пи * /
+0,63661977236758134308
/ * 2 / пи * /
+1,12837916709551257390
/ * 2 / sqrt (pi) * /
+2,30258509299404568402
/ * log_e 10 * /
+0,69314718055994530942
/ * log_e 2 * /
+0,43429448190325182765
/ * log_10 e * /
+3,14159265358979323846
/* число Пи */
3.3V1.57079632679489661923
/ * пи / 2 * /
+0,78539816339744830962
/ * пи / 4 * /
+0,70710678118654752440
/ * 1 / sqrt (2) * /
+1,41421356237309504880
/ * sqrt (2) * /
Функции библиотеки
Следующие функции определены в заголовке math.h —
S.No.
Функция и описание библиотеки
1
двойной акос (двойной __x)
Функция acos () вычисляет главное значение арккосинуса __x. Возвращаемое значение находится в диапазоне [0, pi] радиан. Ошибка домена возникает для аргументов, не входящих в диапазон [-1, +1].
2
двойной asin (двойной __x)
Функция asin () вычисляет главное значение арксинуса __x. Возвращаемое значение находится в диапазоне [-pi / 2, pi / 2] радиан. Ошибка домена возникает для аргументов, не входящих в диапазон [-1, +1].
3
двойной атан (двойной __x)
Функция atan () вычисляет главное значение арктангенса __x. Возвращаемое значение находится в диапазоне [-pi / 2, pi / 2] радиан.
4
двойной atan2 (двойной __y, двойной __x)
Функция atan2 () вычисляет главное значение арктангенса __y / __x, используя знаки обоих аргументов для определения квадранта возвращаемого значения. Возвращаемое значение находится в диапазоне [-pi, + pi] радиан.
5
двойной cbrt (двойной __x)
Функция cbrt () возвращает корень куба __x.
6
двойной потолок (двойной __x)
Функция ceil () возвращает наименьшее целочисленное значение, большее или равное __x, выраженное в виде числа с плавающей запятой.
Функция fma () выполняет умножение-сложение с плавающей точкой. Это операция (__x * __y) + __z, но промежуточный результат не округляется до целевого типа. Это иногда может улучшить точность расчета.
15
двойной fmax (двойной __x, двойной __y)
Функция fmax () возвращает большее из двух значений __x и __y. Если аргумент равен NaN, возвращается другой аргумент. Если оба аргумента являются NaN, NaN возвращается.
16
двойной фмин (двойной __x, двойной __y)
Функция fmin () возвращает меньшее из двух значений __x и __y. Если аргумент равен NaN, возвращается другой аргумент. Если оба аргумента являются NaN, NaN возвращается.
17
double fmod (double __x, double__y)
Функция fmod () возвращает остаток с плавающей точкой от __x / __y.
18
double frexp (double __x, int * __pexp)
Функция frexp () разбивает число с плавающей запятой на нормализованную дробь и целую степень 2. Она сохраняет целое число в объекте int, на который указывает __pexp. Если __x является нормальным числом с плавающей запятой, функция frexp () возвращает значение v, так что v имеет величину в интервале [1/2, 1) или ноль, а __x равно v умноженному на 2, возведенному в степень __pexp. Если __x равен нулю, обе части результата равны нулю. Если __x не является конечным числом, frexp () возвращает __x как есть и сохраняет 0 в __pexp.
Примечание. Эта реализация разрешает указатель нуля в качестве директивы, чтобы пропустить сохранение показателя степени.
19
двойной гипотет (двойной __x, двойной __y)
Функция hypot () возвращает sqrt (__x * __x + __y * __y). Это длина гипотенузы прямоугольного треугольника со сторонами длины __x и __y или расстояние от точки (__x, __y) до начала координат. Использование этой функции вместо прямой формулы целесообразно, поскольку ошибка намного меньше. Нет недостатка с маленькими __x и __y. Нет переполнения, если результат находится в диапазоне.
20
static int isfinite (double __x)
Функция isfinite () возвращает ненулевое значение, если __x конечно: не плюс или минус бесконечность и не NaN .
21
int isinf (двойной __x)
Функция isinf () возвращает 1, если аргумент __x является положительной бесконечностью, -1, если __x является отрицательной бесконечностью, и 0 в противном случае.
Примечание . GCC 4.3 может заменить эту функцию встроенным кодом, который возвращает значение 1 для обеих бесконечностей (ошибка gcc # 35509).
22
int isnan (двойной __x)
Функция isnan () возвращает 1, если аргумент __x представляет объект «не число» ( NaN ), иначе 0.
23
double ldexp (double __x, int __exp)
Функция ldexp () умножает число с плавающей запятой на целую степень 2. Она возвращает значение __x умноженное на 2, возведенное в степень __exp.
24
двойной журнал (двойной __x)
Функция log () возвращает натуральный логарифм аргумента __x.
25
двойной log10 (двойной __x)
Функция log10 () возвращает логарифм аргумента __x в основание 10.
26
длинный лринт (двойной __x)
Функция lrint () округляет __x до ближайшего целого, округляя полпути до четного целочисленного направления. (То есть 1,5 и 2,5 значения округляются до 2). Эта функция похожа на функцию rint (), но отличается по типу возвращаемого значения и тем, что возможно переполнение.
Возвращает
Округленное длинное целое значение. Если __x не является конечным числом или переполнением, эта реализация возвращает значение LONG_MIN (0x80000000).
27
длинная земля (двойная __x)
Функция lround () округляет __x до ближайшего целого числа, но округляет значения на полпути от нуля (вместо ближайшего четного целого). Эта функция похожа на функцию round (), но отличается по типу возвращаемого значения и тем, что возможно переполнение.
Возвращает
Округленное длинное целое значение. Если __x не является конечным числом или было переполнение, эта реализация возвращает значение LONG_MIN (0x80000000).
28
двойной модф (двойной __x, двойной * __iptr)
Функция modf () разбивает аргумент __x на целые и дробные части, каждая из которых имеет тот же знак, что и аргумент. Он хранит неотъемлемую часть как двойную в объекте, на который указывает __iptr.
Функция modf () возвращает дробную часть со знаком __x.
Примечание. Эта реализация пропускает запись по нулевому указателю. Однако GCC 4.3 может заменить эту функцию встроенным кодом, который не позволяет использовать NULL-адрес для избежания сохранения.
29
float modff (float __x, float * __iptr)
Псевдоним для modf ().
30
двойной пау (двойной __x, двойной __y)
Функция pow () возвращает значение __x показателю __y.
31
двойной раунд (двойной __x)
Функция round () округляет __x до ближайшего целого числа, но округляет полпути до нуля (вместо ближайшего четного целого). Переполнение невозможно.
Возвращает
Округленное значение. Если __x является целым или бесконечным, возвращается сам __x. Если __x равен NaN , то возвращается NaN .
32
int signbit (двойной __x)
Функция signbit () возвращает ненулевое значение, если значение __x имеет установленный знаковый бит. Это не то же самое, что __x <0.0, потому что с плавающей точкой IEEE 754 позволяет подписать ноль. Сравнение `-0.0 <0.0 ‘ложно, но` signbit (-0.0)’ вернет ненулевое значение.
33
двойной грех (двойной __x)
Функция sin () возвращает синус __x, измеренный в радианах.
34
двойной синх (двойной __x)
Функция sinh () возвращает гиперболический синус __x.
35
двойной квадрат (двойной __x)
Функция sqrt () возвращает неотрицательный квадратный корень из __x.
36
двойной квадрат (двойной __x)
Функция square () возвращает __x * __x.
Примечание. Эта функция не относится к стандартному определению языка Си.
37
двойной загар (двойной __x)
Функция tan () возвращает тангенс __x, измеренный в радианах.
38
двойной танх (двойной __x)
Функция tanh () возвращает гиперболический тангенс __x.
39
двойное усечение (двойное __x)
Функция trunc () округляет __x до ближайшего целого числа, не большего по абсолютной величине.
двойной акос (двойной __x)
Функция acos () вычисляет главное значение арккосинуса __x. Возвращаемое значение находится в диапазоне [0, pi] радиан. Ошибка домена возникает для аргументов, не входящих в диапазон [-1, +1].
двойной asin (двойной __x)
Функция asin () вычисляет главное значение арксинуса __x. Возвращаемое значение находится в диапазоне [-pi / 2, pi / 2] радиан. Ошибка домена возникает для аргументов, не входящих в диапазон [-1, +1].
двойной атан (двойной __x)
Функция atan () вычисляет главное значение арктангенса __x. Возвращаемое значение находится в диапазоне [-pi / 2, pi / 2] радиан.
двойной atan2 (двойной __y, двойной __x)
Функция atan2 () вычисляет главное значение арктангенса __y / __x, используя знаки обоих аргументов для определения квадранта возвращаемого значения. Возвращаемое значение находится в диапазоне [-pi, + pi] радиан.
двойной cbrt (двойной __x)
Функция cbrt () возвращает корень куба __x.
двойной потолок (двойной __x)
Функция ceil () возвращает наименьшее целочисленное значение, большее или равное __x, выраженное в виде числа с плавающей запятой.
Функция fma () выполняет умножение-сложение с плавающей точкой. Это операция (__x * __y) + __z, но промежуточный результат не округляется до целевого типа. Это иногда может улучшить точность расчета.
двойной fmax (двойной __x, двойной __y)
Функция fmax () возвращает большее из двух значений __x и __y. Если аргумент равен NaN, возвращается другой аргумент. Если оба аргумента являются NaN, NaN возвращается.
двойной фмин (двойной __x, двойной __y)
Функция fmin () возвращает меньшее из двух значений __x и __y. Если аргумент равен NaN, возвращается другой аргумент. Если оба аргумента являются NaN, NaN возвращается.
double fmod (double __x, double__y)
Функция fmod () возвращает остаток с плавающей точкой от __x / __y.
double frexp (double __x, int * __pexp)
Функция frexp () разбивает число с плавающей запятой на нормализованную дробь и целую степень 2. Она сохраняет целое число в объекте int, на который указывает __pexp. Если __x является нормальным числом с плавающей запятой, функция frexp () возвращает значение v, так что v имеет величину в интервале [1/2, 1) или ноль, а __x равно v умноженному на 2, возведенному в степень __pexp. Если __x равен нулю, обе части результата равны нулю. Если __x не является конечным числом, frexp () возвращает __x как есть и сохраняет 0 в __pexp.
Примечание. Эта реализация разрешает указатель нуля в качестве директивы, чтобы пропустить сохранение показателя степени.
двойной гипотет (двойной __x, двойной __y)
Функция hypot () возвращает sqrt (__x * __x + __y * __y). Это длина гипотенузы прямоугольного треугольника со сторонами длины __x и __y или расстояние от точки (__x, __y) до начала координат. Использование этой функции вместо прямой формулы целесообразно, поскольку ошибка намного меньше. Нет недостатка с маленькими __x и __y. Нет переполнения, если результат находится в диапазоне.
static int isfinite (double __x)
Функция isfinite () возвращает ненулевое значение, если __x конечно: не плюс или минус бесконечность и не NaN .
int isinf (двойной __x)
Функция isinf () возвращает 1, если аргумент __x является положительной бесконечностью, -1, если __x является отрицательной бесконечностью, и 0 в противном случае.
Примечание . GCC 4.3 может заменить эту функцию встроенным кодом, который возвращает значение 1 для обеих бесконечностей (ошибка gcc # 35509).
int isnan (двойной __x)
Функция isnan () возвращает 1, если аргумент __x представляет объект «не число» ( NaN ), иначе 0.
double ldexp (double __x, int __exp)
Функция ldexp () умножает число с плавающей запятой на целую степень 2. Она возвращает значение __x умноженное на 2, возведенное в степень __exp.
двойной журнал (двойной __x)
Функция log () возвращает натуральный логарифм аргумента __x.
двойной log10 (двойной __x)
Функция log10 () возвращает логарифм аргумента __x в основание 10.
длинный лринт (двойной __x)
Функция lrint () округляет __x до ближайшего целого, округляя полпути до четного целочисленного направления. (То есть 1,5 и 2,5 значения округляются до 2). Эта функция похожа на функцию rint (), но отличается по типу возвращаемого значения и тем, что возможно переполнение.
Возвращает
Округленное длинное целое значение. Если __x не является конечным числом или переполнением, эта реализация возвращает значение LONG_MIN (0x80000000).
длинная земля (двойная __x)
Функция lround () округляет __x до ближайшего целого числа, но округляет значения на полпути от нуля (вместо ближайшего четного целого). Эта функция похожа на функцию round (), но отличается по типу возвращаемого значения и тем, что возможно переполнение.
Возвращает
Округленное длинное целое значение. Если __x не является конечным числом или было переполнение, эта реализация возвращает значение LONG_MIN (0x80000000).
двойной модф (двойной __x, двойной * __iptr)
Функция modf () разбивает аргумент __x на целые и дробные части, каждая из которых имеет тот же знак, что и аргумент. Он хранит неотъемлемую часть как двойную в объекте, на который указывает __iptr.
Функция modf () возвращает дробную часть со знаком __x.
Примечание. Эта реализация пропускает запись по нулевому указателю. Однако GCC 4.3 может заменить эту функцию встроенным кодом, который не позволяет использовать NULL-адрес для избежания сохранения.
float modff (float __x, float * __iptr)
Псевдоним для modf ().
двойной пау (двойной __x, двойной __y)
Функция pow () возвращает значение __x показателю __y.
двойной раунд (двойной __x)
Функция round () округляет __x до ближайшего целого числа, но округляет полпути до нуля (вместо ближайшего четного целого). Переполнение невозможно.
Возвращает
Округленное значение. Если __x является целым или бесконечным, возвращается сам __x. Если __x равен NaN , то возвращается NaN .
int signbit (двойной __x)
Функция signbit () возвращает ненулевое значение, если значение __x имеет установленный знаковый бит. Это не то же самое, что __x <0.0, потому что с плавающей точкой IEEE 754 позволяет подписать ноль. Сравнение `-0.0 <0.0 ‘ложно, но` signbit (-0.0)’ вернет ненулевое значение.
двойной грех (двойной __x)
Функция sin () возвращает синус __x, измеренный в радианах.
двойной синх (двойной __x)
Функция sinh () возвращает гиперболический синус __x.
двойной квадрат (двойной __x)
Функция sqrt () возвращает неотрицательный квадратный корень из __x.
двойной квадрат (двойной __x)
Функция square () возвращает __x * __x.
Примечание. Эта функция не относится к стандартному определению языка Си.
двойной загар (двойной __x)
Функция tan () возвращает тангенс __x, измеренный в радианах.
двойной танх (двойной __x)
Функция tanh () возвращает гиперболический тангенс __x.
двойное усечение (двойное __x)
Функция trunc () округляет __x до ближайшего целого числа, не большего по абсолютной величине.
пример
В следующем примере показано, как использовать наиболее распространенные функции библиотеки math.h: