Відповідно до офіційної документації, з версії мови Lua, що входить до складу прошивки NodeMCU, з метою вивільнення об’єму пам’яті було взагалі вилучено модуль математичних функцій. В Lua за математичні функції відповідає бібліотека math.
Джерело: Lua Developer FAQ
Цитата: “The debug and math libraries have also been omitted to reduce the runtime footprint (modulo can be done via %, power via ^).”
Але це не зовсім так і насправді, до деяких математичних функцій є доступ.
Для того, щоб шановний читач не мусив сам розбиратися і тестувати, ми виклали всі наявні математичні функції Lua прошивки NodeMCU у одному тексті.
Спочатку перерахуємо функції з прикладами, котрі реалізовано, а потім наведемо загальну таблицю усіх функцій класичного модуля math, відповідно до Lua 5.1 Reference Manual.
Примітка. Зверніть увагу, що ми не наводимо у даному тексті стандартні для будь-якої мови математичні операції типу додавання чи віднімання – адже все це є в NodeMCU. Розглядаємо вбудовану бібліотеку math. та її математичні інструменти. Цю бібліотеку неможливо вимкнути під час створення прошивки засобами сайту nodemcu-build.com
Перелік наявних у прошивці NodeMCU з мовою програмування Lua функцій модуля Math.
ABS. Модуль числа
Повертає абсолютне значення x.
Синтаксис: math.abs (x)
Приклад:
1 2 |
= math.abs(-100) 100 |
CEIL. Округлення вгору
Повертає найменше ціле число, що перевищує або дорівнює x.
Синтаксис: math.ceil (x)
Приклад:
1 2 |
= math.ceil(0.5) 1 |
FLOOR. Округлення вниз
Повертає найбільше ціле число, менше або рівне х.
Синтаксис: math.floor (x)
Приклад:
1 2 |
= math.floor(0.5) 0 |
HUGE. Нескінченно велике значення
Значення HUGE_VAL – значення, що перевищує або дорівнює будь-якому іншому числовому значенню.
Синтаксис: math.huge
Приклад:
1 2 3 4 |
= 5.32 * math.huge Infinity = math.huge/math.huge NaN |
MAX. Максимальне значення
Повертає максимальне значення серед аргументів.
Синтаксис: math.max (x, ···)
Приклад:
1 2 |
= math.max(1.2, -7, 3) 3 |
MIN. Мінімальне значення
Повертає мінімальне значення серед аргументів.
Синтаксис: math.min (x, ···)
Приклад:
1 2 |
= math.min(1.2, 7, 3) 1.2 |
PI. Число Пі
Значення числа Пі
Синтаксис: math.pi
Приклад:
1 2 |
=math.pi 3.1415926535898 |
POW. Піднесення числа у степінь
Повертає х в степені y. (Ви також можете використовувати вираз x ^ y для обчислення цього значення.)
Синтаксис: math.pow (x, y)
Приклад:
1 2 |
=math.pow (2, 4) 16 |
RANDOM. Псевдо-випадкове число
Ця функція є інтерфейсом до простого псевдовипадкового генератора rand, наданого ANSI C. (Ніяких гарантій щодо статистичних властивостей немає).
Синтаксис: math.random ([m [, n]])
Приклад:
1 2 3 4 |
= math.random() 0.69000103217084 = math.random(70,80) 75 |
RANDOMSEED. Початкове значення для псевдовипадкового генератора
Встановлює x як випадкове початкове значення – сід для псевдовипадкового генератора: однаковий сід дає однакові послідовності чисел.
Синтаксис: math.randomseed (x)
Приклад:
1 2 3 4 5 6 7 8 9 10 11 12 |
math.randomseed(1234); > = math.random(), math.random(), math.random(); 0.46127347436793 0.91502965656809 0.71844245992528 > = math.random(), math.random(), math.random(); 0.29674759427865 0.93136401424714 0.43869968850105 > math.randomseed(1234); > = math.random(), math.random(), math.random(); -- як можна бачити, після randomseed отримуємо ті ж псевдовипадкові числа, що і за першої спроби: 0.46127347436793 0.91502965656809 0.71844245992528 |
SQRT. Корінь квадратний
Повертає квадратний корінь x. (Ви можете також використовувати вираз x ^ 0,5 для обчислення цього значення.)
Синтаксис: math.sqrt (x)
Приклад:
1 2 3 4 |
=math.sqrt(4) 2 =math.sqrt(-4) NaN |
Таблиця №1 Порівняння бібліотеки math Lua Reference Manual та NodeMCU embedded Lua
Функція | Lua 5.1 Reference Manual | NodeMCU embedded Lua 5.1.4 |
ABS | math.abs (x) | math.abs(x) |
ACOS | math.acos (x) | немає підтримки |
ASIN | math.asin (x) | немає підтримки |
ATAN | math.atan (x) | немає підтримки |
CEIL | math.ceil (x) | math.ceil(x) |
COS | math.cos (x) | немає підтримки |
DEG | math.deg (x) | немає підтримки |
EXP | math.exp (x) | немає підтримки |
FLOOR | math.floor (x) | math.floor(x) |
FMOD | math.fmod (x, y) | немає підтримки |
FREXP | math.frexp (x) | немає підтримки |
HUGE | math.huge | math.huge |
LDEXP | math.ldexp (m, e) | немає підтримки |
LOG | math.log (x) | немає підтримки |
LOG10 | math.log10 (x) | немає підтримки |
MAX | math.max (x, ···) | math.max(x, ···) |
MIN | math.min (x, ···) | math.min(x, ···) |
MODF | math.modf (x) | немає підтримки |
PI | math.pi | math.pi |
POW | math.pow (x, y) | math.pow(x, y) |
RAD | math.rad (x) | немає підтримки |
RANDOM | math.random ([m [, n]]) | math.random([m [, n]]) |
RANDOMSEED | math.randomseed (x) | math.randomseed (x) |
SIN | math.sin (x) | немає підтримки |
SQRT | math.sqrt (x) | math.sqrt (x) |
TAN | math.tan (x) | немає підтримки |
Пам’ятайте, що для деяких функцій з Таблиці №1, котрі спільнота розробки NodeMCU свідомо вирішила не включати до складу прошивки, за потреби можливо розробити обхідні шляхи – застосовуючи математику.
Сподіваємося, що ця інформація є корисною для вас,
Бажаємо успіхів!
Підписуйтеся :