A collection of common mathematical functions.

Mathematics is the classification and study of all possible patterns (1). This
package includes common number functions related to querying *about* numbers,
*comparing* numbers, *rounding* numbers, performing *rounded division*,
performing *modulo* operations, *controlling range* of numbers, performing
*arithmetic* operations, obtaining *divisors* of a number (and related
operations), getting the number of possible *arrangements* of a set of objects,
performing *geometry*-related calculations, performing basic *statistical*
analysis, and finding various *statistical means*.

**Natural numbers**: There are 3 different ways of performing the *modulo*
operation: rem, mod, and modp. gcd/`HCF`

and lcm of a list of numbers
can be obtained. To calculate the number of ways of *ordering items*, use
factorial/`P(n, k)`

, binomial/`C(n, k)`

, or multinomial/`n!/k₁!k₂!...`

.

**Real numbers**: *Range* of a number can be controlled with constrain,
normalize, or remap. Use lerp for *linear interpolation* (or extrapolation);
root for calculating the *n-th root* of a number; and log to find the
*logarithm* of a number with a given base.

**Geometry**: Perform conversion from degrees to radians and vice versa.
Find the magnitude of a vector or distance between two points.

**Statistics**: For a list of numbers, we can calculate the sum, product,
[mean]. median gives the value lying in the middle when the numbers are
sorted, and modes gives the values which are repeated most often. The
difference between the largest and the smallest values is the range.
variance is a measure of variability of numbers.

This package is available in both *Node.js* and *Web* formats. The web format is
exposed as `extra_math`

standalone variable and can be loaded from jsDelivr CDN.

Stability: Experimental.

```
const math = require('extra-math');
// import * as math from "extra-math";
// import * as math from "https://unpkg.com/extra-math/index.mjs"; (deno)
math.sum(1, 2, 3, 4);
// → 10
math.median(1, 7, 8);
// → 7
math.variance(1, 2, 3, 4);
// → 1.25
math.lcm(2, 3, 4);
// → 12
```

## Index

Property | Description |
---|---|

floor | Round down a number to specific precision. |

ceil | Round up a number to specific precision. |

round | Round a number to specific precision. |

floorDiv | Perform floor-divison of two numbers. |

ceilDiv | Perform ceiling-divison of two numbers. |

roundDiv | Perform rounded-divison of two numbers. |

rem | Find the remainder of x/y with sign of x (truncated division). |

mod | Find the remainder of x/y with sign of y (floored division). |

modp | Find the remainder of x/y with +ve sign (euclidean division). |

constrain | Constrain a number within a minimum and a maximum value. |

normalize | Normalize a number from its current range into a value between 0 and 1. |

remap | Re-map a number from one range to another. |

lerp | Linearly interpolate a number between two numbers. |

isPow | Check if a number is a power-of-n. |

prevPow | Get previous power-of-n of a number. |

nextPow | Find next power-of-n of a number. |

root | Find the nth root of a number (ⁿ√). |

log | Find the logarithm of a number with a given base. |

properDivisors | List all divisors of a number, except itself. |

aliquotSum | Sum all proper divisors of a number. |

isPrime | Check if number is prime. |

gcd | Find the greatest common divisor of numbers. |

lcm | Find the least common multiple of numbers. |

factorial | Find the factorial of a number. |

binomial | Find the number of ways to choose k elements from a set of n elements. |

multinomial | Find the number of ways to put n objects in m bins (n=sum(kᵢ)). |

degrees | Convert radians to degrees. |

radians | Convert degrees to radians. |

magnitude | Calculate the magnitude (length) of a vector. |

distance | Calculate the distance between two points. |

sum | Find the sum of numbers (Σ). |

product | Find the product of numbers (∏). |

median | Find the value separating the higher and lower halves of numbers. |

modes | Find the values that appear most often. |

range | Find the smallest and largest values. |

variance | Find the mean of squared deviation of numbers from its mean. |

arithmeticMean | Find the average of numbers. |

geometricMean | Find the geometric mean of numbers. |

harmonicMean | Find the harmonic mean of numbers. |

quadriaticMean | Find the quadriatic mean of numbers. |

cubicMean | Find the cubic mean of numbers. |

## References

- Yang, Z. H., & Tian, J. F. (2018). An accurate approximation formula for gamma function. Journal of inequalities and applications, 2018(1), 56.
- MathLib by @alawatthe
- Processing Reference
- Common mathematical functions by cppreference
- Modulo operation
- Euclidean algorithm
- Least common multiple
- Permutation
- Binomial coefficient
- Multinomial distribution
- Conventional commits