{"version":3,"sources":["webpack://Convolution/webpack/universalModuleDefinition","webpack://Convolution/webpack/bootstrap","webpack://Convolution/./lib/index.js","webpack://Convolution/./node_modules/fft.js/lib/fft.js","webpack://Convolution/./node_modules/next-power-of-two/index.js"],"names":["Object","defineProperty","exports","value","_interopDefault","ex","FFT","require","nextPOT","checkSize","size","Number","isInteger","TypeError","checkKernel","kernel","length","RangeError","checkBorderType","borderType","checkInputLength","actual","expected","createArray","len","array","i","push","DirectConvolution","constructor","kernelOffset","outputSize","output","kernelSize","convolve","input","fill","_convolutionBorder0","_convolutionBorderCut","j","interpolateInput","index","directConvolution","idx","FFTConvolution","doubleOffset","resultLength","fftLength","Math","max","fftComplexLength","fft","slice","reverse","paddedKernel","fftKernel","pad","transform","paddedInput","fftInput","ifftOutput","result","tmp","inverseTransform","r","fromComplexArray","fftConvolution","data","out","BorderType","CONSTANT","CUT","Error","_csize","table","Array","angle","PI","cos","sin","power","t","_width","_bitrev","shift","revShift","_out","_data","_inv","module","prototype","complex","storage","res","createComplexArray","toComplexArray","completeSpectrum","spectrum","half","_transform4","realTransform","_realTransform4","width","step","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","nextPowerOfTwo","n"],"mappings":"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","file":"ml-convolution.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Convolution\"] = factory();\n\telse\n\t\troot[\"Convolution\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar FFT = _interopDefault(require('fft.js'));\nvar nextPOT = _interopDefault(require('next-power-of-two'));\n\nfunction checkSize(size) {\n  if (!Number.isInteger(size) || size < 1) {\n    throw new TypeError(`size must be a positive integer. Got ${size}`);\n  }\n}\n\nfunction checkKernel(kernel) {\n  if (kernel.length === 0 || kernel.length % 2 !== 1) {\n    throw new RangeError(\n      `kernel must have an odd positive length. Got ${kernel.length}`,\n    );\n  }\n}\n\nfunction checkBorderType(borderType) {\n  if (borderType !== 'CONSTANT' && borderType !== 'CUT') {\n    throw new RangeError(`unexpected border type: ${borderType}`);\n  }\n}\n\nfunction checkInputLength(actual, expected) {\n  if (actual !== expected) {\n    throw new RangeError(\n      `input length (${actual}) does not match setup size (${expected})`,\n    );\n  }\n}\n\nfunction createArray(len) {\n  const array = [];\n  for (let i = 0; i < len; i++) {\n    array.push(0);\n  }\n  return array;\n}\n\nclass DirectConvolution {\n  constructor(size, kernel, borderType = 'CONSTANT') {\n    checkSize(size);\n    checkKernel(kernel);\n    checkBorderType(borderType);\n\n    this.size = size;\n    this.kernelOffset = (kernel.length - 1) / 2;\n    this.outputSize =\n      borderType === 'CONSTANT' ? size : size - 2 * this.kernelOffset;\n    this.output = createArray(this.outputSize);\n    this.kernel = kernel;\n    this.kernelSize = kernel.length;\n    this.borderType = borderType;\n  }\n\n  convolve(input) {\n    checkInputLength(input.length, this.size);\n    this.output.fill(0);\n    if (this.borderType === 'CONSTANT') {\n      this._convolutionBorder0(input);\n    } else {\n      this._convolutionBorderCut(input);\n    }\n    return this.output;\n  }\n\n  _convolutionBorder0(input) {\n    for (let i = 0; i < this.size; i++) {\n      for (let j = 0; j < this.kernelSize; j++) {\n        this.output[i] +=\n          interpolateInput(input, i - this.kernelOffset + j) * this.kernel[j];\n      }\n    }\n  }\n\n  _convolutionBorderCut(input) {\n    for (let i = this.kernelOffset; i < this.size - this.kernelOffset; i++) {\n      const index = i - this.kernelOffset;\n      for (let j = 0; j < this.kernelSize; j++) {\n        this.output[index] += input[index + j] * this.kernel[j];\n      }\n    }\n  }\n}\n\nfunction directConvolution(input, kernel, borderType) {\n  return new DirectConvolution(input.length, kernel, borderType).convolve(\n    input,\n  );\n}\n\nfunction interpolateInput(input, idx) {\n  if (idx < 0) return 0;\n  else if (idx >= input.length) return 0;\n  return input[idx];\n}\n\nclass FFTConvolution {\n  constructor(size, kernel, borderType = 'CONSTANT') {\n    checkSize(size);\n    checkKernel(kernel);\n    checkBorderType(borderType);\n\n    this.size = size;\n    this.kernelOffset = (kernel.length - 1) / 2;\n    this.doubleOffset = 2 * this.kernelOffset;\n    this.borderType = borderType;\n    const resultLength = size + this.doubleOffset;\n    this.fftLength = nextPOT(Math.max(resultLength, 2));\n    this.fftComplexLength = this.fftLength * 2;\n    this.fft = new FFT(this.fftLength);\n\n    kernel = kernel.slice().reverse();\n    const paddedKernel = createArray(this.fftComplexLength);\n    this.fftKernel = createArray(this.fftComplexLength);\n    pad(kernel, paddedKernel, this.fftComplexLength);\n    this.fft.transform(this.fftKernel, paddedKernel);\n\n    this.paddedInput = createArray(this.fftComplexLength);\n    this.fftInput = createArray(this.fftComplexLength);\n\n    this.ifftOutput = createArray(this.fftComplexLength);\n    this.result = paddedKernel;\n  }\n\n  convolve(input) {\n    checkInputLength(input.length, this.size);\n    pad(input, this.paddedInput, this.fftComplexLength);\n    this.fft.transform(this.fftInput, this.paddedInput);\n\n    for (let i = 0; i < this.fftInput.length; i += 2) {\n      const tmp =\n        this.fftInput[i] * this.fftKernel[i] -\n        this.fftInput[i + 1] * this.fftKernel[i + 1];\n      this.fftInput[i + 1] =\n        this.fftInput[i] * this.fftKernel[i + 1] +\n        this.fftInput[i + 1] * this.fftKernel[i];\n      this.fftInput[i] = tmp;\n    }\n\n    this.fft.inverseTransform(this.ifftOutput, this.fftInput);\n    const r = this.fft.fromComplexArray(this.ifftOutput, this.result);\n    if (this.borderType === 'CONSTANT') {\n      return r.slice(this.kernelOffset, this.kernelOffset + input.length);\n    } else {\n      return r.slice(this.doubleOffset, input.length);\n    }\n  }\n}\n\nfunction fftConvolution(input, kernel, borderType) {\n  return new FFTConvolution(input.length, kernel, borderType).convolve(input);\n}\n\nfunction pad(data, out, len) {\n  let i = 0;\n  for (; i < data.length; i++) {\n    out[i * 2] = data[i];\n    out[i * 2 + 1] = 0;\n  }\n\n  i *= 2;\n  for (; i < len; i += 2) {\n    out[i] = 0;\n    out[i + 1] = 0;\n  }\n}\n\nconst BorderType = {\n  CONSTANT: 'CONSTANT',\n  CUT: 'CUT',\n};\n\nexports.BorderType = BorderType;\nexports.DirectConvolution = DirectConvolution;\nexports.FFTConvolution = FFTConvolution;\nexports.directConvolution = directConvolution;\nexports.fftConvolution = fftConvolution;\n","'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","module.exports = nextPowerOfTwo\n\nfunction nextPowerOfTwo (n) {\n  if (n === 0) return 1\n  n--\n  n |= n >> 1\n  n |= n >> 2\n  n |= n >> 4\n  n |= n >> 8\n  n |= n >> 16\n  return n+1\n}"],"sourceRoot":""}