text: "use strict";
  
  // Imports
  const isNegative = require("../miscellaneous/isNegative.js");
  const isNumber = require("../miscellaneous/isNumber.js");
  const maximum = require("../miscellaneous/maximum.js");
  const negative = require("../miscellaneous/negative.js");
  const parse = require("../utils/parse.js");
  const plus = require("./plus.js");
  const positive = require("../miscellaneous/positive.js");
  const shift = require("../miscellaneous/shift.js");
  const trim = require("../utils/trim.js");
  
  /**
   * Multiplies two number-like values together
   * @param {string|number} a Number-like value
   * @param {string|number} b Number-like value
   * @returns {string}
   */
  function multiply(a, b) {
      if(!isNumber(a) || !isNumber(b)) throw new TypeError("Argument is not a number-like value");
      let na = isNegative(a), nb = isNegative(b);
      if(na && nb) return multiply(positive(a), positive(b));
      else if(na || nb) return negative(multiply(positive(a), positive(b)));
      let l = maximum([ parse(a)[2].length, parse(b)[2].length ]);
      let [ daa, dab ] = [ a, b ].map(v => parse(shift(v, l))[1].split("").reverse()), r = [];
      daa.forEach((dva, dia) => dab.forEach((dvb, dib) => r.push(`${+dva * +dvb}${"0".repeat(+dia + +dib)}`)));
      return trim(shift(r.reduce(plus), negative(+l * 2)));
  };
  
  // Exports
  module.exports = multiply;