Все математические функции Arduino

Приспичило в проекте использовать логарифм, полез читать – наткнулся на полный список математических функций, которые встроены в Arduino (файл math.h). Привожу его здесь с переводом на русский, пользуйтесь!
Примечание: double это тип данных для чисел с плавающей точкой, занимает 8 байт. float – то же самое, но 4 байта. Arduino поддерживает только 4 байтные числа, т.е. для неё double = float. Соответственно некоторые функции из таблицы ниже получаются “дублирующие” при использовании на Arduino.

Макросы

Макро Результат Описание
M_E 2.718281828 Число e
M_LOG2E 1.442695041 log_2 e
M_LOG10E 0.434294482 log_10 e
M_LN2 0.693147181 log_e 2
M_LN10 2.302585093 log_e 10
M_PI 3.141592654 pi
M_PI_2 1.570796327 pi/2
M_PI_4 0.785398163 pi/4
M_1_PI 0.318309886 1/pi
M_2_PI 0.636619772 2/pi
M_2_SQRTPI 1.128379167 2/корень(pi)
M_SQRT2 1.414213562 корень(2)
M_SQRT1_2 0.707106781 1/корень(2)
NAN __builtin_nan(“”) nan
INFINITY __builtin_inf() infinity

 

Функции

Функция Описание
cos (double x) Косинус (радианы)
sin (double x) Синус (радианы)
tan (double x) Тангенс (радианы)
fabs (double x) Модуль для float чисел
fmod (double x, double y) Остаток деления x на у для float
modf (double x, double *iptr) Возвращает дробную часть, целую хранит по адресу iptr http://cppstudio.com/post/1137/
modff (float x, float *iptr) То же самое, но для float
sqrt (double x) Корень квадратный
sqrtf (float) Корень квадратный для float чисел
cbrt (double x) Кубический корень
hypot (double x, double y) Гипотенуза ( корень(x*x + y*y) )
square (double x) Квадрат ( x*x )
floor (double x) Округление до целого вниз
ceil (double x) Округление до целого вверх
frexp (double x, int *pexp) http://cppstudio.com/post/1121/
ldexp (double x, int exp) x*2^exp http://cppstudio.com/post/1125/
exp (double x) Экспонента (e^x)
cosh (double x) Косинус гиперболический (радианы)
sinh (double x) Синус гиперболический (радианы)
tanh (double x) Тангенс гиперболический (радианы)
acos (double x) Арккосинус (радианы)
asin (double x) Арксинус (радианы)
atan (double x) Арктангенс (радианы)
atan2 (double y, double x) Арктангенс (y / x) (позволяет найти квадрант, в котором находится точка)
log (double x) Натуральный логарифм х ( ln(x) )
log10 (double x) Десятичный логарифм x ( log_10 x)
pow (double x, double y) Степень ( x^y )
isnan (double x) Проверка на nan (1 да, 0 нет)
isinf (double x) Возвр. 1 если x +бесконечность, 0 если нет
isfinite (double x) Возвращает ненулевое значение только в том случае, если аргумент имеет конечное значение
copysign (double x, double y) Возвращает x со знаком y (знак имеется в виду + -)
signbit (double x) Возвращает ненулевое значение только в том случае, если _X имеет отрицательное значение
fdim (double x, double y) Возвращает разницу между x и y, если x больше y, в противном случае 0
fma (double x, double y, double z) Возвращает x*y + z
fmax (double x, double y) Возвращает большее из чисел
fmin (double x, double y) Возвращает меньшее из чисел
trunc (double x) Возвращает целую часть числа с дробной точкой
round (double x) Математическое округление
lround (double x) Математическое округление (для больших чисел)
lrint (double x) Округляет указанное значение с плавающей запятой до ближайшего целого значения, используя текущий режим округления и направление

 

Что есть ещё

Далее уже от самих разработчиков Arduino есть ещё маленький пакетик удобных макро-функций!

Макро Значение
min(a,b) Возвращает меньшее из чисел
max(a,b) Возвращает большее из чисел
abs(x) Модуль числа
constrain(amt,low,high) Ограничить диапазон числа
round(x) Математическое округление
radians(deg) Перевод градусов в радианы
degrees(rad) Перевод радиан в градусы
sq(x) Квадрат числа
PI Пи
HALF_PI полПи
TWO_PI дваПи
DEG_TO_RAD Константа перевода град в рад 0.01745329
RAD_TO_DEG Константа перевода рад в град 57.2957786
Все математические функции Arduino
4.9 (97.78%) 9 votes

2018-12-04T15:24:55+00:00