Home Reference Source Test

src/Math/index.js

/**
 * @desc Compares two small decimal values.
 * @param {number} number1 First number to compare.
 * @param {number} number2 Second number to compare.
 * @return {boolean} true if two number are equal.
 */
export function compareDecimalNumbers(number1, number2) {
  return Math.abs(number1 - number2) < Number.EPSILON;
};

/**
 * @desc Will generate random integer.
 * @param {number} max Max number that can be returned.
 * @return {number} Random integer.
 */
export function getRandomInt(max) {
  return Math.floor(Math.random() * Math.floor(max));
};

/**
 * @desc Will generate random integer in passed range.
 * @param {number} min Min number that can be returned.
 * @param {number} max Max number that can be returned.
 * @return {number} Random integer.
 */
export function getRandomIntFromTo(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min;
};

/**
 * Subtract numbers.
 * @param {number} minuend The first number in a subtraction.
 * @param {number} subtrahendList  The subtrahend list.
 * @return {number} Returns the difference.
 */
export function subtract(minuend, ...subtrahendList) {
  return subtrahendList.reduce((accumulator, value) => accumulator - value, minuend) || 0;
};

/**
 * Multiply numbers.
 * @param {number} multiplier The first number in a multiplication.
 * @param {number} multiplicandList The multiplicand list.
 * @return {number} Returns the product.
 */
export function multiply(multiplier, ...multiplicandList) {
  return multiplicandList.reduce((accumulator, value) => accumulator * value, multiplier) || 0;
};

/**
 * Adds numbers.
 * @param {number} augend The first number in an addition.
 * @param {...number} addendList The addend list.
 * @example
 * add(1, 2, 3, 1); // 7
 * add(1, 3); // 4
 * @return {number} Returns the total.
 */
export function add(augend, ...addendList) {
  return addendList.reduce((accumulator, value) => accumulator + value, augend) || 0;
};

/**
 * Divide numbers.
 * @param {number} dividend The first number in a division.
 * @param {number} divisorList The divisor list.
 * @return {number} Returns the quotient.
 */
export function divide(dividend, ...divisorList) {
  return divisorList.reduce((accumulator, value) => accumulator / value, dividend) || 0;
};