Відповідно до офіційної документації, з версії мови 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 свідомо вирішила не включати до складу прошивки, за потреби можливо розробити обхідні шляхи – застосовуючи математику.
Сподіваємося, що ця інформація є корисною для вас,
Бажаємо успіхів!
Підписуйтеся :


