{"version":3,"file":"ml-spectra-fitting.js","sources":["../node_modules/is-any-array/lib-esm/index.js","../node_modules/ml-spectra-processing/lib-esm/x/xCheck.js","../node_modules/ml-spectra-processing/lib-esm/x/xMinMaxValues.js","../node_modules/ml-array-max/lib-es6/index.js","../node_modules/ml-array-min/lib-es6/index.js","../node_modules/ml-array-rescale/lib-es6/index.js","../node_modules/ml-matrix/src/inspect.js","../node_modules/ml-matrix/src/mathOperations.js","../node_modules/ml-matrix/src/util.js","../node_modules/ml-matrix/src/stat.js","../node_modules/ml-matrix/src/matrix.js","../node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","../node_modules/ml-matrix/src/dc/lu.js","../node_modules/ml-matrix/src/dc/util.js","../node_modules/ml-matrix/src/dc/qr.js","../node_modules/ml-matrix/src/dc/svd.js","../node_modules/ml-matrix/src/decompositions.js","../lib-esm/shapes/getSumOfShapes.js","../node_modules/ml-peak-shape-generator/lib-esm/util/constants.js","../node_modules/ml-peak-shape-generator/lib-esm/util/erfinv.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/gaussian/Gaussian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/lorentzian/Lorentzian.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/pseudoVoigt/PseudoVoigt.js","../node_modules/ml-peak-shape-generator/lib-esm/shapes/1d/getShape1D.js","../lib-esm/util/assert.js","../lib-esm/util/internalPeaks/DefaultParameters.js","../lib-esm/util/internalPeaks/getInternalPeaks.js","../node_modules/ml-levenberg-marquardt/lib-esm/checkOptions.js","../node_modules/ml-levenberg-marquardt/lib-esm/errorCalculation.js","../node_modules/ml-levenberg-marquardt/lib-esm/gradientFunction.js","../node_modules/ml-levenberg-marquardt/lib-esm/step.js","../node_modules/ml-levenberg-marquardt/lib-esm/index.js","../lib-esm/util/selectMethod.js","../lib-esm/index.js"],"sourcesContent":["const toString = Object.prototype.toString;\n/**\n * Checks if an object is an instance of an Array (array or typed array).\n *\n * @param {any} value - Object to check.\n * @returns {boolean} True if the object is an array.\n */\nexport function isAnyArray(value) {\n    return toString.call(value).endsWith('Array]');\n}\n//# sourceMappingURL=index.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Checks if input is of type array\n *\n * @param input - input\n */\nexport function xCheck(input) {\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n}\n//# sourceMappingURL=xCheck.js.map","import { xCheck } from './xCheck';\n/**\n * Return min and max values of an array\n *\n * @param array - array of number\n * @returns - Object with 2 properties, min and max\n */\nexport function xMinMaxValues(array) {\n    xCheck(array);\n    let min = array[0];\n    let max = array[0];\n    for (let value of array) {\n        if (value < min)\n            min = value;\n        if (value > max)\n            max = value;\n    }\n    return { min, max };\n}\n//# sourceMappingURL=xMinMaxValues.js.map","import { isAnyArray } from 'is-any-array';\n\nfunction max(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var maxValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport { max as default };\n","import { isAnyArray } from 'is-any-array';\n\nfunction min(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  }\n\n  if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var _options$fromIndex = options.fromIndex,\n      fromIndex = _options$fromIndex === void 0 ? 0 : _options$fromIndex,\n      _options$toIndex = options.toIndex,\n      toIndex = _options$toIndex === void 0 ? input.length : _options$toIndex;\n\n  if (fromIndex < 0 || fromIndex >= input.length || !Number.isInteger(fromIndex)) {\n    throw new Error('fromIndex must be a positive integer smaller than length');\n  }\n\n  if (toIndex <= fromIndex || toIndex > input.length || !Number.isInteger(toIndex)) {\n    throw new Error('toIndex must be an integer greater than fromIndex and at most equal to length');\n  }\n\n  var minValue = input[fromIndex];\n\n  for (var i = fromIndex + 1; i < toIndex; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport { min as default };\n","import { isAnyArray } from 'is-any-array';\nimport max from 'ml-array-max';\nimport min from 'ml-array-min';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isAnyArray(input)) {\n    throw new TypeError('input must be an array');\n  } else if (input.length === 0) {\n    throw new TypeError('input must not be empty');\n  }\n\n  var output;\n\n  if (options.output !== undefined) {\n    if (!isAnyArray(options.output)) {\n      throw new TypeError('output option must be an array if specified');\n    }\n\n    output = options.output;\n  } else {\n    output = new Array(input.length);\n  }\n\n  var currentMin = min(input);\n  var currentMax = max(input);\n\n  if (currentMin === currentMax) {\n    throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n  }\n\n  var _options$min = options.min,\n      minValue = _options$min === void 0 ? options.autoMinMax ? currentMin : 0 : _options$min,\n      _options$max = options.max,\n      maxValue = _options$max === void 0 ? options.autoMinMax ? currentMax : 1 : _options$max;\n\n  if (minValue >= maxValue) {\n    throw new RangeError('min option must be smaller than max option');\n  }\n\n  var factor = (maxValue - minValue) / (currentMax - currentMin);\n\n  for (var i = 0; i < input.length; i++) {\n    output[i] = (input[i] - currentMin) * factor + minValue;\n  }\n\n  return output;\n}\n\nexport { rescale as default };\n","const indent = ' '.repeat(2);\nconst indentData = ' '.repeat(4);\n\nexport function inspectMatrix() {\n  return inspectMatrixWithOptions(this);\n}\n\nexport function inspectMatrixWithOptions(matrix, options = {}) {\n  const { maxRows = 15, maxColumns = 10, maxNumSize = 8 } = options;\n  return `${matrix.constructor.name} {\n${indent}[\n${indentData}${inspectData(matrix, maxRows, maxColumns, maxNumSize)}\n${indent}]\n${indent}rows: ${matrix.rows}\n${indent}columns: ${matrix.columns}\n}`;\n}\n\nfunction inspectData(matrix, maxRows, maxColumns, maxNumSize) {\n  const { rows, columns } = matrix;\n  const maxI = Math.min(rows, maxRows);\n  const maxJ = Math.min(columns, maxColumns);\n  const result = [];\n  for (let i = 0; i < maxI; i++) {\n    let line = [];\n    for (let j = 0; j < maxJ; j++) {\n      line.push(formatNumber(matrix.get(i, j), maxNumSize));\n    }\n    result.push(`${line.join(' ')}`);\n  }\n  if (maxJ !== columns) {\n    result[result.length - 1] += ` ... ${columns - maxColumns} more columns`;\n  }\n  if (maxI !== rows) {\n    result.push(`... ${rows - maxRows} more rows`);\n  }\n  return result.join(`\\n${indentData}`);\n}\n\nfunction formatNumber(num, maxNumSize) {\n  const numStr = String(num);\n  if (numStr.length <= maxNumSize) {\n    return numStr.padEnd(maxNumSize, ' ');\n  }\n  const precise = num.toPrecision(maxNumSize - 2);\n  if (precise.length <= maxNumSize) {\n    return precise;\n  }\n  const exponential = num.toExponential(maxNumSize - 2);\n  const eIndex = exponential.indexOf('e');\n  const e = exponential.slice(eIndex);\n  return exponential.slice(0, maxNumSize - e.length) + e;\n}\n","export function installMathOperations(AbstractMatrix, Matrix) {\n  AbstractMatrix.prototype.add = function add(value) {\n    if (typeof value === 'number') return this.addS(value);\n    return this.addM(value);\n  };\n\n  AbstractMatrix.prototype.addS = function addS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.addM = function addM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.add = function add(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.add(value);\n  };\n\n  AbstractMatrix.prototype.sub = function sub(value) {\n    if (typeof value === 'number') return this.subS(value);\n    return this.subM(value);\n  };\n\n  AbstractMatrix.prototype.subS = function subS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.subM = function subM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sub = function sub(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sub(value);\n  };\n  AbstractMatrix.prototype.subtract = AbstractMatrix.prototype.sub;\n  AbstractMatrix.prototype.subtractS = AbstractMatrix.prototype.subS;\n  AbstractMatrix.prototype.subtractM = AbstractMatrix.prototype.subM;\n  AbstractMatrix.subtract = AbstractMatrix.sub;\n\n  AbstractMatrix.prototype.mul = function mul(value) {\n    if (typeof value === 'number') return this.mulS(value);\n    return this.mulM(value);\n  };\n\n  AbstractMatrix.prototype.mulS = function mulS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.mulM = function mulM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mul = function mul(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mul(value);\n  };\n  AbstractMatrix.prototype.multiply = AbstractMatrix.prototype.mul;\n  AbstractMatrix.prototype.multiplyS = AbstractMatrix.prototype.mulS;\n  AbstractMatrix.prototype.multiplyM = AbstractMatrix.prototype.mulM;\n  AbstractMatrix.multiply = AbstractMatrix.mul;\n\n  AbstractMatrix.prototype.div = function div(value) {\n    if (typeof value === 'number') return this.divS(value);\n    return this.divM(value);\n  };\n\n  AbstractMatrix.prototype.divS = function divS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.divM = function divM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.div = function div(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.div(value);\n  };\n  AbstractMatrix.prototype.divide = AbstractMatrix.prototype.div;\n  AbstractMatrix.prototype.divideS = AbstractMatrix.prototype.divS;\n  AbstractMatrix.prototype.divideM = AbstractMatrix.prototype.divM;\n  AbstractMatrix.divide = AbstractMatrix.div;\n\n  AbstractMatrix.prototype.mod = function mod(value) {\n    if (typeof value === 'number') return this.modS(value);\n    return this.modM(value);\n  };\n\n  AbstractMatrix.prototype.modS = function modS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.modM = function modM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) % matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.mod = function mod(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.mod(value);\n  };\n  AbstractMatrix.prototype.modulus = AbstractMatrix.prototype.mod;\n  AbstractMatrix.prototype.modulusS = AbstractMatrix.prototype.modS;\n  AbstractMatrix.prototype.modulusM = AbstractMatrix.prototype.modM;\n  AbstractMatrix.modulus = AbstractMatrix.mod;\n\n  AbstractMatrix.prototype.and = function and(value) {\n    if (typeof value === 'number') return this.andS(value);\n    return this.andM(value);\n  };\n\n  AbstractMatrix.prototype.andS = function andS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.andM = function andM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) & matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.and = function and(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.and(value);\n  };\n\n  AbstractMatrix.prototype.or = function or(value) {\n    if (typeof value === 'number') return this.orS(value);\n    return this.orM(value);\n  };\n\n  AbstractMatrix.prototype.orS = function orS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.orM = function orM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) | matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.or = function or(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.or(value);\n  };\n\n  AbstractMatrix.prototype.xor = function xor(value) {\n    if (typeof value === 'number') return this.xorS(value);\n    return this.xorM(value);\n  };\n\n  AbstractMatrix.prototype.xorS = function xorS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.xorM = function xorM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) ^ matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.xor = function xor(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.xor(value);\n  };\n\n  AbstractMatrix.prototype.leftShift = function leftShift(value) {\n    if (typeof value === 'number') return this.leftShiftS(value);\n    return this.leftShiftM(value);\n  };\n\n  AbstractMatrix.prototype.leftShiftS = function leftShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.leftShiftM = function leftShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) << matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.leftShift = function leftShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.leftShift(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShift = function signPropagatingRightShift(value) {\n    if (typeof value === 'number') return this.signPropagatingRightShiftS(value);\n    return this.signPropagatingRightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftS = function signPropagatingRightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.signPropagatingRightShiftM = function signPropagatingRightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.signPropagatingRightShift = function signPropagatingRightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.signPropagatingRightShift(value);\n  };\n\n  AbstractMatrix.prototype.rightShift = function rightShift(value) {\n    if (typeof value === 'number') return this.rightShiftS(value);\n    return this.rightShiftM(value);\n  };\n\n  AbstractMatrix.prototype.rightShiftS = function rightShiftS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> value);\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.rightShiftM = function rightShiftM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) >>> matrix.get(i, j));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.rightShift = function rightShift(matrix, value) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.rightShift(value);\n  };\n  AbstractMatrix.prototype.zeroFillRightShift = AbstractMatrix.prototype.rightShift;\n  AbstractMatrix.prototype.zeroFillRightShiftS = AbstractMatrix.prototype.rightShiftS;\n  AbstractMatrix.prototype.zeroFillRightShiftM = AbstractMatrix.prototype.rightShiftM;\n  AbstractMatrix.zeroFillRightShift = AbstractMatrix.rightShift;\n\n  AbstractMatrix.prototype.not = function not() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, ~(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.not = function not(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.not();\n  };\n\n  AbstractMatrix.prototype.abs = function abs() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.abs(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.abs = function abs(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.abs();\n  };\n\n  AbstractMatrix.prototype.acos = function acos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acos = function acos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acos();\n  };\n\n  AbstractMatrix.prototype.acosh = function acosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.acosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.acosh = function acosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.acosh();\n  };\n\n  AbstractMatrix.prototype.asin = function asin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asin = function asin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asin();\n  };\n\n  AbstractMatrix.prototype.asinh = function asinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.asinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.asinh = function asinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.asinh();\n  };\n\n  AbstractMatrix.prototype.atan = function atan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atan = function atan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atan();\n  };\n\n  AbstractMatrix.prototype.atanh = function atanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.atanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.atanh = function atanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.atanh();\n  };\n\n  AbstractMatrix.prototype.cbrt = function cbrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cbrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cbrt = function cbrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cbrt();\n  };\n\n  AbstractMatrix.prototype.ceil = function ceil() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.ceil(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.ceil = function ceil(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.ceil();\n  };\n\n  AbstractMatrix.prototype.clz32 = function clz32() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.clz32(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.clz32 = function clz32(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.clz32();\n  };\n\n  AbstractMatrix.prototype.cos = function cos() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cos(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cos = function cos(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cos();\n  };\n\n  AbstractMatrix.prototype.cosh = function cosh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.cosh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.cosh = function cosh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.cosh();\n  };\n\n  AbstractMatrix.prototype.exp = function exp() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.exp(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.exp = function exp(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.exp();\n  };\n\n  AbstractMatrix.prototype.expm1 = function expm1() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.expm1(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.expm1 = function expm1(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.expm1();\n  };\n\n  AbstractMatrix.prototype.floor = function floor() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.floor(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.floor = function floor(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.floor();\n  };\n\n  AbstractMatrix.prototype.fround = function fround() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.fround(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.fround = function fround(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.fround();\n  };\n\n  AbstractMatrix.prototype.log = function log() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log = function log(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log();\n  };\n\n  AbstractMatrix.prototype.log1p = function log1p() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log1p(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log1p = function log1p(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log1p();\n  };\n\n  AbstractMatrix.prototype.log10 = function log10() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log10(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log10 = function log10(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log10();\n  };\n\n  AbstractMatrix.prototype.log2 = function log2() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.log2(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.log2 = function log2(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.log2();\n  };\n\n  AbstractMatrix.prototype.round = function round() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.round(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.round = function round(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.round();\n  };\n\n  AbstractMatrix.prototype.sign = function sign() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sign(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sign = function sign(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sign();\n  };\n\n  AbstractMatrix.prototype.sin = function sin() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sin(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sin = function sin(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sin();\n  };\n\n  AbstractMatrix.prototype.sinh = function sinh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sinh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sinh = function sinh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sinh();\n  };\n\n  AbstractMatrix.prototype.sqrt = function sqrt() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.sqrt(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.sqrt = function sqrt(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.sqrt();\n  };\n\n  AbstractMatrix.prototype.tan = function tan() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tan(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tan = function tan(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tan();\n  };\n\n  AbstractMatrix.prototype.tanh = function tanh() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.tanh(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.tanh = function tanh(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.tanh();\n  };\n\n  AbstractMatrix.prototype.trunc = function trunc() {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.trunc(this.get(i, j)));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.trunc = function trunc(matrix) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.trunc();\n  };\n\n  AbstractMatrix.pow = function pow(matrix, arg0) {\n    const newMatrix = new Matrix(matrix);\n    return newMatrix.pow(arg0);\n  };\n\n  AbstractMatrix.prototype.pow = function pow(value) {\n    if (typeof value === 'number') return this.powS(value);\n    return this.powM(value);\n  };\n\n  AbstractMatrix.prototype.powS = function powS(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), value));\n      }\n    }\n    return this;\n  };\n\n  AbstractMatrix.prototype.powM = function powM(matrix) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (this.rows !== matrix.rows ||\n      this.columns !== matrix.columns) {\n      throw new RangeError('Matrices dimensions must be equal');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, Math.pow(this.get(i, j), matrix.get(i, j)));\n      }\n    }\n    return this;\n  };\n}\n","import { isAnyArray } from 'is-any-array';\n\n/**\n * @private\n * Check that a row index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkRowIndex(matrix, index, outer) {\n  let max = outer ? matrix.rows : matrix.rows - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Row index out of range');\n  }\n}\n\n/**\n * @private\n * Check that a column index is not out of bounds\n * @param {Matrix} matrix\n * @param {number} index\n * @param {boolean} [outer]\n */\nexport function checkColumnIndex(matrix, index, outer) {\n  let max = outer ? matrix.columns : matrix.columns - 1;\n  if (index < 0 || index > max) {\n    throw new RangeError('Column index out of range');\n  }\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkRowVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.columns) {\n    throw new RangeError(\n      'vector size must be the same as the number of columns',\n    );\n  }\n  return vector;\n}\n\n/**\n * @private\n * Check that the provided vector is an array with the right length\n * @param {Matrix} matrix\n * @param {Array|Matrix} vector\n * @return {Array}\n * @throws {RangeError}\n */\nexport function checkColumnVector(matrix, vector) {\n  if (vector.to1DArray) {\n    vector = vector.to1DArray();\n  }\n  if (vector.length !== matrix.rows) {\n    throw new RangeError('vector size must be the same as the number of rows');\n  }\n  return vector;\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (!isAnyArray(rowIndices)) {\n    throw new TypeError('row indices must be an array');\n  }\n\n  for (let i = 0; i < rowIndices.length; i++) {\n    if (rowIndices[i] < 0 || rowIndices[i] >= matrix.rows) {\n      throw new RangeError('row indices are out of range');\n    }\n  }\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (!isAnyArray(columnIndices)) {\n    throw new TypeError('column indices must be an array');\n  }\n\n  for (let i = 0; i < columnIndices.length; i++) {\n    if (columnIndices[i] < 0 || columnIndices[i] >= matrix.columns) {\n      throw new RangeError('column indices are out of range');\n    }\n  }\n}\n\nexport function checkRange(matrix, startRow, endRow, startColumn, endColumn) {\n  if (arguments.length !== 5) {\n    throw new RangeError('expected 4 arguments');\n  }\n  checkNumber('startRow', startRow);\n  checkNumber('endRow', endRow);\n  checkNumber('startColumn', startColumn);\n  checkNumber('endColumn', endColumn);\n  if (\n    startRow > endRow ||\n    startColumn > endColumn ||\n    startRow < 0 ||\n    startRow >= matrix.rows ||\n    endRow < 0 ||\n    endRow >= matrix.rows ||\n    startColumn < 0 ||\n    startColumn >= matrix.columns ||\n    endColumn < 0 ||\n    endColumn >= matrix.columns\n  ) {\n    throw new RangeError('Submatrix indices are out of range');\n  }\n}\n\nexport function newArray(length, value = 0) {\n  let array = [];\n  for (let i = 0; i < length; i++) {\n    array.push(value);\n  }\n  return array;\n}\n\nfunction checkNumber(name, value) {\n  if (typeof value !== 'number') {\n    throw new TypeError(`${name} must be a number`);\n  }\n}\n\nexport function checkNonEmpty(matrix) {\n  if (matrix.isEmpty()) {\n    throw new Error('Empty matrix has no elements to index');\n  }\n}\n","import { newArray } from './util';\n\nexport function sumByRow(matrix) {\n  let sum = newArray(matrix.rows);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumByColumn(matrix) {\n  let sum = newArray(matrix.columns);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] += matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function sumAll(matrix) {\n  let v = 0;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v += matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function productByRow(matrix) {\n  let sum = newArray(matrix.rows, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[i] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productByColumn(matrix) {\n  let sum = newArray(matrix.columns, 1);\n  for (let i = 0; i < matrix.rows; ++i) {\n    for (let j = 0; j < matrix.columns; ++j) {\n      sum[j] *= matrix.get(i, j);\n    }\n  }\n  return sum;\n}\n\nexport function productAll(matrix) {\n  let v = 1;\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      v *= matrix.get(i, j);\n    }\n  }\n  return v;\n}\n\nexport function varianceByRow(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let i = 0; i < rows; i++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean[i];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / cols) / (cols - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / cols) / cols);\n    }\n  }\n  return variance;\n}\n\nexport function varianceByColumn(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const variance = [];\n\n  for (let j = 0; j < cols; j++) {\n    let sum1 = 0;\n    let sum2 = 0;\n    let x = 0;\n    for (let i = 0; i < rows; i++) {\n      x = matrix.get(i, j) - mean[j];\n      sum1 += x;\n      sum2 += x * x;\n    }\n    if (unbiased) {\n      variance.push((sum2 - (sum1 * sum1) / rows) / (rows - 1));\n    } else {\n      variance.push((sum2 - (sum1 * sum1) / rows) / rows);\n    }\n  }\n  return variance;\n}\n\nexport function varianceAll(matrix, unbiased, mean) {\n  const rows = matrix.rows;\n  const cols = matrix.columns;\n  const size = rows * cols;\n\n  let sum1 = 0;\n  let sum2 = 0;\n  let x = 0;\n  for (let i = 0; i < rows; i++) {\n    for (let j = 0; j < cols; j++) {\n      x = matrix.get(i, j) - mean;\n      sum1 += x;\n      sum2 += x * x;\n    }\n  }\n  if (unbiased) {\n    return (sum2 - (sum1 * sum1) / size) / (size - 1);\n  } else {\n    return (sum2 - (sum1 * sum1) / size) / size;\n  }\n}\n\nexport function centerByRow(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[i]);\n    }\n  }\n}\n\nexport function centerByColumn(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean[j]);\n    }\n  }\n}\n\nexport function centerAll(matrix, mean) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) - mean);\n    }\n  }\n}\n\nexport function getScaleByRow(matrix) {\n  const scale = [];\n  for (let i = 0; i < matrix.rows; i++) {\n    let sum = 0;\n    for (let j = 0; j < matrix.columns; j++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.columns - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByRow(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[i]);\n    }\n  }\n}\n\nexport function getScaleByColumn(matrix) {\n  const scale = [];\n  for (let j = 0; j < matrix.columns; j++) {\n    let sum = 0;\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / (matrix.rows - 1);\n    }\n    scale.push(Math.sqrt(sum));\n  }\n  return scale;\n}\n\nexport function scaleByColumn(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale[j]);\n    }\n  }\n}\n\nexport function getScaleAll(matrix) {\n  const divider = matrix.size - 1;\n  let sum = 0;\n  for (let j = 0; j < matrix.columns; j++) {\n    for (let i = 0; i < matrix.rows; i++) {\n      sum += Math.pow(matrix.get(i, j), 2) / divider;\n    }\n  }\n  return Math.sqrt(sum);\n}\n\nexport function scaleAll(matrix, scale) {\n  for (let i = 0; i < matrix.rows; i++) {\n    for (let j = 0; j < matrix.columns; j++) {\n      matrix.set(i, j, matrix.get(i, j) / scale);\n    }\n  }\n}\n","import { isAnyArray } from 'is-any-array';\nimport rescale from 'ml-array-rescale';\n\nimport { inspectMatrix, inspectMatrixWithOptions } from './inspect';\nimport { installMathOperations } from './mathOperations';\nimport {\n  sumByRow,\n  sumByColumn,\n  sumAll,\n  productByRow,\n  productByColumn,\n  productAll,\n  varianceByRow,\n  varianceByColumn,\n  varianceAll,\n  centerByRow,\n  centerByColumn,\n  centerAll,\n  scaleByRow,\n  scaleByColumn,\n  scaleAll,\n  getScaleByRow,\n  getScaleByColumn,\n  getScaleAll,\n} from './stat';\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkNonEmpty,\n  checkRowIndices,\n  checkColumnIndices,\n} from './util';\n\nexport class AbstractMatrix {\n  static from1DArray(newRows, newColumns, newData) {\n    let length = newRows * newColumns;\n    if (length !== newData.length) {\n      throw new RangeError('data length does not match given dimensions');\n    }\n    let newMatrix = new Matrix(newRows, newColumns);\n    for (let row = 0; row < newRows; row++) {\n      for (let column = 0; column < newColumns; column++) {\n        newMatrix.set(row, column, newData[row * newColumns + column]);\n      }\n    }\n    return newMatrix;\n  }\n\n  static rowVector(newData) {\n    let vector = new Matrix(1, newData.length);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(0, i, newData[i]);\n    }\n    return vector;\n  }\n\n  static columnVector(newData) {\n    let vector = new Matrix(newData.length, 1);\n    for (let i = 0; i < newData.length; i++) {\n      vector.set(i, 0, newData[i]);\n    }\n    return vector;\n  }\n\n  static zeros(rows, columns) {\n    return new Matrix(rows, columns);\n  }\n\n  static ones(rows, columns) {\n    return new Matrix(rows, columns).fill(1);\n  }\n\n  static rand(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { random = Math.random } = options;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.set(i, j, random());\n      }\n    }\n    return matrix;\n  }\n\n  static randInt(rows, columns, options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1000, random = Math.random } = options;\n    if (!Number.isInteger(min)) throw new TypeError('min must be an integer');\n    if (!Number.isInteger(max)) throw new TypeError('max must be an integer');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let interval = max - min;\n    let matrix = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        let value = min + Math.round(random() * interval);\n        matrix.set(i, j, value);\n      }\n    }\n    return matrix;\n  }\n\n  static eye(rows, columns, value) {\n    if (columns === undefined) columns = rows;\n    if (value === undefined) value = 1;\n    let min = Math.min(rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, value);\n    }\n    return matrix;\n  }\n\n  static diag(data, rows, columns) {\n    let l = data.length;\n    if (rows === undefined) rows = l;\n    if (columns === undefined) columns = rows;\n    let min = Math.min(l, rows, columns);\n    let matrix = this.zeros(rows, columns);\n    for (let i = 0; i < min; i++) {\n      matrix.set(i, i, data[i]);\n    }\n    return matrix;\n  }\n\n  static min(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.min(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static max(matrix1, matrix2) {\n    matrix1 = this.checkMatrix(matrix1);\n    matrix2 = this.checkMatrix(matrix2);\n    let rows = matrix1.rows;\n    let columns = matrix1.columns;\n    let result = new this(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        result.set(i, j, Math.max(matrix1.get(i, j), matrix2.get(i, j)));\n      }\n    }\n    return result;\n  }\n\n  static checkMatrix(value) {\n    return AbstractMatrix.isMatrix(value) ? value : new Matrix(value);\n  }\n\n  static isMatrix(value) {\n    return value != null && value.klass === 'Matrix';\n  }\n\n  get size() {\n    return this.rows * this.columns;\n  }\n\n  apply(callback) {\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        callback.call(this, i, j);\n      }\n    }\n    return this;\n  }\n\n  to1DArray() {\n    let array = [];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        array.push(this.get(i, j));\n      }\n    }\n    return array;\n  }\n\n  to2DArray() {\n    let copy = [];\n    for (let i = 0; i < this.rows; i++) {\n      copy.push([]);\n      for (let j = 0; j < this.columns; j++) {\n        copy[i].push(this.get(i, j));\n      }\n    }\n    return copy;\n  }\n\n  toJSON() {\n    return this.to2DArray();\n  }\n\n  isRowVector() {\n    return this.rows === 1;\n  }\n\n  isColumnVector() {\n    return this.columns === 1;\n  }\n\n  isVector() {\n    return this.rows === 1 || this.columns === 1;\n  }\n\n  isSquare() {\n    return this.rows === this.columns;\n  }\n\n  isEmpty() {\n    return this.rows === 0 || this.columns === 0;\n  }\n\n  isSymmetric() {\n    if (this.isSquare()) {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j <= i; j++) {\n          if (this.get(i, j) !== this.get(j, i)) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  isEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isEchelonForm = false;\n          checked = true;\n        }\n      }\n      i++;\n    }\n    return isEchelonForm;\n  }\n\n  isReducedEchelonForm() {\n    let i = 0;\n    let j = 0;\n    let previousColumn = -1;\n    let isReducedEchelonForm = true;\n    let checked = false;\n    while (i < this.rows && isReducedEchelonForm) {\n      j = 0;\n      checked = false;\n      while (j < this.columns && checked === false) {\n        if (this.get(i, j) === 0) {\n          j++;\n        } else if (this.get(i, j) === 1 && j > previousColumn) {\n          checked = true;\n          previousColumn = j;\n        } else {\n          isReducedEchelonForm = false;\n          checked = true;\n        }\n      }\n      for (let k = j + 1; k < this.rows; k++) {\n        if (this.get(i, k) !== 0) {\n          isReducedEchelonForm = false;\n        }\n      }\n      i++;\n    }\n    return isReducedEchelonForm;\n  }\n\n  echelonForm() {\n    let result = this.clone();\n    let h = 0;\n    let k = 0;\n    while (h < result.rows && k < result.columns) {\n      let iMax = h;\n      for (let i = h; i < result.rows; i++) {\n        if (result.get(i, k) > result.get(iMax, k)) {\n          iMax = i;\n        }\n      }\n      if (result.get(iMax, k) === 0) {\n        k++;\n      } else {\n        result.swapRows(h, iMax);\n        let tmp = result.get(h, k);\n        for (let j = k; j < result.columns; j++) {\n          result.set(h, j, result.get(h, j) / tmp);\n        }\n        for (let i = h + 1; i < result.rows; i++) {\n          let factor = result.get(i, k) / result.get(h, k);\n          result.set(i, k, 0);\n          for (let j = k + 1; j < result.columns; j++) {\n            result.set(i, j, result.get(i, j) - result.get(h, j) * factor);\n          }\n        }\n        h++;\n        k++;\n      }\n    }\n    return result;\n  }\n\n  reducedEchelonForm() {\n    let result = this.echelonForm();\n    let m = result.columns;\n    let n = result.rows;\n    let h = n - 1;\n    while (h >= 0) {\n      if (result.maxRow(h) === 0) {\n        h--;\n      } else {\n        let p = 0;\n        let pivot = false;\n        while (p < n && pivot === false) {\n          if (result.get(h, p) === 1) {\n            pivot = true;\n          } else {\n            p++;\n          }\n        }\n        for (let i = 0; i < h; i++) {\n          let factor = result.get(i, p);\n          for (let j = p; j < m; j++) {\n            let tmp = result.get(i, j) - factor * result.get(h, j);\n            result.set(i, j, tmp);\n          }\n        }\n        h--;\n      }\n    }\n    return result;\n  }\n\n  set() {\n    throw new Error('set method is unimplemented');\n  }\n\n  get() {\n    throw new Error('get method is unimplemented');\n  }\n\n  repeat(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { rows = 1, columns = 1 } = options;\n    if (!Number.isInteger(rows) || rows <= 0) {\n      throw new TypeError('rows must be a positive integer');\n    }\n    if (!Number.isInteger(columns) || columns <= 0) {\n      throw new TypeError('columns must be a positive integer');\n    }\n    let matrix = new Matrix(this.rows * rows, this.columns * columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        matrix.setSubMatrix(this, this.rows * i, this.columns * j);\n      }\n    }\n    return matrix;\n  }\n\n  fill(value) {\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, value);\n      }\n    }\n    return this;\n  }\n\n  neg() {\n    return this.mulS(-1);\n  }\n\n  getRow(index) {\n    checkRowIndex(this, index);\n    let row = [];\n    for (let i = 0; i < this.columns; i++) {\n      row.push(this.get(index, i));\n    }\n    return row;\n  }\n\n  getRowVector(index) {\n    return Matrix.rowVector(this.getRow(index));\n  }\n\n  setRow(index, array) {\n    checkRowIndex(this, index);\n    array = checkRowVector(this, array);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, array[i]);\n    }\n    return this;\n  }\n\n  swapRows(row1, row2) {\n    checkRowIndex(this, row1);\n    checkRowIndex(this, row2);\n    for (let i = 0; i < this.columns; i++) {\n      let temp = this.get(row1, i);\n      this.set(row1, i, this.get(row2, i));\n      this.set(row2, i, temp);\n    }\n    return this;\n  }\n\n  getColumn(index) {\n    checkColumnIndex(this, index);\n    let column = [];\n    for (let i = 0; i < this.rows; i++) {\n      column.push(this.get(i, index));\n    }\n    return column;\n  }\n\n  getColumnVector(index) {\n    return Matrix.columnVector(this.getColumn(index));\n  }\n\n  setColumn(index, array) {\n    checkColumnIndex(this, index);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, array[i]);\n    }\n    return this;\n  }\n\n  swapColumns(column1, column2) {\n    checkColumnIndex(this, column1);\n    checkColumnIndex(this, column2);\n    for (let i = 0; i < this.rows; i++) {\n      let temp = this.get(i, column1);\n      this.set(i, column1, this.get(i, column2));\n      this.set(i, column2, temp);\n    }\n    return this;\n  }\n\n  addRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[j]);\n      }\n    }\n    return this;\n  }\n\n  subRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[j]);\n      }\n    }\n    return this;\n  }\n\n  mulRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[j]);\n      }\n    }\n    return this;\n  }\n\n  divRowVector(vector) {\n    vector = checkRowVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[j]);\n      }\n    }\n    return this;\n  }\n\n  addColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) + vector[i]);\n      }\n    }\n    return this;\n  }\n\n  subColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) - vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) * vector[i]);\n      }\n    }\n    return this;\n  }\n\n  divColumnVector(vector) {\n    vector = checkColumnVector(this, vector);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        this.set(i, j, this.get(i, j) / vector[i]);\n      }\n    }\n    return this;\n  }\n\n  mulRow(index, value) {\n    checkRowIndex(this, index);\n    for (let i = 0; i < this.columns; i++) {\n      this.set(index, i, this.get(index, i) * value);\n    }\n    return this;\n  }\n\n  mulColumn(index, value) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      this.set(i, index, this.get(i, index) * value);\n    }\n    return this;\n  }\n\n  max(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    switch (by) {\n      case 'row': {\n        const max = new Array(this.rows).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[row]) {\n              max[row] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case 'column': {\n        const max = new Array(this.columns).fill(Number.NEGATIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max[column]) {\n              max[column] = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      case undefined: {\n        let max = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) > max) {\n              max = this.get(row, column);\n            }\n          }\n        }\n        return max;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  maxIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) > v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  min(by) {\n    if (this.isEmpty()) {\n      return NaN;\n    }\n\n    switch (by) {\n      case 'row': {\n        const min = new Array(this.rows).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[row]) {\n              min[row] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case 'column': {\n        const min = new Array(this.columns).fill(Number.POSITIVE_INFINITY);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min[column]) {\n              min[column] = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      case undefined: {\n        let min = this.get(0, 0);\n        for (let row = 0; row < this.rows; row++) {\n          for (let column = 0; column < this.columns; column++) {\n            if (this.get(row, column) < min) {\n              min = this.get(row, column);\n            }\n          }\n        }\n        return min;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  minIndex() {\n    checkNonEmpty(this);\n    let v = this.get(0, 0);\n    let idx = [0, 0];\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        if (this.get(i, j) < v) {\n          v = this.get(i, j);\n          idx[0] = i;\n          idx[1] = j;\n        }\n      }\n    }\n    return idx;\n  }\n\n  maxRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  maxRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) > v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  minRow(row) {\n    checkRowIndex(this, row);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(row, 0);\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n      }\n    }\n    return v;\n  }\n\n  minRowIndex(row) {\n    checkRowIndex(this, row);\n    checkNonEmpty(this);\n    let v = this.get(row, 0);\n    let idx = [row, 0];\n    for (let i = 1; i < this.columns; i++) {\n      if (this.get(row, i) < v) {\n        v = this.get(row, i);\n        idx[1] = i;\n      }\n    }\n    return idx;\n  }\n\n  maxColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  maxColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) > v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  minColumn(column) {\n    checkColumnIndex(this, column);\n    if (this.isEmpty()) {\n      return NaN;\n    }\n    let v = this.get(0, column);\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n      }\n    }\n    return v;\n  }\n\n  minColumnIndex(column) {\n    checkColumnIndex(this, column);\n    checkNonEmpty(this);\n    let v = this.get(0, column);\n    let idx = [0, column];\n    for (let i = 1; i < this.rows; i++) {\n      if (this.get(i, column) < v) {\n        v = this.get(i, column);\n        idx[0] = i;\n      }\n    }\n    return idx;\n  }\n\n  diag() {\n    let min = Math.min(this.rows, this.columns);\n    let diag = [];\n    for (let i = 0; i < min; i++) {\n      diag.push(this.get(i, i));\n    }\n    return diag;\n  }\n\n  norm(type = 'frobenius') {\n    let result = 0;\n    if (type === 'max') {\n      return this.max();\n    } else if (type === 'frobenius') {\n      for (let i = 0; i < this.rows; i++) {\n        for (let j = 0; j < this.columns; j++) {\n          result = result + this.get(i, j) * this.get(i, j);\n        }\n      }\n      return Math.sqrt(result);\n    } else {\n      throw new RangeError(`unknown norm type: ${type}`);\n    }\n  }\n\n  cumulativeSum() {\n    let sum = 0;\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        sum += this.get(i, j);\n        this.set(i, j, sum);\n      }\n    }\n    return this;\n  }\n\n  dot(vector2) {\n    if (AbstractMatrix.isMatrix(vector2)) vector2 = vector2.to1DArray();\n    let vector1 = this.to1DArray();\n    if (vector1.length !== vector2.length) {\n      throw new RangeError('vectors do not have the same size');\n    }\n    let dot = 0;\n    for (let i = 0; i < vector1.length; i++) {\n      dot += vector1[i] * vector2[i];\n    }\n    return dot;\n  }\n\n  mmul(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.columns;\n\n    let result = new Matrix(m, p);\n\n    let Bcolj = new Float64Array(n);\n    for (let j = 0; j < p; j++) {\n      for (let k = 0; k < n; k++) {\n        Bcolj[k] = other.get(k, j);\n      }\n\n      for (let i = 0; i < m; i++) {\n        let s = 0;\n        for (let k = 0; k < n; k++) {\n          s += this.get(i, k) * Bcolj[k];\n        }\n\n        result.set(i, j, s);\n      }\n    }\n    return result;\n  }\n\n  strassen2x2(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(2, 2);\n    const a11 = this.get(0, 0);\n    const b11 = other.get(0, 0);\n    const a12 = this.get(0, 1);\n    const b12 = other.get(0, 1);\n    const a21 = this.get(1, 0);\n    const b21 = other.get(1, 0);\n    const a22 = this.get(1, 1);\n    const b22 = other.get(1, 1);\n\n    // Compute intermediate values.\n    const m1 = (a11 + a22) * (b11 + b22);\n    const m2 = (a21 + a22) * b11;\n    const m3 = a11 * (b12 - b22);\n    const m4 = a22 * (b21 - b11);\n    const m5 = (a11 + a12) * b22;\n    const m6 = (a21 - a11) * (b11 + b12);\n    const m7 = (a12 - a22) * (b21 + b22);\n\n    // Combine intermediate values into the output.\n    const c00 = m1 + m4 - m5 + m7;\n    const c01 = m3 + m5;\n    const c10 = m2 + m4;\n    const c11 = m1 - m2 + m3 + m6;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    return result;\n  }\n\n  strassen3x3(other) {\n    other = Matrix.checkMatrix(other);\n    let result = new Matrix(3, 3);\n\n    const a00 = this.get(0, 0);\n    const a01 = this.get(0, 1);\n    const a02 = this.get(0, 2);\n    const a10 = this.get(1, 0);\n    const a11 = this.get(1, 1);\n    const a12 = this.get(1, 2);\n    const a20 = this.get(2, 0);\n    const a21 = this.get(2, 1);\n    const a22 = this.get(2, 2);\n\n    const b00 = other.get(0, 0);\n    const b01 = other.get(0, 1);\n    const b02 = other.get(0, 2);\n    const b10 = other.get(1, 0);\n    const b11 = other.get(1, 1);\n    const b12 = other.get(1, 2);\n    const b20 = other.get(2, 0);\n    const b21 = other.get(2, 1);\n    const b22 = other.get(2, 2);\n\n    const m1 = (a00 + a01 + a02 - a10 - a11 - a21 - a22) * b11;\n    const m2 = (a00 - a10) * (-b01 + b11);\n    const m3 = a11 * (-b00 + b01 + b10 - b11 - b12 - b20 + b22);\n    const m4 = (-a00 + a10 + a11) * (b00 - b01 + b11);\n    const m5 = (a10 + a11) * (-b00 + b01);\n    const m6 = a00 * b00;\n    const m7 = (-a00 + a20 + a21) * (b00 - b02 + b12);\n    const m8 = (-a00 + a20) * (b02 - b12);\n    const m9 = (a20 + a21) * (-b00 + b02);\n    const m10 = (a00 + a01 + a02 - a11 - a12 - a20 - a21) * b12;\n    const m11 = a21 * (-b00 + b02 + b10 - b11 - b12 - b20 + b21);\n    const m12 = (-a02 + a21 + a22) * (b11 + b20 - b21);\n    const m13 = (a02 - a22) * (b11 - b21);\n    const m14 = a02 * b20;\n    const m15 = (a21 + a22) * (-b20 + b21);\n    const m16 = (-a02 + a11 + a12) * (b12 + b20 - b22);\n    const m17 = (a02 - a12) * (b12 - b22);\n    const m18 = (a11 + a12) * (-b20 + b22);\n    const m19 = a01 * b10;\n    const m20 = a12 * b21;\n    const m21 = a10 * b02;\n    const m22 = a20 * b01;\n    const m23 = a22 * b22;\n\n    const c00 = m6 + m14 + m19;\n    const c01 = m1 + m4 + m5 + m6 + m12 + m14 + m15;\n    const c02 = m6 + m7 + m9 + m10 + m14 + m16 + m18;\n    const c10 = m2 + m3 + m4 + m6 + m14 + m16 + m17;\n    const c11 = m2 + m4 + m5 + m6 + m20;\n    const c12 = m14 + m16 + m17 + m18 + m21;\n    const c20 = m6 + m7 + m8 + m11 + m12 + m13 + m14;\n    const c21 = m12 + m13 + m14 + m15 + m22;\n    const c22 = m6 + m7 + m8 + m9 + m23;\n\n    result.set(0, 0, c00);\n    result.set(0, 1, c01);\n    result.set(0, 2, c02);\n    result.set(1, 0, c10);\n    result.set(1, 1, c11);\n    result.set(1, 2, c12);\n    result.set(2, 0, c20);\n    result.set(2, 1, c21);\n    result.set(2, 2, c22);\n    return result;\n  }\n\n  mmulStrassen(y) {\n    y = Matrix.checkMatrix(y);\n    let x = this.clone();\n    let r1 = x.rows;\n    let c1 = x.columns;\n    let r2 = y.rows;\n    let c2 = y.columns;\n    if (c1 !== r2) {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `Multiplying ${r1} x ${c1} and ${r2} x ${c2} matrix: dimensions do not match.`,\n      );\n    }\n\n    // Put a matrix into the top left of a matrix of zeros.\n    // `rows` and `cols` are the dimensions of the output matrix.\n    function embed(mat, rows, cols) {\n      let r = mat.rows;\n      let c = mat.columns;\n      if (r === rows && c === cols) {\n        return mat;\n      } else {\n        let resultat = AbstractMatrix.zeros(rows, cols);\n        resultat = resultat.setSubMatrix(mat, 0, 0);\n        return resultat;\n      }\n    }\n\n    // Make sure both matrices are the same size.\n    // This is exclusively for simplicity:\n    // this algorithm can be implemented with matrices of different sizes.\n\n    let r = Math.max(r1, r2);\n    let c = Math.max(c1, c2);\n    x = embed(x, r, c);\n    y = embed(y, r, c);\n\n    // Our recursive multiplication function.\n    function blockMult(a, b, rows, cols) {\n      // For small matrices, resort to naive multiplication.\n      if (rows <= 512 || cols <= 512) {\n        return a.mmul(b); // a is equivalent to this\n      }\n\n      // Apply dynamic padding.\n      if (rows % 2 === 1 && cols % 2 === 1) {\n        a = embed(a, rows + 1, cols + 1);\n        b = embed(b, rows + 1, cols + 1);\n      } else if (rows % 2 === 1) {\n        a = embed(a, rows + 1, cols);\n        b = embed(b, rows + 1, cols);\n      } else if (cols % 2 === 1) {\n        a = embed(a, rows, cols + 1);\n        b = embed(b, rows, cols + 1);\n      }\n\n      let halfRows = parseInt(a.rows / 2, 10);\n      let halfCols = parseInt(a.columns / 2, 10);\n      // Subdivide input matrices.\n      let a11 = a.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n      let b11 = b.subMatrix(0, halfRows - 1, 0, halfCols - 1);\n\n      let a12 = a.subMatrix(0, halfRows - 1, halfCols, a.columns - 1);\n      let b12 = b.subMatrix(0, halfRows - 1, halfCols, b.columns - 1);\n\n      let a21 = a.subMatrix(halfRows, a.rows - 1, 0, halfCols - 1);\n      let b21 = b.subMatrix(halfRows, b.rows - 1, 0, halfCols - 1);\n\n      let a22 = a.subMatrix(halfRows, a.rows - 1, halfCols, a.columns - 1);\n      let b22 = b.subMatrix(halfRows, b.rows - 1, halfCols, b.columns - 1);\n\n      // Compute intermediate values.\n      let m1 = blockMult(\n        AbstractMatrix.add(a11, a22),\n        AbstractMatrix.add(b11, b22),\n        halfRows,\n        halfCols,\n      );\n      let m2 = blockMult(AbstractMatrix.add(a21, a22), b11, halfRows, halfCols);\n      let m3 = blockMult(a11, AbstractMatrix.sub(b12, b22), halfRows, halfCols);\n      let m4 = blockMult(a22, AbstractMatrix.sub(b21, b11), halfRows, halfCols);\n      let m5 = blockMult(AbstractMatrix.add(a11, a12), b22, halfRows, halfCols);\n      let m6 = blockMult(\n        AbstractMatrix.sub(a21, a11),\n        AbstractMatrix.add(b11, b12),\n        halfRows,\n        halfCols,\n      );\n      let m7 = blockMult(\n        AbstractMatrix.sub(a12, a22),\n        AbstractMatrix.add(b21, b22),\n        halfRows,\n        halfCols,\n      );\n\n      // Combine intermediate values into the output.\n      let c11 = AbstractMatrix.add(m1, m4);\n      c11.sub(m5);\n      c11.add(m7);\n      let c12 = AbstractMatrix.add(m3, m5);\n      let c21 = AbstractMatrix.add(m2, m4);\n      let c22 = AbstractMatrix.sub(m1, m2);\n      c22.add(m3);\n      c22.add(m6);\n\n      // Crop output to the desired size (undo dynamic padding).\n      let resultat = AbstractMatrix.zeros(2 * c11.rows, 2 * c11.columns);\n      resultat = resultat.setSubMatrix(c11, 0, 0);\n      resultat = resultat.setSubMatrix(c12, c11.rows, 0);\n      resultat = resultat.setSubMatrix(c21, 0, c11.columns);\n      resultat = resultat.setSubMatrix(c22, c11.rows, c11.columns);\n      return resultat.subMatrix(0, rows - 1, 0, cols - 1);\n    }\n\n    return blockMult(x, y, r, c);\n  }\n\n  scaleRows(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.rows; i++) {\n      const row = this.getRow(i);\n      if (row.length > 0) {\n        rescale(row, { min, max, output: row });\n      }\n      newMatrix.setRow(i, row);\n    }\n    return newMatrix;\n  }\n\n  scaleColumns(options = {}) {\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { min = 0, max = 1 } = options;\n    if (!Number.isFinite(min)) throw new TypeError('min must be a number');\n    if (!Number.isFinite(max)) throw new TypeError('max must be a number');\n    if (min >= max) throw new RangeError('min must be smaller than max');\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let i = 0; i < this.columns; i++) {\n      const column = this.getColumn(i);\n      if (column.length) {\n        rescale(column, {\n          min: min,\n          max: max,\n          output: column,\n        });\n      }\n      newMatrix.setColumn(i, column);\n    }\n    return newMatrix;\n  }\n\n  flipRows() {\n    const middle = Math.ceil(this.columns / 2);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < middle; j++) {\n        let first = this.get(i, j);\n        let last = this.get(i, this.columns - 1 - j);\n        this.set(i, j, last);\n        this.set(i, this.columns - 1 - j, first);\n      }\n    }\n    return this;\n  }\n\n  flipColumns() {\n    const middle = Math.ceil(this.rows / 2);\n    for (let j = 0; j < this.columns; j++) {\n      for (let i = 0; i < middle; i++) {\n        let first = this.get(i, j);\n        let last = this.get(this.rows - 1 - i, j);\n        this.set(i, j, last);\n        this.set(this.rows - 1 - i, j, first);\n      }\n    }\n    return this;\n  }\n\n  kroneckerProduct(other) {\n    other = Matrix.checkMatrix(other);\n\n    let m = this.rows;\n    let n = this.columns;\n    let p = other.rows;\n    let q = other.columns;\n\n    let result = new Matrix(m * p, n * q);\n    for (let i = 0; i < m; i++) {\n      for (let j = 0; j < n; j++) {\n        for (let k = 0; k < p; k++) {\n          for (let l = 0; l < q; l++) {\n            result.set(p * i + k, q * j + l, this.get(i, j) * other.get(k, l));\n          }\n        }\n      }\n    }\n    return result;\n  }\n\n  kroneckerSum(other) {\n    other = Matrix.checkMatrix(other);\n    if (!this.isSquare() || !other.isSquare()) {\n      throw new Error('Kronecker Sum needs two Square Matrices');\n    }\n    let m = this.rows;\n    let n = other.rows;\n    let AxI = this.kroneckerProduct(Matrix.eye(n, n));\n    let IxB = Matrix.eye(m, m).kroneckerProduct(other);\n    return AxI.add(IxB);\n  }\n\n  transpose() {\n    let result = new Matrix(this.columns, this.rows);\n    for (let i = 0; i < this.rows; i++) {\n      for (let j = 0; j < this.columns; j++) {\n        result.set(j, i, this.get(i, j));\n      }\n    }\n    return result;\n  }\n\n  sortRows(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.rows; i++) {\n      this.setRow(i, this.getRow(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  sortColumns(compareFunction = compareNumbers) {\n    for (let i = 0; i < this.columns; i++) {\n      this.setColumn(i, this.getColumn(i).sort(compareFunction));\n    }\n    return this;\n  }\n\n  subMatrix(startRow, endRow, startColumn, endColumn) {\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    let newMatrix = new Matrix(\n      endRow - startRow + 1,\n      endColumn - startColumn + 1,\n    );\n    for (let i = startRow; i <= endRow; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        newMatrix.set(i - startRow, j - startColumn, this.get(i, j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixRow(indices, startColumn, endColumn) {\n    if (startColumn === undefined) startColumn = 0;\n    if (endColumn === undefined) endColumn = this.columns - 1;\n    if (\n      startColumn > endColumn ||\n      startColumn < 0 ||\n      startColumn >= this.columns ||\n      endColumn < 0 ||\n      endColumn >= this.columns\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(indices.length, endColumn - startColumn + 1);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startColumn; j <= endColumn; j++) {\n        if (indices[i] < 0 || indices[i] >= this.rows) {\n          throw new RangeError(`Row index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(i, j - startColumn, this.get(indices[i], j));\n      }\n    }\n    return newMatrix;\n  }\n\n  subMatrixColumn(indices, startRow, endRow) {\n    if (startRow === undefined) startRow = 0;\n    if (endRow === undefined) endRow = this.rows - 1;\n    if (\n      startRow > endRow ||\n      startRow < 0 ||\n      startRow >= this.rows ||\n      endRow < 0 ||\n      endRow >= this.rows\n    ) {\n      throw new RangeError('Argument out of range');\n    }\n\n    let newMatrix = new Matrix(endRow - startRow + 1, indices.length);\n    for (let i = 0; i < indices.length; i++) {\n      for (let j = startRow; j <= endRow; j++) {\n        if (indices[i] < 0 || indices[i] >= this.columns) {\n          throw new RangeError(`Column index out of range: ${indices[i]}`);\n        }\n        newMatrix.set(j - startRow, i, this.get(j, indices[i]));\n      }\n    }\n    return newMatrix;\n  }\n\n  setSubMatrix(matrix, startRow, startColumn) {\n    matrix = Matrix.checkMatrix(matrix);\n    if (matrix.isEmpty()) {\n      return this;\n    }\n    let endRow = startRow + matrix.rows - 1;\n    let endColumn = startColumn + matrix.columns - 1;\n    checkRange(this, startRow, endRow, startColumn, endColumn);\n    for (let i = 0; i < matrix.rows; i++) {\n      for (let j = 0; j < matrix.columns; j++) {\n        this.set(startRow + i, startColumn + j, matrix.get(i, j));\n      }\n    }\n    return this;\n  }\n\n  selection(rowIndices, columnIndices) {\n    checkRowIndices(this, rowIndices);\n    checkColumnIndices(this, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < rowIndices.length; i++) {\n      let rowIndex = rowIndices[i];\n      for (let j = 0; j < columnIndices.length; j++) {\n        let columnIndex = columnIndices[j];\n        newMatrix.set(i, j, this.get(rowIndex, columnIndex));\n      }\n    }\n    return newMatrix;\n  }\n\n  trace() {\n    let min = Math.min(this.rows, this.columns);\n    let trace = 0;\n    for (let i = 0; i < min; i++) {\n      trace += this.get(i, i);\n    }\n    return trace;\n  }\n\n  clone() {\n    let newMatrix = new Matrix(this.rows, this.columns);\n    for (let row = 0; row < this.rows; row++) {\n      for (let column = 0; column < this.columns; column++) {\n        newMatrix.set(row, column, this.get(row, column));\n      }\n    }\n    return newMatrix;\n  }\n\n  sum(by) {\n    switch (by) {\n      case 'row':\n        return sumByRow(this);\n      case 'column':\n        return sumByColumn(this);\n      case undefined:\n        return sumAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  product(by) {\n    switch (by) {\n      case 'row':\n        return productByRow(this);\n      case 'column':\n        return productByColumn(this);\n      case undefined:\n        return productAll(this);\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  mean(by) {\n    const sum = this.sum(by);\n    switch (by) {\n      case 'row': {\n        for (let i = 0; i < this.rows; i++) {\n          sum[i] /= this.columns;\n        }\n        return sum;\n      }\n      case 'column': {\n        for (let i = 0; i < this.columns; i++) {\n          sum[i] /= this.rows;\n        }\n        return sum;\n      }\n      case undefined:\n        return sum / this.size;\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  variance(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { unbiased = true, mean = this.mean(by) } = options;\n    if (typeof unbiased !== 'boolean') {\n      throw new TypeError('unbiased must be a boolean');\n    }\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!isAnyArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByColumn(this, unbiased, mean);\n      }\n      case undefined: {\n        if (typeof mean !== 'number') {\n          throw new TypeError('mean must be a number');\n        }\n        return varianceAll(this, unbiased, mean);\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  standardDeviation(by, options) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    const variance = this.variance(by, options);\n    if (by === undefined) {\n      return Math.sqrt(variance);\n    } else {\n      for (let i = 0; i < variance.length; i++) {\n        variance[i] = Math.sqrt(variance[i]);\n      }\n      return variance;\n    }\n  }\n\n  center(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    const { center = this.mean(by) } = options;\n    switch (by) {\n      case 'row': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!isAnyArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByColumn(this, center);\n        return this;\n      }\n      case undefined: {\n        if (typeof center !== 'number') {\n          throw new TypeError('center must be a number');\n        }\n        centerAll(this, center);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  scale(by, options = {}) {\n    if (typeof by === 'object') {\n      options = by;\n      by = undefined;\n    }\n    if (typeof options !== 'object') {\n      throw new TypeError('options must be an object');\n    }\n    let scale = options.scale;\n    switch (by) {\n      case 'row': {\n        if (scale === undefined) {\n          scale = getScaleByRow(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByRow(this, scale);\n        return this;\n      }\n      case 'column': {\n        if (scale === undefined) {\n          scale = getScaleByColumn(this);\n        } else if (!isAnyArray(scale)) {\n          throw new TypeError('scale must be an array');\n        }\n        scaleByColumn(this, scale);\n        return this;\n      }\n      case undefined: {\n        if (scale === undefined) {\n          scale = getScaleAll(this);\n        } else if (typeof scale !== 'number') {\n          throw new TypeError('scale must be a number');\n        }\n        scaleAll(this, scale);\n        return this;\n      }\n      default:\n        throw new Error(`invalid option: ${by}`);\n    }\n  }\n\n  toString(options) {\n    return inspectMatrixWithOptions(this, options);\n  }\n}\n\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[Symbol.for('nodejs.util.inspect.custom')] =\n    inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      // eslint-disable-next-line no-constructor-return\n      return nRows.clone();\n    } else if (Number.isInteger(nRows) && nRows >= 0) {\n      // Create an empty matrix\n      this.data = [];\n      if (Number.isInteger(nColumns) && nColumns >= 0) {\n        for (let i = 0; i < nRows; i++) {\n          this.data.push(new Float64Array(nColumns));\n        }\n      } else {\n        throw new TypeError('nColumns must be a positive integer');\n      }\n    } else if (isAnyArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = nRows ? arrayData[0].length : 0;\n      if (typeof nColumns !== 'number') {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n\n  removeRow(index) {\n    checkRowIndex(this, index);\n    this.data.splice(index, 1);\n    this.rows -= 1;\n    return this;\n  }\n\n  addRow(index, array) {\n    if (array === undefined) {\n      array = index;\n      index = this.rows;\n    }\n    checkRowIndex(this, index, true);\n    array = Float64Array.from(checkRowVector(this, array));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    if (value.isEmpty()) {\n      throw new Error('Matrix must be non-empty');\n    }\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          iter = iter + 1;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","/**\n * This function returns the sumOfShapes function\n * This function gives sumOfShapes access to the peak list and the associated data\n * @param parameters - parameters\n */\nexport function getSumOfShapes(internalPeaks) {\n    return function sumOfShapes(parameters) {\n        return (x) => {\n            let totalY = 0;\n            for (const peak of internalPeaks) {\n                const peakX = parameters[peak.fromIndex];\n                const y = parameters[peak.fromIndex + 1];\n                for (let i = 2; i <= peak.toIndex; i++) {\n                    //@ts-expect-error Not simply to solve the issue\n                    peak.shapeFct[peak.parameters[i]] = parameters[peak.fromIndex + i];\n                }\n                totalY += y * peak.shapeFct.fct(x - peakX);\n            }\n            return totalY;\n        };\n    };\n}\n//# sourceMappingURL=getSumOfShapes.js.map","export const GAUSSIAN_EXP_FACTOR = -4 * Math.LN2;\nexport const ROOT_PI_OVER_LN2 = Math.sqrt(Math.PI / Math.LN2);\nexport const ROOT_THREE = Math.sqrt(3);\nexport const ROOT_2LN2 = Math.sqrt(2 * Math.LN2);\nexport const ROOT_2LN2_MINUS_ONE = Math.sqrt(2 * Math.LN2) - 1;\n//# sourceMappingURL=constants.js.map","// https://en.wikipedia.org/wiki/Error_function#Inverse_functions\n// This code yields to a good approximation\n// If needed a better implementation using polynomial can be found on https://en.wikipedia.org/wiki/Error_function#Inverse_functions\nexport default function erfinv(x) {\n    let a = 0.147;\n    if (x === 0)\n        return 0;\n    let ln1MinusXSqrd = Math.log(1 - x * x);\n    let lnEtcBy2Plus2 = ln1MinusXSqrd / 2 + 2 / (Math.PI * a);\n    let firstSqrt = Math.sqrt(lnEtcBy2Plus2 ** 2 - ln1MinusXSqrd / a);\n    let secondSqrt = Math.sqrt(firstSqrt - lnEtcBy2Plus2);\n    return secondSqrt * (x > 0 ? 1 : -1);\n}\n//# sourceMappingURL=erfinv.js.map","import { ROOT_2LN2, GAUSSIAN_EXP_FACTOR, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport erfinv from '../../../util/erfinv';\nexport class Gaussian {\n    constructor(options = {}) {\n        const { fwhm = 500, sd } = options;\n        this.fwhm = sd ? gaussianWidthToFWHM(2 * sd) : fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return gaussianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return gaussianWidthToFWHM(width);\n    }\n    fct(x) {\n        return gaussianFct(x, this.fwhm);\n    }\n    getArea(height = calculateGaussianHeight({ fwhm: this.fwhm })) {\n        return getGaussianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getGaussianFactor(area);\n    }\n    getData(options = {}) {\n        return getGaussianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateGaussianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport function calculateGaussianHeight(options) {\n    let { fwhm = 500, area = 1, sd } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (2 * area) / ROOT_PI_OVER_LN2 / fwhm;\n}\nexport function gaussianFct(x, fwhm) {\n    return Math.exp(GAUSSIAN_EXP_FACTOR * Math.pow(x / fwhm, 2));\n}\nexport function gaussianWidthToFWHM(width) {\n    return width * ROOT_2LN2;\n}\nexport function gaussianFwhmToWidth(fwhm) {\n    return fwhm / ROOT_2LN2;\n}\nexport function getGaussianArea(options) {\n    let { fwhm = 500, sd, height = 1 } = options;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    return (height * ROOT_PI_OVER_LN2 * fwhm) / 2;\n}\nexport function getGaussianFactor(area = 0.9999) {\n    return Math.sqrt(2) * erfinv(area);\n}\nexport function getGaussianData(shape = {}, options = {}) {\n    let { fwhm = 500, sd } = shape;\n    if (sd)\n        fwhm = gaussianWidthToFWHM(2 * sd);\n    let { length, factor = getGaussianFactor(), height = calculateGaussianHeight({ fwhm }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = gaussianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n}\n//# sourceMappingURL=Gaussian.js.map","import { ROOT_THREE } from '../../../util/constants';\nexport class Lorentzian {\n    constructor(options = {}) {\n        const { fwhm = 500 } = options;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm) {\n        return lorentzianFwhmToWidth(fwhm);\n    }\n    widthToFWHM(width) {\n        return lorentzianWidthToFWHM(width);\n    }\n    fct(x) {\n        return lorentzianFct(x, this.fwhm);\n    }\n    getArea(height = 1) {\n        return getLorentzianArea({ fwhm: this.fwhm, height });\n    }\n    getFactor(area) {\n        return getLorentzianFactor(area);\n    }\n    getData(options = {}) {\n        return getLorentzianData(this, options);\n    }\n    calculateHeight(area = 1) {\n        return calculateLorentzianHeight({ fwhm: this.fwhm, area });\n    }\n    getParameters() {\n        return ['fwhm'];\n    }\n}\nexport const calculateLorentzianHeight = ({ fwhm = 1, area = 1 }) => {\n    return (2 * area) / Math.PI / fwhm;\n};\nexport const lorentzianFct = (x, fwhm) => {\n    return Math.pow(fwhm, 2) / (4 * Math.pow(x, 2) + Math.pow(fwhm, 2));\n};\nexport const lorentzianWidthToFWHM = (width) => {\n    return width * ROOT_THREE;\n};\nexport const lorentzianFwhmToWidth = (fwhm) => {\n    return fwhm / ROOT_THREE;\n};\nexport const getLorentzianArea = (options) => {\n    const { fwhm = 500, height = 1 } = options;\n    return (height * Math.PI * fwhm) / 2;\n};\nexport const getLorentzianFactor = (area = 0.9999) => {\n    return 2 * Math.tan(Math.PI * (area - 0.5));\n};\nexport const getLorentzianData = (shape = {}, options = {}) => {\n    let { fwhm = 500 } = shape;\n    let { length, factor = getLorentzianFactor(), height = calculateLorentzianHeight({ fwhm, area: 1 }), } = options;\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = lorentzianFct(i - center, fwhm) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=Lorentzian.js.map","import { GAUSSIAN_EXP_FACTOR, ROOT_2LN2_MINUS_ONE, ROOT_PI_OVER_LN2, } from '../../../util/constants';\nimport { gaussianFct, getGaussianFactor } from '../gaussian/Gaussian';\nimport { lorentzianFct, getLorentzianFactor } from '../lorentzian/Lorentzian';\nexport class PseudoVoigt {\n    constructor(options = {}) {\n        const { fwhm = 500, mu = 0.5 } = options;\n        this.mu = mu;\n        this.fwhm = fwhm;\n    }\n    fwhmToWidth(fwhm = this.fwhm, mu = this.mu) {\n        return pseudoVoigtFwhmToWidth(fwhm, mu);\n    }\n    widthToFWHM(width, mu = this.mu) {\n        return pseudoVoigtWidthToFWHM(width, mu);\n    }\n    fct(x) {\n        return pseudoVoigtFct(x, this.fwhm, this.mu);\n    }\n    getArea(height = 1) {\n        return getPseudoVoigtArea({ fwhm: this.fwhm, height, mu: this.mu });\n    }\n    getFactor(area) {\n        return getPseudoVoigtFactor(area);\n    }\n    getData(options = {}) {\n        const { length, factor, height = calculatePseudoVoigtHeight({\n            fwhm: this.fwhm,\n            mu: this.mu,\n            area: 1,\n        }), } = options;\n        return getPseudoVoigtData(this, { factor, length, height });\n    }\n    calculateHeight(area = 1) {\n        return calculatePseudoVoigtHeight({ fwhm: this.fwhm, mu: this.mu, area });\n    }\n    getParameters() {\n        return ['fwhm', 'mu'];\n    }\n}\nexport const calculatePseudoVoigtHeight = (options = {}) => {\n    let { fwhm = 1, mu = 0.5, area = 1 } = options;\n    return (2 * area) / (fwhm * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI));\n};\nexport const pseudoVoigtFct = (x, fwhm, mu) => {\n    return (1 - mu) * lorentzianFct(x, fwhm) + mu * gaussianFct(x, fwhm);\n};\nexport const pseudoVoigtWidthToFWHM = (width, mu = 0.5) => {\n    return width * (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const pseudoVoigtFwhmToWidth = (fwhm, mu = 0.5) => {\n    return fwhm / (mu * ROOT_2LN2_MINUS_ONE + 1);\n};\nexport const getPseudoVoigtArea = (options) => {\n    const { fwhm = 500, height = 1, mu = 0.5 } = options;\n    return (fwhm * height * (mu * ROOT_PI_OVER_LN2 + (1 - mu) * Math.PI)) / 2;\n};\nexport const getPseudoVoigtFactor = (area = 0.9999, mu = 0.5) => {\n    return mu < 1 ? getLorentzianFactor(area) : getGaussianFactor(area);\n};\nexport const getPseudoVoigtData = (shape = {}, options = {}) => {\n    let { fwhm = 500, mu = 0.5 } = shape;\n    let { length, factor = getPseudoVoigtFactor(0.999, mu), height = calculatePseudoVoigtHeight({ fwhm, mu, area: 1 }), } = options;\n    if (!height) {\n        height =\n            1 /\n                ((mu / Math.sqrt(-GAUSSIAN_EXP_FACTOR / Math.PI)) * fwhm +\n                    ((1 - mu) * fwhm * Math.PI) / 2);\n    }\n    if (!length) {\n        length = Math.min(Math.ceil(fwhm * factor), Math.pow(2, 25) - 1);\n        if (length % 2 === 0)\n            length++;\n    }\n    const center = (length - 1) / 2;\n    const data = new Float64Array(length);\n    for (let i = 0; i <= center; i++) {\n        data[i] = pseudoVoigtFct(i - center, fwhm, mu) * height;\n        data[length - 1 - i] = data[i];\n    }\n    return data;\n};\n//# sourceMappingURL=PseudoVoigt.js.map","import { Gaussian } from './gaussian/Gaussian';\nimport { Lorentzian } from './lorentzian/Lorentzian';\nimport { PseudoVoigt } from './pseudoVoigt/PseudoVoigt';\n/**\n * Generate a instance of a specific kind of shape.\n */\nexport function getShape1D(shape) {\n    const { kind } = shape;\n    switch (kind) {\n        case 'gaussian':\n            return new Gaussian(shape);\n        case 'lorentzian':\n            return new Lorentzian(shape);\n        case 'pseudoVoigt':\n            return new PseudoVoigt(shape);\n        default: {\n            throw Error(`Unknown distribution ${kind}`);\n        }\n    }\n}\n//# sourceMappingURL=getShape1D.js.map","/**\n * Asserts that value is truthy.\n *\n * @param value - Value to check.\n * @param message - Optional error message to throw.\n */\nexport function assert(value, message) {\n    if (!value) {\n        throw new Error(message ? message : 'unreachable');\n    }\n}\n//# sourceMappingURL=assert.js.map","export const DefaultParameters = {\n    x: {\n        init: (peak) => peak.x,\n        min: (peak, peakShape) => peak.x - peakShape.fwhm * 2,\n        max: (peak, peakShape) => peak.x + peakShape.fwhm * 2,\n        gradientDifference: (peak, peakShape) => peakShape.fwhm * 2e-3,\n    },\n    y: {\n        init: (peak) => peak.y,\n        min: () => 0,\n        max: () => 1.5,\n        gradientDifference: () => 1e-3,\n    },\n    fwhm: {\n        init: (peak, peakShape) => peakShape.fwhm,\n        min: (peak, peakShape) => peakShape.fwhm * 0.25,\n        max: (peak, peakShape) => peakShape.fwhm * 4,\n        gradientDifference: (peak, peakShape) => peakShape.fwhm * 2e-3,\n    },\n    mu: {\n        init: (peak, peakShape) => peakShape.mu,\n        min: () => 0,\n        max: () => 1,\n        gradientDifference: () => 0.01,\n    },\n};\n//# sourceMappingURL=DefaultParameters.js.map","import { getShape1D } from 'ml-peak-shape-generator';\nimport { assert } from '../assert';\nimport { DefaultParameters } from './DefaultParameters';\nconst properties = ['init', 'min', 'max', 'gradientDifference'];\n/**\n * Return an array of internalPeaks that contains the exact init, min, max values based on the options\n * @param peaks\n * @param options\n * @returns\n */\nexport function getInternalPeaks(peaks, minMaxY, options = {}) {\n    let index = 0;\n    let internalPeaks = [];\n    for (const peak of peaks) {\n        const shape = peak.shape\n            ? peak.shape\n            : options.shape\n                ? options.shape\n                : { kind: 'gaussian' };\n        const shapeFct = getShape1D(shape);\n        //@ts-expect-error Should disappear with next release of peak-shape-generator\n        const parameters = ['x', 'y', ...shapeFct.getParameters()];\n        const propertiesValues = {\n            min: [],\n            max: [],\n            init: [],\n            gradientDifference: [],\n        };\n        for (let parameter of parameters) {\n            for (let property of properties) {\n                // check if the property is specified in the peak\n                let propertyValue = peak.parameters &&\n                    peak.parameters[parameter] &&\n                    peak.parameters[parameter][property];\n                if (propertyValue) {\n                    propertyValue = getNormalizedValue(propertyValue, parameter, property, minMaxY);\n                    propertiesValues[property].push(propertyValue);\n                    continue;\n                }\n                // check if there are some global option, it could be a number or a callback\n                let generalParameterValue = options.parameters &&\n                    options.parameters[parameter] &&\n                    options.parameters[parameter][property];\n                if (generalParameterValue) {\n                    if (typeof generalParameterValue === 'number') {\n                        generalParameterValue = getNormalizedValue(generalParameterValue, parameter, property, minMaxY);\n                        propertiesValues[property].push(generalParameterValue);\n                        continue;\n                    }\n                    else {\n                        let value = generalParameterValue(peak);\n                        value = getNormalizedValue(value, parameter, property, minMaxY);\n                        propertiesValues[property].push(value);\n                        continue;\n                    }\n                }\n                // we just need to take the default parameters\n                assert(DefaultParameters[parameter], `No default parameter for ${parameter}`);\n                const defaultParameterValues = DefaultParameters[parameter][property];\n                //@ts-expect-error should never happen\n                propertiesValues[property].push(defaultParameterValues(peak, shapeFct));\n            }\n        }\n        const fromIndex = index;\n        const toIndex = fromIndex + parameters.length - 1;\n        index += toIndex - fromIndex + 1;\n        internalPeaks.push({\n            shape,\n            shapeFct,\n            parameters,\n            propertiesValues,\n            fromIndex,\n            toIndex,\n        });\n    }\n    return internalPeaks;\n}\nfunction getNormalizedValue(value, parameter, property, minMaxY) {\n    if (parameter === 'y') {\n        if (property === 'gradientDifference') {\n            return value / minMaxY.range;\n        }\n        else {\n            return (value - minMaxY.min) / minMaxY.range;\n        }\n    }\n    return value;\n}\n//# sourceMappingURL=getInternalPeaks.js.map","import { isAnyArray } from 'is-any-array';\nexport default function checkOptions(data, parameterizedFunction, options) {\n    let { timeout, minValues, maxValues, initialValues, weights = 1, damping = 1e-2, dampingStepUp = 11, dampingStepDown = 9, maxIterations = 100, errorTolerance = 1e-7, centralDifference = false, gradientDifference = 10e-2, improvementThreshold = 1e-3, } = options;\n    if (damping <= 0) {\n        throw new Error('The damping option must be a positive number');\n    }\n    else if (!data.x || !data.y) {\n        throw new Error('The data parameter must have x and y elements');\n    }\n    else if (!isAnyArray(data.x) ||\n        data.x.length < 2 ||\n        !isAnyArray(data.y) ||\n        data.y.length < 2) {\n        throw new Error('The data parameter elements must be an array with more than 2 points');\n    }\n    else if (data.x.length !== data.y.length) {\n        throw new Error('The data parameter elements must have the same size');\n    }\n    let parameters = initialValues || new Array(parameterizedFunction.length).fill(1);\n    let nbPoints = data.y.length;\n    let parLen = parameters.length;\n    maxValues = maxValues || new Array(parLen).fill(Number.MAX_SAFE_INTEGER);\n    minValues = minValues || new Array(parLen).fill(Number.MIN_SAFE_INTEGER);\n    if (maxValues.length !== minValues.length) {\n        throw new Error('minValues and maxValues must be the same size');\n    }\n    if (!isAnyArray(parameters)) {\n        throw new Error('initialValues must be an array');\n    }\n    if (typeof gradientDifference === 'number') {\n        gradientDifference = new Array(parameters.length).fill(gradientDifference);\n    }\n    else if (isAnyArray(gradientDifference)) {\n        if (gradientDifference.length !== parLen) {\n            gradientDifference = new Array(parLen).fill(gradientDifference[0]);\n        }\n    }\n    else {\n        throw new Error('gradientDifference should be a number or array with length equal to the number of parameters');\n    }\n    let filler;\n    if (typeof weights === 'number') {\n        let value = 1 / weights ** 2;\n        filler = () => value;\n    }\n    else if (isAnyArray(weights)) {\n        if (weights.length < data.x.length) {\n            let value = 1 / weights[0] ** 2;\n            filler = () => value;\n        }\n        else {\n            filler = (i) => 1 / weights[i] ** 2;\n        }\n    }\n    else {\n        throw new Error('weights should be a number or array with length equal to the number of data points');\n    }\n    let checkTimeout;\n    if (timeout !== undefined) {\n        if (typeof timeout !== 'number') {\n            throw new Error('timeout should be a number');\n        }\n        let endTime = Date.now() + timeout * 1000;\n        checkTimeout = () => Date.now() > endTime;\n    }\n    else {\n        checkTimeout = () => false;\n    }\n    let weightSquare = new Array(data.x.length);\n    for (let i = 0; i < nbPoints; i++) {\n        weightSquare[i] = filler(i);\n    }\n    return {\n        checkTimeout,\n        minValues,\n        maxValues,\n        parameters,\n        weightSquare,\n        damping,\n        dampingStepUp,\n        dampingStepDown,\n        maxIterations,\n        errorTolerance,\n        centralDifference,\n        gradientDifference,\n        improvementThreshold,\n    };\n}\n//# sourceMappingURL=checkOptions.js.map","/**\n * the sum of the weighted squares of the errors (or weighted residuals) between the data.y\n * and the curve-fit function.\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} parameters - Array of current parameter values\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {ArrayLike<number>} weightSquare - Square of weights\n * @return {number}\n */\nexport default function errorCalculation(data, parameters, parameterizedFunction, weightSquare) {\n    let error = 0;\n    const func = parameterizedFunction(parameters);\n    for (let i = 0; i < data.x.length; i++) {\n        error += Math.pow(data.y[i] - func(data.x[i]), 2) / weightSquare[i];\n    }\n    return error;\n}\n//# sourceMappingURL=errorCalculation.js.map","import { Matrix } from 'ml-matrix';\n/**\n * Difference of the matrix function over the parameters\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} evaluatedData - Array of previous evaluated function values\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} paramFunction - The parameters and returns a function with the independent variable as a parameter\n * @return {Matrix}\n */\nexport default function gradientFunction(data, evaluatedData, params, gradientDifference, paramFunction, centralDifference) {\n    const nbParams = params.length;\n    const nbPoints = data.x.length;\n    let ans = Matrix.zeros(nbParams, nbPoints);\n    let rowIndex = 0;\n    for (let param = 0; param < nbParams; param++) {\n        if (gradientDifference[param] === 0)\n            continue;\n        let delta = gradientDifference[param];\n        let auxParams = params.slice();\n        auxParams[param] += delta;\n        let funcParam = paramFunction(auxParams);\n        if (!centralDifference) {\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (evaluatedData[point] - funcParam(data.x[point])) / delta);\n            }\n        }\n        else {\n            auxParams = params.slice();\n            auxParams[param] -= delta;\n            delta *= 2;\n            let funcParam2 = paramFunction(auxParams);\n            for (let point = 0; point < nbPoints; point++) {\n                ans.set(rowIndex, point, (funcParam2(data.x[point]) - funcParam(data.x[point])) / delta);\n            }\n        }\n        rowIndex++;\n    }\n    return ans;\n}\n//# sourceMappingURL=gradientFunction.js.map","import { inverse, Matrix } from 'ml-matrix';\nimport gradientFunction from './gradientFunction';\n/**\n * Matrix function over the samples\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {ArrayLike<number>} evaluatedData - Array of previous evaluated function values\n * @return {Matrix}\n */\nfunction matrixFunction(data, evaluatedData) {\n    const m = data.x.length;\n    let ans = new Matrix(m, 1);\n    for (let point = 0; point < m; point++) {\n        ans.set(point, 0, data.y[point] - evaluatedData[point]);\n    }\n    return ans;\n}\n/**\n * Iteration for Levenberg-Marquardt\n * @ignore\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {Array<number>} params - Array of previous parameter values\n * @param {number} damping - Levenberg-Marquardt parameter\n * @param {number|array} gradientDifference - The step size to approximate the jacobian matrix\n * @param {boolean} centralDifference - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n */\nexport default function step(data, params, damping, gradientDifference, parameterizedFunction, centralDifference, weights) {\n    let value = damping;\n    let identity = Matrix.eye(params.length, params.length, value);\n    const func = parameterizedFunction(params);\n    let evaluatedData = new Float64Array(data.x.length);\n    for (let i = 0; i < data.x.length; i++) {\n        evaluatedData[i] = func(data.x[i]);\n    }\n    let gradientFunc = gradientFunction(data, evaluatedData, params, gradientDifference, parameterizedFunction, centralDifference);\n    let residualError = matrixFunction(data, evaluatedData);\n    let inverseMatrix = inverse(identity.add(gradientFunc.mmul(gradientFunc.transpose().scale('row', { scale: weights }))));\n    let jacobianWeightResidualError = gradientFunc.mmul(residualError.scale('row', { scale: weights }));\n    let perturbations = inverseMatrix.mmul(jacobianWeightResidualError);\n    return {\n        perturbations,\n        jacobianWeightResidualError,\n    };\n}\n//# sourceMappingURL=step.js.map","import checkOptions from './checkOptions';\nimport errorCalculation from './errorCalculation';\nimport step from './step';\n/**\n * Curve fitting algorithm\n * @param {{x:ArrayLike<number>, y:ArrayLike<number>}} data - Array of points to fit in the format [x1, x2, ... ], [y1, y2, ... ]\n * @param {function} parameterizedFunction - The parameters and returns a function with the independent variable as a parameter\n * @param {object} [options] - Options object\n * @param {number|ArrayLike<number>} [options.weights = 1] - weighting vector, if the length does not match with the number of data points, the vector is reconstructed with first value.\n * @param {number} [options.damping = 1e-2] - Levenberg-Marquardt parameter, small values of the damping parameter λ result in a Gauss-Newton update and large\nvalues of λ result in a gradient descent update\n * @param {number} [options.dampingStepDown = 9] - factor to reduce the damping (Levenberg-Marquardt parameter) when there is not an improvement when updating parameters.\n * @param {number} [options.dampingStepUp = 11] - factor to increase the damping (Levenberg-Marquardt parameter) when there is an improvement when updating parameters.\n * @param {number} [options.improvementThreshold = 1e-3] - the threshold to define an improvement through an update of parameters\n * @param {number|ArrayLike<number>} [options.gradientDifference = 10e-2] - The step size to approximate the jacobian matrix\n * @param {boolean} [options.centralDifference = false] - If true the jacobian matrix is approximated by central differences otherwise by forward differences\n * @param {ArrayLike<number>} [options.minValues] - Minimum allowed values for parameters\n * @param {ArrayLike<number>} [options.maxValues] - Maximum allowed values for parameters\n * @param {ArrayLike<number>} [options.initialValues] - Array of initial parameter values\n * @param {number} [options.maxIterations = 100] - Maximum of allowed iterations\n * @param {number} [options.errorTolerance = 10e-3] - Minimum uncertainty allowed for each point.\n * @param {number} [options.timeout] - maximum time running before throw in seconds.\n * @return {{parameterValues: Array<number>, parameterError: number, iterations: number}}\n */\nexport function levenbergMarquardt(data, parameterizedFunction, options = {}) {\n    let { checkTimeout, minValues, maxValues, parameters, weightSquare, damping, dampingStepUp, dampingStepDown, maxIterations, errorTolerance, centralDifference, gradientDifference, improvementThreshold, } = checkOptions(data, parameterizedFunction, options);\n    let error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n    let optimalError = error;\n    let optimalParameters = parameters.slice();\n    let converged = error <= errorTolerance;\n    let iteration = 0;\n    for (; iteration < maxIterations && !converged; iteration++) {\n        let previousError = error;\n        let { perturbations, jacobianWeightResidualError } = step(data, parameters, damping, gradientDifference, parameterizedFunction, centralDifference, weightSquare);\n        for (let k = 0; k < parameters.length; k++) {\n            parameters[k] = Math.min(Math.max(minValues[k], parameters[k] - perturbations.get(k, 0)), maxValues[k]);\n        }\n        error = errorCalculation(data, parameters, parameterizedFunction, weightSquare);\n        if (isNaN(error))\n            break;\n        if (error < optimalError - errorTolerance) {\n            optimalError = error;\n            optimalParameters = parameters.slice();\n        }\n        let improvementMetric = (previousError - error) /\n            perturbations\n                .transpose()\n                .mmul(perturbations.mul(damping).add(jacobianWeightResidualError))\n                .get(0, 0);\n        if (improvementMetric > improvementThreshold) {\n            damping = Math.max(damping / dampingStepDown, 1e-7);\n        }\n        else {\n            damping = Math.min(damping * dampingStepUp, 1e7);\n        }\n        if (checkTimeout()) {\n            throw new Error(`The execution time is over to ${options.timeout} seconds`);\n        }\n        converged = error <= errorTolerance;\n    }\n    return {\n        parameterValues: optimalParameters,\n        parameterError: optimalError,\n        iterations: iteration,\n    };\n}\n//# sourceMappingURL=index.js.map","import { levenbergMarquardt } from 'ml-levenberg-marquardt';\n/** Algorithm to select the method.\n * @param optimizationOptions - Optimization options\n * @returns - The algorithm and optimization options\n */\nexport function selectMethod(optimizationOptions = {}) {\n    let { kind = 'lm', options } = optimizationOptions;\n    switch (kind) {\n        case 'lm':\n        case 'levenbergMarquardt':\n            return {\n                algorithm: levenbergMarquardt,\n                optimizationOptions: {\n                    damping: 1.5,\n                    maxIterations: 100,\n                    errorTolerance: 1e-8,\n                    ...options,\n                },\n            };\n        default:\n            throw new Error(`Unknown fitting algorithm`);\n    }\n}\n//# sourceMappingURL=selectMethod.js.map","import { xMinMaxValues } from 'ml-spectra-processing';\nimport { getSumOfShapes } from './shapes/getSumOfShapes';\nimport { getInternalPeaks } from './util/internalPeaks/getInternalPeaks';\nimport { selectMethod } from './util/selectMethod';\n/**\n * Fits a set of points to the sum of a set of bell functions.\n *\n * @param data - An object containing the x and y data to be fitted.\n * @param peaks - A list of initial parameters to be optimized. e.g. coming from a peak picking [{x, y, width}].\n * @param options - Options for optimize\n * @returns - An object with fitting error and the list of optimized parameters { parameters: [ {x, y, width} ], error } if the kind of shape is pseudoVoigt mu parameter is optimized.\n */\nexport function optimize(data, peaks, options = {}) {\n    // rescale data\n    let temp = xMinMaxValues(data.y);\n    const minMaxY = { ...temp, range: temp.max - temp.min };\n    const internalPeaks = getInternalPeaks(peaks, minMaxY, options);\n    // need to rescale what is related to Y\n    let normalizedY = new Float64Array(data.y.length);\n    for (let i = 0; i < data.y.length; i++) {\n        normalizedY[i] = (data.y[i] - minMaxY.min) / minMaxY.range;\n    }\n    const nbParams = internalPeaks[internalPeaks.length - 1].toIndex + 1;\n    const minValues = new Float64Array(nbParams);\n    const maxValues = new Float64Array(nbParams);\n    const initialValues = new Float64Array(nbParams);\n    const gradientDifferences = new Float64Array(nbParams);\n    let index = 0;\n    for (const peak of internalPeaks) {\n        for (let i = 0; i < peak.parameters.length; i++) {\n            minValues[index] = peak.propertiesValues.min[i];\n            maxValues[index] = peak.propertiesValues.max[i];\n            initialValues[index] = peak.propertiesValues.init[i];\n            gradientDifferences[index] = peak.propertiesValues.gradientDifference[i];\n            index++;\n        }\n    }\n    let { algorithm, optimizationOptions } = selectMethod(options.optimization);\n    let sumOfShapes = getSumOfShapes(internalPeaks);\n    let fitted = algorithm({ x: data.x, y: normalizedY }, sumOfShapes, {\n        minValues,\n        maxValues,\n        initialValues,\n        gradientDifference: gradientDifferences,\n        ...optimizationOptions,\n    });\n    const fittedValues = fitted.parameterValues;\n    let newPeaks = [];\n    for (let peak of internalPeaks) {\n        const newPeak = {\n            x: 0,\n            y: 0,\n            shape: peak.shape,\n        };\n        newPeak.x = fittedValues[peak.fromIndex];\n        newPeak.y = fittedValues[peak.fromIndex + 1] * minMaxY.range + minMaxY.min;\n        for (let i = 2; i < peak.parameters.length; i++) {\n            //@ts-expect-error should be fixed once\n            newPeak.shape[peak.parameters[i]] = fittedValues[peak.fromIndex + i];\n        }\n        newPeaks.push(newPeak);\n    }\n    return {\n        error: fitted.parameterError,\n        iterations: fitted.iterations,\n        peaks: newPeaks,\n    };\n}\n//# sourceMappingURL=index.js.map"],"names":["toString","Object","prototype","isAnyArray","value","call","endsWith","xCheck","input","TypeError","length","xMinMaxValues","array","min","max","options","arguments","undefined","_options$fromIndex","fromIndex","_options$toIndex","toIndex","Number","isInteger","Error","maxValue","i","minValue","rescale","output","Array","currentMin","currentMax","RangeError","_options$min","autoMinMax","_options$max","factor","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","matrix","maxRows","maxColumns","maxNumSize","constructor","name","inspectData","rows","columns","maxI","Math","maxJ","result","line","j","push","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","e","slice","installMathOperations","AbstractMatrix","Matrix","add","addS","addM","set","checkMatrix","newMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","abs","acos","acosh","asin","asinh","atan","atanh","cbrt","ceil","clz32","cos","cosh","exp","expm1","floor","fround","log","log1p","log10","log2","round","sign","sin","sinh","sqrt","tan","tanh","trunc","pow","arg0","powS","powM","checkRowIndex","index","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","checkNonEmpty","isEmpty","sumByRow","sum","sumByColumn","sumAll","v","productByRow","productByColumn","productAll","varianceByRow","unbiased","mean","cols","variance","sum1","sum2","x","varianceByColumn","varianceAll","size","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","from1DArray","newRows","newColumns","newData","row","column","rowVector","columnVector","zeros","ones","fill","rand","random","randInt","interval","eye","diag","data","l","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","k","echelonForm","clone","h","iMax","swapRows","tmp","reducedEchelonForm","m","n","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","by","NaN","NEGATIVE_INFINITY","maxIndex","idx","POSITIVE_INFINITY","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","cumulativeSum","dot","vector2","vector1","mmul","other","Bcolj","Float64Array","s","strassen2x2","a11","b11","a12","b12","a21","b21","a22","b22","m1","m2","m3","m4","m5","m6","m7","c00","c01","c10","c11","strassen3x3","a00","a01","a02","a10","a20","b00","b01","b02","b10","b20","m8","m9","m10","m11","m12","m13","m14","m15","m16","m17","m18","m19","m20","m21","m22","m23","c02","c12","c20","c21","c22","mmulStrassen","y","r1","c1","r2","c2","console","warn","embed","mat","r","c","resultat","blockMult","a","b","halfRows","parseInt","halfCols","subMatrix","scaleRows","isFinite","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","kroneckerSum","AxI","IxB","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","product","standardDeviation","center","Symbol","for","randomInt","diagonal","identity","negate","tensorProduct","nRows","nColumns","arrayData","from","removeRow","splice","addRow","removeColumn","newRow","addColumn","WrapperMatrix2D","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","eps","EPSILON","kase","alpha","MIN_VALUE","isNaN","ks","f","cs","sn","sp","spm1","epm1","sk","ek","shift","g","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","getSumOfShapes","internalPeaks","sumOfShapes","parameters","totalY","peak","peakX","shapeFct","fct","GAUSSIAN_EXP_FACTOR","LN2","ROOT_PI_OVER_LN2","PI","ROOT_THREE","ROOT_2LN2","ROOT_2LN2_MINUS_ONE","erfinv","ln1MinusXSqrd","lnEtcBy2Plus2","firstSqrt","secondSqrt","Gaussian","fwhm","sd","gaussianWidthToFWHM","fwhmToWidth","gaussianFwhmToWidth","widthToFWHM","width","gaussianFct","getArea","height","calculateGaussianHeight","getGaussianArea","getFactor","area","getGaussianFactor","getData","getGaussianData","calculateHeight","getParameters","shape","Lorentzian","lorentzianFwhmToWidth","lorentzianWidthToFWHM","lorentzianFct","getLorentzianArea","getLorentzianFactor","getLorentzianData","calculateLorentzianHeight","PseudoVoigt","mu","pseudoVoigtFwhmToWidth","pseudoVoigtWidthToFWHM","pseudoVoigtFct","getPseudoVoigtArea","getPseudoVoigtFactor","calculatePseudoVoigtHeight","getPseudoVoigtData","getShape1D","kind","assert","message","DefaultParameters","init","peakShape","gradientDifference","properties","getInternalPeaks","peaks","minMaxY","propertiesValues","parameter","property","propertyValue","getNormalizedValue","generalParameterValue","defaultParameterValues","range","checkOptions","parameterizedFunction","timeout","minValues","maxValues","initialValues","weights","damping","dampingStepUp","dampingStepDown","maxIterations","errorTolerance","centralDifference","improvementThreshold","nbPoints","parLen","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","filler","checkTimeout","endTime","Date","now","weightSquare","errorCalculation","error","func","gradientFunction","evaluatedData","params","paramFunction","nbParams","ans","param","delta","auxParams","funcParam","point","funcParam2","matrixFunction","step","gradientFunc","residualError","inverseMatrix","jacobianWeightResidualError","perturbations","levenbergMarquardt","optimalError","optimalParameters","converged","iteration","previousError","improvementMetric","parameterValues","parameterError","iterations","selectMethod","optimizationOptions","algorithm","optimize","normalizedY","gradientDifferences","optimization","fitted","fittedValues","newPeaks","newPeak"],"mappings":"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"}