{"version":3,"file":"ml-spectra-processing.js","sources":["../lib-esm/reim/reimAbsolute.js","../node_modules/d3-array/build/d3-array.js","../node_modules/spline-interpolator/index.js","../lib-esm/utils/createFromToArray.js","../lib-esm/x/erfcinv.js","../lib-esm/x/rayleighCdf.js","../lib-esm/x/xNoiseSanPlot.js","../lib-esm/reim/reimPhaseCorrection.js","../lib-esm/reim/reimAutoPhaseCorrection.js","../node_modules/fft.js/lib/fft.js","../lib-esm/x/xRotate.js","../lib-esm/reim/reimFFT.js","../lib-esm/x/xAbsolute.js","../node_modules/is-any-array/lib-esm/index.js","../node_modules/median-quickselect/lib/median-quickselect.min.js","../lib-esm/x/xMedian.js","../lib-esm/x/xAbsoluteMedian.js","../lib-esm/x/xAdd.js","../lib-esm/x/utils/getOutputArray.js","../lib-esm/x/xMultiply.js","../lib-esm/x/xDotProduct.js","../lib-esm/x/xCrossCorrelation.js","../lib-esm/x/xAutoCorrelation.js","../lib-esm/x/xBoxPlot.js","../lib-esm/x/xCheck.js","../lib-esm/x/xCorrelation.js","../lib-esm/x/xCumulative.js","../lib-esm/x/xDivide.js","../lib-esm/x/xEnsureFloat64.js","../lib-esm/x/xFindClosestIndex.js","../lib-esm/x/xGetFromToIndex.js","../lib-esm/x/xGetTargetIndex.js","../lib-esm/x/xMaxValue.js","../lib-esm/x/xMinValue.js","../lib-esm/x/xHistogram.js","../lib-esm/x/xIsEquallySpaced.js","../lib-esm/x/xIsMonotone.js","../lib-esm/x/xIsMonotoneIncreasing.js","../lib-esm/x/xMaxIndex.js","../lib-esm/x/xMean.js","../lib-esm/x/xCheckLengths.js","../lib-esm/x/xMeanAbsoluteError.js","../lib-esm/x/xMeanSquaredError.js","../lib-esm/x/xMedianAbsoluteDeviation.js","../lib-esm/x/xMinIndex.js","../lib-esm/x/xMinMaxValues.js","../lib-esm/x/xMode.js","../lib-esm/x/xNoiseStandardDeviation.js","../lib-esm/x/xNorm.js","../lib-esm/x/xSum.js","../lib-esm/x/xNormed.js","../lib-esm/x/xPadding.js","../lib-esm/x/xVariance.js","../lib-esm/x/xStandardDeviation.js","../lib-esm/x/xParetoNormalization.js","../lib-esm/x/xRescale.js","../lib-esm/x/xRolling.js","../lib-esm/x/xRollingAverage.js","../lib-esm/x/xRollingMax.js","../lib-esm/x/xRollingMedian.js","../lib-esm/x/xRollingMin.js","../lib-esm/x/xSampling.js","../lib-esm/x/xSequentialFill.js","../lib-esm/x/xApplyFunctionStr.js","../lib-esm/x/xSubtract.js","../lib-esm/x/xUniqueSorted.js","../lib-esm/xy/xyAlign.js","../lib-esm/xy/xyCheck.js","../lib-esm/xy/xyFindClosestPoint.js","../lib-esm/xy/xyCovariance.js","../lib-esm/xy/xyMaxYPoint.js","../lib-esm/xy/xyCumulativeDistributionStatistics.js","../lib-esm/xy/xyEnsureGrowingX.js","../lib-esm/zones/zonesNormalize.js","../lib-esm/zones/zonesWithPoints.js","../lib-esm/xy/utils/equallySpacedSlot.js","../lib-esm/xy/utils/integral.js","../lib-esm/xy/utils/equallySpacedSmooth.js","../lib-esm/xy/xyEquallySpaced.js","../lib-esm/xy/xyExtract.js","../lib-esm/xy/xyFilterX.js","../lib-esm/xy/xyFilterXPositive.js","../lib-esm/xy/xyGetNMaxY.js","../lib-esm/xy/xyGrowingX.js","../lib-esm/xy/xyIntegral.js","../lib-esm/xy/xyIntegration.js","../lib-esm/xy/xyJoinX.js","../lib-esm/xy/xyMaxClosestYPoint.js","../lib-esm/xy/xyMaximaY.js","../lib-esm/xy/xyMaxMerge.js","../lib-esm/xy/xyMaxY.js","../lib-esm/xy/xyMedian.js","../lib-esm/xy/xyMergeByCentroids.js","../lib-esm/xy/xyMinClosestYPoint.js","../lib-esm/xy/xyMinimaY.js","../lib-esm/xy/xyMinYPoint.js","../lib-esm/xy/xyPeakInfo.js","../lib-esm/xy/xyRealMaxYPoint.js","../lib-esm/xy/xyRealMinYPoint.js","../lib-esm/xy/xyReduce.js","../lib-esm/xy/xyRolling.js","../lib-esm/xy/xySetYValue.js","../lib-esm/xy/xySortX.js","../lib-esm/xy/xyToXYArray.js","../lib-esm/xy/xyToXYObject.js","../lib-esm/xy/xyUniqueX.js","../lib-esm/xy/xyWeightedMerge.js","../lib-esm/xreim/xreimZeroFilling.js","../lib-esm/xreim/xreimSortX.js","../lib-esm/xyArray/utils/getSlots.js","../lib-esm/xyArray/xyArrayAlign.js","../lib-esm/xyArray/xyArrayMerge.js","../lib-esm/xyArray/xyArrayWeightedMerge.js","../lib-esm/xyArray/utils/getSlotsToFirst.js","../lib-esm/xyArray/xyArrayAlignToFirst.js","../lib-esm/xyObject/xyObjectCheck.js","../lib-esm/xyObject/xyObjectMaxXPoint.js","../lib-esm/xyObject/xyObjectMinXPoint.js","../lib-esm/xyObject/xyObjectBestPoints.js","../lib-esm/xyObject/xyObjectJoinX.js","../lib-esm/xyObject/xyObjectMaxYPoint.js","../lib-esm/xyObject/xyObjectMinYPoint.js","../lib-esm/xyObject/xyObjectSlotX.js","../lib-esm/xyObject/xyObjectSortX.js","../lib-esm/xyObject/xyObjectSumY.js","../lib-esm/xyObject/xyObjectToXY.js","../lib-esm/zone/zoneToX.js","../lib-esm/matrix/matrixCenterZMean.js","../lib-esm/matrix/matrixMinMaxAbsoluteZ.js","../lib-esm/matrix/matrixCheck.js","../lib-esm/matrix/matrixMinMaxZ.js","../lib-esm/matrix/matrixHistogram.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","../lib-esm/matrix/matrixPQN.js","../lib-esm/matrix/matrixZRescale.js","../lib-esm/matrix/matrixClone.js","../lib-esm/matrix/matrixNumericalEncoding.js","../lib-esm/matrix/matrixNumericalDecoding.js","../lib-esm/matrix/matrixApplyNumericalEncoding.js","../node_modules/ml-xsadd/lib-es6/xsadd.js","../lib-esm/utils/createRandomArray.js","../lib-esm/utils/createStepArray.js"],"sourcesContent":["/**\n * Calculates reimAbsolute value of a complex spectrum\n *\n * @param data - complex spectrum\n * @returns - reimAbsolute value\n */\nexport function reimAbsolute(data) {\n    const length = data.re.length;\n    const re = data.re;\n    const im = data.im;\n    const newArray = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        newArray[i] = Math.sqrt(re[i] ** 2 + im[i] ** 2);\n    }\n    return newArray;\n}\n//# sourceMappingURL=reimAbsolute.js.map","(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (factory((global.d3_array = {})));\n}(this, function (exports) { 'use strict';\n\n  function ascending(a, b) {\n    return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n  }\n\n  function bisector(compare) {\n    if (compare.length === 1) compare = ascendingComparator(compare);\n    return {\n      left: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) < 0) lo = mid + 1;\n          else hi = mid;\n        }\n        return lo;\n      },\n      right: function(a, x, lo, hi) {\n        if (lo == null) lo = 0;\n        if (hi == null) hi = a.length;\n        while (lo < hi) {\n          var mid = lo + hi >>> 1;\n          if (compare(a[mid], x) > 0) hi = mid;\n          else lo = mid + 1;\n        }\n        return lo;\n      }\n    };\n  }\n\n  function ascendingComparator(f) {\n    return function(d, x) {\n      return ascending(f(d), x);\n    };\n  }\n\n  var ascendingBisect = bisector(ascending);\n  var bisectRight = ascendingBisect.right;\n  var bisectLeft = ascendingBisect.left;\n\n  function descending(a, b) {\n    return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n  }\n\n  function number$1(x) {\n    return x === null ? NaN : +x;\n  }\n\n  function variance(array, f) {\n    var n = array.length,\n        m = 0,\n        a,\n        d,\n        s = 0,\n        i = -1,\n        j = 0;\n\n    if (f == null) {\n      while (++i < n) {\n        if (!isNaN(a = number$1(array[i]))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    else {\n      while (++i < n) {\n        if (!isNaN(a = number$1(f(array[i], i, array)))) {\n          d = a - m;\n          m += d / ++j;\n          s += d * (a - m);\n        }\n      }\n    }\n\n    if (j > 1) return s / (j - 1);\n  }\n\n  function deviation(array, f) {\n    var v = variance(array, f);\n    return v ? Math.sqrt(v) : v;\n  }\n\n  function extent(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b,\n        c;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = array[i]) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = c = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null) {\n        if (a > b) a = b;\n        if (c < b) c = b;\n      }\n    }\n\n    return [a, c];\n  }\n\n  function constant(x) {\n    return function() {\n      return x;\n    };\n  }\n\n  function identity(x) {\n    return x;\n  }\n\n  function range(start, stop, step) {\n    start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n    var i = -1,\n        n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n        range = new Array(n);\n\n    while (++i < n) {\n      range[i] = start + i * step;\n    }\n\n    return range;\n  }\n\n  var e10 = Math.sqrt(50);\n  var e5 = Math.sqrt(10);\n  var e2 = Math.sqrt(2);\n  function ticks(start, stop, count) {\n    var step = tickStep(start, stop, count);\n    return range(\n      Math.ceil(start / step) * step,\n      Math.floor(stop / step) * step + step / 2, // inclusive\n      step\n    );\n  }\n\n  function tickStep(start, stop, count) {\n    var step0 = Math.abs(stop - start) / Math.max(0, count),\n        step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n        error = step0 / step1;\n    if (error >= e10) step1 *= 10;\n    else if (error >= e5) step1 *= 5;\n    else if (error >= e2) step1 *= 2;\n    return stop < start ? -step1 : step1;\n  }\n\n  function sturges(values) {\n    return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n  }\n\n  function number(x) {\n    return +x;\n  }\n\n  function histogram() {\n    var value = identity,\n        domain = extent,\n        threshold = sturges;\n\n    function histogram(data) {\n      var i,\n          n = data.length,\n          x,\n          values = new Array(n);\n\n      // Coerce values to numbers.\n      for (i = 0; i < n; ++i) {\n        values[i] = +value(data[i], i, data);\n      }\n\n      var xz = domain(values),\n          x0 = +xz[0],\n          x1 = +xz[1],\n          tz = threshold(values, x0, x1);\n\n      // Convert number of thresholds into uniform thresholds.\n      if (!Array.isArray(tz)) tz = ticks(x0, x1, +tz);\n\n      // Coerce thresholds to numbers, ignoring any outside the domain.\n      var m = tz.length;\n      for (i = 0; i < m; ++i) tz[i] = +tz[i];\n      while (tz[0] <= x0) tz.shift(), --m;\n      while (tz[m - 1] >= x1) tz.pop(), --m;\n\n      var bins = new Array(m + 1),\n          bin;\n\n      // Initialize bins.\n      for (i = 0; i <= m; ++i) {\n        bin = bins[i] = [];\n        bin.x0 = i > 0 ? tz[i - 1] : x0;\n        bin.x1 = i < m ? tz[i] : x1;\n      }\n\n      // Assign data to bins by value, ignoring any outside the domain.\n      for (i = 0; i < n; ++i) {\n        x = values[i];\n        if (x0 <= x && x <= x1) {\n          bins[bisectRight(tz, x, 0, m)].push(data[i]);\n        }\n      }\n\n      return bins;\n    }\n\n    histogram.value = function(_) {\n      return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), histogram) : value;\n    };\n\n    histogram.domain = function(_) {\n      return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), histogram) : domain;\n    };\n\n    histogram.thresholds = function(_) {\n      if (!arguments.length) return threshold;\n      threshold = typeof _ === \"function\" ? _\n          : Array.isArray(_) ? constant(Array.prototype.map.call(_, number))\n          : constant(+_);\n      return histogram;\n    };\n\n    return histogram;\n  }\n\n  function quantile(array, p, f) {\n    if (f == null) f = number$1;\n    if (!(n = array.length)) return;\n    if ((p = +p) <= 0 || n < 2) return +f(array[0], 0, array);\n    if (p >= 1) return +f(array[n - 1], n - 1, array);\n    var n,\n        h = (n - 1) * p,\n        i = Math.floor(h),\n        a = +f(array[i], i, array),\n        b = +f(array[i + 1], i + 1, array);\n    return a + (b - a) * (h - i);\n  }\n\n  function freedmanDiaconis(values, min, max) {\n    values.sort(ascending);\n    return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function scott(values, min, max) {\n    return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n  }\n\n  function max(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && b > a) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b > a) a = b;\n    }\n\n    return a;\n  }\n\n  function mean(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1,\n        j = n;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) s += a; else --j;\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) s += a; else --j;\n    }\n\n    if (j) return s / j;\n  }\n\n  function median(array, f) {\n    var numbers = [],\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (!isNaN(a = number$1(array[i]))) numbers.push(a);\n    }\n\n    else {\n      while (++i < n) if (!isNaN(a = number$1(f(array[i], i, array)))) numbers.push(a);\n    }\n\n    return quantile(numbers.sort(ascending), 0.5);\n  }\n\n  function merge(arrays) {\n    var n = arrays.length,\n        m,\n        i = -1,\n        j = 0,\n        merged,\n        array;\n\n    while (++i < n) j += arrays[i].length;\n    merged = new Array(j);\n\n    while (--n >= 0) {\n      array = arrays[n];\n      m = array.length;\n      while (--m >= 0) {\n        merged[--j] = array[m];\n      }\n    }\n\n    return merged;\n  }\n\n  function min(array, f) {\n    var i = -1,\n        n = array.length,\n        a,\n        b;\n\n    if (f == null) {\n      while (++i < n) if ((b = array[i]) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = array[i]) != null && a > b) a = b;\n    }\n\n    else {\n      while (++i < n) if ((b = f(array[i], i, array)) != null && b >= b) { a = b; break; }\n      while (++i < n) if ((b = f(array[i], i, array)) != null && a > b) a = b;\n    }\n\n    return a;\n  }\n\n  function pairs(array) {\n    var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n    while (i < n) pairs[i] = [p, p = array[++i]];\n    return pairs;\n  }\n\n  function permute(array, indexes) {\n    var i = indexes.length, permutes = new Array(i);\n    while (i--) permutes[i] = array[indexes[i]];\n    return permutes;\n  }\n\n  function scan(array, compare) {\n    if (!(n = array.length)) return;\n    var i = 0,\n        n,\n        j = 0,\n        xi,\n        xj = array[j];\n\n    if (!compare) compare = ascending;\n\n    while (++i < n) if (compare(xi = array[i], xj) < 0 || compare(xj, xj) !== 0) xj = xi, j = i;\n\n    if (compare(xj, xj) === 0) return j;\n  }\n\n  function shuffle(array, i0, i1) {\n    var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n        t,\n        i;\n\n    while (m) {\n      i = Math.random() * m-- | 0;\n      t = array[m + i0];\n      array[m + i0] = array[i + i0];\n      array[i + i0] = t;\n    }\n\n    return array;\n  }\n\n  function sum(array, f) {\n    var s = 0,\n        n = array.length,\n        a,\n        i = -1;\n\n    if (f == null) {\n      while (++i < n) if (a = +array[i]) s += a; // Note: zero and null are equivalent.\n    }\n\n    else {\n      while (++i < n) if (a = +f(array[i], i, array)) s += a;\n    }\n\n    return s;\n  }\n\n  function transpose(matrix) {\n    if (!(n = matrix.length)) return [];\n    for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n      for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n        row[j] = matrix[j][i];\n      }\n    }\n    return transpose;\n  }\n\n  function length(d) {\n    return d.length;\n  }\n\n  function zip() {\n    return transpose(arguments);\n  }\n\n  var version = \"0.7.1\";\n\n  exports.version = version;\n  exports.bisect = bisectRight;\n  exports.bisectRight = bisectRight;\n  exports.bisectLeft = bisectLeft;\n  exports.ascending = ascending;\n  exports.bisector = bisector;\n  exports.descending = descending;\n  exports.deviation = deviation;\n  exports.extent = extent;\n  exports.histogram = histogram;\n  exports.thresholdFreedmanDiaconis = freedmanDiaconis;\n  exports.thresholdScott = scott;\n  exports.thresholdSturges = sturges;\n  exports.max = max;\n  exports.mean = mean;\n  exports.median = median;\n  exports.merge = merge;\n  exports.min = min;\n  exports.pairs = pairs;\n  exports.permute = permute;\n  exports.quantile = quantile;\n  exports.range = range;\n  exports.scan = scan;\n  exports.shuffle = shuffle;\n  exports.sum = sum;\n  exports.ticks = ticks;\n  exports.tickStep = tickStep;\n  exports.transpose = transpose;\n  exports.variance = variance;\n  exports.zip = zip;\n\n}));","const {bisectRight} = require('d3-array')\n\nconst quincunx = (u, v, w, q) => {\n  const n = u.length - 1\n\n  u[0] = 0\n  v[0] = 0\n  w[0] = 0\n  v[1] = v[1] / u[1]\n  w[1] = w[1] / u[1]\n  for (let i = 2; i < n; ++i) {\n    u[i] = u[i] - u[i - 2] * w[i - 2] * w[i - 2] - u[i - 1] * v[i - 1] * v[i - 1]\n    v[i] = (v[i] - u[i - 1] * v[i - 1] * w[i - 1]) / u[i]\n    w[i] = w[i] / u[i]\n  }\n\n  for (let i = 2; i < n; ++i) {\n    q[i] = q[i] - v[i - 1] * q[i - 1] - w[i - 2] * q[i - 2]\n  }\n  for (let i = 1; i < n; ++i) {\n    q[i] = q[i] / u[i]\n  }\n\n  q[n - 2] = q[n - 2] - v[n - 2] * q[n - 1]\n  for (let i = n - 3; i > 0; --i) {\n    q[i] = q[i] - v[i] * q[i + 1] - w[i] * q[i + 2]\n  }\n}\n\nconst smoothingSpline = (x, y, sigma, lambda) => {\n  const n = x.length - 1\n  const h = new Array(n + 1)\n  const r = new Array(n + 1)\n  const f = new Array(n + 1)\n  const p = new Array(n + 1)\n  const q = new Array(n + 1)\n  const u = new Array(n + 1)\n  const v = new Array(n + 1)\n  const w = new Array(n + 1)\n  const params = x.map(() => [0, 0, 0, 0])\n  params.pop()\n\n  const mu = 2 * (1 - lambda) / (3 * lambda)\n  for (let i = 0; i < n; ++i) {\n    h[i] = x[i + 1] - x[i]\n    r[i] = 3 / h[i]\n  }\n  q[0] = 0\n  for (let i = 1; i < n; ++i) {\n    f[i] = -(r[i - 1] + r[i])\n    p[i] = 2 * (x[i + 1] - x[i - 1])\n    q[i] = 3 * (y[i + 1] - y[i]) / h[i] - 3 * (y[i] - y[i - 1]) / h[i - 1]\n  }\n  q[n] = 0\n\n  for (let i = 1; i < n; ++i) {\n    u[i] = r[i - 1] * r[i - 1] * sigma[i - 1] + f[i] * f[i] * sigma[i] + r[i] * r[i] * sigma[i + 1]\n    u[i] = mu * u[i] + p[i]\n  }\n  for (let i = 1; i < n - 1; ++i) {\n    v[i] = f[i] * r[i] * sigma[i] + r[i] * f[i + 1] * sigma[i + 1]\n    v[i] = mu * v[i] + h[i]\n  }\n  for (let i = 1; i < n - 2; ++i) {\n    w[i] = mu * r[i] * r[i + 1] * sigma[i + 1]\n  }\n\n  quincunx(u, v, w, q)\n\n  params[0][3] = y[0] - mu * r[0] * q[1] * sigma[0]\n  params[1][3] = y[1] - mu * (f[1] * q[1] + r[1] * q[2]) * sigma[0]\n  params[0][0] = q[1] / (3 * h[0])\n  params[0][1] = 0\n  params[0][2] = (params[1][3] - params[0][3]) / h[0] - q[1] * h[0] / 3\n  r[0] = 0\n  for (let i = 1; i < n; ++i) {\n    params[i][0] = (q[i + 1] - q[i]) / (3 * h[i])\n    params[i][1] = q[i]\n    params[i][2] = (q[i] + q[i - 1]) * h[i - 1] + params[i - 1][2]\n    params[i][3] = r[i - 1] * q[i - 1] + f[i] * q[i] + r[i] * q[i + 1]\n    params[i][3] = y[i] - mu * params[i][3] * sigma[i]\n  }\n  return params\n}\n\nclass SplineInterpolator {\n  constructor (xIn, yIn, lambda = 1) {\n    const indices = xIn.map((_, i) => i)\n    indices.sort((i, j) => xIn[i] - xIn[j])\n    const x = indices.map((i) => xIn[i])\n    const y = indices.map((i) => yIn[i])\n    const n = indices.length\n    const sigma = indices.map(() => 1)\n    this.n = n\n    this.x = x\n    this.y = y\n    this.params = smoothingSpline(x, y, sigma, lambda)\n  }\n\n  interpolate (v) {\n    if (v === this.x[this.n - 1]) {\n      return this.y[this.n - 1]\n    }\n    const i = Math.min(Math.max(0, bisectRight(this.x, v) - 1), this.n - 2)\n    const [a, b, c, d] = this.params[i]\n    v = v - this.x[i]\n    return a * v * v * v + b * v * v + c * v + d\n  }\n\n  max (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let maxValue = -Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y > maxValue) {\n        maxValue = y\n      }\n    }\n    return maxValue\n  }\n\n  min (step = 100) {\n    const xStart = this.x[0]\n    const xStop = this.x[this.n - 1]\n    const delta = (xStop - xStart) / step\n    let minValue = Infinity\n    for (let i = 0, x = xStart; i < step; ++i, x += delta) {\n      const y = this.interpolate(x)\n      if (y < minValue) {\n        minValue = y\n      }\n    }\n    return minValue\n  }\n\n  domain () {\n    return [this.x[0], this.x[this.x.length - 1]]\n  }\n\n  range () {\n    return [this.min(), this.max()]\n  }\n\n  curve (nInterval, domain = null) {\n    domain = domain || this.domain()\n    const delta = (domain[1] - domain[0]) / (nInterval - 1)\n    const vals = new Array(nInterval)\n    for (let i = 0; i < nInterval; ++i) {\n      const x = delta * i + domain[0]\n      vals[i] = [x, this.interpolate(x)]\n    }\n    return vals\n  }\n}\n\nmodule.exports = SplineInterpolator\n","/**\n * Create an array with numbers between \"from\" and \"to\" of length \"length\"\n *\n * @param options - options\n * @return - array of distributed numbers between \"from\" and \"to\"\n */\nexport function createFromToArray(options = {}) {\n    let { from = 0, to = 1, length = 1000, includeFrom = true, includeTo = true, distribution = 'uniform', } = options;\n    const array = new Float64Array(length);\n    let div = length;\n    if (includeFrom && includeTo) {\n        div = length - 1;\n    }\n    else if ((!includeFrom && includeTo) || (includeFrom && !includeTo)) {\n        div = length;\n    }\n    else if (!includeFrom && !includeTo) {\n        div = length + 1;\n    }\n    let delta = (to - from) / div;\n    if (distribution === 'uniform') {\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * index;\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = from + delta * (index + 1);\n                index++;\n            }\n        }\n    }\n    else if (distribution === 'log') {\n        let base = (to / from) ** (1 / div);\n        let firstExponent = Math.log(from) / Math.log(base);\n        if (includeFrom) {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index);\n                index++;\n            }\n        }\n        else {\n            let index = 0;\n            while (index < length) {\n                array[index] = base ** (firstExponent + index + 1);\n                index++;\n            }\n        }\n    }\n    else {\n        throw new Error('Please choose for the distribution either uniform or log. By default the distribution chosen is uniform.');\n    }\n    return array;\n}\n//# sourceMappingURL=createFromToArray.js.map","/* eslint-disable @typescript-eslint/no-loss-of-precision */\n/*\nAdapted from: https://github.com/compute-io/erfcinv/blob/aa116e23883839359e310ad41a7c42f72815fc1e/lib/number.js\n\nThe MIT License (MIT)\n\nCopyright (c) 2014-2015 The Compute.io Authors. All rights reserved.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n\nBoost Software License - Version 1.0 - August 17th, 2003\n\nPermission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the \"Software\") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:\n\nThe copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n// Coefficients for erfcinv on [0, 0.5]:\nconst Y1 = 8.91314744949340820313e-2;\nconst P1 = [\n    -5.38772965071242932965e-3, 8.22687874676915743155e-3,\n    2.19878681111168899165e-2, -3.65637971411762664006e-2,\n    -1.26926147662974029034e-2, 3.34806625409744615033e-2,\n    -8.36874819741736770379e-3, -5.08781949658280665617e-4,\n];\nconst Q1 = [\n    8.86216390456424707504e-4, -2.33393759374190016776e-3,\n    7.95283687341571680018e-2, -5.27396382340099713954e-2,\n    -7.1228902341542847553e-1, 6.62328840472002992063e-1, 1.56221558398423026363,\n    -1.56574558234175846809, -9.70005043303290640362e-1, 1,\n];\n// Coefficients for erfcinv for 0.5 > 1-x >= 0:\nconst Y2 = 2.249481201171875;\nconst P2 = [\n    -3.67192254707729348546, 2.11294655448340526258e1, 1.7445385985570866523e1,\n    -4.46382324441786960818e1, -1.88510648058714251895e1,\n    1.76447298408374015486e1, 8.37050328343119927838, 1.05264680699391713268e-1,\n    -2.02433508355938759655e-1,\n];\nconst Q2 = [\n    1.72114765761200282724, -2.26436933413139721736e1, 1.08268667355460159008e1,\n    4.85609213108739935468e1, -2.01432634680485188801e1,\n    -2.86608180499800029974e1, 3.9713437953343869095, 6.24264124854247537712, 1,\n];\n// Coefficients for erfcinv for sqrt( -log(1-x)):\nconst Y3 = 8.07220458984375e-1;\nconst P3 = [\n    -6.81149956853776992068e-10, 2.85225331782217055858e-8,\n    -6.79465575181126350155e-7, 2.14558995388805277169e-3,\n    2.90157910005329060432e-2, 1.42869534408157156766e-1,\n    3.37785538912035898924e-1, 3.87079738972604337464e-1,\n    1.17030156341995252019e-1, -1.63794047193317060787e-1,\n    -1.31102781679951906451e-1,\n];\nconst Q3 = [\n    1.105924229346489121e-2, 1.52264338295331783612e-1, 8.48854343457902036425e-1,\n    2.59301921623620271374, 4.77846592945843778382, 5.38168345707006855425,\n    3.46625407242567245975, 1,\n];\nconst Y4 = 9.3995571136474609375e-1;\nconst P4 = [\n    2.66339227425782031962e-12, -2.30404776911882601748e-10,\n    4.60469890584317994083e-6, 1.57544617424960554631e-4,\n    1.87123492819559223345e-3, 9.50804701325919603619e-3,\n    1.85573306514231072324e-2, -2.22426529213447927281e-3,\n    -3.50353787183177984712e-2,\n];\nconst Q4 = [\n    7.64675292302794483503e-5, 2.63861676657015992959e-3,\n    3.41589143670947727934e-2, 2.20091105764131249824e-1,\n    7.62059164553623404043e-1, 1.3653349817554063097, 1,\n];\nconst Y5 = 9.8362827301025390625e-1;\nconst P5 = [\n    9.9055709973310326855e-17, -2.81128735628831791805e-14,\n    4.62596163522878599135e-9, 4.49696789927706453732e-7,\n    1.49624783758342370182e-5, 2.09386317487588078668e-4,\n    1.05628862152492910091e-3, -1.12951438745580278863e-3,\n    -1.67431005076633737133e-2,\n];\nconst Q5 = [\n    2.82243172016108031869e-7, 2.75335474764726041141e-5,\n    9.64011807005165528527e-4, 1.60746087093676504695e-2,\n    1.38151865749083321638e-1, 5.91429344886417493481e-1, 1,\n];\n/**\n * Polyval.\n *\n * @param c - Array of Number.\n * @param x - Number.\n * @returns Number.\n */\nfunction polyval(c, x) {\n    let p = 0;\n    for (const coef of c) {\n        p = p * x + coef;\n    }\n    return p;\n}\n/**\n * Calculates a rational approximation.\n *\n * @private\n * @param x - Number.\n * @param v - Number.\n * @param P - Array of polynomial coefficients.\n * @param Q - Array of polynomial coefficients.\n * @param Y - Number.\n * @returns Rational approximation.\n */\nfunction calc(x, v, P, Q, Y) {\n    const s = x - v;\n    const r = polyval(P, s) / polyval(Q, s);\n    return Y * x + r * x;\n}\n/**\n * Evaluates the complementary inverse error function for an input value.\n *\n * @private\n * @param x - Input value.\n * @returns Evaluated complementary inverse error function.\n */\nexport default function erfcinv(x) {\n    let sign = false;\n    let val;\n    let q;\n    let g;\n    let r;\n    // [1] Special cases...\n    // NaN:\n    if (Number.isNaN(x)) {\n        return NaN;\n    }\n    // x not on the interval: [0,2]\n    if (x < 0 || x > 2) {\n        throw new RangeError(`erfcinv()::invalid input argument. Value must be on the interval [0,2]. Value: \\`${x}\\`.`);\n    }\n    if (x === 0) {\n        return Number.POSITIVE_INFINITY;\n    }\n    if (x === 2) {\n        return Number.NEGATIVE_INFINITY;\n    }\n    if (x === 1) {\n        return 0;\n    }\n    // [2] Get the sign and make use of `erfc` reflection formula: `erfc(-z)=2 - erfc(z)`...\n    if (x > 1) {\n        q = 2 - x;\n        x = 1 - q;\n        sign = true;\n    }\n    else {\n        q = x;\n        x = 1 - x;\n    }\n    // [3] |x| <= 0.5\n    if (x <= 0.5) {\n        g = x * (x + 10);\n        r = polyval(P1, x) / polyval(Q1, x);\n        val = g * Y1 + g * r;\n        return sign ? -val : val;\n    }\n    // [4] 1-|x| >= 0.25\n    if (q >= 0.25) {\n        g = Math.sqrt(-2 * Math.log(q));\n        q = q - 0.25;\n        r = polyval(P2, q) / polyval(Q2, q);\n        val = g / (Y2 + r);\n        return sign ? -val : val;\n    }\n    q = Math.sqrt(-Math.log(q));\n    // [5] q < 3\n    if (q < 3) {\n        return calc(q, 1.125, P3, Q3, Y3);\n    }\n    // [6] q < 6\n    if (q < 6) {\n        return calc(q, 3, P4, Q4, Y4);\n    }\n    // Note that the smallest number in JavaScript is 5e-324. Math.sqrt( -Math.log( 5e-324 ) ) ~27.2844\n    return calc(q, 6, P5, Q5, Y5);\n    // Note that in the boost library, they are able to go to much smaller values, as 128 bit long doubles support ~1e-5000; something which JavaScript does not natively support.\n}\n//# sourceMappingURL=erfcinv.js.map","/**\n * RayleighCdf.\n *\n * @param x - data\n * @param sigma - standard deviation\n * @returns - rayleigh cdf\n */\nexport default function rayleighCdf(x, sigma = 1) {\n    if (x < 0) {\n        return 0;\n    }\n    return -Math.expm1(-Math.pow(x, 2) / (2 * Math.pow(sigma, 2)));\n}\n//# sourceMappingURL=rayleighCdf.js.map","import SplineInterpolator from 'spline-interpolator';\nimport { createFromToArray } from '../utils/createFromToArray';\nimport erfcinv from './erfcinv';\nimport rayleighCdf from './rayleighCdf';\n/**\n * Determine noise level by san plot methodology (https://doi.org/10.1002/mrc.4882)\n *\n * @param array - real or magnitude spectra data.\n * @param options - options\n * @returns noise level\n */\nexport function xNoiseSanPlot(array, options = {}) {\n    const { mask, cutOff, refine = true, magnitudeMode = false, scaleFactor = 1, factorStd = 5, fixOffset = true, } = options;\n    let input;\n    if (Array.isArray(mask) && mask.length === array.length) {\n        input = new Float64Array(array.filter((_e, i) => !mask[i]));\n    }\n    else {\n        input = new Float64Array(array);\n    }\n    if (scaleFactor > 1) {\n        for (let i = 0; i < input.length; i++) {\n            input[i] *= scaleFactor;\n        }\n    }\n    input = input.sort().reverse();\n    if (fixOffset && !magnitudeMode) {\n        let medianIndex = Math.floor(input.length / 2);\n        let median = 0.5 * (input[medianIndex] + input[medianIndex + 1]);\n        for (let i = 0; i < input.length; i++) {\n            input[i] -= median;\n        }\n    }\n    let firstNegativeValueIndex = input[input.length - 1] >= 0 ? input.length : input.findIndex((e) => e < 0);\n    let lastPositiveValueIndex = firstNegativeValueIndex - 1;\n    for (let i = lastPositiveValueIndex; i >= 0; i--) {\n        if (input[i] > 0) {\n            lastPositiveValueIndex = i;\n            break;\n        }\n    }\n    let signPositive = input.slice(0, lastPositiveValueIndex + 1);\n    let signNegative = input.slice(firstNegativeValueIndex);\n    let cutOffDist = cutOff || determineCutOff(signPositive, { magnitudeMode });\n    let pIndex = Math.floor(signPositive.length * cutOffDist);\n    let initialNoiseLevelPositive = signPositive[pIndex];\n    let skyPoint = signPositive[0];\n    let initialNoiseLevelNegative;\n    if (signNegative.length > 0) {\n        let nIndex = Math.floor(signNegative.length * (1 - cutOffDist));\n        initialNoiseLevelNegative = -1 * signNegative[nIndex];\n    }\n    else {\n        initialNoiseLevelNegative = 0;\n    }\n    let noiseLevelPositive = initialNoiseLevelPositive;\n    let noiseLevelNegative = initialNoiseLevelNegative;\n    let cloneSignPositive = signPositive.slice();\n    let cloneSignNegative = signNegative.slice();\n    let cutOffSignalsIndexPlus = 0;\n    let cutOffSignalsIndexNeg = 2;\n    if (refine) {\n        let cutOffSignals = noiseLevelPositive * factorStd;\n        cutOffSignalsIndexPlus = signPositive.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexPlus > -1) {\n            cloneSignPositive = signPositive.slice(cutOffSignalsIndexPlus);\n            noiseLevelPositive =\n                cloneSignPositive[Math.floor(cloneSignPositive.length * cutOffDist)];\n        }\n        cutOffSignals = noiseLevelNegative * factorStd;\n        cutOffSignalsIndexNeg = signNegative.findIndex((e) => e < cutOffSignals);\n        if (cutOffSignalsIndexNeg > -1) {\n            cloneSignNegative = signNegative.slice(cutOffSignalsIndexNeg);\n            noiseLevelNegative =\n                cloneSignPositive[Math.floor(cloneSignNegative.length * (1 - cutOffDist))];\n        }\n    }\n    let correctionFactor = -simpleNormInv(cutOffDist / 2, { magnitudeMode });\n    initialNoiseLevelPositive = initialNoiseLevelPositive / correctionFactor;\n    initialNoiseLevelNegative = initialNoiseLevelNegative / correctionFactor;\n    let effectiveCutOffDist, refinedCorrectionFactor;\n    if (refine && cutOffSignalsIndexPlus > -1) {\n        effectiveCutOffDist =\n            (cutOffDist * cloneSignPositive.length + cutOffSignalsIndexPlus) /\n                (cloneSignPositive.length + cutOffSignalsIndexPlus);\n        refinedCorrectionFactor =\n            -1 *\n                simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n        noiseLevelPositive /= refinedCorrectionFactor;\n        if (cutOffSignalsIndexNeg > -1) {\n            effectiveCutOffDist =\n                (cutOffDist * cloneSignNegative.length + cutOffSignalsIndexNeg) /\n                    (cloneSignNegative.length + cutOffSignalsIndexNeg);\n            refinedCorrectionFactor =\n                -1 *\n                    simpleNormInv(effectiveCutOffDist / 2, { magnitudeMode });\n            if (noiseLevelNegative !== 0) {\n                noiseLevelNegative /= refinedCorrectionFactor;\n            }\n        }\n    }\n    else {\n        noiseLevelPositive /= correctionFactor;\n        noiseLevelNegative /= correctionFactor;\n    }\n    return {\n        positive: noiseLevelPositive,\n        negative: noiseLevelNegative,\n        snr: skyPoint / noiseLevelPositive,\n        sanplot: generateSanPlot(input, {\n            fromTo: {\n                positive: { from: 0, to: lastPositiveValueIndex },\n                negative: { from: firstNegativeValueIndex, to: input.length },\n            },\n        }),\n    };\n}\n/**\n * DetermineCutOff.\n *\n * @param signPositive - Array of numbers.\n * @param [options = {}] - Options.\n * @param [options.mask] - Boolean array to filter data, if the i-th element is true then the i-th element of the distribution will be ignored.\n * @param [options.scaleFactor=1] - Factor to scale the data input[i]*=scaleFactor.\n * @param [options.cutOff] - Percent of positive signal distribution where the noise level will be determined, if it is not defined the program calculate it.\n * @param [options.factorStd=5] - Factor times std to determine what will be marked as signals.\n * @param [options.refine=true] - If true the noise level will be recalculated get out the signals using factorStd.\n * @param [options.fixOffset=true] - If the baseline is correct, the midpoint of distribution should be zero. If true, the distribution will be centered.\n * @param [options.logBaseY=2] - Log scale to apply in the intensity axis in order to avoid big numbers.\n * @param options.magnitudeMode -\n * @param options.considerList -\n * @param options.considerList.from -\n * @param options.considerList.step -\n * @param options.considerList.to -\n * @param options.fromTo -\n * @returns Result.\n */\nfunction determineCutOff(signPositive, options = {}) {\n    let { magnitudeMode = false, considerList = { from: 0.5, step: 0.1, to: 0.9 }, } = options;\n    //generate a list of values for\n    let cutOff = [];\n    let indexMax = signPositive.length - 1;\n    for (let i = 0.01; i <= 0.99; i += 0.01) {\n        let index = Math.round(indexMax * i);\n        let value = -signPositive[index] /\n            simpleNormInv([i / 2], { magnitudeMode });\n        cutOff.push([i, value]);\n    }\n    let minKi = Number.MAX_SAFE_INTEGER;\n    let { from, to, step } = considerList;\n    let delta = step / 2;\n    let whereToCutStat = 0.5;\n    for (let i = from; i <= to; i += step) {\n        let floor = i - delta;\n        let top = i + delta;\n        let elementsOfCutOff = cutOff.filter((e) => e[0] < top && e[0] > floor);\n        let averageValue = elementsOfCutOff.reduce((a, b) => a + Math.abs(b[1]), 0);\n        let kiSqrt = 0;\n        elementsOfCutOff.forEach((element) => {\n            kiSqrt += Math.pow(element[1] - averageValue, 2);\n        });\n        if (kiSqrt < minKi) {\n            minKi = kiSqrt;\n            whereToCutStat = i;\n        }\n    }\n    return whereToCutStat;\n}\n/**\n * SimpleNormInvs.\n *\n * @param data - Data array.\n * @param [options = {}] - Options.\n * @param [options.mask] - Boolean array to filter data, if the i-th element is true then the i-th element of the distribution will be ignored.\n * @param [options.scaleFactor=1] - Factor to scale the data input[i]*=scaleFactor.\n * @param [options.cutOff] - Percent of positive signal distribution where the noise level will be determined, if it is not defined the program calculate it.\n * @param [options.factorStd=5] - Factor times std to determine what will be marked as signals.\n * @param [options.refine=true] - If true the noise level will be recalculated get out the signals using factorStd.\n * @param [options.fixOffset=true] - If the baseline is correct, the midpoint of distribution should be zero. If true, the distribution will be centered.\n * @param [options.logBaseY=2] - Log scale to apply in the intensity axis in order to avoid big numbers.\n * @param options.magnitudeMode -\n * @param options.considerList -\n * @param options.considerList.from -\n * @param options.considerList.step -\n * @param options.considerList.to -\n * @param options.fromTo -\n * @returns Result.\n */\nfunction simpleNormInv(data, options = {}) {\n    const { magnitudeMode = false } = options;\n    if (!Array.isArray(data))\n        data = [data];\n    let from = 0;\n    let to = 2;\n    let step = 0.01;\n    let xTraining = Array.from(createArray(from, to, step));\n    let result = new Float64Array(data.length);\n    let yTraining = new Float64Array(xTraining.length);\n    if (magnitudeMode) {\n        let factor = 1;\n        for (let i = 0; i < yTraining.length; i++) {\n            let finalInput = xTraining[i] * factor;\n            yTraining[i] = 1 - rayleighCdf(finalInput);\n        }\n        let interp = new SplineInterpolator(xTraining, yTraining);\n        for (let i = 0; i < result.length; i++) {\n            let yValue = 2 * data[i];\n            result[i] = -1 * interp.interpolate(yValue);\n        }\n    }\n    else {\n        for (let i = 0; i < result.length; i++) {\n            result[i] = -1 * Math.SQRT2 * erfcinv(2 * data[i]);\n        }\n    }\n    return result.length === 1 ? result[0] : result;\n}\n/**\n * CreateArray.\n *\n * @param from - From.\n * @param to - To.\n * @param step - Step.\n * @returns Array of results.\n */\nfunction createArray(from, to, step) {\n    // Changed Array to Float64Array\n    let result = new Float64Array(Math.abs((from - to) / step + 1));\n    for (let i = 0; i < result.length; i++) {\n        result[i] = from + i * step;\n    }\n    return result;\n}\n/**\n * GenerateSanPlot.\n *\n * @param array - Array.\n * @param [options = {}] - Options.\n * @param [options.mask] - Boolean array to filter data, if the i-th element is true then the i-th element of the distribution will be ignored.\n * @param [options.scaleFactor=1] - Factor to scale the data input[i]*=scaleFactor.\n * @param [options.cutOff] - Percent of positive signal distribution where the noise level will be determined, if it is not defined the program calculate it.\n * @param [options.factorStd=5] - Factor times std to determine what will be marked as signals.\n * @param [options.refine=true] - If true the noise level will be recalculated get out the signals using factorStd.\n * @param [options.fixOffset=true] - If the baseline is correct, the midpoint of distribution should be zero. If true, the distribution will be centered.\n * @param [options.logBaseY=2] - Log scale to apply in the intensity axis in order to avoid big numbers.\n * @param options.magnitudeMode -\n * @param options.considerList -\n * @param options.considerList.from -\n * @param options.considerList.step -\n * @param options.considerList.to -\n * @param options.fromTo -\n * @returns Results.\n */\nfunction generateSanPlot(array, options = {}) {\n    const { fromTo, logBaseY = 2 } = options;\n    let sanplot = {};\n    for (let key in fromTo) {\n        let { from, to } = fromTo[key];\n        sanplot[key] =\n            from !== to\n                ? scale(array.slice(from, to), {\n                    logBaseY,\n                })\n                : { x: [], y: [] };\n        if (key === 'negative') {\n            sanplot[key].y.reverse();\n        }\n    }\n    return sanplot;\n}\n/**\n * Scale.\n *\n * @param array - Array.\n * @param [options = {}] - Options.\n * @param [options.mask] - Boolean array to filter data, if the i-th element is true then the i-th element of the distribution will be ignored.\n * @param [options.scaleFactor=1] - Factor to scale the data input[i]*=scaleFactor.\n * @param [options.cutOff] - Percent of positive signal distribution where the noise level will be determined, if it is not defined the program calculate it.\n * @param [options.factorStd=5] - Factor times std to determine what will be marked as signals.\n * @param [options.refine=true] - If true the noise level will be recalculated get out the signals using factorStd.\n * @param [options.fixOffset=true] - If the baseline is correct, the midpoint of distribution should be zero. If true, the distribution will be centered.\n * @param [options.logBaseY=2] - Log scale to apply in the intensity axis in order to avoid big numbers.\n * @param options.magnitudeMode -\n * @param options.considerList -\n * @param options.considerList.from -\n * @param options.considerList.step -\n * @param options.considerList.to -\n * @param options.fromTo -\n * @returns Results.\n */\nfunction scale(array, options = {}) {\n    const { log10, abs } = Math;\n    const { logBaseY } = options;\n    if (logBaseY) {\n        array = array.slice();\n        const logOfBase = log10(logBaseY);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = log10(abs(array[i])) / logOfBase;\n        }\n    }\n    const xAxis = createFromToArray({\n        from: 0,\n        to: array.length - 1,\n        length: array.length,\n    });\n    return { x: xAxis, y: array };\n}\n//# sourceMappingURL=xNoiseSanPlot.js.map","/**\n * Phase correction filter\n *\n * @param data - complex spectrum\n * @param phi0 - Angle in radians for zero order phase correction\n * @param phi1 - Angle in radians for first order phase correction\n * @returns - returns a new object {re:[], im:[]}\n */\nexport function reimPhaseCorrection(data, phi0 = 0, phi1 = 0) {\n    phi0 = Number.isFinite(phi0) ? phi0 : 0;\n    phi1 = Number.isFinite(phi1) ? phi1 : 0;\n    const re = data.re;\n    const im = data.im;\n    const length = data.re.length;\n    const delta = phi1 / length;\n    const alpha = 2 * Math.pow(Math.sin(delta / 2), 2);\n    const beta = Math.sin(delta);\n    let cosTheta = Math.cos(phi0);\n    let sinTheta = Math.sin(phi0);\n    const newRe = new Float64Array(length);\n    const newIm = new Float64Array(length);\n    for (let i = 0; i < length; i++) {\n        newRe[i] = re[i] * cosTheta - im[i] * sinTheta;\n        newIm[i] = re[i] * sinTheta + im[i] * cosTheta;\n        // calculate angles i+1 from i\n        let newCosTheta = cosTheta - (alpha * cosTheta + beta * sinTheta);\n        let newSinTheta = sinTheta - (alpha * sinTheta - beta * cosTheta);\n        cosTheta = newCosTheta;\n        sinTheta = newSinTheta;\n    }\n    return { re: newRe, im: newIm };\n}\n//# sourceMappingURL=reimPhaseCorrection.js.map","import { xNoiseSanPlot } from '../x/xNoiseSanPlot';\nimport { reimAbsolute } from './reimAbsolute';\nimport { reimPhaseCorrection } from './reimPhaseCorrection';\n/**\n * Implementation of the algorithm for automatic phase correction: A robust, general automatic phase\n * correction algorithm for high-resolution NMR data. 10.1002/mrc.4586\n *\n * @param data - complex spectrum\n * @param options - options\n */\nexport function reimAutoPhaseCorrection(data, options = {}) {\n    const { re, im } = data;\n    const length = re.length;\n    const { magnitudeMode = true, minRegSize = 30, factorNoise = 3, maxDistanceToJoin = 256, } = options;\n    let magnitudeData = magnitudeMode ? reimAbsolute(data) : re;\n    let ds = holoborodko(magnitudeData);\n    let peaksDs = robustBaseLineRegionsDetection(ds, {\n        maxDistanceToJoin,\n        magnitudeMode,\n        factorNoise,\n    });\n    let peaksSp = robustBaseLineRegionsDetection(magnitudeData, {\n        maxDistanceToJoin,\n        magnitudeMode,\n        factorNoise,\n    });\n    let finalPeaks = new Uint8Array(length);\n    for (let i = 0; i < length; i++) {\n        finalPeaks[i] = peaksSp[i] && peaksDs[i];\n    }\n    // Once the regions are detected, we auto phase each of them separately.\n    // This part can be put inside a function\n    let i = -1;\n    let x0 = 0;\n    let res = [];\n    while (i < length) {\n        //phase first region\n        let reTmp = [];\n        let imTmp = [];\n        //Look for the first 1 in the array\n        while (!finalPeaks[++i] && i < length) {\n            //Add some extra points(0.1 ppm) at rigth and left sides of the region.\n            x0 = i;\n        }\n        for (; finalPeaks[i] && i < length; i++) {\n            reTmp.push(re[i]);\n            imTmp.push(im[i]);\n            i++;\n        }\n        if (reTmp.length > minRegSize) {\n            res.push(autoPhaseRegion(reTmp, imTmp, x0));\n        }\n    }\n    // Still some corrections needed. In the paper they remove the outlayers interatively\n    // until they can perform a regression witout bad points. Can someone help here?\n    let [ph1, ph0] = weightedLinearRegression(res.map((r) => r.x0 / length), res.map((r) => r.ph0), res.map((r) => r.area / 1e11));\n    let phased = reimPhaseCorrection({ re, im }, (ph0 * Math.PI) / 180, (ph1 * Math.PI) / 180);\n    return { data: phased, ph0, ph1 };\n}\n/**\n * AutoPhaseRegion.\n *\n * @param re - Array of Number.\n * @param im - Array of Number.\n * @param x0 - Number.\n * @returns Region.\n */\nfunction autoPhaseRegion(re, im, x0) {\n    let start = -180;\n    let stop = 180;\n    let nSteps = 6;\n    let maxSteps = 5;\n    let bestAng = 0;\n    let minArea = Number.MAX_SAFE_INTEGER;\n    while (maxSteps > 0) {\n        let dAng = (stop - start) / (nSteps + 1);\n        for (let i = start; i <= stop; i += dAng) {\n            let phased = reimPhaseCorrection({ re, im }, toRadians(i), 0);\n            let negArea = getNegArea(phased.re);\n            if (negArea < minArea) {\n                [minArea, bestAng] = [negArea, i];\n            }\n        }\n        start = bestAng - dAng;\n        stop = bestAng + dAng;\n        maxSteps--;\n    }\n    // Calculate the area for the best angle\n    let phased = reimPhaseCorrection({ re, im }, toRadians(bestAng), 0);\n    let area = 0;\n    let sumX = 0;\n    for (let j = 0; j < re.length; j++) {\n        area += phased.re[j];\n        sumX += phased.re[j] * (j + x0);\n    }\n    return { ph0: bestAng, area, x0: sumX / area };\n}\n/**\n * Holoborodko.\n *\n * @param s - Array of float.\n * @returns Array of float.\n */\nfunction holoborodko(s) {\n    let dk = new Float64Array(s.length);\n    for (let i = 5; i < s.length - 5; i++) {\n        dk[i] =\n            (42 * (s[i + 1] - s[i - 1]) +\n                48 * (s[i + 2] - s[i - 2]) +\n                27 * (s[i + 3] + s[i - 3]) +\n                8 * (s[i + 4] - s[i - 4]) +\n                s[i + 5] -\n                s[i - 5]) /\n                512;\n    }\n    //Fill the borders\n    for (let i = 0; i < 5; i++) {\n        dk[i] = dk[5];\n        dk[s.length - i - 1] = dk[s.length - 6];\n    }\n    return dk;\n}\n/**\n * RobustBaseLineRegionsDetection.\n *\n * @param s\n * @param options\n * @param options.magnitudeMode\n * @param options.maxDistanceToJoin\n * @param options.factorNoise\n */\nfunction robustBaseLineRegionsDetection(s, options) {\n    const { maxDistanceToJoin, magnitudeMode, factorNoise } = options;\n    let mask = new Uint8Array(s.length);\n    for (let i = 0; i < s.length; i++) {\n        mask[i] = 0;\n    }\n    let change = true;\n    while (change) {\n        let noiseLevel = xNoiseSanPlot(s, { magnitudeMode });\n        let cutOff = factorNoise * noiseLevel.positive;\n        change = false;\n        for (let i = 0; i < s.length; i++) {\n            if (Math.abs(s[i]) > cutOff && !mask[i]) {\n                change = true;\n                mask[i] = 1;\n            }\n        }\n    }\n    // Clean up mask by merging peaks blocks, separated by just a few points(4??).\n    let count = 0;\n    let prev = 0;\n    for (let i = 0; i < s.length; i++) {\n        if (!mask[i]) {\n            count++;\n        }\n        else {\n            if (count < maxDistanceToJoin) {\n                for (let j = 0; j <= count; j++) {\n                    mask[prev + j] = 1;\n                }\n            }\n            while (mask[++i] && i < s.length)\n                ;\n            prev = i;\n            count = 0;\n        }\n    }\n    return mask;\n}\n/**\n * WeightedLinearRegression.\n *\n * @param x\n * @param y\n * @param w\n */\nfunction weightedLinearRegression(x, y, w) {\n    let sxtw = 0;\n    let swx = 0;\n    let sw = 0;\n    let sxtwy = 0;\n    let swy = 0;\n    for (let i = 0; i < x.length; i++) {\n        sxtw += x[i] * x[i] * w[i];\n        swx += x[i] * w[i];\n        sw += w[i];\n        sxtwy += x[i] * w[i] * y[i];\n        swy += w[i] * y[i];\n    }\n    /* Just to know what is the matrix system that we solve\n     let Mx=[[sxtw, swx], [swx, sw]];\n     let My=[[sxtwy], [swy]];\n    */\n    //Mx inverse\n    let detMx = sxtw * sw - swx * swx;\n    let inMx = [\n        [sw / detMx, -swx / detMx],\n        [-swx / detMx, sxtw / detMx],\n    ];\n    return [\n        inMx[0][0] * sxtwy + inMx[0][1] * swy,\n        inMx[1][0] * sxtwy + inMx[1][1] * swy,\n    ];\n}\nconst toRadians = (degree) => (degree * Math.PI) / 180;\nconst getNegArea = (data) => {\n    let area = 0;\n    for (let element of data) {\n        if (element < 0)\n            area -= element;\n    }\n    return area;\n};\n//# sourceMappingURL=reimAutoPhaseCorrection.js.map","'use strict';\n\nfunction FFT(size) {\n  this.size = size | 0;\n  if (this.size <= 1 || (this.size & (this.size - 1)) !== 0)\n    throw new Error('FFT size must be a power of two and bigger than 1');\n\n  this._csize = size << 1;\n\n  // NOTE: Use of `var` is intentional for old V8 versions\n  var table = new Array(this.size * 2);\n  for (var i = 0; i < table.length; i += 2) {\n    const angle = Math.PI * i / this.size;\n    table[i] = Math.cos(angle);\n    table[i + 1] = -Math.sin(angle);\n  }\n  this.table = table;\n\n  // Find size's power of two\n  var power = 0;\n  for (var t = 1; this.size > t; t <<= 1)\n    power++;\n\n  // Calculate initial step's width:\n  //   * If we are full radix-4 - it is 2x smaller to give inital len=8\n  //   * Otherwise it is the same as `power` to give len=4\n  this._width = power % 2 === 0 ? power - 1 : power;\n\n  // Pre-compute bit-reversal patterns\n  this._bitrev = new Array(1 << this._width);\n  for (var j = 0; j < this._bitrev.length; j++) {\n    this._bitrev[j] = 0;\n    for (var shift = 0; shift < this._width; shift += 2) {\n      var revShift = this._width - shift - 2;\n      this._bitrev[j] |= ((j >>> shift) & 3) << revShift;\n    }\n  }\n\n  this._out = null;\n  this._data = null;\n  this._inv = 0;\n}\nmodule.exports = FFT;\n\nFFT.prototype.fromComplexArray = function fromComplexArray(complex, storage) {\n  var res = storage || new Array(complex.length >>> 1);\n  for (var i = 0; i < complex.length; i += 2)\n    res[i >>> 1] = complex[i];\n  return res;\n};\n\nFFT.prototype.createComplexArray = function createComplexArray() {\n  const res = new Array(this._csize);\n  for (var i = 0; i < res.length; i++)\n    res[i] = 0;\n  return res;\n};\n\nFFT.prototype.toComplexArray = function toComplexArray(input, storage) {\n  var res = storage || this.createComplexArray();\n  for (var i = 0; i < res.length; i += 2) {\n    res[i] = input[i >>> 1];\n    res[i + 1] = 0;\n  }\n  return res;\n};\n\nFFT.prototype.completeSpectrum = function completeSpectrum(spectrum) {\n  var size = this._csize;\n  var half = size >>> 1;\n  for (var i = 2; i < half; i += 2) {\n    spectrum[size - i] = spectrum[i];\n    spectrum[size - i + 1] = -spectrum[i + 1];\n  }\n};\n\nFFT.prototype.transform = function transform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._transform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.realTransform = function realTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 0;\n  this._realTransform4();\n  this._out = null;\n  this._data = null;\n};\n\nFFT.prototype.inverseTransform = function inverseTransform(out, data) {\n  if (out === data)\n    throw new Error('Input and output buffers must be different');\n\n  this._out = out;\n  this._data = data;\n  this._inv = 1;\n  this._transform4();\n  for (var i = 0; i < out.length; i++)\n    out[i] /= this.size;\n  this._out = null;\n  this._data = null;\n};\n\n// radix-4 implementation\n//\n// NOTE: Uses of `var` are intentional for older V8 version that do not\n// support both `let compound assignments` and `const phi`\nFFT.prototype._transform4 = function _transform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform2(outOff, off, step);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleTransform4(outOff, off, step);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var quarterLen = len >>> 2;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      // Full case\n      var limit = outOff + quarterLen;\n      for (var i = outOff, k = 0; i < limit; i += 2, k += step) {\n        const A = i;\n        const B = A + quarterLen;\n        const C = B + quarterLen;\n        const D = C + quarterLen;\n\n        // Original values\n        const Ar = out[A];\n        const Ai = out[A + 1];\n        const Br = out[B];\n        const Bi = out[B + 1];\n        const Cr = out[C];\n        const Ci = out[C + 1];\n        const Dr = out[D];\n        const Di = out[D + 1];\n\n        // Middle values\n        const MAr = Ar;\n        const MAi = Ai;\n\n        const tableBr = table[k];\n        const tableBi = inv * table[k + 1];\n        const MBr = Br * tableBr - Bi * tableBi;\n        const MBi = Br * tableBi + Bi * tableBr;\n\n        const tableCr = table[2 * k];\n        const tableCi = inv * table[2 * k + 1];\n        const MCr = Cr * tableCr - Ci * tableCi;\n        const MCi = Cr * tableCi + Ci * tableCr;\n\n        const tableDr = table[3 * k];\n        const tableDi = inv * table[3 * k + 1];\n        const MDr = Dr * tableDr - Di * tableDi;\n        const MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        const T0r = MAr + MCr;\n        const T0i = MAi + MCi;\n        const T1r = MAr - MCr;\n        const T1i = MAi - MCi;\n        const T2r = MBr + MDr;\n        const T2i = MBi + MDi;\n        const T3r = inv * (MBr - MDr);\n        const T3i = inv * (MBi - MDi);\n\n        // Final values\n        const FAr = T0r + T2r;\n        const FAi = T0i + T2i;\n\n        const FCr = T0r - T2r;\n        const FCi = T0i - T2i;\n\n        const FBr = T1r + T3i;\n        const FBi = T1i - T3r;\n\n        const FDr = T1r - T3i;\n        const FDi = T1i + T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n        out[C] = FCr;\n        out[C + 1] = FCi;\n        out[D] = FDr;\n        out[D + 1] = FDi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleTransform2 = function _singleTransform2(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const evenI = data[off + 1];\n  const oddR = data[off + step];\n  const oddI = data[off + step + 1];\n\n  const leftR = evenR + oddR;\n  const leftI = evenI + oddI;\n  const rightR = evenR - oddR;\n  const rightI = evenI - oddI;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = leftI;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = rightI;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleTransform4 = function _singleTransform4(outOff, off,\n                                                             step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Ai = data[off + 1];\n  const Br = data[off + step];\n  const Bi = data[off + step + 1];\n  const Cr = data[off + step2];\n  const Ci = data[off + step2 + 1];\n  const Dr = data[off + step3];\n  const Di = data[off + step3 + 1];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T0i = Ai + Ci;\n  const T1r = Ar - Cr;\n  const T1i = Ai - Ci;\n  const T2r = Br + Dr;\n  const T2i = Bi + Di;\n  const T3r = inv * (Br - Dr);\n  const T3i = inv * (Bi - Di);\n\n  // Final values\n  const FAr = T0r + T2r;\n  const FAi = T0i + T2i;\n\n  const FBr = T1r + T3i;\n  const FBi = T1i - T3r;\n\n  const FCr = T0r - T2r;\n  const FCi = T0i - T2i;\n\n  const FDr = T1r - T3i;\n  const FDi = T1i + T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = FAi;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = FCi;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n\n// Real input radix-4 implementation\nFFT.prototype._realTransform4 = function _realTransform4() {\n  var out = this._out;\n  var size = this._csize;\n\n  // Initial step (permute and transform)\n  var width = this._width;\n  var step = 1 << width;\n  var len = (size / step) << 1;\n\n  var outOff;\n  var t;\n  var bitrev = this._bitrev;\n  if (len === 4) {\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform2(outOff, off >>> 1, step >>> 1);\n    }\n  } else {\n    // len === 8\n    for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n      const off = bitrev[t];\n      this._singleRealTransform4(outOff, off >>> 1, step >>> 1);\n    }\n  }\n\n  // Loop through steps in decreasing order\n  var inv = this._inv ? -1 : 1;\n  var table = this.table;\n  for (step >>= 2; step >= 2; step >>= 2) {\n    len = (size / step) << 1;\n    var halfLen = len >>> 1;\n    var quarterLen = halfLen >>> 1;\n    var hquarterLen = quarterLen >>> 1;\n\n    // Loop through offsets in the data\n    for (outOff = 0; outOff < size; outOff += len) {\n      for (var i = 0, k = 0; i <= hquarterLen; i += 2, k += step) {\n        var A = outOff + i;\n        var B = A + quarterLen;\n        var C = B + quarterLen;\n        var D = C + quarterLen;\n\n        // Original values\n        var Ar = out[A];\n        var Ai = out[A + 1];\n        var Br = out[B];\n        var Bi = out[B + 1];\n        var Cr = out[C];\n        var Ci = out[C + 1];\n        var Dr = out[D];\n        var Di = out[D + 1];\n\n        // Middle values\n        var MAr = Ar;\n        var MAi = Ai;\n\n        var tableBr = table[k];\n        var tableBi = inv * table[k + 1];\n        var MBr = Br * tableBr - Bi * tableBi;\n        var MBi = Br * tableBi + Bi * tableBr;\n\n        var tableCr = table[2 * k];\n        var tableCi = inv * table[2 * k + 1];\n        var MCr = Cr * tableCr - Ci * tableCi;\n        var MCi = Cr * tableCi + Ci * tableCr;\n\n        var tableDr = table[3 * k];\n        var tableDi = inv * table[3 * k + 1];\n        var MDr = Dr * tableDr - Di * tableDi;\n        var MDi = Dr * tableDi + Di * tableDr;\n\n        // Pre-Final values\n        var T0r = MAr + MCr;\n        var T0i = MAi + MCi;\n        var T1r = MAr - MCr;\n        var T1i = MAi - MCi;\n        var T2r = MBr + MDr;\n        var T2i = MBi + MDi;\n        var T3r = inv * (MBr - MDr);\n        var T3i = inv * (MBi - MDi);\n\n        // Final values\n        var FAr = T0r + T2r;\n        var FAi = T0i + T2i;\n\n        var FBr = T1r + T3i;\n        var FBi = T1i - T3r;\n\n        out[A] = FAr;\n        out[A + 1] = FAi;\n        out[B] = FBr;\n        out[B + 1] = FBi;\n\n        // Output final middle point\n        if (i === 0) {\n          var FCr = T0r - T2r;\n          var FCi = T0i - T2i;\n          out[C] = FCr;\n          out[C + 1] = FCi;\n          continue;\n        }\n\n        // Do not overwrite ourselves\n        if (i === hquarterLen)\n          continue;\n\n        // In the flipped case:\n        // MAi = -MAi\n        // MBr=-MBi, MBi=-MBr\n        // MCr=-MCr\n        // MDr=MDi, MDi=MDr\n        var ST0r = T1r;\n        var ST0i = -T1i;\n        var ST1r = T0r;\n        var ST1i = -T0i;\n        var ST2r = -inv * T3i;\n        var ST2i = -inv * T3r;\n        var ST3r = -inv * T2i;\n        var ST3i = -inv * T2r;\n\n        var SFAr = ST0r + ST2r;\n        var SFAi = ST0i + ST2i;\n\n        var SFBr = ST1r + ST3i;\n        var SFBi = ST1i - ST3r;\n\n        var SA = outOff + quarterLen - i;\n        var SB = outOff + halfLen - i;\n\n        out[SA] = SFAr;\n        out[SA + 1] = SFAi;\n        out[SB] = SFBr;\n        out[SB + 1] = SFBi;\n      }\n    }\n  }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleRealTransform2 = function _singleRealTransform2(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n\n  const evenR = data[off];\n  const oddR = data[off + step];\n\n  const leftR = evenR + oddR;\n  const rightR = evenR - oddR;\n\n  out[outOff] = leftR;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = rightR;\n  out[outOff + 3] = 0;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleRealTransform4 = function _singleRealTransform4(outOff,\n                                                                     off,\n                                                                     step) {\n  const out = this._out;\n  const data = this._data;\n  const inv = this._inv ? -1 : 1;\n  const step2 = step * 2;\n  const step3 = step * 3;\n\n  // Original values\n  const Ar = data[off];\n  const Br = data[off + step];\n  const Cr = data[off + step2];\n  const Dr = data[off + step3];\n\n  // Pre-Final values\n  const T0r = Ar + Cr;\n  const T1r = Ar - Cr;\n  const T2r = Br + Dr;\n  const T3r = inv * (Br - Dr);\n\n  // Final values\n  const FAr = T0r + T2r;\n\n  const FBr = T1r;\n  const FBi = -T3r;\n\n  const FCr = T0r - T2r;\n\n  const FDr = T1r;\n  const FDi = T3r;\n\n  out[outOff] = FAr;\n  out[outOff + 1] = 0;\n  out[outOff + 2] = FBr;\n  out[outOff + 3] = FBi;\n  out[outOff + 4] = FCr;\n  out[outOff + 5] = 0;\n  out[outOff + 6] = FDr;\n  out[outOff + 7] = FDi;\n};\n","/**\n * This function performs a circular shift to an array\n * Positive values of shifts will shift to the right and negative values will do to the left\n *\n * @example xRotate([1,2,3,4],1) -> [4,1,2,3]\n * @example xRotate([1,2,3,4],-1) -> [2,3,4,1]\n * @param array - array\n * @param shift - shift\n * @returns - rotated array\n */\nexport function xRotate(array, shift) {\n    shift = shift % array.length;\n    if (shift < 0)\n        shift += array.length;\n    let result = new Float64Array(array.length);\n    result.set(array.slice(array.length - shift));\n    result.set(array.slice(0, array.length - shift), shift);\n    return result;\n}\n//# sourceMappingURL=xRotate.js.map","import FFT from 'fft.js';\nimport { xRotate } from '../x/xRotate';\n/**\n * ReimFFT.\n *\n * @param data - complex spectrum\n * @param options - options.\n * @returns FFT of complex spectrum.\n */\nexport function reimFFT(data, options = {}) {\n    const { inverse = false, applyZeroShift = false } = options;\n    let { re, im } = data;\n    const size = re.length;\n    const csize = size << 1;\n    let complexArray = new Float64Array(csize);\n    for (let i = 0; i < csize; i += 2) {\n        complexArray[i] = re[i >>> 1];\n        complexArray[i + 1] = im[i >>> 1];\n    }\n    let fft = new FFT(size);\n    let output = new Float64Array(csize);\n    if (inverse) {\n        if (applyZeroShift)\n            complexArray = zeroShift(complexArray, true);\n        fft.inverseTransform(output, complexArray);\n    }\n    else {\n        fft.transform(output, complexArray);\n        if (applyZeroShift)\n            output = zeroShift(output);\n    }\n    let newRe = new Float64Array(size);\n    let newIm = new Float64Array(size);\n    for (let i = 0; i < csize; i += 2) {\n        newRe[i >>> 1] = output[i];\n        newIm[i >>> 1] = output[i + 1];\n    }\n    return { re: newRe, im: newIm };\n}\nconst zeroShift = (data, inverse) => {\n    let middle = inverse\n        ? Math.ceil(data.length / 2)\n        : Math.floor(data.length / 2);\n    return xRotate(data, middle);\n};\n//# sourceMappingURL=reimFFT.js.map","/**\n * This function returns an array with absolute values\n *\n * @param array - array of data\n * @returns - array with absolute values\n */\nexport function xAbsolute(array) {\n    let tmpArray = array.slice();\n    for (let i = 0; i < tmpArray.length; i++) {\n        if (tmpArray[i] < 0)\n            tmpArray[i] *= -1;\n    }\n    return tmpArray;\n}\n//# sourceMappingURL=xAbsolute.js.map","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","(function(){function a(d){for(var e=0,f=d.length-1,g=void 0,h=void 0,i=void 0,j=c(e,f);!0;){if(f<=e)return d[j];if(f==e+1)return d[e]>d[f]&&b(d,e,f),d[j];for(g=c(e,f),d[g]>d[f]&&b(d,g,f),d[e]>d[f]&&b(d,e,f),d[g]>d[e]&&b(d,g,e),b(d,g,e+1),h=e+1,i=f;!0;){do h++;while(d[e]>d[h]);do i--;while(d[i]>d[e]);if(i<h)break;b(d,h,i)}b(d,e,i),i<=j&&(e=h),i>=j&&(f=i-1)}}var b=function b(d,e,f){var _ref;return _ref=[d[f],d[e]],d[e]=_ref[0],d[f]=_ref[1],_ref},c=function c(d,e){return~~((d+e)/2)};'undefined'!=typeof module&&module.exports?module.exports=a:window.median=a})();\n","import { isAnyArray } from 'is-any-array';\nimport quickSelectMedian from 'median-quickselect';\n/**\n * Calculates the median of an array\n *\n * @param input - Array containing values\n * @returns - median\n */\nexport function xMedian(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    // we need to slice because the order of elements is changed in the quickselect\n    // https://github.com/mad-gooze/median-quickselect\n    return quickSelectMedian(input.slice());\n}\n//# sourceMappingURL=xMedian.js.map","import { xAbsolute } from './xAbsolute';\nimport { xMedian } from './xMedian';\n/**\n * This function calculates the median after taking the reimAbsolute values of the points\n *\n * @param array - the array for which we want to calculate the absolute value\n * @returns - median\n */\nexport function xAbsoluteMedian(array) {\n    return xMedian(xAbsolute(array));\n}\n//# sourceMappingURL=xAbsoluteMedian.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xAdd the first array by the second array or a constant value to each element of the first array\n *\n * @param array1 - the first array\n * @param array2 - the second array or number\n */\nexport function xAdd(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xAdd: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = array2;\n    }\n    let array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] + array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xAdd.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function\n * @param output - undefined or a new array\n * @param length - length of the output array\n * @returns\n */\nexport function getOutputArray(output, length) {\n    if (output !== undefined) {\n        if (!isAnyArray(output)) {\n            throw new TypeError('output option must be an array if specified');\n        }\n        if (output.length !== length) {\n            throw new TypeError('the output array does not have the correct length');\n        }\n        return output;\n    }\n    else {\n        return new Float64Array(length);\n    }\n}\n//# sourceMappingURL=getOutputArray.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from './utils/getOutputArray';\n/**\n * This function xMultiply the first array by the second array or a constant value to each element of the first array\n *\n * @param array1 - first array\n * @param array2 - second array\n * @param options - options\n */\nexport function xMultiply(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xMultiply: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    let array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] * array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xMultiply.js.map","import { xMultiply } from './xMultiply';\n/**\n * Dot product between two arrays\n *\n * @param A - First array.\n * @param B - Second array.\n */\nexport function xDotProduct(A, B) {\n    let g = xMultiply(A, B);\n    let result = 0;\n    for (let i = 0; i < A.length; i++) {\n        result += g[i];\n    }\n    return result;\n}\n//# sourceMappingURL=xDotProduct.js.map","import { xDotProduct } from './xDotProduct';\n/**\n * Calculates the cross-correlation between 2 arrays\n *\n * @param A - fixed array\n * @param B - sweeping array\n * @param options - Options\n */\nexport function xCrossCorrelation(A, B, options = {}) {\n    let { tau = 1, lag = A.length - 1 } = options;\n    let result = new Float64Array(1 + (2 * lag) / tau);\n    if (A.length === B.length) {\n        let n = B.length;\n        let g = new Float64Array(2 * n);\n        let q = new Float64Array(2 * n);\n        for (let i = 0; i < n; i++) {\n            q[n + i] = B[i];\n        }\n        for (let i = n * 2 - (tau - 1); i > 0; i -= tau) {\n            let k = 0;\n            for (let j = i; j < n * 2; j++) {\n                g[k] = q[j];\n                k++;\n            }\n            let w = [];\n            for (let l = 0; l < n; l++) {\n                w[l] = g[l];\n            }\n            result[(k - (n - lag)) / tau] = xDotProduct(A, w);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xCrossCorrelation.js.map","import { xCrossCorrelation } from './xCrossCorrelation';\n/**\n * Calculates the auto-correlation of an array\n *\n * @param A - the array for which to calculate the auto-correlation\n * @param options - Options\n */\nexport function xAutoCorrelation(A, options = {}) {\n    return xCrossCorrelation(A, A, options);\n}\n//# sourceMappingURL=xAutoCorrelation.js.map","/**\n * Calculating the box plot of the array\n *\n * @param array - data\n */\nexport function xBoxPlot(array) {\n    array = Float64Array.from(array).sort();\n    if (array.length < 5) {\n        throw Error('xBoxPlot: can not calculate info if array contains less than 3 elements');\n    }\n    let info = {\n        q1: 0.0,\n        median: 0.0,\n        q3: 0.0,\n        min: array[0],\n        max: array[array.length - 1],\n    };\n    let q1max, q3min;\n    if (array.length % 2 === 1) {\n        // odd\n        let middle = (array.length - 1) / 2;\n        info.median = array[middle];\n        q1max = middle - 1;\n        q3min = middle + 1;\n    }\n    else {\n        // even\n        q3min = array.length / 2;\n        q1max = q3min - 1;\n        info.median = (array[q1max] + array[q3min]) / 2;\n    }\n    if (q1max % 2 === 0) {\n        info.q1 = array[q1max / 2];\n        info.q3 = array[(array.length + q3min - 1) / 2];\n    }\n    else {\n        info.q1 = (array[(q1max + 1) / 2] + array[(q1max - 1) / 2]) / 2;\n        let middleOver = (array.length + q3min) / 2;\n        info.q3 = (array[middleOver] + array[middleOver - 1]) / 2;\n    }\n    return info;\n}\n//# sourceMappingURL=xBoxPlot.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","/**\n * Calculates the correlation between 2 vectors\n * https://en.wikipedia.org/wiki/Correlation_and_dependence\n *\n * @param A - first array\n * @param B - sencond array\n */\nexport function xCorrelation(A, B) {\n    let n = A.length;\n    let sumA = 0;\n    let sumA2 = 0;\n    let sumB = 0;\n    let sumB2 = 0;\n    let sumAB = 0;\n    for (let i = 0; i < n; i++) {\n        let a = A[i];\n        let b = B[i];\n        sumA += a;\n        sumA2 += a ** 2;\n        sumB += b;\n        sumB2 += b ** 2;\n        sumAB += a * b;\n    }\n    return ((n * sumAB - sumA * sumB) /\n        (Math.sqrt(n * sumA2 - sumA ** 2) * Math.sqrt(n * sumB2 - sumB ** 2)));\n}\n//# sourceMappingURL=xCorrelation.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Calculate an array of the same size that is the cumulative values\n *\n * @param array - initial array\n */\nexport function xCumulative(array) {\n    if (!isAnyArray(array)) {\n        throw new TypeError('input must be an array');\n    }\n    let newArray = new Float64Array(array.length);\n    if (array.length < 1)\n        return newArray;\n    newArray[0] = array[0];\n    for (let i = 1; i < array.length; i++) {\n        newArray[i] = newArray[i - 1] + array[i];\n    }\n    return newArray;\n}\n//# sourceMappingURL=xCumulative.js.map","import { isAnyArray } from 'is-any-array';\nimport { getOutputArray } from '..';\n/**\n * This function divide the first array by the second array or a constant value to each element of the first array\n *\n * @param array1 - first array\n * @param array2 - second array or number\n * @param options - options\n */\nexport function xDivide(array1, array2, options = {}) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xDivide: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    let array3 = getOutputArray(options.output, array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] / array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xDivide.js.map","import { xCheck } from './xCheck';\n/**\n * Returns a copy of the data as Float64\n *\n * @param array - array of numbers\n */\nexport function xEnsureFloat64(array) {\n    xCheck(array);\n    if (array instanceof Float64Array) {\n        return array.slice(0);\n    }\n    return Float64Array.from(array);\n}\n//# sourceMappingURL=xEnsureFloat64.js.map","/**\n * Returns the closest index of a `target`\n *\n * @param array - array of numbers\n * @param target - target\n * @returns - closest index\n */\nexport function xFindClosestIndex(array, target, options = {}) {\n    const { sorted = true } = options;\n    if (sorted) {\n        let low = 0;\n        let high = array.length - 1;\n        let middle = 0;\n        while (high - low > 1) {\n            middle = low + ((high - low) >> 1);\n            if (array[middle] < target) {\n                low = middle;\n            }\n            else if (array[middle] > target) {\n                high = middle;\n            }\n            else {\n                return middle;\n            }\n        }\n        if (low < array.length - 1) {\n            if (Math.abs(target - array[low]) < Math.abs(array[low + 1] - target)) {\n                return low;\n            }\n            else {\n                return low + 1;\n            }\n        }\n        else {\n            return low;\n        }\n    }\n    else {\n        let index = 0;\n        let diff = Number.POSITIVE_INFINITY;\n        for (let i = 0; i < array.length; i++) {\n            const currentDiff = Math.abs(array[i] - target);\n            if (currentDiff < diff) {\n                diff = currentDiff;\n                index = i;\n            }\n        }\n        return index;\n    }\n}\n//# sourceMappingURL=xFindClosestIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n * Returns an object with {fromIndex, toIndex} for a specific from / to\n *\n * @param x - array of numbers\n * @param options - Options\n */\nexport function xGetFromToIndex(x, options = {}) {\n    let { fromIndex, toIndex, from, to } = options;\n    if (fromIndex === undefined) {\n        if (from !== undefined) {\n            fromIndex = xFindClosestIndex(x, from);\n        }\n        else {\n            fromIndex = 0;\n        }\n    }\n    if (toIndex === undefined) {\n        if (to !== undefined) {\n            toIndex = xFindClosestIndex(x, to);\n        }\n        else {\n            toIndex = x.length - 1;\n        }\n    }\n    if (fromIndex < 0)\n        fromIndex = 0;\n    if (toIndex < 0)\n        toIndex = 0;\n    if (fromIndex >= x.length)\n        fromIndex = x.length - 1;\n    if (toIndex >= x.length)\n        toIndex = x.length - 1;\n    if (fromIndex > toIndex)\n        [fromIndex, toIndex] = [toIndex, fromIndex];\n    return { fromIndex, toIndex };\n}\n//# sourceMappingURL=xGetFromToIndex.js.map","import { xFindClosestIndex } from './xFindClosestIndex';\n/**\n *  Returns the targetIndex\n *\n * @param x - array of numbers\n * @param options - options\n */\nexport function xGetTargetIndex(x, options = {}) {\n    let { target, targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            return xFindClosestIndex(x, target);\n        }\n        else {\n            return 0;\n        }\n    }\n    return targetIndex;\n}\n//# sourceMappingURL=xGetTargetIndex.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the maximal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMaxValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > maxValue) {\n            maxValue = array[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMaxValue.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the minimal value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMinValue(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < minValue) {\n            minValue = array[i];\n        }\n    }\n    return minValue;\n}\n//# sourceMappingURL=xMinValue.js.map","import { createFromToArray } from '../utils/createFromToArray';\nimport { xAbsolute } from './xAbsolute';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/**\n * Calculates a histogram of defined number of slots\n *\n * @param array - Array containing values\n * @param options - options\n * @returns - result of the histogram\n */\nexport function xHistogram(array, options = {}) {\n    xCheck(array);\n    let histogram = options.histogram;\n    const { centerX = true, nbSlots = histogram === undefined ? 256 : histogram.x.length, logBaseX, logBaseY, absolute = false, } = options;\n    if (absolute) {\n        array = xAbsolute(array);\n    }\n    if (logBaseX) {\n        array = array.slice();\n        const logOfBase = Math.log10(logBaseX);\n        for (let i = 0; i < array.length; i++) {\n            array[i] = Math.log10(array[i]) / logOfBase;\n        }\n    }\n    const { min = xMinValue(array), max = xMaxValue(array) } = options;\n    const slotSize = (max - min) / (nbSlots + Number.EPSILON);\n    const y = histogram === undefined ? new Float64Array(nbSlots) : histogram.y;\n    const x = histogram === undefined\n        ? Array.from(createFromToArray({\n            from: min + (centerX ? slotSize / 2 : 0),\n            to: max - (centerX ? slotSize / 2 : 0),\n            length: nbSlots,\n        }))\n        : histogram.x;\n    array.forEach((element) => {\n        const index = Math.max(Math.min(((element - min - Number.EPSILON) / slotSize) >> 0, nbSlots - 1), 0);\n        y[index]++;\n    });\n    if (logBaseY) {\n        const logOfBase = Math.log10(logBaseY);\n        for (let i = 0; i < y.length; i++) {\n            y[i] = Math.log10(y[i] + 1) / logOfBase;\n        }\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xHistogram.js.map","/**\n * Check if the values are separated always by the same difference\n *\n * @param array - Monotone growing array of number\n */\nexport function xIsEquallySpaced(array, options = {}) {\n    if (array.length < 3)\n        return true;\n    const { tolerance = 0.05 } = options;\n    let maxDx = 0;\n    let minDx = Number.MAX_SAFE_INTEGER;\n    for (let i = 0; i < array.length - 1; ++i) {\n        let absoluteDifference = array[i + 1] - array[i];\n        if (absoluteDifference < minDx) {\n            minDx = absoluteDifference;\n        }\n        if (absoluteDifference > maxDx) {\n            maxDx = absoluteDifference;\n        }\n    }\n    return (maxDx - minDx) / maxDx < tolerance;\n}\n//# sourceMappingURL=xIsEquallySpaced.js.map","/**\n * Returns true if x is monotone\n *\n * @param array - array of numbers\n */\nexport function xIsMonotone(array) {\n    if (array.length <= 2) {\n        return true;\n    }\n    if (array[0] === array[1]) {\n        // maybe a constant series\n        for (let i = 1; i < array.length - 1; i++) {\n            if (array[i] !== array[i + 1])\n                return false;\n        }\n        return true;\n    }\n    if (array[0] < array[array.length - 1]) {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] >= array[i + 1])\n                return false;\n        }\n    }\n    else {\n        for (let i = 0; i < array.length - 1; i++) {\n            if (array[i] <= array[i + 1])\n                return false;\n        }\n    }\n    return true;\n}\n//# sourceMappingURL=xIsMonotone.js.map","/**\n * Returns true if x is monotone\n *\n * @param array - array of numbers\n */\nexport function xIsMonotoneIncreasing(array) {\n    if (array.length < 2) {\n        return true;\n    }\n    for (let i = 0; i < array.length - 1; i++) {\n        if (array[i] >= array[i + 1])\n            return false;\n    }\n    return true;\n}\n//# sourceMappingURL=xIsMonotoneIncreasing.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the index of the maximum of the given values\n *\n * @param array - array of numbers\n * @param  options - options\n * @returns - index\n */\nexport function xMaxIndex(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let maxIndex = fromIndex;\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] > array[maxIndex]) {\n            maxIndex = i;\n        }\n    }\n    return maxIndex;\n}\n//# sourceMappingURL=xMaxIndex.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the mean value of an array of values\n *\n * @param array - array of numbers\n * @param options - options\n */\nexport function xMean(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue / (toIndex - fromIndex + 1);\n}\n//# sourceMappingURL=xMean.js.map","/**\n * XCheckLengths.\n *\n * @param array1 - First array.\n * @param array2 - Second array.\n */\nexport function xCheckLengths(array1, array2) {\n    if (array1.length !== array2.length) {\n        throw new TypeError('Length of array1 and array2 must be identical');\n    }\n}\n//# sourceMappingURL=xCheckLengths.js.map","import { xCheckLengths } from './xCheckLengths';\n/**\n * This function calculates the mean absolute error\n *\n * @param array1 - first array\n * @param array2 - second array\n */\nexport function xMeanAbsoluteError(array1, array2) {\n    xCheckLengths(array1, array2);\n    let sum = 0;\n    for (let i = 0; i < array1.length; i++) {\n        sum += Math.abs(array1[i] - array2[i]);\n    }\n    return sum / array1.length;\n}\n//# sourceMappingURL=xMeanAbsoluteError.js.map","import { xCheckLengths } from './xCheckLengths';\n/**\n * This function calculates the mean squared error\n *\n * @param array1 -first array\n * @param array2 - second array\n */\nexport function xMeanSquaredError(array1, array2) {\n    xCheckLengths(array1, array2);\n    let sum = 0;\n    for (let i = 0; i < array1.length; i++) {\n        sum += Math.pow(array1[i] - array2[i], 2);\n    }\n    return sum / array1.length;\n}\n//# sourceMappingURL=xMeanSquaredError.js.map","import { xMedian } from './xMedian';\n/**\n * This function calculates the median absolute deviation (MAD)\n * https://en.wikipedia.org/wiki/Median_absolute_deviation\n * @param array\n */\nexport function xMedianAbsoluteDeviation(array) {\n    const median = xMedian(array);\n    const averageDeviations = new Float64Array(array.length);\n    for (let i = 0; i < array.length; i++) {\n        averageDeviations[i] = Math.abs(array[i] - median);\n    }\n    return {\n        median,\n        mad: xMedian(averageDeviations),\n    };\n}\n//# sourceMappingURL=xMedianAbsoluteDeviation.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Computes the index of the minimum of the given values\n *\n * @param array - array of numbers\n * @param options - options\n * @returns - index\n */\nexport function xMinIndex(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let minIndex = fromIndex;\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        if (array[i] < array[minIndex]) {\n            minIndex = i;\n        }\n    }\n    return minIndex;\n}\n//# sourceMappingURL=xMinIndex.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","/**\n * Calculates the mode of an array\n *\n * @param input - Array containing values\n * @returns - mode\n */\nexport function xMode(input) {\n    if (input.length === 0) {\n        throw new TypeError('input must not be empty');\n    }\n    let maxValue = 0;\n    let maxCount = 0;\n    let count = 0;\n    let counts = {};\n    for (let i = 0; i < input.length; ++i) {\n        let element = input[i];\n        count = counts[element];\n        if (count) {\n            counts[element]++;\n            count++;\n        }\n        else {\n            counts[element] = 1;\n            count = 1;\n        }\n        if (count > maxCount) {\n            maxCount = count;\n            maxValue = input[i];\n        }\n    }\n    return maxValue;\n}\n//# sourceMappingURL=xMode.js.map","import { xMedianAbsoluteDeviation } from '..';\n/**\n * Determine noise level using MAD https://en.wikipedia.org/wiki/Median_absolute_deviation\n * Constant to convert mad to sd calculated using https://www.wolframalpha.com/input?i=sqrt%282%29+inverse+erf%280.5%29\n * This assumes a gaussian distribution of the noise\n * @param array\n * @returns noise level corresponding to one standard deviation\n */\nexport function xNoiseStandardDeviation(array) {\n    const { mad, median } = xMedianAbsoluteDeviation(array);\n    return { sd: mad / 0.6744897501960817, mad, median };\n}\n//# sourceMappingURL=xNoiseStandardDeviation.js.map","/**\n * This function calculate the norm of a vector\n *\n * @example xNorm([3, 4]) -> 5\n * @param array - array\n * @returns - calculated norm\n */\nexport function xNorm(array) {\n    let result = 0;\n    array.forEach((element) => {\n        result += element ** 2;\n    });\n    return Math.sqrt(result);\n}\n//# sourceMappingURL=xNorm.js.map","import { xCheck } from './xCheck';\nimport { xGetFromToIndex } from './xGetFromToIndex';\n/**\n * Calculate the sum of the values\n *\n * @param array - Object that contains property x (an ordered increasing array) and y (an array).\n * @param options - Options.\n * @returns XSum value on the specified range.\n */\nexport function xSum(array, options = {}) {\n    xCheck(array);\n    const { fromIndex, toIndex } = xGetFromToIndex(array, options);\n    let sumValue = array[fromIndex];\n    for (let i = fromIndex + 1; i <= toIndex; i++) {\n        sumValue += array[i];\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xSum.js.map","import { getOutputArray } from './utils/getOutputArray';\nimport { xCheck } from './xCheck';\nimport { xMaxValue } from './xMaxValue';\nimport { xSum } from './xSum';\n/**\n * Divides the data with either the sum, the absolute sum or the maximum of the data\n * @param array - Array containing values\n * @param options - options\n * @returns - normalized data\n */\nexport function xNormed(input, options = {}) {\n    const { algorithm = 'absolute', value = 1 } = options;\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    if (input.length === 0) {\n        throw new Error('input must not be empty');\n    }\n    switch (algorithm.toLowerCase()) {\n        case 'absolute': {\n            let absoluteSumValue = absoluteSum(input) / value;\n            if (absoluteSumValue === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / absoluteSumValue;\n            }\n            return output;\n        }\n        case 'max': {\n            let currentMaxValue = xMaxValue(input);\n            if (currentMaxValue === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            const factor = value / currentMaxValue;\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] * factor;\n            }\n            return output;\n        }\n        case 'sum': {\n            let sumFactor = xSum(input) / value;\n            if (sumFactor === 0) {\n                throw new Error('xNormed: trying to divide by 0');\n            }\n            for (let i = 0; i < input.length; i++) {\n                output[i] = input[i] / sumFactor;\n            }\n            return output;\n        }\n        default:\n            throw new Error(`norm: unknown algorithm: ${algorithm}`);\n    }\n}\nfunction absoluteSum(input) {\n    let sumValue = 0;\n    for (let i = 0; i < input.length; i++) {\n        sumValue += Math.abs(input[i]);\n    }\n    return sumValue;\n}\n//# sourceMappingURL=xNormed.js.map","import { xCheck } from './xCheck';\n/**\n * This function pads an array\n *s\n * @param array - the array that will be padded\n * @param options - options\n */\nexport function xPadding(array, options = {}) {\n    const { size = 0, value = 0, algorithm = '' } = options;\n    xCheck(array);\n    if (!algorithm) {\n        if (array instanceof Float64Array) {\n            return array.slice();\n        }\n        else {\n            return Float64Array.from(array);\n        }\n    }\n    let result = new Float64Array(array.length + size * 2);\n    for (let i = 0; i < array.length; i++) {\n        result[i + size] = array[i];\n    }\n    let fromEnd = size + array.length;\n    let toEnd = 2 * size + array.length;\n    switch (algorithm.toLowerCase()) {\n        case 'value':\n            for (let i = 0; i < size; i++) {\n                result[i] = value;\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = value;\n            }\n            break;\n        case 'duplicate':\n            for (let i = 0; i < size; i++) {\n                result[i] = array[0];\n            }\n            for (let i = fromEnd; i < toEnd; i++) {\n                result[i] = array[array.length - 1];\n            }\n            break;\n        case 'circular':\n            for (let i = 0; i < size; i++) {\n                result[i] =\n                    array[(array.length - (size % array.length) + i) % array.length];\n            }\n            for (let i = 0; i < size; i++) {\n                result[i + fromEnd] = array[i % array.length];\n            }\n            break;\n        default:\n            throw Error('xPadding: unknown algorithm');\n    }\n    return result;\n}\n//# sourceMappingURL=xPadding.js.map","import { isAnyArray } from 'is-any-array';\nimport { xMean } from './xMean';\n/** Finds the variance of the data\n *\n * @param values - the values of the array\n * @param options - options\n * @returns variance\n */\nexport function xVariance(values, options = {}) {\n    if (!isAnyArray(values)) {\n        throw new TypeError('input must be an array');\n    }\n    const { unbiased = true, mean = xMean(values) } = options;\n    let sqrError = 0;\n    for (let i = 0; i < values.length; i++) {\n        let x = values[i] - mean;\n        sqrError += x * x;\n    }\n    if (unbiased) {\n        return sqrError / (values.length - 1);\n    }\n    else {\n        return sqrError / values.length;\n    }\n}\n//# sourceMappingURL=xVariance.js.map","import { xVariance } from './xVariance';\n/** Finds the standard deviation for the data at hand\n *\n * @param values - values in the data\n * @param options - options\n * @returns standard deviation\n */\nexport function xStandardDeviation(values, options = {}) {\n    return Math.sqrt(xVariance(values, options));\n}\n//# sourceMappingURL=xStandardDeviation.js.map","import { xCheck } from './xCheck';\nimport { xStandardDeviation } from './xStandardDeviation';\n/**\n * Pareto scaling, which uses the square root of standard deviation as the scaling factor, circumvents the amplification of noise by retaining a small portion of magnitude information.\n * Noda, I. (2008). Scaling techniques to enhance two-dimensional correlation spectra. Journal of Molecular Structure, 883, 216-227.\n * DOI: 10.1016/j.molstruc.2007.12.026\n *\n * @param array - array of number\n */\nexport function xParetoNormalization(array) {\n    xCheck(array);\n    let result = [];\n    const sqrtSD = Math.sqrt(xStandardDeviation(array));\n    for (let item of array) {\n        result.push(item / sqrtSD);\n    }\n    return result;\n}\n//# sourceMappingURL=xParetoNormalization.js.map","import { xCheck } from '..';\nimport { getOutputArray } from './utils/getOutputArray';\nimport { xMaxValue } from './xMaxValue';\nimport { xMinValue } from './xMinValue';\n/** Function used to rescale data\n *\n * @param input - input for the rescale\n * @param options - options\n * @returns rescaled data\n */\nexport function xRescale(input, options = {}) {\n    xCheck(input);\n    const output = getOutputArray(options.output, input.length);\n    const currentMin = xMinValue(input);\n    const currentMax = xMaxValue(input);\n    if (currentMin === currentMax) {\n        throw new RangeError('minimum and maximum input values are equal. Cannot rescale a constant array');\n    }\n    const { min = 0, max = 1 } = options;\n    if (min >= max) {\n        throw new RangeError('min option must be smaller than max option');\n    }\n    const factor = (max - min) / (currentMax - currentMin);\n    for (let i = 0; i < input.length; i++) {\n        output[i] = (input[i] - currentMin) * factor + min;\n    }\n    return output;\n}\n//# sourceMappingURL=xRescale.js.map","import { xCheck } from './xCheck';\nimport { xPadding } from './xPadding';\n/**\n * This function calculates a rolling average\n *\n * @param array - array\n * @param fct - callback function that from an array returns a value\n * @param options - options\n */\nexport function xRolling(array, fct, options = {}) {\n    xCheck(array);\n    if (typeof fct !== 'function')\n        throw Error('fct has to be a function');\n    const { window = 5, padding = {} } = options;\n    const { size = window - 1, algorithm, value } = padding;\n    array = xPadding(array, { size, algorithm, value }); // ensure we get a copy and it is float64\n    const newArray = [];\n    for (let i = 0; i < array.length - window + 1; i++) {\n        // we will send a view to the original buffer\n        newArray.push(fct(array.subarray(i, i + window)));\n    }\n    return newArray;\n}\n//# sourceMappingURL=xRolling.js.map","import { xMean } from './xMean';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - array\n * @param options - option\n */\nexport function xRollingAverage(array, options = {}) {\n    return xRolling(array, xMean, options);\n}\n//# sourceMappingURL=xRollingAverage.js.map","import { xMaxValue } from './xMaxValue';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a maximum within a rolling window\n *\n * @param array - array\n * @param options - options\n */\nexport function xRollingMax(array, options = {}) {\n    return xRolling(array, xMaxValue, options);\n}\n//# sourceMappingURL=xRollingMax.js.map","import { xMedian } from './xMedian';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a rolling average\n *\n * @param array - array\n * @param options - options\n */\nexport function xRollingMedian(array, options = {}) {\n    return xRolling(array, xMedian, options);\n}\n//# sourceMappingURL=xRollingMedian.js.map","import { xMinValue } from './xMinValue';\nimport { xRolling } from './xRolling';\n/**\n * This function calculates a minimum within a rolling window\n *\n * @param array - array\n * @param options - options\n */\nexport function xRollingMin(array, options = {}) {\n    return xRolling(array, xMinValue, options);\n}\n//# sourceMappingURL=xRollingMin.js.map","/**\n * Sample within the array\n *\n * @param array - array from which to sample\n * @param options - options\n * @return - array with evenly spaced elements\n */\nexport function xSampling(array, options = {}) {\n    const { length = 10 } = options;\n    let returnArray = [];\n    if (length > array.length) {\n        throw new Error('Choose sample number smaller than the number of elements in the array');\n    }\n    let clonedArray = array.slice();\n    returnArray.push(clonedArray[0]);\n    clonedArray.shift();\n    let delta = Math.floor(clonedArray.length / (length - 1));\n    for (let i = delta - 1, j = 0; i < clonedArray.length && j < length - 1; i = i + delta, j++) {\n        returnArray.push(clonedArray[i]);\n    }\n    return returnArray;\n}\n//# sourceMappingURL=xSampling.js.map","import { isAnyArray } from 'is-any-array';\n/** Fill an array with sequential numbers\n *\n * @param input - optional destination array (if not provided a new array will be created)\n * @param options - options\n * @return array with sequential numbers\n */\nexport function xSequentialFill(input = [], options = {}) {\n    if (typeof input === 'object' && !isAnyArray(input)) {\n        options = input;\n        input = [];\n    }\n    if (!isAnyArray(input)) {\n        throw new TypeError('input must be an array');\n    }\n    // maybe should not specify default step and size\n    let { from = 0, to = 10, size = Array.isArray(input) ||\n        input.constructor === Float64Array ||\n        input.constructor === Uint16Array\n        ? input.length\n        : 0, step = null, } = options;\n    if (!size) {\n        if (step) {\n            size = Math.floor((to - from) / step) + 1;\n        }\n        else {\n            size = to - from + 1;\n        }\n    }\n    if (!step && size) {\n        step = (to - from) / (size - 1);\n    }\n    if (Array.isArray(input)) {\n        // only works with normal array\n        input.length = 0;\n        for (let i = 0; i < size; i++) {\n            input.push(from);\n            if (step)\n                from += step;\n        }\n    }\n    else {\n        if (Array.isArray(input) ||\n            input.constructor === Float64Array ||\n            (input.constructor === Uint16Array && input.length !== size)) {\n            throw new Error('sequentialFill typed array must have the correct length');\n        }\n        for (let i = 0; i < size; i++) {\n            if (Array.isArray(input) ||\n                input.constructor === Float64Array ||\n                input.constructor === Uint16Array) {\n                input[i] = from;\n            }\n            if (step) {\n                from += step;\n            }\n        }\n    }\n    return Array.isArray(input) ||\n        input.constructor === Float64Array ||\n        input.constructor === Uint16Array\n        ? Array.from(input)\n        : [];\n}\n//# sourceMappingURL=xSequentialFill.js.map","/**\n * Will apply a function on each element of the array described as a string\n * By default we will use as variable 'x'\n * In front of sequence of lowercase we will add 'Math.'. This allows to write\n * `sin(x) + cos(x)` and it will be replace internally by (x) => (Math.sin(x) + Math.cos(x))\n * @param array\n * @param options\n * @returns\n */\nexport function xApplyFunctionStr(array, options = {}) {\n    const { variableLabel = 'x', fctString = variableLabel } = options;\n    const fct = new Function(variableLabel, `return Number(${fctString\n        .replace(/(^|\\W)([a-z]{2,})/g, '$1Math.$2')\n        .replace(/Math\\.Math/g, 'Math')})`);\n    const toReturn = Float64Array.from(array);\n    for (let i = 0; i < array.length; i++) {\n        toReturn[i] = fct(array[i]);\n        if (isNaN(toReturn[i])) {\n            throw Error(`The callback ${fctString} does not return a number: ${array[i]}`);\n        }\n    }\n    return toReturn;\n}\n//# sourceMappingURL=xApplyFunctionStr.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * This function xSubtract the first array by the second array or a constant value from each element of the first array\n *\n * @param array1 - the array that will be rotated\n * @param array2 - second array or number\n * @returns array after subtraction\n */\nexport function xSubtract(array1, array2) {\n    let isConstant = false;\n    let constant = 0;\n    if (isAnyArray(array2)) {\n        if (array1.length !== array2.length) {\n            throw new Error('xSubtract: size of array1 and array2 must be identical');\n        }\n    }\n    else {\n        isConstant = true;\n        constant = Number(array2);\n    }\n    let array3 = new Float64Array(array1.length);\n    if (isConstant) {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - constant;\n        }\n    }\n    else {\n        for (let i = 0; i < array1.length; i++) {\n            array3[i] = array1[i] - array2[i];\n        }\n    }\n    return array3;\n}\n//# sourceMappingURL=xSubtract.js.map","/**\n * XUniqueSorted.\n *\n * @param array - array of numbers\n * @returns - sorted array\n */\nexport function xUniqueSorted(array) {\n    return Float64Array.from(new Set(array)).sort();\n}\n//# sourceMappingURL=xUniqueSorted.js.map","/**\n * XyAlign will align data of two spectra by verifying wether x values are in a certain range (`delta`).\n * The two spectra should not have two consecutive x values which difference is\n * smaller than `delta` to achieve good results!\n *\n * @param data1 - First spectrum data\n * @param data2 - Second spectrum data\n * @param options - Options\n */\nexport function xyAlign(data1, data2, options = {}) {\n    const { delta = 1, common = true, x = 'x1' } = options;\n    let result = {\n        x: [],\n        y1: [],\n        y2: [],\n    };\n    let i = 0;\n    let j = 0;\n    let length1 = data1.x.length;\n    let length2 = data2.x.length;\n    while (i < length1 && j < length2) {\n        let maxDiff = 0;\n        if (typeof delta === 'function') {\n            let mean = (data1.x[i] + data2.x[j]) / 2; // is this a good thing to do?\n            maxDiff = delta(mean);\n        }\n        else {\n            maxDiff = delta;\n        }\n        let difference = data1.x[i] - data2.x[j];\n        if (Math.abs(difference) > maxDiff) {\n            if (difference > 0) {\n                if (!common) {\n                    result.x.push(data2.x[j]);\n                    result.y1.push(0);\n                    result.y2.push(data2.y[j]);\n                    if (j === length2 - 1) {\n                        while (i < length1) {\n                            result.x.push(data1.x[i]);\n                            result.y1.push(data1.y[i]);\n                            result.y2.push(0);\n                            i++;\n                        }\n                    }\n                }\n                // console.log({ i, j }, result);\n                j++;\n            }\n            else {\n                if (!common) {\n                    result.x.push(data1.x[i]);\n                    result.y1.push(data1.y[i]);\n                    result.y2.push(0);\n                    if (i === length1 - 1) {\n                        while (j < length2) {\n                            result.x.push(data2.x[j]);\n                            result.y1.push(0);\n                            result.y2.push(data2.y[j]);\n                            j++;\n                        }\n                    }\n                }\n                // console.log({ i, j }, result);\n                i++;\n            }\n        }\n        else {\n            let weightedX = (data1.x[i] * data1.y[i] + data2.x[j] * data2.y[j]) /\n                (data1.y[i] + data2.y[j]);\n            switch (x) {\n                case 'x1':\n                    result.x.push(data1.x[i]);\n                    break;\n                case 'x2':\n                    result.x.push(data2.x[j]);\n                    break;\n                case 'weighted':\n                    result.x.push(weightedX);\n                    break;\n                default:\n                    throw new Error(`Error: Unknown x option value: ${x}`);\n            }\n            result.y1.push(data1.y[i]);\n            result.y2.push(data2.y[j]);\n            // console.log({ i, j }, result);\n            i++;\n            j++;\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyAlign.js.map","import { isAnyArray } from 'is-any-array';\n/**\n * Throw an error in no an object of x,y arrays\n *\n * @param data - array of points {x,y,z}\n */\nexport function xyCheck(data, options = {}) {\n    const { minLength } = options;\n    if (typeof data !== 'object' || !isAnyArray(data.x) || !isAnyArray(data.y)) {\n        throw new Error('Data must be an object of x and y arrays');\n    }\n    if (data.x.length !== data.y.length) {\n        throw new Error('The x and y arrays must have the same length');\n    }\n    if (minLength) {\n        if (data.x.length < minLength) {\n            throw new Error(`data.x must have a length of at least ${minLength}`);\n        }\n    }\n}\n//# sourceMappingURL=xyCheck.js.map","import { xFindClosestIndex } from '../x/xFindClosestIndex';\n/**\n * Finds the closest point\n *\n * @param data - x array should be sorted and ascending\n * @param target - target to search\n * @returns - closest point\n */\nexport function xyFindClosestPoint(\n/** points */\ndata, target) {\n    const { x, y } = data;\n    const index = xFindClosestIndex(x, target);\n    return {\n        x: x[index],\n        y: y[index],\n    };\n}\n//# sourceMappingURL=xyFindClosestPoint.js.map","import { xMean } from '../x/xMean';\n/**Finds the covariance of the points\n *\n * @param data\n * @param options\n * @return the covariance\n */\nexport function xyCovariance(data, options = {}) {\n    const { x, y } = data;\n    const { unbiased = true } = options;\n    const meanX = xMean(x);\n    const meanY = xMean(y);\n    let error = 0;\n    for (let i = 0; i < x.length; i++) {\n        error += (x[i] - meanX) * (y[i] - meanY);\n    }\n    if (unbiased) {\n        return error / (x.length - 1);\n    }\n    else {\n        return error / x.length;\n    }\n}\n//# sourceMappingURL=xyCovariance.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max y value in a range and return a {x,y} point\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options Options\n */\nexport function xyMaxYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1) {\n        return { x: x[0], y: y[0], index: 0 };\n    }\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMaxYPoint.js.map","import { xCumulative } from '../x/xCumulative';\nimport { xMaxValue } from '../x/xMaxValue';\nimport { xyCheck } from './xyCheck';\nimport { xyMaxYPoint } from './xyMaxYPoint';\nconst STEPS = [0.25, 0.5, 0.75];\n/** Cumulative Distribution Statistics\n *\n * @param data - array of points {x,y}\n * @returns x0, x25, x50, x75, x100, mode (x for maxY)\n */\nexport function xyCumulativeDistributionStatistics(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    if (x.length === 0) {\n        throw new Error('xyCumulativeDistributionStatistics: Array length must be greater than 0');\n    }\n    const cumulativeSum = xCumulative(y);\n    const maxY = xMaxValue(cumulativeSum);\n    for (let i = 0; i < cumulativeSum.length; i++) {\n        cumulativeSum[i] /= maxY;\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    const result = {};\n    // need to find the x values closest to STEPS/100\n    result.x0 = x[0];\n    result.x100 = x[x.length - 1];\n    let currentStep = 0;\n    breakPoint: for (let i = 1; i < cumulativeSum.length; i++) {\n        while (STEPS[currentStep] < cumulativeSum[i]) {\n            result[`x${STEPS[currentStep] * 100}`] =\n                x[i - 1] +\n                    (x[i] - x[i - 1]) *\n                        ((STEPS[currentStep] - cumulativeSum[i - 1]) /\n                            (cumulativeSum[i] - cumulativeSum[i - 1]));\n            currentStep++;\n            if (currentStep === STEPS.length)\n                break breakPoint;\n        }\n    }\n    result.xMode = xyMaxYPoint(data).x;\n    let sumXY = 0;\n    let sumY = 0;\n    for (let i = 0; i < x.length; i++) {\n        sumXY += x[i] * y[i];\n        sumY += y[i];\n    }\n    result.xMean = sumXY / sumY;\n    return result;\n}\n//# sourceMappingURL=xyCumulativeDistributionStatistics.js.map","import { xIsMonotoneIncreasing } from '../x/xIsMonotoneIncreasing';\nimport { xyCheck } from './xyCheck';\n/**\n * Filters x,y values to allow strictly growing values in x axis.\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array).\n */\nexport function xyEnsureGrowingX(data) {\n    xyCheck(data);\n    if (xIsMonotoneIncreasing(data.x))\n        return data;\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    let prevX = Number.NEGATIVE_INFINITY;\n    let currentIndex = 0;\n    for (let index = 0; index < x.length; index++) {\n        if (prevX < x[index]) {\n            if (currentIndex < index) {\n                x[currentIndex] = x[index];\n                y[currentIndex] = y[index];\n            }\n            currentIndex++;\n            prevX = x[index];\n        }\n    }\n    x.length = currentIndex;\n    y.length = currentIndex;\n    return { x, y };\n}\n//# sourceMappingURL=xyEnsureGrowingX.js.map","/**\n * Normalize an array of zones:\n * - ensure than from < to\n * - merge overlapping zones\n * - deal with exclusions zones\n * - if no zones is specified add one between -Infinity and +Infinity\n * @param zones - array of zones\n * @param options - options\n * @returns array of zones\n */\nexport function zonesNormalize(zones = [], options = {}) {\n    let { from = Number.NEGATIVE_INFINITY, to = Number.POSITIVE_INFINITY, exclusions = [], } = options;\n    if (from > to)\n        [from, to] = [to, from];\n    zones = JSON.parse(JSON.stringify(zones)).map((zone) => zone.from > zone.to ? { from: zone.to, to: zone.from } : zone);\n    zones = zones.sort((a, b) => {\n        if (a.from !== b.from)\n            return a.from - b.from;\n        return a.to - b.to;\n    });\n    if (zones.length === 0) {\n        zones.push({ from, to });\n    }\n    zones.forEach((zone) => {\n        if (from > zone.from)\n            zone.from = from;\n        if (to < zone.to)\n            zone.to = to;\n    });\n    zones = zones.filter((zone) => zone.from <= zone.to);\n    if (zones.length === 0)\n        return [];\n    let currentZone = zones[0];\n    let beforeExclusionsZones = [currentZone];\n    for (let i = 1; i < zones.length; i++) {\n        let zone = zones[i];\n        if (zone.from <= currentZone.to) {\n            if (currentZone.to < zone.to) {\n                currentZone.to = zone.to;\n            }\n        }\n        else {\n            currentZone = zone;\n            beforeExclusionsZones.push(currentZone);\n        }\n    }\n    if (exclusions.length === 0)\n        return beforeExclusionsZones;\n    const normalizedExclusions = zonesNormalize(exclusions);\n    let currentExclusionIndex = 0;\n    const results = [];\n    let counter = 0;\n    for (let zoneIndex = 0; zoneIndex < beforeExclusionsZones.length; zoneIndex++) {\n        if (counter++ > 5)\n            break;\n        const zone = beforeExclusionsZones[zoneIndex];\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        while (currentExclusionIndex < normalizedExclusions.length &&\n            normalizedExclusions[currentExclusionIndex].to <= zone.from) {\n            currentExclusionIndex++;\n        }\n        if (currentExclusionIndex === normalizedExclusions.length) {\n            // we analysed all the exclusion zones\n            results.push(zone);\n            continue;\n        }\n        if (zone.to < normalizedExclusions[currentExclusionIndex].from) {\n            // no problems, not yet in exclusion\n            results.push(zone);\n            continue;\n        }\n        if (normalizedExclusions[currentExclusionIndex].to >= zone.to) {\n            // could be totally excluded\n            if (normalizedExclusions[currentExclusionIndex].from <= zone.from) {\n                continue;\n            }\n            results.push({\n                from: normalizedExclusions[currentExclusionIndex].to,\n                to: zone.to,\n            });\n        }\n        // we cut in the middle, we need to create more zones, annoying !\n        if (normalizedExclusions[currentExclusionIndex].from > zone.from) {\n            results.push({\n                from: zone.from,\n                to: normalizedExclusions[currentExclusionIndex].from,\n            });\n        }\n        zone.from = normalizedExclusions[currentExclusionIndex].to;\n        zoneIndex--;\n    }\n    return results;\n}\n//# sourceMappingURL=zonesNormalize.js.map","import { zonesNormalize } from './zonesNormalize';\n/**\n * Add the number of points per zone to reach a specified total\n *\n * @param zones - array of zones\n * @param numberOfPoints - total number of points to distribute between zones\n * @param options - options\n * @returns array of zones with points\n */\nexport function zonesWithPoints(zones = [], \n/**\n * total number of points to distribute between zones\n * @default 10\n */\nnumberOfPoints = 10, options = {}) {\n    if (zones.length === 0)\n        return zones;\n    let returnZones = zonesNormalize(zones, options);\n    const totalSize = returnZones.reduce((previous, current) => {\n        return previous + (current.to - current.from);\n    }, 0);\n    let unitsPerPoint = totalSize / numberOfPoints;\n    let currentTotal = 0;\n    for (let i = 0; i < returnZones.length - 1; i++) {\n        let zone = returnZones[i];\n        zone.numberOfPoints = Math.min(Math.round((zone.to - zone.from) / unitsPerPoint), numberOfPoints - currentTotal);\n        currentTotal += zone.numberOfPoints;\n    }\n    let zone = returnZones[returnZones.length - 1];\n    zone.numberOfPoints = numberOfPoints - currentTotal;\n    return returnZones;\n}\n//# sourceMappingURL=zonesWithPoints.js.map","/**\n * function that retrieves the getEquallySpacedData with the variant \"slot\"\n *\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @return Array of y's equally spaced with the variant \"slot\"\n */\nexport default function equallySpacedSlot(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    let xLength = x.length;\n    let step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    let halfStep = step / 2;\n    let lastStep = x[x.length - 1] - x[x.length - 2];\n    let start = from - halfStep;\n    // Changed Array to Float64Array\n    let output = new Float64Array(numberOfPoints);\n    // Init main variables\n    let min = start;\n    let max = start + step;\n    let previousX = -Number.MAX_VALUE;\n    let previousY = 0;\n    let nextX = x[0];\n    let nextY = y[0];\n    let frontOutsideSpectra = 0;\n    let backOutsideSpectra = true;\n    let currentValue = 0;\n    // for slot algorithm\n    let currentPoints = 0;\n    let i = 1; // index of input\n    let j = 0; // index of output\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        while (previousX - max > 0) {\n            // no overlap with original point, just consume current value\n            if (backOutsideSpectra) {\n                currentPoints++;\n                backOutsideSpectra = false;\n            }\n            output[j] = currentPoints <= 0 ? 0 : currentValue / currentPoints;\n            j++;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            currentValue = 0;\n            currentPoints = 0;\n        }\n        if (previousX > min) {\n            currentValue += previousY;\n            currentPoints++;\n        }\n        if (previousX === -Number.MAX_VALUE || frontOutsideSpectra > 1) {\n            currentPoints--;\n        }\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else {\n            nextX += lastStep;\n            nextY = 0;\n            frontOutsideSpectra++;\n        }\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSlot.js.map","/**\n * Function that calculates the integral of the line between two\n * x-coordinates, given the slope and intercept of the line.\n * @param x0\n * @param x1\n * @param slope\n * @param intercept\n * @return integral value.\n */\nexport default function integral(\n/** first coordinate of point */\nx0, \n/** second coordinate of point */\nx1, \n/** slope of the line */\nslope, \n/** intercept of the line on the y axis */\nintercept) {\n    return (0.5 * slope * x1 * x1 +\n        intercept * x1 -\n        (0.5 * slope * x0 * x0 + intercept * x0));\n}\n//# sourceMappingURL=integral.js.map","import integral from './integral';\n/**\n * function that retrieves the getEquallySpacedData with the variant \"smooth\"\n *\n * @param x\n * @param y\n * @param from\n * @param to\n * @param numberOfPoints\n * @return - Array of y's equally spaced with the variant \"smooth\"\n */\nexport default function equallySpacedSmooth(\n/** x coordinates */\nx, \n/** y coordinates */\ny, \n/** from value */\nfrom, \n/** to value */\nto, \n/** number of points */\nnumberOfPoints) {\n    let xLength = x.length;\n    let step = (to - from) / (numberOfPoints > 1 ? numberOfPoints - 1 : 1);\n    let halfStep = step / 2;\n    // Changed Array to Float64Array\n    let output = new Float64Array(numberOfPoints);\n    let initialOriginalStep = x[1] - x[0];\n    let lastOriginalStep = x[xLength - 1] - x[xLength - 2];\n    // Init main variables\n    let min = from - halfStep;\n    let max = from + halfStep;\n    let previousX = Number.MIN_SAFE_INTEGER;\n    let previousY = 0;\n    let nextX = x[0] - initialOriginalStep;\n    let nextY = 0;\n    let currentValue = 0;\n    let slope = 0;\n    let intercept = 0;\n    let sumAtMin = 0;\n    let sumAtMax = 0;\n    let i = 0; // index of input\n    let j = 0; // index of output\n    function getSlope(x0, y0, x1, y1) {\n        return (y1 - y0) / (x1 - x0);\n    }\n    let add = 0;\n    main: while (true) {\n        if (previousX >= nextX)\n            throw new Error('x must be a growing series');\n        if (previousX <= min && min <= nextX) {\n            add = integral(0, min - previousX, slope, previousY);\n            sumAtMin = currentValue + add;\n        }\n        while (nextX - max >= 0) {\n            // no overlap with original point, just consume current value\n            add = integral(0, max - previousX, slope, previousY);\n            sumAtMax = currentValue + add;\n            output[j++] = (sumAtMax - sumAtMin) / step;\n            if (j === numberOfPoints) {\n                break main;\n            }\n            min = max;\n            max += step;\n            sumAtMin = sumAtMax;\n        }\n        currentValue += integral(previousX, nextX, slope, intercept);\n        previousX = nextX;\n        previousY = nextY;\n        if (i < xLength) {\n            nextX = x[i];\n            nextY = y[i];\n            i++;\n        }\n        else if (i === xLength) {\n            nextX += lastOriginalStep;\n            nextY = 0;\n        }\n        slope = getSlope(previousX, previousY, nextX, nextY);\n        intercept = -slope * previousX + previousY;\n    }\n    return output;\n}\n//# sourceMappingURL=equallySpacedSmooth.js.map","import { createFromToArray } from '../utils/createFromToArray';\nimport { zonesNormalize } from '../zones/zonesNormalize';\nimport { zonesWithPoints } from '../zones/zonesWithPoints';\nimport equallySpacedSlot from './utils/equallySpacedSlot';\nimport equallySpacedSmooth from './utils/equallySpacedSmooth';\nimport { xyCheck } from './xyCheck';\n/**\n * Function that returns a Number array of equally spaced numberOfPoints\n * containing a representation of intensities of the spectra arguments x\n * and y.\n *\n * The options parameter contains an object in the following form:\n * from: starting point\n * to: last point\n * numberOfPoints: number of points between from and to\n * variant: \"slot\" or \"smooth\" - smooth is the default option\n *\n * The slot variant consist that each point in an array is calculated\n * averaging the existing points between the slot that belongs to the current\n * value. The smooth variant is the same but takes the integral of the range\n * of the slot and divide by the step size between two points in an array.\n *\n * If exclusions zone are present, zones are ignored !\n *\n * @param data - object containing 2 properties x and y\n * @param options - options\n * @return new object with x / y array with the equally spaced data.\n */\nexport function xyEquallySpaced(data, options = {}) {\n    let { x, y } = data;\n    let xLength = x.length;\n    const { from = x[0], to = x[xLength - 1], variant = 'smooth', numberOfPoints = 100, exclusions = [], zones = [{ from, to }], } = options;\n    if (from > to) {\n        throw new RangeError('from should be larger than to');\n    }\n    xyCheck(data);\n    if (numberOfPoints < 2) {\n        throw new RangeError(\"'numberOfPoints' option must be greater than 1\");\n    }\n    const normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    const zonesWithPointsRes = zonesWithPoints(normalizedZones, numberOfPoints, {\n        from,\n        to,\n    });\n    let xResult = [];\n    let yResult = [];\n    for (let zone of zonesWithPointsRes) {\n        if (!zone.numberOfPoints) {\n            zone.numberOfPoints = 0;\n        }\n        let zoneResult = processZone(Array.from(x), Array.from(y), zone.from, zone.to, zone.numberOfPoints, variant);\n        xResult = xResult.concat(zoneResult.x);\n        yResult = yResult.concat(zoneResult.y);\n    }\n    return { x: xResult, y: yResult };\n}\nfunction processZone(x, y, from, to, numberOfPoints, variant) {\n    if (numberOfPoints < 1) {\n        throw new RangeError('the number of points must be at least 1');\n    }\n    let output = variant === 'slot'\n        ? Array.from(equallySpacedSlot(x, y, from, to, numberOfPoints))\n        : Array.from(equallySpacedSmooth(x, y, from, to, numberOfPoints));\n    return {\n        x: Array.from(createFromToArray({\n            from,\n            to,\n            length: numberOfPoints,\n        })),\n        y: output,\n    };\n}\n//# sourceMappingURL=xyEquallySpaced.js.map","import { zonesNormalize } from '../zones/zonesNormalize';\nimport { xyCheck } from './xyCheck';\n/**\n * XyExtract zones from a XY data\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Array of points\n */\nexport function xyExtract(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { zones } = options;\n    zones = zonesNormalize(zones);\n    if (x === undefined ||\n        y === undefined ||\n        !Array.isArray(zones) ||\n        zones.length === 0) {\n        return data;\n    }\n    let newX = [];\n    let newY = [];\n    let currentZone = zones[0];\n    let position = 0;\n    loop: for (let i = 0; i < x.length; i++) {\n        while (currentZone.to < x[i]) {\n            position++;\n            currentZone = zones[position];\n            if (!currentZone) {\n                i = x.length;\n                break loop;\n            }\n        }\n        if (x[i] >= currentZone.from) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyExtract.js.map","import { zonesNormalize } from '../zones/zonesNormalize';\n/** Filter an array x/y based on various criteria x points are expected to be sorted\n *\n * @param data - points\n * @param options - options\n * @return filtered array\n */\nexport function xyFilterX(data, options = {}) {\n    const { x, y } = data;\n    const { from = x[0], to = x[x.length - 1], zones = [{ from, to }], exclusions = [], } = options;\n    let normalizedZones = zonesNormalize(zones, { from, to, exclusions });\n    let currentZoneIndex = 0;\n    let newX = [];\n    let newY = [];\n    let position = 0;\n    while (position < x.length) {\n        if (x[position] <= normalizedZones[currentZoneIndex].to &&\n            x[position] >= normalizedZones[currentZoneIndex].from) {\n            newX.push(x[position]);\n            newY.push(y[position]);\n        }\n        else if (x[position] > normalizedZones[currentZoneIndex].to) {\n            currentZoneIndex++;\n            if (!normalizedZones[currentZoneIndex])\n                break;\n        }\n        position++;\n    }\n    return {\n        x: newX,\n        y: newY,\n    };\n}\n//# sourceMappingURL=xyFilterX.js.map","import { xyCheck } from './xyCheck';\n/**\n * Filter out all the points for which x <= 0. Useful to display log scale data\n *\n * @param data - data\n * @returns - An object with the filtered data\n */\nexport function xyFilterXPositive(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    const newX = [];\n    const newY = [];\n    if (x === undefined || y === undefined)\n        return { x: newX, y: newY };\n    for (let i = 0; i < x.length; i++) {\n        if (x[i] > 0) {\n            newX.push(x[i]);\n            newY.push(y[i]);\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xyFilterXPositive.js.map","import { xyCheck } from './xyCheck';\n/**\n * Returns the numberMaxPoints points with the bigger y.\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param numberMaxPoints - Number of points to keep\n * @returns - The points filtered to keep the `numberMaxPoints` most intense points of the input.\n */\nexport function xyGetNMaxY(data, numberMaxPoints) {\n    xyCheck(data);\n    if (data.x.length <= numberMaxPoints) {\n        return data;\n    }\n    else {\n        let newX = new Float64Array(numberMaxPoints);\n        let newY = new Float64Array(numberMaxPoints);\n        // slice() is used to make a copy of the array, because sort() is IPM\n        let threshold = Float64Array.from(data.y).sort().reverse()[numberMaxPoints - 1];\n        let index = 0;\n        for (let i = 0; i < data.x.length; i++) {\n            if (data.y[i] >= threshold) {\n                newX[index] = data.x[i];\n                newY[index] = data.y[i];\n                index++;\n            }\n            if (index === numberMaxPoints) {\n                return { x: newX, y: newY };\n            }\n        }\n        return data;\n    }\n}\n//# sourceMappingURL=xyGetNMaxY.js.map","/**\n * Order object of array, x has to be monotone. Ensure x is growing\n *\n * @param data - Object of kind {x:[], y:[]}.\n */\nexport function xyGrowingX(data) {\n    const { x, y } = data;\n    if (x.length !== y.length) {\n        throw new TypeError('sortX: length of x and y must be identical');\n    }\n    if (x.length < 2 || x[0] < x[1])\n        return data;\n    return {\n        x: x.slice(0).reverse(),\n        y: y.slice(0).reverse(),\n    };\n}\n//# sourceMappingURL=xyGrowingX.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Generate a X / Y of the xyIntegral\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the xyIntegration function\n */\nexport function xyIntegral(data, options = {}) {\n    const { reverse = false } = options;\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let xyIntegration = 0;\n    let currentxyIntegral;\n    if (reverse) {\n        currentxyIntegral = { x: [x[toIndex]], y: [0] };\n        for (let i = toIndex; i > fromIndex; i--) {\n            xyIntegration += ((x[i] - x[i - 1]) * (y[i - 1] + y[i])) / 2;\n            currentxyIntegral.x.push(x[i - 1]);\n            currentxyIntegral.y.push(xyIntegration);\n        }\n        currentxyIntegral.x.reverse();\n        currentxyIntegral.y.reverse();\n    }\n    else {\n        currentxyIntegral = { x: [x[fromIndex]], y: [0] };\n        for (let i = fromIndex; i < toIndex; i++) {\n            xyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n            currentxyIntegral.x.push(x[i + 1]);\n            currentxyIntegral.y.push(xyIntegration);\n        }\n    }\n    return currentxyIntegral;\n}\n//# sourceMappingURL=xyIntegral.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Calculate integration\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - xyIntegration value on the specified range\n */\nexport function xyIntegration(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return 0;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyIntegration = 0;\n    for (let i = fromIndex; i < toIndex; i++) {\n        currentxyIntegration += ((x[i + 1] - x[i]) * (y[i + 1] + y[i])) / 2;\n    }\n    return currentxyIntegration;\n}\n//# sourceMappingURL=xyIntegration.js.map","import { xyCheck } from './xyCheck';\n/**\n * Join x / y values when difference in X is closer than delta.\n * When joining, y values are summed and x values are weighted average\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the xyIntegration function\n */\nexport function xyJoinX(data, options = {}) {\n    xyCheck(data);\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    const x = Array.from(data.x);\n    const y = Array.from(data.y);\n    if (x.length < 2) {\n        return { x, y };\n    }\n    let position = 0;\n    for (let i = 1; i < x.length; i++) {\n        let difference = x[i] - x[i - 1];\n        let currentDelta = deltaIsFunction ? delta((x[i] + x[i - 1]) / 2) : delta;\n        if (difference <= currentDelta) {\n            // we join\n            if (y[position] !== 0 || y[i] !== 0) {\n                x[position] =\n                    (x[position] * y[position] + x[i] * y[i]) / (y[position] + y[i]);\n                y[position] += y[i];\n            }\n        }\n        else {\n            position++;\n            x[position] = x[i];\n            y[position] = y[i];\n        }\n    }\n    x.length = position + 1;\n    y.length = position + 1;\n    return { x, y };\n}\n//# sourceMappingURL=xyJoinX.js.map","import { xFindClosestIndex } from '../x/xFindClosestIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest maximum going up hill\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - An object with the x/y value\n */\nexport function xyMaxClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { target, targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let xyMaxY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] > xyMaxY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] > xyMaxY) {\n            currentIndex++;\n        }\n        xyMaxY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMaxClosestYPoint.js.map","import { xyCheck } from './xyCheck';\n/**\n * Finds all the max values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @returns - Array of points\n */\nexport function xyMaximaY(data) {\n    xyCheck(data, { minLength: 2 });\n    const { x, y } = data;\n    let maxima = [];\n    let startEqualIndex = -1;\n    for (let i = 1; i < x.length - 1; i++) {\n        if (y[i - 1] < y[i] && y[i + 1] < y[i]) {\n            maxima.push({ x: x[i], y: y[i], index: i });\n        }\n        else if (y[i - 1] < y[i] && y[i + 1] === y[i]) {\n            startEqualIndex = i;\n        }\n        else if (y[i - 1] === y[i] && y[i + 1] < y[i]) {\n            let index = ((i + startEqualIndex) / 2) >> 0;\n            maxima.push({ x: x[index], y: y[index], index });\n        }\n    }\n    return maxima;\n}\n//# sourceMappingURL=xyMaximaY.js.map","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n *\n * @param data - points\n * @param options - options\n * @return array of merged and weighted points\n */\nexport function xyMaxMerge(data, options = {}) {\n    const { x, y } = data;\n    const { groupWidth = 0.001 } = options;\n    let merged = { x: [], y: [] };\n    let maxAbscissa = { x: [], y: [] };\n    let size = 0;\n    let index = 0;\n    while (index < x.length) {\n        if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n            maxAbscissa.x.push(x[index]);\n            maxAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        }\n        else {\n            if (y[index] > maxAbscissa.y[size - 1]) {\n                maxAbscissa.x[size - 1] = x[index];\n                maxAbscissa.y[size - 1] = y[index];\n            }\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n    merged.x = maxAbscissa.x.slice();\n    return merged;\n}\n//# sourceMappingURL=xyMaxMerge.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the max value in a zone\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - Max y on the specified range\n */\nexport function xyMaxY(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let currentxyMaxY = y[fromIndex];\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] > currentxyMaxY)\n            currentxyMaxY = y[i];\n    }\n    return currentxyMaxY;\n}\n//# sourceMappingURL=xyMaxY.js.map","/**\n * Finds the median x value for an object with properties x and y (arrays of the same length)\n *\n * @param data - x should be sorted in increasing order\n * @returns - the median of x values\n */\nexport function xyMedian(data) {\n    const { x, y } = data;\n    let sumY = 0;\n    let cumSumY = 0;\n    let i;\n    if (x.length === 0) {\n        return NaN;\n    }\n    if (x.length === 1) {\n        return x[0];\n    }\n    for (i = 0; i < y.length; i++) {\n        sumY += y[i];\n    }\n    for (i = 0; i < y.length; i++) {\n        cumSumY += y[i];\n        if (cumSumY > sumY / 2) {\n            return x[i];\n        }\n        else if (cumSumY === sumY / 2) {\n            return 0.5 * (x[i] + x[i + 1]);\n        }\n    }\n    return NaN;\n}\n//# sourceMappingURL=xyMedian.js.map","/**\n * Merge abscissa values if the ordinate value is in a list of centroids\n *\n * @param data - points\n * @param centroids - centroids\n * @param options - options\n * @return merged points\n */\nexport function xyMergeByCentroids(data, centroids, options = {}) {\n    const { window = 0.01 } = options;\n    let mergedPoints = {\n        x: centroids.slice(),\n        y: new Float64Array(centroids.length).fill(0),\n    };\n    let originalIndex = 0;\n    let mergedIndex = 0;\n    while (originalIndex < data.x.length && mergedIndex < centroids.length) {\n        let diff = data.x[originalIndex] - centroids[mergedIndex];\n        if (Math.abs(diff) < window) {\n            mergedPoints.y[mergedIndex] += data.y[originalIndex++];\n        }\n        else if (diff < 0) {\n            originalIndex++;\n        }\n        else {\n            mergedIndex++;\n        }\n    }\n    return mergedPoints;\n}\n//# sourceMappingURL=xyMergeByCentroids.js.map","import { xFindClosestIndex } from '../x/xFindClosestIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n * @returns - An object with the x/y value\n */\nexport function xyMinClosestYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { target, targetIndex } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n        else {\n            targetIndex = 0;\n        }\n    }\n    let previousIndex = Number.MIN_SAFE_INTEGER;\n    let currentIndex = targetIndex;\n    let minY = y[targetIndex];\n    while (currentIndex !== previousIndex) {\n        previousIndex = currentIndex;\n        if (currentIndex > 0 && y[currentIndex - 1] < minY) {\n            currentIndex--;\n        }\n        else if (currentIndex < x.length - 1 && y[currentIndex + 1] < minY) {\n            currentIndex++;\n        }\n        minY = y[currentIndex];\n    }\n    return {\n        x: x[currentIndex],\n        y: y[currentIndex],\n        index: currentIndex,\n    };\n}\n//# sourceMappingURL=xyMinClosestYPoint.js.map","import { xyCheck } from './xyCheck';\n/**\n * Finds all the min values\n * If the values are equal the middle\n * of the equal part will be the position of the signal!\n *\n * @param data - Object that contains property X (an ordered increasing array) and y (an arraY)\n * @returns - Array of points.\n */\nexport function xyMinimaY(data) {\n    xyCheck(data, { minLength: 2 });\n    const { x, y } = data;\n    let maxima = [];\n    let startEqualIndex = -1;\n    for (let i = 1; i < x.length - 1; i++) {\n        if (y[i - 1] > y[i] && y[i + 1] > y[i]) {\n            maxima.push({ x: x[i], y: y[i], index: i });\n        }\n        else if (y[i - 1] > y[i] && y[i + 1] === y[i]) {\n            startEqualIndex = i;\n        }\n        else if (y[i - 1] === y[i] && y[i + 1] > y[i]) {\n            let index = ((i + startEqualIndex) / 2) >> 0;\n            maxima.push({ x: x[index], y: y[index], index });\n        }\n    }\n    return maxima;\n}\n//# sourceMappingURL=xyMinimaY.js.map","import { xGetFromToIndex } from '../x/xGetFromToIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Finds the min y value in a range and return a {x,y} point\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - Options\n */\nexport function xyMinYPoint(data, options = {}) {\n    xyCheck(data, { minLength: 1 });\n    const { x, y } = data;\n    if (x.length === 1)\n        return { x: x[0], y: y[0], index: 0 };\n    const { fromIndex, toIndex } = xGetFromToIndex(x, options);\n    let current = { x: x[fromIndex], y: y[fromIndex], index: fromIndex };\n    for (let i = fromIndex; i <= toIndex; i++) {\n        if (y[i] < current.y)\n            current = { x: x[i], y: y[i], index: i };\n    }\n    return current;\n}\n//# sourceMappingURL=xyMinYPoint.js.map","import { xFindClosestIndex } from '../x/xFindClosestIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Returns an information about a signal.\n *\n *\n * We expect ordered data and equidistant X axis\n * You can use the method helper if required:\n * ML.ArrayPoints.uniqueX\n * ML.ArrayPoints.sortX\n * ML.ArrayPoints.equallySpaced\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Information about signal\n */\nexport function xyPeakInfo(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    if (x === undefined || y === undefined || x.length < 3)\n        return undefined;\n    let { targetIndex, target } = options;\n    if (targetIndex === undefined) {\n        if (target !== undefined) {\n            targetIndex = xFindClosestIndex(x, target);\n        }\n    }\n    if (targetIndex === undefined) {\n        throw new Error('xyPeakInfo: need to specify target or targetIndex');\n    }\n    let i = targetIndex;\n    let currentDiff = y[i] - y[i + 1];\n    let multiplier = currentDiff < 0 ? -1 : 1;\n    currentDiff *= multiplier;\n    while (i < x.length - 1) {\n        i++;\n        let newDiff = (y[i] - y[i + 1]) * multiplier;\n        if (newDiff < currentDiff)\n            break;\n        currentDiff = newDiff;\n    }\n    let after = { x: x[i], y: y[i] };\n    i = targetIndex;\n    currentDiff = (y[i] - y[i - 1]) * multiplier;\n    while (i > 1) {\n        i--;\n        let newDiff = (y[i] - y[i - 1]) * multiplier;\n        if (newDiff < currentDiff)\n            break;\n        currentDiff = newDiff;\n    }\n    let before = { x: x[i], y: y[i] };\n    return {\n        inflectionBefore: before,\n        inflectionAfter: after,\n        extrema: { x: x[targetIndex], y: y[targetIndex] },\n        inflectionMiddle: {\n            x: (before.x + after.x) / 2,\n            y: (before.y + after.y) / 2,\n        },\n        width: Math.abs(before.x - after.x),\n    };\n}\n//# sourceMappingURL=xyPeakInfo.js.map","import { xGetTargetIndex } from '../x/xGetTargetIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * Find the closest minimum going down hill\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - An object with the x/y value\n */\nexport function xyRealMaxYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const targetIndex = xGetTargetIndex(x, options);\n    // interpolation to a sin() function\n    if (y[targetIndex - 1] > 0 &&\n        y[targetIndex + 1] > 0 &&\n        y[targetIndex] >= y[targetIndex - 1] &&\n        y[targetIndex] >= y[targetIndex + 1]) {\n        let alpha = 20 * Math.log10(y[targetIndex - 1]);\n        let beta = 20 * Math.log10(y[targetIndex]);\n        let gamma = 20 * Math.log10(y[targetIndex + 1]);\n        let p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n        return {\n            x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n            y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n            index: targetIndex,\n        };\n    }\n    else {\n        return {\n            x: x[targetIndex],\n            y: y[targetIndex],\n            index: targetIndex,\n        };\n    }\n}\n//# sourceMappingURL=xyRealMaxYPoint.js.map","import { xGetTargetIndex } from '../x/xGetTargetIndex';\nimport { xyCheck } from './xyCheck';\n/**\n * XyRealMinYPoint.\n *\n * @param data - Data.\n * @param options - Options.\n */\nexport function xyRealMinYPoint(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    const targetIndex = xGetTargetIndex(x, options);\n    // interpolation to a sin() function\n    if (y[targetIndex - 1] < 0 &&\n        y[targetIndex + 1] < 0 &&\n        y[targetIndex] <= y[targetIndex - 1] &&\n        y[targetIndex] <= y[targetIndex + 1]) {\n        let alpha = 20 * Math.log10(-y[targetIndex - 1]);\n        let beta = 20 * Math.log10(-y[targetIndex]);\n        let gamma = 20 * Math.log10(-y[targetIndex + 1]);\n        let p = (0.5 * (alpha - gamma)) / (alpha - 2 * beta + gamma);\n        return {\n            x: x[targetIndex] + (x[targetIndex] - x[targetIndex - 1]) * p,\n            y: y[targetIndex] - 0.25 * (y[targetIndex - 1] - y[targetIndex + 1]) * p,\n            index: targetIndex,\n        };\n    }\n    else {\n        return {\n            x: x[targetIndex],\n            y: y[targetIndex],\n            index: targetIndex,\n        };\n    }\n}\n//# sourceMappingURL=xyRealMinYPoint.js.map","import { xFindClosestIndex } from '../x/xFindClosestIndex';\nimport { zonesNormalize } from '../zones/zonesNormalize';\nimport { xyCheck } from './xyCheck';\n/**\n * XyReduce the number of points while keeping visually the same noise. Practical to\n * display many spectra as SVG. If you want a similar looking spectrum you should still however generate 4x the nbPoints that is being displayed.\n * SHOULD NOT BE USED FOR DATA PROCESSING !!!\n * You should rather use ml-xy-equally-spaced to make further processing\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n */\nexport function xyReduce(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { from = x[0], to = x[x.length - 1], nbPoints = 4001, optimize = false, zones = [], } = options;\n    zones = zonesNormalize(zones, { from, to });\n    if (zones.length === 0)\n        zones = [{ from, to }]; // we take everything\n    // for each zone we should know the first index, the last index and the number of points\n    const internalZones = zones;\n    let totalPoints = 0;\n    for (let zone of internalZones) {\n        zone.fromIndex = xFindClosestIndex(x, zone.from);\n        zone.toIndex = xFindClosestIndex(x, zone.to);\n        if (zone.fromIndex > 0 && x[zone.fromIndex] > zone.from) {\n            zone.fromIndex--;\n        }\n        if (zone.toIndex < x.length - 1 && x[zone.toIndex] < zone.to) {\n            zone.toIndex++;\n        }\n        zone.nbPoints = zone.toIndex - zone.fromIndex + 1;\n        totalPoints += zone.nbPoints;\n    }\n    // we calculate the number of points per zone that we should keep\n    if (totalPoints > nbPoints) {\n        // need to xyReduce number of points\n        let ratio = nbPoints / totalPoints;\n        let currentTotal = 0;\n        for (let i = 0; i < internalZones.length - 1; i++) {\n            const zone = internalZones[i];\n            zone.nbPoints = Math.round(zone.nbPoints * ratio);\n            currentTotal += zone.nbPoints;\n        }\n        internalZones[internalZones.length - 1].nbPoints = nbPoints - currentTotal;\n    }\n    else {\n        let newX = new Float64Array(totalPoints);\n        let newY = new Float64Array(totalPoints);\n        let index = 0;\n        for (let zone of internalZones) {\n            for (let i = zone.fromIndex; i < zone.toIndex + 1; i++) {\n                newX[index] = x[i];\n                newY[index] = y[i];\n                index++;\n            }\n        }\n        return {\n            x: newX,\n            y: newY,\n        };\n    }\n    let newX = [];\n    let newY = [];\n    for (let zone of internalZones) {\n        if (!zone.nbPoints)\n            continue;\n        appendFromTo(zone.fromIndex, zone.toIndex, zone.nbPoints);\n    }\n    return { x: newX, y: newY };\n    /**\n     * AppendFromTo.\n     *\n     * @param fromIndex - From.\n     * @param  toIndex - To.\n     * @param zoneNbPoints - NbPoints.\n     */\n    function appendFromTo(fromIndex, toIndex, zoneNbPoints) {\n        if (zoneNbPoints === 1) {\n            newX.push(x[Math.round((toIndex - fromIndex) / 2)]);\n            newY.push(y[Math.round((toIndex - fromIndex) / 2)]);\n            return;\n        }\n        if (zoneNbPoints === 2) {\n            newX.push(x[fromIndex], x[toIndex]);\n            newY.push(y[fromIndex], y[toIndex]);\n            return;\n        }\n        newX.push(x[fromIndex]);\n        newY.push(y[fromIndex]);\n        if (zoneNbPoints % 2 === 0) {\n            zoneNbPoints = zoneNbPoints / 2 + 1;\n        }\n        else {\n            zoneNbPoints = (zoneNbPoints - 1) / 2 + 1;\n        }\n        // we will need to make some kind of min / max because there are too many points\n        // we will always keep the first point and the last point\n        let slot = (x[toIndex] - x[fromIndex]) / (zoneNbPoints - 1);\n        let currentX = x[fromIndex] + slot;\n        let first = true;\n        let minY = Number.POSITIVE_INFINITY;\n        let xyMaxY = Number.NEGATIVE_INFINITY;\n        for (let i = fromIndex + 1; i <= toIndex; i++) {\n            if (first) {\n                minY = y[i];\n                xyMaxY = y[i];\n                first = false;\n            }\n            else {\n                if (y[i] < minY)\n                    minY = y[i];\n                if (y[i] > xyMaxY)\n                    xyMaxY = y[i];\n            }\n            if (x[i] >= currentX || i === toIndex) {\n                if (optimize) {\n                    if (minY > newY[newX.length - 1]) {\n                        // we can skip the intermediate value\n                    }\n                    else if (xyMaxY < newY[newX.length - 1]) {\n                        // we can skip the intermediate value\n                        xyMaxY = minY;\n                    }\n                    else {\n                        newX.push(currentX - slot / 2);\n                        newY.push(minY);\n                    }\n                }\n                else {\n                    newX.push(currentX - slot / 2);\n                    newY.push(minY);\n                }\n                newX.push(currentX);\n                newY.push(xyMaxY);\n                currentX += slot;\n                first = true;\n            }\n        }\n    }\n}\n//# sourceMappingURL=xyReduce.js.map","import { xRolling } from '../x/xRolling';\nimport { xRollingAverage } from '../x/xRollingAverage';\n/**\n * This function calculates a rolling average.\n * This methods will recalculate the x values by using xRollingAverage\n *\n * @param data - array of points {x,y}\n * @param fct - callback function that from an array returns a value.\n * @param options - options\n */\nexport function xyRolling(data, fct, options = {}) {\n    let { x, y } = data;\n    y = xRolling(y, fct, options);\n    if (x.length !== y.length) {\n        x = xRollingAverage(x, options);\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xyRolling.js.map","import { zonesNormalize } from '../zones/zonesNormalize';\nimport { xyCheck } from './xyCheck';\n/**\n * Set a value (default 0) to specific zones.\n *\n * @param data - Object that contains property x (an ordered increasing array) and y (an array)\n * @param options - options\n * @returns - Array of points\n */\nexport function xySetYValue(data, options = {}) {\n    xyCheck(data);\n    const { x, y } = data;\n    let { zones, value = 0 } = options;\n    if (!Array.isArray(zones) || zones.length === 0) {\n        return data;\n    }\n    zones = zonesNormalize(zones);\n    const newX = x.slice();\n    const newY = y.slice();\n    let currentZone = zones[0];\n    let position = 0;\n    loop: for (let i = 0; i < x.length; i++) {\n        while (currentZone.to < x[i]) {\n            position++;\n            currentZone = zones[position];\n            if (!currentZone) {\n                i = x.length;\n                break loop;\n            }\n        }\n        if (x[i] >= currentZone.from) {\n            newY[i] = value;\n        }\n    }\n    return { x: newX, y: newY };\n}\n//# sourceMappingURL=xySetYValue.js.map","import { xIsMonotone } from '../x/xIsMonotone';\n/**\n * This function performs a quick sort of the x array while transforming the y array to preserve the coordinates.\n *\n * @param data - Object that contains property x (Array) and y (Array)\n */\nexport function xySortX(data) {\n    const { x, y } = data;\n    if (xIsMonotone(x) && x.length > 1) {\n        if (x[0] < x[1]) {\n            return {\n                x: Float64Array.from(x),\n                y: Float64Array.from(y),\n            };\n        }\n        else {\n            return {\n                x: Float64Array.from(x).reverse(),\n                y: Float64Array.from(y).reverse(),\n            };\n        }\n    }\n    let xyObject = x\n        .map((val, index) => ({\n        x: val,\n        y: y[index],\n    }))\n        .sort((a, b) => a.x - b.x);\n    let response = {\n        x: new Float64Array(x.length),\n        y: new Float64Array(y.length),\n    };\n    for (let i = 0; i < x.length; i++) {\n        response.x[i] = xyObject[i].x;\n        response.y[i] = xyObject[i].y;\n    }\n    return response;\n}\n//# sourceMappingURL=xySortX.js.map","import { xyCheck } from './xyCheck';\n/**\n * Convert a DataXY to an array of array containing x,y\n *\n * @param data - array of points {x,y}\n */\nexport function xyToXYArray(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    let objectArray = [];\n    for (let i = 0; i < x.length; i++) {\n        objectArray.push([x[i], y[i]]);\n    }\n    return objectArray;\n}\n//# sourceMappingURL=xyToXYArray.js.map","import { xyCheck } from './xyCheck';\n/**\n * XyToXYObject.\n *\n * @param data - Array of points {x,y}.\n */\nexport function xyToXYObject(data) {\n    xyCheck(data);\n    const { x, y } = data;\n    let objectArray = [];\n    for (let i = 0; i < x.length; i++) {\n        objectArray.push({ x: x[i], y: y[i] });\n    }\n    return objectArray;\n}\n//# sourceMappingURL=xyToXYObject.js.map","import { xyCheck } from './xyCheck';\nimport { xySortX } from './xySortX';\n/**\n * Ensure x values are unique\n *\n * @param data - Object that contains property x (Array) and y (Array)\n * @param options - Object containing a property algorithm (can be 'sum' or 'average', the latter being the default value), and a property isSorted (boolean indicating if the x-array is sorted).\n */\nexport function xyUniqueX(data, options = {}) {\n    xyCheck(data);\n    const { algorithm = 'average', isSorted = true } = options;\n    if (!isSorted) {\n        data = xySortX(data);\n    }\n    switch (algorithm) {\n        case 'average':\n            return average(data);\n        case 'sum':\n            return sum(data);\n        default:\n            throw new Error(`xyUniqueX: unknown algorithm: ${algorithm}`);\n    }\n}\n/**\n * Average.\n *\n * @param data - Input.\n * @returns Result.\n */\nfunction average(data) {\n    let x = [];\n    let y = [];\n    let cumulativeY = data.y[0];\n    let divider = 1;\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY / divider);\n            cumulativeY = 0;\n            divider = 0;\n        }\n        cumulativeY += data.y[i];\n        divider++;\n    }\n    x.push(data.x[data.x.length - 1]);\n    y.push(cumulativeY / divider);\n    return { x, y };\n}\n/**\n * Sum.\n *\n * @param data - Input.\n * @returns Result.\n */\nfunction sum(data) {\n    let x = [];\n    let y = [];\n    let cumulativeY = data.y[0];\n    for (let i = 1; i < data.x.length; i++) {\n        if (!(data.x[i] === data.x[i - 1])) {\n            x.push(data.x[i - 1]);\n            y.push(cumulativeY);\n            cumulativeY = 0;\n        }\n        cumulativeY += data.y[i];\n    }\n    x.push(data.x[data.x.length - 1]);\n    y.push(cumulativeY);\n    return { x, y };\n}\n//# sourceMappingURL=xyUniqueX.js.map","/**\n * Merge abscissas values on similar ordinates and weight the group of abscissas\n *\n * @param data - points\n * @param options - options\n * @return array of merged and weighted points\n */\nexport function xyWeightedMerge(data, options = {}) {\n    const { x, y } = data;\n    const { groupWidth = 0.001 } = options;\n    let merged = { x: [], y: [] };\n    let weightedAbscissa = { x: [], y: [] };\n    let size = 0;\n    let index = 0;\n    while (index < x.length) {\n        if (size === 0 || x[index] - merged.x[size - 1] > groupWidth) {\n            weightedAbscissa.x.push(x[index] * y[index]);\n            weightedAbscissa.y.push(y[index]);\n            merged.x.push(x[index]);\n            merged.y.push(y[index]);\n            index++;\n            size++;\n        }\n        else {\n            weightedAbscissa.x[size - 1] += x[index] * y[index];\n            weightedAbscissa.y[size - 1] += y[index];\n            merged.x[size - 1] = x[index];\n            merged.y[size - 1] += y[index];\n            index++;\n        }\n    }\n    for (let i = 0; i < merged.x.length; i++) {\n        merged.x[i] = weightedAbscissa.x[i] / weightedAbscissa.y[i];\n    }\n    return merged;\n}\n//# sourceMappingURL=xyWeightedMerge.js.map","/**\n * This function make a zero filling to re and im part.\n *\n * @param data - object of kind {x:[], re:[], im:[]}\n * @param totalLength - final number of points\n * @returns - data.\n */\nexport function xreimZeroFilling(data, totalLength) {\n    let length = data.x.length;\n    if (totalLength === 0 || length === totalLength)\n        return data;\n    if (length > totalLength) {\n        return {\n            x: data.x.slice(0, totalLength),\n            re: data.re.slice(0, totalLength),\n            im: data.im.slice(0, totalLength),\n        };\n    }\n    const x = data.x;\n    const re = data.re;\n    const im = data.im;\n    const newX = new Float64Array(totalLength);\n    const newRE = new Float64Array(totalLength);\n    const newIM = new Float64Array(totalLength);\n    for (let i = 0; i < length; i++) {\n        newX[i] = x[i];\n        newRE[i] = re[i];\n        newIM[i] = im[i];\n    }\n    const deltaX = (x[x.length - 1] - x[0]) / (length - 1);\n    for (let i = length; i < totalLength; i++) {\n        newX[i] = newX[i - 1] + deltaX;\n    }\n    return {\n        x: newX,\n        re: newRE,\n        im: newIM,\n    };\n}\n//# sourceMappingURL=xreimZeroFilling.js.map","/**\n * Sort object of array, x has to be monotone.\n *\n * @param data - object of kind {x:[], re:[], im:[]}\n * @returns - sorted array\n */\nexport function xreimSortX(data) {\n    const { x, re, im } = data;\n    if (x.length !== re.length || x.length !== im.length) {\n        throw new TypeError('xreimSortX: length of x, re and im must be identical');\n    }\n    if (x.length < 2 || x[0] < x[1])\n        return data;\n    return {\n        x: x.slice(0).reverse(),\n        re: re.slice(0).reverse(),\n        im: im.slice(0).reverse(),\n    };\n}\n//# sourceMappingURL=xreimSortX.js.map","/**\n * GetSlots.\n *\n * @param data - data.\n * @param options - Options.\n */\nexport function getSlots(data, options = {}) {\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    let possibleXs = Float64Array.from([].concat(...data.map((spectrum) => spectrum.x))).sort();\n    if (possibleXs.length < 1) {\n        throw new Error('xyArrayMerge can not process empty arrays');\n    }\n    let currentSlot = {\n        from: possibleXs[0],\n        to: possibleXs[0],\n        average: possibleXs[0],\n        sum: possibleXs[0],\n        number: 1,\n    };\n    let slots = [currentSlot];\n    for (let i = 1; i < possibleXs.length; i++) {\n        let currentDelta = deltaIsFunction ? delta(possibleXs[i]) : delta;\n        if (possibleXs[i] - currentSlot.to <= currentDelta) {\n            currentSlot.to = possibleXs[i];\n            currentSlot.number++;\n            currentSlot.sum += possibleXs[i];\n            currentSlot.average = currentSlot.sum / currentSlot.number;\n        }\n        else {\n            currentSlot = {\n                from: possibleXs[i],\n                to: possibleXs[i],\n                average: possibleXs[i],\n                sum: possibleXs[i],\n                number: 1,\n            };\n            slots.push(currentSlot);\n        }\n    }\n    return slots;\n}\n//# sourceMappingURL=getSlots.js.map","import { xyJoinX } from '../xy/xyJoinX';\nimport { getSlots } from './utils/getSlots';\n/**\n * Aligns data, can be used for spectra\n *\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayAlign(data, options = {}) {\n    const { delta = 1 } = options;\n    data = data.map((spectrum) => xyJoinX(spectrum, { delta }));\n    const slots = getSlots(data, options);\n    let x = Float64Array.from(slots.map((slot) => slot.average));\n    let ys = new Array(data.length).fill(0).map(() => new Float64Array(x.length));\n    let positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        let slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            let spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] <= slot.to) {\n                ys[j][i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    return { x, ys };\n}\n//# sourceMappingURL=xyArrayAlign.js.map","import { xyJoinX } from '../xy/xyJoinX';\nimport { getSlots } from './utils/getSlots';\n/**\n * Merge DataXY\n * We have an array of DataXY and the goal is to merge all the values that are the closest possible\n *\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayMerge(data, options = {}) {\n    const { delta = 1 } = options;\n    // we start by checking that the data/spectra don't have peaks too close and we simplify them\n    data = data.map((spectrum) => xyJoinX(spectrum, { delta }));\n    // at first we will calculate the X values (simple mean)\n    let slots = getSlots(data, options);\n    let x = Float64Array.from(slots.map((slot) => slot.average));\n    let y = new Float64Array(x.length);\n    let positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        let slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            let spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] <= slot.to) {\n                y[i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    return { x, y };\n}\n//# sourceMappingURL=xyArrayMerge.js.map","/**\n * Merge DataXY\n * We have an array of DataXY and the goal is to merge all the values for which the deltaX is small or equal to delta.\n * X values are weighted average\n *\n * @param data - data\n * @param options - Options\n */\nexport function xyArrayWeightedMerge(data, options = {}) {\n    let { delta = 1 } = options;\n    if (typeof delta === 'number') {\n        let deltaNumber = delta;\n        delta = () => deltaNumber;\n    }\n    data = data.filter((spectrum) => spectrum.x.length > 0);\n    if (data.length === 0)\n        return { x: [], y: [] };\n    let x = [];\n    let y = [];\n    const positions = new Array(data.length).fill(0);\n    const point = { x: 0, y: 0 };\n    nextValue(data, positions, point);\n    let slot = {\n        maxX: point.x + delta(point.x),\n        sumY: point.y,\n        sumXY: point.y * point.x,\n    };\n    while (data.length !== 0) {\n        nextValue(data, positions, point);\n        let sameSlot = point.x <= slot.maxX;\n        if (!sameSlot) {\n            if (slot.sumY > 0) {\n                x.push(slot.sumXY / slot.sumY);\n                y.push(slot.sumY);\n            }\n            slot.sumY = 0;\n            slot.sumXY = 0;\n        }\n        slot.sumY += point.y;\n        slot.sumXY += point.x * point.y;\n        slot.maxX = point.x + delta(point.x);\n        if (data.length === 0) {\n            if (slot.sumY > 0) {\n                x.push(slot.sumXY / slot.sumY);\n                y.push(slot.sumY);\n            }\n        }\n    }\n    return { x, y };\n}\n/**\n * NextValue.\n *\n * @param data - data.\n * @param positions - Positions array.\n * @param point - Point.\n */\nfunction nextValue(data, positions, point) {\n    let minIndex = 0;\n    let minX = data[0].x[positions[0]];\n    for (let i = 1; i < data.length; i++) {\n        let currentX = data[i].x[positions[i]];\n        if (currentX < minX) {\n            minX = currentX;\n            minIndex = i;\n        }\n    }\n    point.x = minX;\n    point.y = data[minIndex].y[positions[minIndex]];\n    positions[minIndex]++;\n    if (positions[minIndex] === data[minIndex].x.length) {\n        positions.splice(minIndex, 1);\n        data.splice(minIndex, 1);\n    }\n}\n//# sourceMappingURL=xyArrayWeightedMerge.js.map","import { xyArrayWeightedMerge } from '../xyArrayWeightedMerge';\n/**\n * GetSlotsToFirst.\n *\n * @param data - data.\n * @param options - Options.\n */\nexport function getSlotsToFirst(data, options = {}) {\n    const { delta = 1 } = options;\n    const deltaIsFunction = typeof delta === 'function';\n    let firstXs = data[0].x;\n    let slots = [];\n    // we first create the slots based on the first spectrum\n    firstXs.forEach((element) => {\n        let currentDelta = deltaIsFunction ? delta(element) : delta;\n        slots.push({\n            from: element - currentDelta,\n            to: element + currentDelta,\n            value: element,\n        });\n    });\n    let otherXs = xyArrayWeightedMerge(data.slice(1), options).x;\n    let currentPosition = 0;\n    for (let slot of slots) {\n        while (otherXs[currentPosition] < slot.to &&\n            currentPosition < otherXs.length) {\n            if (otherXs[currentPosition] < slot.from) {\n                let currentDelta = deltaIsFunction\n                    ? delta(otherXs[currentPosition])\n                    : delta;\n                slots.push({\n                    from: otherXs[currentPosition] - currentDelta,\n                    to: otherXs[currentPosition] + currentDelta,\n                    value: otherXs[currentPosition],\n                });\n            }\n            currentPosition++;\n        }\n    }\n    for (let i = currentPosition; i < otherXs.length; i++) {\n        let currentDelta = deltaIsFunction ? delta(otherXs[i]) : delta;\n        slots.push({\n            from: otherXs[i] - currentDelta,\n            to: otherXs[i] + currentDelta,\n            value: otherXs[i],\n        });\n    }\n    slots.sort((a, b) => a.value - b.value);\n    // we prevent slots overlap in the first spectrum\n    for (let i = 0; i < slots.length - 1; i++) {\n        if (slots[i].to > slots[i + 1].from) {\n            let middle = (slots[i].value + slots[i + 1].value) / 2;\n            slots[i].to = middle;\n            slots[i + 1].from = middle;\n        }\n    }\n    return slots;\n}\n//# sourceMappingURL=getSlotsToFirst.js.map","import { getSlotsToFirst } from './utils/getSlotsToFirst';\n/**\n * We align all the data/spectra to the first array of X.\n * The alignment is based on the X values of the first spectrum and the `delta` error allowed. If some x values are missing in the first specdtrum we will add them\n *\n * @param data data\n * @param options options\n */\nexport function xyArrayAlignToFirst(data, options = {}) {\n    const slots = getSlotsToFirst(data, options);\n    let x = Float64Array.from(slots.map((slot) => slot.value));\n    let ys = new Array(data.length).fill(0).map(() => new Float64Array(x.length));\n    let positions = new Uint32Array(data.length);\n    for (let i = 0; i < slots.length; i++) {\n        let slot = slots[i];\n        for (let j = 0; j < data.length; j++) {\n            let spectrum = data[j];\n            while (positions[j] < spectrum.x.length &&\n                spectrum.x[positions[j]] < slot.to) {\n                ys[j][i] += spectrum.y[positions[j]];\n                positions[j]++;\n            }\n        }\n    }\n    return { x, ys };\n}\n//# sourceMappingURL=xyArrayAlignToFirst.js.map","/**\n * Throw an error in no an object of x,y arrays\n *\n * @param points - list of points\n */\nexport function xyObjectCheck(points = []) {\n    if (!Array.isArray(points)) {\n        throw new Error('ArrayPoints must be an array of {x,y} object');\n    }\n    if (points.length > 0 &&\n        (points[0].x === undefined || points[0].y === undefined)) {\n        throw new Error('ArrayPoints must be an array of {x,y} object');\n    }\n}\n//# sourceMappingURL=xyObjectCheck.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max x value and return a {x,y,index} point\n *\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMaxXPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length < 1)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].x > current.x) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMaxXPoint.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the min x value and return a {x,y,index} point\n *\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMinXPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length < 1)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].x < current.x) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMinXPoint.js.map","import { xyObjectMaxXPoint } from './xyObjectMaxXPoint';\nimport { xyObjectMinXPoint } from './xyObjectMinXPoint';\n/**\n * Filter the array by taking the higher points (max y value) and only.\n * Keep one per slot. There are 2 different slots, the smallest one will have the\n * new property `close` to true\n *\n * @param points - array of all the points\n * @param options - Options\n * @returns - copy of points with 'close' property\n */\nexport function xyObjectBestPoints(points, options = {}) {\n    const { from = xyObjectMinXPoint(points).x, to = xyObjectMaxXPoint(points).x, limit = 20, threshold = 0.01, numberCloseSlots = 50, numberSlots = 10, } = options;\n    let slot = (to - from) / numberSlots;\n    let closeSlot = (to - from) / numberCloseSlots;\n    let selected = points\n        .filter((point) => point.x >= from && point.x <= to)\n        .map((point) => {\n        return {\n            point,\n            monoisotopic: false,\n        };\n    });\n    selected = selected.sort((a, b) => {\n        if (a.monoisotopic && !b.monoisotopic)\n            return -1;\n        if (b.monoisotopic && !a.monoisotopic)\n            return 1;\n        return b.point.y - a.point.y;\n    });\n    let toReturn = [];\n    if (selected.length === 0)\n        return [];\n    let minY = selected[0].point.y * threshold;\n    peakLoop: for (let item of selected) {\n        if (item.point.y < minY) {\n            if (item.monoisotopic) {\n                continue;\n            }\n            else {\n                break;\n            }\n        }\n        let close = false;\n        for (let existing of toReturn) {\n            if (Math.abs(existing.x - item.point.x) < closeSlot) {\n                continue peakLoop;\n            }\n            if (Math.abs(existing.x - item.point.x) < slot) {\n                close = true;\n            }\n        }\n        let newPeak = JSON.parse(JSON.stringify(item.point));\n        newPeak.close = close;\n        toReturn.push(newPeak);\n        if (toReturn.length === limit)\n            break;\n    }\n    return toReturn.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=xyObjectBestPoints.js.map","/**\n * xyObjectJoinX.\n *\n * @param points - Array of growing points {x,y}.\n * @param options - Options.\n */\nexport function xyObjectJoinX(points, options = {}) {\n    const { xError = Number.EPSILON } = options;\n    // when we join we will use the center of mass\n    let result = [];\n    let current = {\n        x: Number.MIN_SAFE_INTEGER,\n        y: 0,\n    };\n    for (let point of points) {\n        if (point.x - current.x <= xError) {\n            // weighted sum\n            if (current.y !== 0 || point.y !== 0) {\n                current.x =\n                    (point.y / (current.y + point.y)) * (point.x - current.x) + current.x;\n                current.y += point.y;\n            }\n        }\n        else {\n            current = {\n                x: point.x,\n                y: point.y,\n            };\n            result.push(current);\n        }\n    }\n    return result;\n}\n//# sourceMappingURL=xyObjectJoinX.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the max y value and return a {x,y,index} point\n *\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMaxYPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length < 1)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].y > current.y) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMaxYPoint.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Finds the min y value and return a {x,y,index} point\n *\n * @param points - Object that contains property x (an ordered increasing array) and y (an array)\n */\nexport function xyObjectMinYPoint(points = []) {\n    xyObjectCheck(points);\n    if (points.length < 1)\n        return { x: 0, y: 0 };\n    let current = {\n        x: points[0].x,\n        y: points[0].y,\n        index: 0,\n    };\n    for (let i = 1; i < points.length; i++) {\n        if (points[i].y < current.y) {\n            current = {\n                x: points[i].x,\n                y: points[i].y,\n                index: i,\n            };\n        }\n    }\n    return current;\n}\n//# sourceMappingURL=xyObjectMinYPoint.js.map","/**\n * XyObjectSlotX\n *\n * @param points - Array of growing points {x,y}.\n * @param options - Options.\n */\nexport function xyObjectSlotX(points, options = {}) {\n    const { slotWidth = 1 } = options;\n    const halfSlot = slotWidth / 2;\n    // when we join we will use the center of mass\n    let result = [];\n    let current = {\n        x: Number.NEGATIVE_INFINITY,\n        y: 0,\n    };\n    for (let point of points) {\n        let slot = point.x - ((point.x + halfSlot) % slotWidth) + halfSlot;\n        if (Math.abs(current.x - slot) > Number.EPSILON) {\n            current = {\n                x: slot,\n                y: 0,\n            };\n            result.push(current);\n        }\n        current.y += point.y;\n    }\n    return result;\n}\n//# sourceMappingURL=xyObjectSlotX.js.map","/**\n * Sorts an array of points\n *\n * @param points - array of points {x,y}\n * @returns - sorted array of points {x,y}\n */\nexport function xyObjectSortX(points) {\n    return points.sort((a, b) => a.x - b.x);\n}\n//# sourceMappingURL=xyObjectSortX.js.map","import { xyObjectCheck } from './xyObjectCheck';\n/**\n * Calculate the sum of Y values\n *\n * @param points - Object that contains property x and y (an array)\n */\nexport function xyObjectSumY(points = []) {\n    xyObjectCheck(points);\n    let sum = 0;\n    for (let point of points) {\n        sum += point.y;\n    }\n    return sum;\n}\n//# sourceMappingURL=xyObjectSumY.js.map","/**\n * XyObjectToXY.\n *\n * @param points - Array of points {x,y}.\n */\nexport function xyObjectToXY(points) {\n    return {\n        x: points.map((entry) => entry.x),\n        y: points.map((entry) => entry.y),\n    };\n}\n//# sourceMappingURL=xyObjectToXY.js.map","/**\n * Deprecated !!! Should use utils/createFromToArray\n *\n * @param zone.\n * @param size - Size.\n * @returns - Array of float.\n */\nexport function zoneToX(zone, size) {\n    const { from, to } = zone;\n    let array = new Float64Array(size);\n    let step = (to - from) / (size - 1);\n    for (let i = 0; i < size; i++) {\n        array[i] = from + step * i;\n    }\n    return array;\n}\n//# sourceMappingURL=zoneToX.js.map","/**\n * Center mean of columns\n *\n * @param matrix - matrix [rows][cols]\n */\nexport function matrixCenterZMean(matrix) {\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    const newMatrix = new Array(nbRows);\n    for (let row = 0; row < nbRows; row++) {\n        newMatrix[row] = new Float64Array(nbColumns);\n    }\n    for (let column = 0; column < nbColumns; column++) {\n        let mean = 0;\n        for (let row = 0; row < nbRows; row++) {\n            mean += matrix[row][column];\n        }\n        mean /= nbRows;\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] = matrix[row][column] - mean;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixCenterZMean.js.map","/**\n * Get min and max of the absolute values of Z\n *\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxAbsoluteZ(matrix) {\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrixMinMaxAbsoluteZ requires at least 1 row and 1 column');\n    }\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = Number.POSITIVE_INFINITY;\n    let max = Number.NEGATIVE_INFINITY;\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            let value = matrix[row][column];\n            if (value < 0)\n                value *= -1;\n            if (value < min)\n                min = value;\n            if (value > max)\n                max = value;\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxAbsoluteZ.js.map","export function matrixCheck(data) {\n    if (data.length === 0 || data[0].length === 0) {\n        throw new RangeError('matrix should contain data');\n    }\n    const firstLength = data[0].length;\n    for (let i = 1; i < data.length; i++) {\n        if (data[i].length !== firstLength) {\n            throw new RangeError('All rows should has the same length');\n        }\n    }\n}\n//# sourceMappingURL=matrixCheck.js.map","import { matrixCheck } from './matrixCheck';\n/**\n * Get min and max Z\n *\n * @param matrix - matrix [rows][cols].\n */\nexport function matrixMinMaxZ(matrix) {\n    matrixCheck(matrix);\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    let min = matrix[0][0];\n    let max = matrix[0][0];\n    for (let column = 0; column < nbColumns; column++) {\n        for (let row = 0; row < nbRows; row++) {\n            if (matrix[row][column] < min)\n                min = matrix[row][column];\n            if (matrix[row][column] > max)\n                max = matrix[row][column];\n        }\n    }\n    return { min, max };\n}\n//# sourceMappingURL=matrixMinMaxZ.js.map","import { xHistogram } from '../x/xHistogram';\nimport { matrixMinMaxAbsoluteZ } from './matrixMinMaxAbsoluteZ';\nimport { matrixMinMaxZ } from './matrixMinMaxZ';\n/**\n * Calculates an histogram of defined number of slots\n *\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - result of the histogram\n */\nexport function matrixHistogram(matrix, options = {}) {\n    const { logBaseY, logBaseX, absolute } = options;\n    options = JSON.parse(JSON.stringify(options));\n    delete options.logBaseY;\n    if (matrix.length === 0 || matrix[0].length === 0) {\n        throw new Error('matrixHistogram: matrix should have at least one column and one row');\n    }\n    if (options.min === undefined || options.max === undefined) {\n        const minMax = absolute\n            ? matrixMinMaxAbsoluteZ(matrix)\n            : matrixMinMaxZ(matrix);\n        if (options.min === undefined) {\n            options.min =\n                logBaseX && minMax.min\n                    ? Math.log(minMax.min) / Math.log(logBaseX)\n                    : minMax.min;\n        }\n        if (options.max === undefined) {\n            options.max =\n                logBaseX && minMax.max\n                    ? Math.log(minMax.max) / Math.log(logBaseX)\n                    : minMax.max;\n        }\n    }\n    let histogram = xHistogram(matrix[0], options);\n    options.histogram = histogram;\n    const nbRows = matrix.length;\n    for (let row = 1; row < nbRows; row++) {\n        xHistogram(matrix[row], options);\n    }\n    const y = histogram.y;\n    if (logBaseY) {\n        const logOfBase = Math.log10(logBaseY);\n        for (let i = 0; i < y.length; i++) {\n            y[i] = Math.log10(y[i] + 1) / logOfBase;\n        }\n    }\n    return histogram;\n}\n//# sourceMappingURL=matrixHistogram.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\nfunction isArrayOfNumbers(array) {\n  return array.every((element) => {\n    return typeof element === 'number';\n  });\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        if (!isArrayOfNumbers(arrayData[i])) {\n          throw new TypeError('Input data contains non-numeric values');\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 { Matrix } from 'ml-matrix';\nimport { xMedian } from '../x/xMedian';\n/**\n * Performs a Probabilistic quotient normalization (PQN) over the dataset to account dilution based in median spectrum.\n * Dieterle, F., Ross, A., Schlotterbeck, G., & Senn, H. (2006). Probabilistic quotient normalization as robust method to account for dilution of complex biological mixtures. Application in 1H NMR metabonomics. Analytical chemistry, 78(13), 4281-4290.\n * DOI: 10.1021/ac051632c\n *\n * @param matrix - matrix [rows][cols].\n * @param options - options\n * @returns - {data: Normalized dataset, medianOfQuotients: The median of quotients of each variables}\n */\nexport function matrixPQN(matrix, options = {}) {\n    const { max = 100 } = options;\n    let matrixB = new Matrix(matrix);\n    for (let i = 0; i < matrixB.rows; i++) {\n        const normalizationFactor = matrixB.getRowVector(i).norm('frobenius') / max;\n        const row = matrixB.getRowVector(i).div(normalizationFactor);\n        matrixB.setRow(i, row);\n    }\n    let referenceSpectrum = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        const currentVariable = matrixB.getColumn(i);\n        referenceSpectrum.push(xMedian(currentVariable));\n    }\n    let medianOfQuotients = [];\n    for (let i = 0; i < matrixB.columns; i++) {\n        let quotients = matrixB.getColumnVector(i).div(referenceSpectrum[i]);\n        medianOfQuotients.push(xMedian(quotients.getColumn(0)));\n    }\n    for (let i = 0; i < matrixB.rows; i++) {\n        matrixB.mulRow(i, 1 / medianOfQuotients[i]);\n    }\n    return {\n        data: matrixB.to2DArray(),\n        medianOfQuotients,\n    };\n}\n//# sourceMappingURL=matrixPQN.js.map","/**\n * Rescale columns\n *\n * @param matrix - matrix [rows][cols].\n * @param options - Options\n */\nexport function matrixZRescale(matrix, options = {}) {\n    const { min = 0, max = 1 } = options;\n    const nbRows = matrix.length;\n    const nbColumns = matrix[0].length;\n    const newMatrix = new Array(nbRows);\n    for (let row = 0; row < nbRows; row++) {\n        newMatrix[row] = new Float64Array(nbColumns);\n    }\n    for (let column = 0; column < nbColumns; column++) {\n        let currentMin = matrix[0][column];\n        let currentMax = matrix[0][column];\n        for (let row = 1; row < nbRows; row++) {\n            if (matrix[row][column] < currentMin)\n                currentMin = matrix[row][column];\n            if (matrix[row][column] > currentMax)\n                currentMax = matrix[row][column];\n        }\n        const factor = (max - min) / (currentMax - currentMin);\n        for (let row = 0; row < nbRows; row++) {\n            newMatrix[row][column] =\n                (matrix[row][column] - currentMin) * factor + min;\n        }\n    }\n    return newMatrix;\n}\n//# sourceMappingURL=matrixZRescale.js.map","/**\n * Clone the matrix\n */\nexport function matrixClone(matrix) {\n    return matrix.map((row) => row.slice(0));\n}\n//# sourceMappingURL=matrixClone.js.map","import { matrixClone } from './matrixClone';\n/**\n * Numerically encodes the strings in the matrix and returns an encoding dictionnary which can be used to encode other matrices\n * @param matrix - original matrix before encoding\n * @param dictCategoricalToNumerical - dictionnary for encoding\n * @returns - dictionnary from string to number\n */\nexport function matrixNumericalEncoding(matrixInitial) {\n    let matrix = matrixClone(matrixInitial);\n    let nRows = matrix.length;\n    let nColumns = matrix[0].length;\n    let dictCategoricalToNumerical = {};\n    let k = 0;\n    for (let i = 0; i < nRows; i++) {\n        for (let j = 0; j < nColumns; j++) {\n            if (typeof matrix[i][j] === 'number' && matrix[i][j] > k) {\n                k = matrix[i][j];\n            }\n        }\n    }\n    for (let i = 0; i < nRows; i++) {\n        for (let j = 0; j < nColumns; j++) {\n            if (typeof matrix[i][j] === 'string') {\n                if (matrix[i][j] in dictCategoricalToNumerical) {\n                    matrix[i][j] = dictCategoricalToNumerical[matrix[i][j]];\n                }\n                else {\n                    k++;\n                    dictCategoricalToNumerical[matrix[i][j]] = k;\n                    matrix[i][j] = k;\n                }\n            }\n        }\n    }\n    return { matrix, dictCategoricalToNumerical };\n}\n//# sourceMappingURL=matrixNumericalEncoding.js.map","import { matrixClone } from './matrixClone';\n/**\n * Numerically decodes the matrix using the dictionnary\n * @param matrixInitial - original matrix before encoding\n * @param dictionnary - dictionary against which to do the encoding\n * @returns - decoded matrix\n */\nfunction swap(dictionnary) {\n    let ret = {};\n    for (let key in dictionnary) {\n        ret[Number(dictionnary[key])] = key;\n    }\n    return ret;\n}\nexport function matrixNumericalDecoding(matrixInitial, dictionnary) {\n    let matrix = matrixClone(matrixInitial);\n    let invertedDictionnary = swap(dictionnary);\n    for (let i = 0; i < matrix.length; i++) {\n        for (let j = 0; j < matrix[0].length; j++) {\n            if (matrix[i][j] in invertedDictionnary) {\n                matrix[i][j] = invertedDictionnary[matrix[i][j]];\n            }\n        }\n    }\n    return matrix;\n}\n//# sourceMappingURL=matrixNumericalDecoding.js.map","import { xMaxValue } from '../x/xMaxValue';\nimport { matrixClone } from './matrixClone';\n/**\n * Numerically encodes the strings in the matrix with an encoding dictionary\n * @param matrixInitial - original matrix before encoding\n * @param dictionnary - dictionary against which to do the encoding\n * @returns - encoded matrix\n */\nexport function matrixApplyNumericalEncoding(matrixInitial, dictionnary) {\n    let matrix = matrixClone(matrixInitial);\n    let arrayOfValues = [];\n    for (let key in dictionnary) {\n        arrayOfValues.push(dictionnary[key]);\n    }\n    let k = xMaxValue(arrayOfValues);\n    for (let i = 0; i < matrix.length; i++) {\n        for (let j = 0; j < matrix[0].length; j++) {\n            if (typeof matrix[i][j] === 'string') {\n                if (matrix[i][j] in dictionnary) {\n                    matrix[i][j] = dictionnary[matrix[i][j]];\n                }\n                else {\n                    k++;\n                    dictionnary[matrix[i][j]] = k;\n                    matrix[i][j] = k;\n                }\n            }\n        }\n    }\n    return matrix;\n}\n//# sourceMappingURL=matrixApplyNumericalEncoding.js.map","const LOOP = 8;\nconst FLOAT_MUL = 1 / 16777216;\nconst sh1 = 15;\nconst sh2 = 18;\nconst sh3 = 11;\nfunction multiply_uint32(n, m) {\n    n >>>= 0;\n    m >>>= 0;\n    const nlo = n & 0xffff;\n    const nhi = n - nlo;\n    return (((nhi * m) >>> 0) + nlo * m) >>> 0;\n}\nexport default class XSadd {\n    constructor(seed = Date.now()) {\n        this.state = new Uint32Array(4);\n        this.init(seed);\n        this.random = this.getFloat.bind(this);\n    }\n    /**\n     * Returns a 32-bit integer r (0 <= r < 2^32)\n     */\n    getUint32() {\n        this.nextState();\n        return (this.state[3] + this.state[2]) >>> 0;\n    }\n    /**\n     * Returns a floating point number r (0.0 <= r < 1.0)\n     */\n    getFloat() {\n        return (this.getUint32() >>> 8) * FLOAT_MUL;\n    }\n    init(seed) {\n        if (!Number.isInteger(seed)) {\n            throw new TypeError('seed must be an integer');\n        }\n        this.state[0] = seed;\n        this.state[1] = 0;\n        this.state[2] = 0;\n        this.state[3] = 0;\n        for (let i = 1; i < LOOP; i++) {\n            this.state[i & 3] ^=\n                (i +\n                    multiply_uint32(1812433253, this.state[(i - 1) & 3] ^ ((this.state[(i - 1) & 3] >>> 30) >>> 0))) >>>\n                    0;\n        }\n        this.periodCertification();\n        for (let i = 0; i < LOOP; i++) {\n            this.nextState();\n        }\n    }\n    periodCertification() {\n        if (this.state[0] === 0 &&\n            this.state[1] === 0 &&\n            this.state[2] === 0 &&\n            this.state[3] === 0) {\n            this.state[0] = 88; // X\n            this.state[1] = 83; // S\n            this.state[2] = 65; // A\n            this.state[3] = 68; // D\n        }\n    }\n    nextState() {\n        let t = this.state[0];\n        t ^= t << sh1;\n        t ^= t >>> sh2;\n        t ^= this.state[3] << sh3;\n        this.state[0] = this.state[1];\n        this.state[1] = this.state[2];\n        this.state[2] = this.state[3];\n        this.state[3] = t;\n    }\n}\n","import XSAdd from 'ml-xsadd';\n/**\n * Create a random array of numbers of a specific length\n *\n * @return - array of random floats normally distributed\n */\nlet spare;\nlet hasSpare = false;\nexport function createRandomArray(options = {}) {\n    let { mean = 0, standardDeviation = 1, length = 1000, range = 1, seed, distribution = 'normal', } = options;\n    const generator = new XSAdd(seed);\n    let returnArray = new Float64Array(length);\n    switch (distribution) {\n        case 'normal':\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = generateGaussian(mean, standardDeviation, generator);\n            }\n            break;\n        case 'uniform':\n            for (let i = 0; i < length; i++) {\n                returnArray[i] = (generator.random() - 0.5) * range + mean;\n            }\n            break;\n        default:\n            // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n            throw new Error(`unknown distribution: ${distribution}`);\n    }\n    return returnArray;\n}\nfunction generateGaussian(mean, standardDeviation, generator) {\n    let val, u, v, s;\n    if (hasSpare) {\n        hasSpare = false;\n        val = spare * standardDeviation + mean;\n    }\n    else {\n        do {\n            u = generator.random() * 2 - 1;\n            v = generator.random() * 2 - 1;\n            s = u * u + v * v;\n        } while (s >= 1 || s === 0);\n        s = Math.sqrt((-2.0 * Math.log(s)) / s);\n        spare = v * s;\n        hasSpare = true;\n        val = mean + standardDeviation * u * s;\n    }\n    return val;\n}\n//# sourceMappingURL=createRandomArray.js.map","/**\n * Create an array with numbers starting from \"from\" with step \"step\" of length \"length\"\n *\n * @param options - options\n * @return - array of distributed numbers with step \"step\" from \"from\"\n */\nexport function createStepArray(options = {}) {\n    let { from = 0, step = 1, length = 1000 } = options;\n    const array = new Float64Array(length);\n    let index = 0;\n    while (index < length) {\n        array[index] = from + step * index;\n        index++;\n    }\n    return array;\n}\n//# sourceMappingURL=createStepArray.js.map"],"names":["reimAbsolute","data","length","re","im","newArray","Float64Array","i","Math","sqrt","global","factory","exports","this","ascending","a","b","NaN","bisector","compare","ascendingComparator","left","x","lo","hi","mid","right","f","d","ascendingBisect","bisectRight","bisectLeft","descending","number$1","variance","array","n","m","s","j","isNaN","deviation","v","extent","c","constant","identity","range","start","stop","step","arguments","max","ceil","Array","e10","e5","e2","ticks","count","tickStep","floor","step0","abs","step1","pow","log","LN10","error","sturges","values","LN2","number","histogram","value","domain","threshold","xz","x0","x1","tz","isArray","shift","pop","bins","bin","push","_","thresholds","prototype","map","call","quantile","p","h","freedmanDiaconis","min","sort","scott","mean","median","numbers","merge","arrays","merged","pairs","permute","indexes","permutes","scan","xi","xj","shuffle","i0","i1","t","random","sum","transpose","matrix","row","zip","version","bisect","thresholdFreedmanDiaconis","thresholdScott","thresholdSturges","require$$0","quincunx","u","w","q","smoothingSpline","y","sigma","lambda","r","params","mu","SplineInterpolator","constructor","xIn","yIn","indices","interpolate","xStart","xStop","delta","maxValue","Infinity","minValue","curve","nInterval","vals","splineInterpolator","createFromToArray","options","from","to","includeFrom","includeTo","distribution","div","index","base","firstExponent","Error","Y1","P1","Q1","Y2","P2","Q2","Y3","P3","Q3","Y4","P4","Q4","Y5","P5","Q5","polyval","coef","calc","P","Q","Y","erfcinv","sign","val","g","Number","RangeError","POSITIVE_INFINITY","NEGATIVE_INFINITY","rayleighCdf","expm1","xNoiseSanPlot","mask","cutOff","refine","magnitudeMode","scaleFactor","factorStd","fixOffset","input","filter","_e","reverse","medianIndex","firstNegativeValueIndex","findIndex","e","lastPositiveValueIndex","signPositive","slice","signNegative","cutOffDist","determineCutOff","pIndex","initialNoiseLevelPositive","skyPoint","initialNoiseLevelNegative","nIndex","noiseLevelPositive","noiseLevelNegative","cloneSignPositive","cloneSignNegative","cutOffSignalsIndexPlus","cutOffSignalsIndexNeg","cutOffSignals","correctionFactor","simpleNormInv","effectiveCutOffDist","refinedCorrectionFactor","positive","negative","snr","sanplot","generateSanPlot","fromTo","considerList","indexMax","round","minKi","MAX_SAFE_INTEGER","whereToCutStat","top","elementsOfCutOff","averageValue","reduce","kiSqrt","forEach","element","xTraining","createArray","result","yTraining","factor","finalInput","interp","yValue","SQRT2","logBaseY","key","scale","log10","logOfBase","xAxis","reimPhaseCorrection","phi0","phi1","isFinite","alpha","sin","beta","cosTheta","cos","sinTheta","newRe","newIm","newCosTheta","newSinTheta","reimAutoPhaseCorrection","minRegSize","factorNoise","maxDistanceToJoin","magnitudeData","ds","holoborodko","peaksDs","robustBaseLineRegionsDetection","peaksSp","finalPeaks","Uint8Array","res","reTmp","imTmp","autoPhaseRegion","ph1","ph0","weightedLinearRegression","area","phased","PI","nSteps","maxSteps","bestAng","minArea","dAng","toRadians","negArea","getNegArea","sumX","dk","change","noiseLevel","prev","sxtw","swx","sw","sxtwy","swy","detMx","inMx","degree","FFT","size","_csize","table","angle","power","_width","_bitrev","revShift","_out","_data","_inv","fft","fromComplexArray","complex","storage","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","transform","out","_transform4","realTransform","_realTransform4","inverseTransform","width","len","outOff","bitrev","off","_singleTransform2","_singleTransform4","inv","quarterLen","limit","k","A","B","C","D","Ar","Ai","Br","Bi","Cr","Ci","Dr","Di","MAr","MAi","tableBr","tableBi","MBr","MBi","tableCr","tableCi","MCr","MCi","tableDr","tableDi","MDr","MDi","T0r","T0i","T1r","T1i","T2r","T2i","T3r","T3i","FAr","FAi","FCr","FCi","FBr","FBi","FDr","FDi","evenR","evenI","oddR","oddI","leftR","leftI","rightR","rightI","step2","step3","_singleRealTransform2","_singleRealTransform4","halfLen","hquarterLen","ST0r","ST0i","ST1r","ST1i","ST2r","ST2i","ST3r","ST3i","SFAr","SFAi","SFBr","SFBi","SA","SB","xRotate","set","reimFFT","inverse","applyZeroShift","csize","complexArray","output","zeroShift","middle","xAbsolute","tmpArray","toString","Object","isAnyArray","endsWith","_ref","module","window","xMedian","TypeError","quickSelectMedian","xAbsoluteMedian","xAdd","array1","array2","isConstant","array3","getOutputArray","undefined","xMultiply","xDotProduct","xCrossCorrelation","tau","lag","l","xAutoCorrelation","xBoxPlot","info","q1","q3","q1max","q3min","middleOver","xCheck","xCorrelation","sumA","sumA2","sumB","sumB2","sumAB","xCumulative","xDivide","xEnsureFloat64","xFindClosestIndex","target","sorted","low","high","diff","currentDiff","xGetFromToIndex","fromIndex","toIndex","xGetTargetIndex","targetIndex","xMaxValue","xMinValue","xHistogram","centerX","nbSlots","logBaseX","absolute","slotSize","EPSILON","xIsEquallySpaced","tolerance","maxDx","minDx","absoluteDifference","xIsMonotone","xIsMonotoneIncreasing","xMaxIndex","maxIndex","xMean","sumValue","xCheckLengths","xMeanAbsoluteError","xMeanSquaredError","xMedianAbsoluteDeviation","averageDeviations","mad","xMinIndex","minIndex","xMinMaxValues","xMode","maxCount","counts","xNoiseStandardDeviation","sd","xNorm","xSum","xNormed","algorithm","toLowerCase","absoluteSumValue","absoluteSum","currentMaxValue","sumFactor","xPadding","fromEnd","toEnd","xVariance","unbiased","sqrError","xStandardDeviation","xParetoNormalization","sqrtSD","item","xRescale","currentMin","currentMax","xRolling","fct","padding","subarray","xRollingAverage","xRollingMax","xRollingMedian","xRollingMin","xSampling","returnArray","clonedArray","xSequentialFill","Uint16Array","xApplyFunctionStr","variableLabel","fctString","Function","replace","toReturn","xSubtract","xUniqueSorted","Set","xyAlign","data1","data2","common","y1","y2","length1","length2","maxDiff","difference","weightedX","xyCheck","minLength","xyFindClosestPoint","xyCovariance","meanX","meanY","xyMaxYPoint","current","STEPS","xyCumulativeDistributionStatistics","cumulativeSum","maxY","x100","currentStep","breakPoint","sumXY","sumY","xyEnsureGrowingX","prevX","currentIndex","zonesNormalize","zones","exclusions","JSON","parse","stringify","zone","currentZone","beforeExclusionsZones","normalizedExclusions","currentExclusionIndex","results","counter","zoneIndex","zonesWithPoints","numberOfPoints","returnZones","totalSize","previous","unitsPerPoint","currentTotal","equallySpacedSlot","xLength","halfStep","lastStep","previousX","MAX_VALUE","previousY","nextX","nextY","frontOutsideSpectra","backOutsideSpectra","currentValue","currentPoints","main","integral","slope","intercept","equallySpacedSmooth","initialOriginalStep","lastOriginalStep","MIN_SAFE_INTEGER","sumAtMin","sumAtMax","getSlope","y0","add","xyEquallySpaced","variant","normalizedZones","zonesWithPointsRes","xResult","yResult","zoneResult","processZone","concat","xyExtract","newX","newY","position","loop","xyFilterX","currentZoneIndex","xyFilterXPositive","xyGetNMaxY","numberMaxPoints","xyGrowingX","xyIntegral","xyIntegration","currentxyIntegral","currentxyIntegration","xyJoinX","deltaIsFunction","currentDelta","xyMaxClosestYPoint","previousIndex","xyMaxY","xyMaximaY","maxima","startEqualIndex","xyMaxMerge","groupWidth","maxAbscissa","currentxyMaxY","xyMedian","cumSumY","xyMergeByCentroids","centroids","mergedPoints","fill","originalIndex","mergedIndex","xyMinClosestYPoint","minY","xyMinimaY","xyMinYPoint","xyPeakInfo","multiplier","newDiff","after","before","inflectionBefore","inflectionAfter","extrema","inflectionMiddle","xyRealMaxYPoint","gamma","xyRealMinYPoint","xyReduce","nbPoints","optimize","internalZones","totalPoints","ratio","appendFromTo","zoneNbPoints","slot","currentX","first","xyRolling","xySetYValue","xySortX","xyObject","response","xyToXYArray","objectArray","xyToXYObject","xyUniqueX","isSorted","average","cumulativeY","divider","xyWeightedMerge","weightedAbscissa","xreimZeroFilling","totalLength","newRE","newIM","deltaX","xreimSortX","getSlots","possibleXs","currentSlot","slots","xyArrayAlign","ys","positions","Uint32Array","xyArrayMerge","xyArrayWeightedMerge","deltaNumber","point","nextValue","maxX","sameSlot","minX","splice","getSlotsToFirst","firstXs","otherXs","currentPosition","xyArrayAlignToFirst","xyObjectCheck","points","xyObjectMaxXPoint","xyObjectMinXPoint","xyObjectBestPoints","numberCloseSlots","numberSlots","closeSlot","selected","monoisotopic","peakLoop","close","existing","newPeak","xyObjectJoinX","xError","xyObjectMaxYPoint","xyObjectMinYPoint","xyObjectSlotX","slotWidth","halfSlot","xyObjectSortX","xyObjectSumY","xyObjectToXY","entry","zoneToX","matrixCenterZMean","nbRows","nbColumns","newMatrix","column","matrixMinMaxAbsoluteZ","matrixCheck","firstLength","matrixMinMaxZ","matrixHistogram","minMax","_options$fromIndex","_options$toIndex","isInteger","rescale","_options$min","autoMinMax","_options$max","indent","repeat","indentData","inspectMatrix","inspectMatrixWithOptions","maxRows","maxColumns","maxNumSize","name","inspectData","rows","columns","maxI","maxJ","line","formatNumber","get","join","num","numStr","String","padEnd","precise","toPrecision","exponential","toExponential","eIndex","indexOf","installMathOperations","AbstractMatrix","Matrix","addS","addM","checkMatrix","sub","subS","subM","subtract","subtractS","subtractM","mul","mulS","mulM","multiply","multiplyS","multiplyM","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","acos","acosh","asin","asinh","atan","atanh","cbrt","clz32","cosh","exp","fround","log1p","log2","sinh","tan","tanh","trunc","arg0","powS","powM","checkRowIndex","outer","checkColumnIndex","checkRowVector","vector","to1DArray","checkColumnVector","checkRowIndices","rowIndices","checkColumnIndices","columnIndices","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","checkNonEmpty","isEmpty","sumByRow","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","cols","sum1","sum2","varianceByColumn","varianceAll","centerByRow","centerByColumn","centerAll","getScaleByRow","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","scaleAll","from1DArray","newRows","newColumns","newData","rowVector","columnVector","zeros","ones","rand","randInt","interval","eye","diag","matrix1","matrix2","isMatrix","klass","apply","callback","to2DArray","copy","toJSON","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","checked","isReducedEchelonForm","echelonForm","clone","iMax","swapRows","tmp","reducedEchelonForm","maxRow","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","idx","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","type","dot","vector2","vector1","mmul","other","Bcolj","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","r1","c1","r2","c2","console","warn","embed","mat","resultat","blockMult","halfRows","parseInt","halfCols","subMatrix","scaleRows","scaleColumns","flipRows","last","flipColumns","kroneckerProduct","kroneckerSum","AxI","IxB","sortRows","compareFunction","compareNumbers","sortColumns","subMatrixRow","subMatrixColumn","selection","rowIndex","columnIndex","trace","product","standardDeviation","center","Symbol","for","isArrayOfNumbers","every","randomInt","diagonal","negate","tensorProduct","nRows","nColumns","arrayData","removeRow","addRow","removeColumn","newRow","addColumn","matrixPQN","matrixB","normalizationFactor","referenceSpectrum","currentVariable","medianOfQuotients","quotients","matrixZRescale","matrixClone","matrixNumericalEncoding","matrixInitial","dictCategoricalToNumerical","swap","dictionnary","ret","matrixNumericalDecoding","invertedDictionnary","matrixApplyNumericalEncoding","arrayOfValues","LOOP","FLOAT_MUL","sh1","sh2","sh3","multiply_uint32","nlo","nhi","XSadd","seed","Date","now","state","init","getFloat","bind","getUint32","nextState","periodCertification","spare","hasSpare","createRandomArray","generator","XSAdd","generateGaussian","createStepArray"],"mappings":"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"}