1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 20:49:49 +04:00
Files
unleashed-firmware/documentation/js/js_math.md
WillyJL d34ff3310d JS: Update and fix docs, fix Number.toString() with decimals (#4168)
* Update and fix JS docs

This could really use some automation, atleast for API reference
There are TypeScript definitions and typedocs, we don't need to be monkeys copying and reformatting this to API reference by hand

* Fix bugged character

* JS: Fix Number.toString() with decimals

* Fix

* Forgot this one

* docs: mention per-view child format

* Added @portasynthinca3 to docs' codeowners

* Updated CODEOWNERS

---------

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-01 15:02:12 +04:00

453 lines
7.3 KiB
Markdown

# Math module {#js_math}
The module contains mathematical methods and constants. Call the `require` function to load the module before first using its methods:
```js
let math = require("math");
```
# Constants
## PI
The number π = 3.14159265358979323846264338327950288.
## E
The number e (Euler's number) = 2.71828182845904523536028747135266250.
## EPSILON
The smallest number that satisfies the condition: 1.0 + EPSILON != 1.0.
EPSILON = 2.2204460492503131e-16.
<br>
---
# Methods
## abs()
Return the absolute value of a number.
**Parameters**
- x: A number
**Returns**
The absolute value of `x`. If `x` is negative (including -0), returns `-x`. Otherwise, returns `x`. The result is therefore always a positive number or 0.
**Example**
```js
math.abs(-5); // 5
```
<br>
## acos()
Return the inverse cosine (in radians) of a number.
**Parameters**
- x: A number between -1 and 1, inclusive, representing the angle's cosine value
**Returns**
The inverse cosine (angle in radians between 0 and π, inclusive) of `x`. If `x` is less than -1 or greater than 1, returns `NaN`.
**Example**
```js
math.acos(-1); // 3.141592653589793
```
<br>
## acosh()
Return the inverse hyperbolic cosine of a number.
**Parameters**
- x: A number greater than or equal to 1
**Returns**
The inverse hyperbolic cosine of `x`.
**Example**
```js
math.acosh(1); // 0
```
<br>
## asin()
Return the inverse sine (in radians) of a number.
**Parameters**
- x: A number between -1 and 1, inclusive, representing the angle's sine value
**Returns**
The inverse sine (angle in radians between -𝜋/2 and 𝜋/2, inclusive) of `x`.
**Example**
```js
math.asin(0.5); // 0.5235987755982989
```
<br>
## asinh()
Return the inverse hyperbolic sine of a number.
**Parameters**
- x: A number
**Returns**
The inverse hyperbolic sine of `x`.
**Example**
```js
math.asinh(1); // 0.881373587019543
```
<br>
## atan()
Return the inverse tangent (in radians) of a number.
**Parameters**
- x: A number
**Returns**
The inverse tangent (angle in radians between -𝜋/2 and 𝜋/2, inclusive) of `x`.
**Example**
```js
math.atan(1); // 0.7853981633974483
```
<br>
## atan2()
Return the angle in the plane (in radians) between the positive x-axis and the ray from (0, 0) to the point (x, y), for math.atan2(y, x).
**Parameters**
- y: The y coordinate of the point
- x: The x coordinate of the point
**Returns**
The angle in radians (between -π and π, inclusive) between the positive x-axis and the ray from (0, 0) to the point (x, y).
**Example**
```js
math.atan2(90, 15); // 1.4056476493802699
```
<br>
## atanh()
The method returns the inverse hyperbolic tangent of a number.
**Parameters**
- x: A number between -1 and 1, inclusive
**Returns**
The inverse hyperbolic tangent of `x`.
**Example**
```js
math.atanh(0.5); // 0.5493061443340548
```
<br>
## cbrt()
Return the cube root of a number.
**Parameters**
- x: A number
**Returns**
The cube root of `x`.
**Example**
```js
math.cbrt(2); // 1.2599210498948732
```
<br>
## ceil()
Round up and return the smallest integer greater than or equal to a given number.
**Parameters**
- x: A number
**Returns**
The smallest integer greater than or equal to `x`. It's the same value as `-math.floor(-x)`.
**Example**
```js
math.ceil(-7.004); // -7
math.ceil(7.004); // 8
```
<br>
## clz32()
Return the number of leading zero bits in the 32-bit binary representation of a number.
**Parameters**
- x: A number
**Returns**
The number of leading zero bits in the 32-bit binary representation of `x`.
**Example**
```js
math.clz32(1); // 31
math.clz32(1000); // 22
```
<br>
## cos()
Return the cosine of a number in radians.
**Parameters**
- x: A number representing an angle in radians
**Returns**
The cosine of `x`, between -1 and 1, inclusive.
**Example**
```js
math.cos(math.PI); // -1
```
<br>
## exp()
Return e raised to the power of a number.
**Parameters**
- x: A number
**Returns**
A nonnegative number representing `e^x`, where `e` is the base of the natural logarithm.
**Example**
```js
math.exp(0); // 1
math.exp(1); // 2.718281828459045
```
<br>
## floor()
Round down and return the largest integer less than or equal to a given number.
**Parameters**
- x: A number
**Returns**
The largest integer smaller than or equal to `x`. It's the same value as `-math.ceil(-x)`.
**Example**
```js
math.floor(-45.95); // -46
math.floor(-45.05); // -46
math.floor(-0); // -0
math.floor(0); // 0
math.floor(45.05); // 45
math.floor(45.95); // 45
```
<br>
## log()
Return the natural logarithm of x.
**Parameters**
- x: A number
**Returns**
The natural logarithm of `x`, as in `ln(x)` where `e` is the base of the natural logarithm.
**Example**
```js
math.log(1); // 0
math.log(3); // 1.0986122886681098
```
## isEqual()
Return true if the difference between numbers `a` and `b` is less than the specified `tolerance`.
**Parameters**
- a: A number a
- b: A number b
- tolerance: How much difference is allowed between the numbers to be considered equal
**Returns**
True if the difference between numbers `a` and `b` is less than the specified parameter `e`. Otherwise, false.
**Example**
```js
math.isEqual(1.4, 1.6, 0.2); // false
math.isEqual(3.556, 3.555, 0.01); // true
```
<br>
## max()
Return the largest of two numbers given as input parameters.
**Parameters**
- a: A number a
- b: A number b
**Returns**
The largest of the given numbers.
**Example**
```js
math.max(10, 20); // 20
math.max(-10, -20); // -10
```
<br>
## min()
Return the smallest of two numbers given as input parameters.
**Parameters**
- a: A number a
- b: A number b
**Returns**
The smallest of the given numbers.
**Example**
```js
math.min(10, 20); // 10
math.min(-10, -20); // -20
```
<br>
## pow()
Return the value of a base raised to a power.
**Parameters**
- base: The base number
- exponent: The exponent number
**Returns**
A number representing base taken to the power of exponent.
**Example**
```js
math.pow(7, 2); // 49
math.pow(7, 3); // 343
math.pow(2, 10); // 1024
```
<br>
## random()
Return a floating-point, pseudo-random number that's greater than or equal to 0 and less than 1, with approximately uniform distribution over that range — which you can then scale to your desired range.
**Returns**
A floating-point, pseudo-random number between 0 (inclusive) and 1 (exclusive).
**Example**
```js
let num = math.random();
```
<br>
## sign()
Return 1 or -1, indicating the sign of the number passed as argument.
**Parameters**
- x: A number
**Returns**
-1 if the number is less than 0, and 1 otherwise.
**Example**
```js
math.sign(3); // 1
math.sign(0); // 1
math.sign(-3); // -1
```
<br>
## sin()
Return the sine of a number in radians.
**Parameters**
- x: A number representing an angle in radians
**Returns**
The sine of `x`, between -1 and 1, inclusive.
**Example**
```js
math.sin(math.PI / 2); // 1
```
<br>
## sqrt()
Return the square root of a number.
**Parameters**
- x: A number greater than or equal to 0
**Returns**
The square root of `x`, a nonnegative number. If `x` < 0, script will fail with an error.
**Example**
```js
math.sqrt(25); // 5
```
<br>
## trunc()
Return the integer part of a number by removing any fractional digits.
**Parameters**
- x: A number
**Returns**
The integer part of `x`.
**Example**
```js
math.trunc(-1.123); // -1
math.trunc(0.123); // 0
math.trunc(13.37); // 13
math.trunc(42.84); // 42
```