{"version":3,"sources":["webpack://dist/webpack/universalModuleDefinition","webpack://dist/webpack/bootstrap","webpack://dist/./node_modules/validate.io-array/lib/index.js","webpack://dist/./node_modules/validate.io-string-primitive/lib/index.js","webpack://dist/./node_modules/is-any-array/src/index.js","webpack://dist/./node_modules/validate.io-number-primitive/lib/index.js","webpack://dist/./node_modules/dstructs-matrix/lib/btypes.js","webpack://dist/./node_modules/validate.io-nonnegative-integer/lib/index.js","webpack://dist/./node_modules/distributions-normal-random/lib/partial.js","webpack://dist/./node_modules/validate.io-integer-primitive/lib/index.js","webpack://dist/./node_modules/compute-indexspace/lib/index.js","webpack://dist/./node_modules/validate.io-positive-integer/lib/index.js","webpack://dist/./node_modules/math-ln/lib/index.js","webpack://dist/./node_modules/validate.io-nonnegative-integer-array/lib/index.js","webpack://dist/./node_modules/validate.io-nan/lib/index.js","webpack://dist/./node_modules/object-keys/index.js","webpack://dist/./node_modules/validate.io-integer/lib/index.js","webpack://dist/./node_modules/validate.io-number/lib/index.js","webpack://dist/./node_modules/distributions-normal-random/lib/dRanNormalTail.js","webpack://dist/./node_modules/math-abs/lib/index.js","webpack://dist/./node_modules/math-exp/lib/index.js","webpack://dist/./node_modules/math-power/lib/index.js","webpack://dist/./node_modules/math-sqrt/lib/index.js","webpack://dist/./node_modules/validate.io-contains/lib/index.js","webpack://dist/./node_modules/dstructs-cast-arrays/lib/index.js","webpack://dist/./node_modules/validate.io-array-like/lib/index.js","webpack://dist/./node_modules/type-name/index.js","webpack://dist/./node_modules/compute-dtype/lib/index.js","webpack://dist/./node_modules/validate.io-function/lib/index.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset1.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset2.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset3.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset4.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset5.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset6.js","webpack://dist/./node_modules/dstructs-matrix/lib/tostring.js","webpack://dist/./node_modules/dstructs-matrix/lib/tojson.js","webpack://dist/./node_modules/utils-copy/lib/index.js","webpack://dist/./node_modules/dstructs-matrix/lib/dtypes.js","webpack://dist/./src/index.js","webpack://dist/./node_modules/distributions-normal-random/lib/index.js","webpack://dist/./node_modules/validate.io-positive-integer-array/lib/index.js","webpack://dist/./node_modules/compute-lcg/lib/index.js","webpack://dist/./node_modules/distributions-normal-random/lib/validate.js","webpack://dist/./node_modules/validate.io-object/lib/index.js","webpack://dist/./node_modules/validate.io-nonnegative/lib/index.js","webpack://dist/./node_modules/distributions-normal-random/lib/array.js","webpack://dist/./node_modules/distributions-normal-random/lib/typedarray.js","webpack://dist/./node_modules/compute-array-constructors/lib/index.js","webpack://dist/./node_modules/compute-array-constructors/lib/ctors.js","webpack://dist/./node_modules/distributions-normal-random/lib/arrayarray.js","webpack://dist/./node_modules/distributions-normal-random/lib/recurse.js","webpack://dist/./node_modules/distributions-normal-random/lib/matrix.js","webpack://dist/./node_modules/dstructs-matrix/lib/index.js","webpack://dist/./node_modules/dstructs-matrix/lib/matrix.js","webpack://dist/./node_modules/validate.io-nan-primitive/lib/index.js","webpack://dist/./node_modules/const-max-uint32/lib/index.js","webpack://dist/./node_modules/dstructs-array-dtype/lib/index.js","webpack://dist/./node_modules/dstructs-array-dtype/lib/dtypes.js","webpack://dist/./node_modules/dstructs-array-constructors/lib/index.js","webpack://dist/./node_modules/dstructs-array-constructors/lib/ctors.js","webpack://dist/./node_modules/compute-array-dtype/lib/index.js","webpack://dist/./node_modules/compute-array-dtype/lib/dtypes.js","webpack://dist/./node_modules/dstructs-matrix/lib/ctor.js","webpack://dist/./node_modules/dstructs-matrix/lib/set.js","webpack://dist/./node_modules/dstructs-matrix/lib/iset.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset.js","webpack://dist/./node_modules/dstructs-matrix/lib/sset.js","webpack://dist/./node_modules/dstructs-matrix/lib/get.js","webpack://dist/./node_modules/dstructs-matrix/lib/iget.js","webpack://dist/./node_modules/dstructs-matrix/lib/mget.js","webpack://dist/./node_modules/dstructs-matrix/lib/sget.js","webpack://dist/./node_modules/const-pinf-float64/lib/index.js","webpack://dist/./node_modules/utils-copy/lib/deepcopy.js","webpack://dist//usr/lib/node_modules/cheminfo-tools/node_modules/buffer/index.js","webpack://dist/(webpack)/buildin/global.js","webpack://dist//usr/lib/node_modules/cheminfo-tools/node_modules/base64-js/index.js","webpack://dist//usr/lib/node_modules/cheminfo-tools/node_modules/ieee754/index.js","webpack://dist//usr/lib/node_modules/cheminfo-tools/node_modules/isarray/index.js","webpack://dist/./node_modules/validate.io-buffer/lib/index.js","webpack://dist/./node_modules/utils-copy/node_modules/type-name/index.js","webpack://dist/./node_modules/utils-regex-from-string/lib/index.js","webpack://dist/./node_modules/regex-regex/lib/index.js","webpack://dist/./node_modules/utils-copy-error/lib/index.js","webpack://dist/./node_modules/utils-copy-error/lib/copy.js","webpack://dist/./node_modules/object-keys/isArguments.js","webpack://dist/./node_modules/utils-indexof/lib/index.js","webpack://dist/./node_modules/utils-copy/lib/typedarrays.js","webpack://dist/./node_modules/dstructs-matrix/lib/matrix.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/ctor.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/set.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/iset.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/mset.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/sset.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/get.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/iget.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/mget.raw.js","webpack://dist/./node_modules/dstructs-matrix/lib/sget.raw.js","webpack://dist/./node_modules/distributions-normal-random/lib/number.js","webpack://dist/./node_modules/ml-array-max/lib-es6/index.js","webpack://dist/./node_modules/ml-array-min/lib-es6/index.js","webpack://dist/./node_modules/ml-array-rescale/lib-es6/index.js","webpack://dist/./node_modules/ml-matrix/src/util.js","webpack://dist/./node_modules/ml-matrix/src/stat.js","webpack://dist/./node_modules/ml-matrix/src/inspect.js","webpack://dist/./node_modules/ml-matrix/src/mathOperations.js","webpack://dist/./node_modules/ml-matrix/src/matrix.js","webpack://dist/./node_modules/ml-matrix/src/views/base.js","webpack://dist/./node_modules/ml-matrix/src/views/column.js","webpack://dist/./node_modules/ml-matrix/src/views/columnSelection.js","webpack://dist/./node_modules/ml-matrix/src/views/flipColumn.js","webpack://dist/./node_modules/ml-matrix/src/views/flipRow.js","webpack://dist/./node_modules/ml-matrix/src/views/row.js","webpack://dist/./node_modules/ml-matrix/src/views/rowSelection.js","webpack://dist/./node_modules/ml-matrix/src/views/selection.js","webpack://dist/./node_modules/ml-matrix/src/views/sub.js","webpack://dist/./node_modules/ml-matrix/src/views/transpose.js","webpack://dist/./node_modules/ml-matrix/src/views/index.js","webpack://dist/./node_modules/ml-matrix/src/wrap/WrapperMatrix1D.js","webpack://dist/./node_modules/ml-matrix/src/wrap/WrapperMatrix2D.js","webpack://dist/./node_modules/ml-matrix/src/wrap/wrap.js","webpack://dist/./node_modules/ml-matrix/src/dc/lu.js","webpack://dist/./node_modules/ml-matrix/src/dc/util.js","webpack://dist/./node_modules/ml-matrix/src/dc/qr.js","webpack://dist/./node_modules/ml-matrix/src/dc/svd.js","webpack://dist/./node_modules/ml-matrix/src/decompositions.js","webpack://dist/./node_modules/ml-matrix/src/determinant.js","webpack://dist/./node_modules/ml-matrix/src/linearDependencies.js","webpack://dist/./node_modules/ml-matrix/src/pseudoInverse.js","webpack://dist/./node_modules/ml-matrix/src/covariance.js","webpack://dist/./node_modules/ml-matrix/src/correlation.js","webpack://dist/./node_modules/ml-matrix/src/dc/evd.js","webpack://dist/./node_modules/ml-matrix/src/dc/cholesky.js","webpack://dist/./node_modules/ml-matrix/src/dc/nipals.js","webpack://dist/./node_modules/ml-matrix/src/index.js"],"names":["isArray","value","Object","prototype","toString","call","module","exports","Array","isString","isAnyArray","object","endsWith","isNumber","BTYPES","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","isInteger","require","isNonNegativeInteger","dRanNormalTail","abs","exp","log","pow","sqrt","TWO_P_32","ZIGNOR_C","ZIGNOR_R","ZIGNOR_V","partial","mu","sigma","rand","random","s_adZigX","s_adZigR","i","f","Math","draw","x","u","f0","f1","re","reEnd","reMatch","indexspace","str","len","x1","x2","tmp","inc","arr","test","Error","TypeError","split","length","parseInt","match","ceil","push","isPositiveInteger","isNonNegativeIntegerArray","nan","valueOf","has","hasOwnProperty","toStr","slice","isArgs","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","o","ctor","constructor","excludedKeys","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","window","k","e","equalsConstructorPrototypeIfNotBuggy","keysShim","keys","isObject","isFunction","isArguments","theKeys","skipProto","String","j","name","skipConstructor","shim","shimObjectKeys","keysWorksWithArguments","arguments","originalKeys","ln","dMin","iNegative","y","isnan","contains","arrayLike","typeName","dtype","getCtor","cast","type","d","MAX","isArrayLike","funcName","exec","ctorName","obj","strName","val","getType","dt","mset1","mat","idx","v","s0","strides","s1","offset","sgn","r","n","data","mset2","clbk","ctx","c","mset3","m","s2","s3","o0","o1","sgn0","sgn1","r0","r1","j0","j1","mset4","rows","cols","nRows","nCols","mset5","mset6","shape","copy","toJSON","prop","out","getOwnPropertyDescriptor","raw","writable","configurable","enumerable","PINF","deepCopy","createCopy","level","DTYPES","Matrix","normalRandGenerator","generate","pureElements","options","checkParameters","compositionMatrix","createCompMatrix","getDataClass","classVector","classMatrix","dataset","mmul","counter","classes","nbClasses","nbSamples","reduce","acc","clase","nbSpectra","zeros","nbSamplesPerClass","set","nbPureElements","seed","Date","now","matrixComposition","classParameters","arrayComposition","fill","element","unitParameters","mean","distribution","parameters","std","standardDeviation","index","RangeError","isPositiveIntegerArray","lcg","validate","array","typedarray","arrayarray","matrix","number","RAND","dims","opts","ndims","err","defineProperty","newVal","MASK","M","A","N","isNonNegative","ctors","CTORS","recurse","vFLG","byteLength","iset","mset","sset","get","iget","mget","sget","getIndices","nargs","args","ispace","seq","thisArg","seqs","join","dr","Number","POSITIVE_INFINITY","isBuffer","regex","copyError","indexOf","objectKeys","typedArrays","cloneInstance","cache","refs","names","desc","ref","create","getPrototypeOf","getOwnPropertyNames","isExtensible","preventExtensions","isSealed","seal","isFrozen","freeze","parent","key","Buffer","Set","Map","base64","ieee754","SlowBuffer","INSPECT_MAX_BYTES","TYPED_ARRAY_SUPPORT","global","undefined","typedArraySupport","kMaxLength","__proto__","foo","subarray","createBuffer","that","arg","encodingOrOffset","allocUnsafe","from","poolSize","_augment","ArrayBuffer","fromArrayBuffer","fromString","fromObject","Symbol","species","assertSize","size","alloc","encoding","checked","allocUnsafeSlow","string","isEncoding","actual","write","fromArrayLike","byteOffset","buffer","b","_isBuffer","compare","a","min","toLowerCase","concat","list","pos","buf","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","swap16","swap32","swap64","apply","equals","inspect","max","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","dir","isNaN","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","includes","hexWrite","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","isFinite","_arr","fromByteArray","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","fromCharCode","ret","toHex","bytes","newBuf","sliceLen","checkOffset","ext","readUIntLE","noAssert","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","checkInt","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","floor","objectWriteUInt16","littleEndian","writeUInt16LE","writeUInt16BE","objectWriteUInt32","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","checkIEEE754","writeFloat","writeFloatLE","writeFloatBE","writeDouble","writeDoubleLE","writeDoubleBE","targetStart","code","charCodeAt","INVALID_BASE64_RE","base64clean","stringtrim","replace","trim","units","Infinity","leadSurrogate","byteArray","hi","lo","toByteArray","src","dst","g","Function","eval","lookup","revLookup","Arr","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","num","encodeChunk","uint8","output","extraBytes","parts","maxChunkLength","len2","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","s","NaN","rt","LN2","RE","RegExp","getKeys","error","message","stack","errno","syscall","callee","searchElement","fromIndex","createTypedArrayFcns","nbytes","input","maxValue","minValue","rescale","currentMin","currentMax","_options$min","autoMinMax","_options$max","factor","checkRowIndex","outer","checkColumnIndex","columns","checkRowVector","vector","to1DArray","checkColumnVector","checkIndices","rowIndices","columnIndices","row","checkRowIndices","column","checkColumnIndices","rowOut","some","columnOut","checkRange","startRow","endRow","startColumn","endColumn","checkNumber","newArray","sumByRow","sum","sumByColumn","sumAll","productByRow","productByColumn","productAll","varianceByRow","unbiased","variance","sum1","sum2","varianceByColumn","varianceAll","centerByRow","centerByColumn","centerAll","getScaleByRow","scale","scaleByRow","getScaleByColumn","scaleByColumn","getScaleAll","divider","scaleAll","inspectMatrix","indent","repeat","indentData","inspectData","maxRows","maxColumns","maxNumSize","maxI","maxJ","result","line","formatNumber","numStr","padEnd","precise","toPrecision","exponential","toExponential","eIndex","substring","installMathOperations","AbstractMatrix","add","addS","addM","checkMatrix","newMatrix","subS","subM","subtract","subtractS","subtractM","mulS","mulM","multiply","multiplyS","multiplyM","div","divS","divM","divide","divideS","divideM","mod","modS","modM","modulus","modulusS","modulusM","and","andS","andM","or","orS","orM","xor","xorS","xorM","leftShift","leftShiftS","leftShiftM","signPropagatingRightShift","signPropagatingRightShiftS","signPropagatingRightShiftM","rightShift","rightShiftS","rightShiftM","zeroFillRightShift","zeroFillRightShiftS","zeroFillRightShiftM","not","acos","acosh","asin","asinh","atan","atanh","cbrt","clz32","cos","cosh","expm1","fround","log1p","log10","log2","round","sign","sin","sinh","tan","tanh","trunc","arg0","powS","powM","from1DArray","newRows","newColumns","newData","rowVector","columnVector","ones","randInt","interval","eye","diag","l","matrix1","matrix2","isMatrix","klass","callback","to2DArray","isRowVector","isColumnVector","isVector","isSquare","isSymmetric","isEchelonForm","previousColumn","isReducedEchelonForm","echelonForm","clone","h","iMax","swapRows","reducedEchelonForm","maxRow","p","pivot","setSubMatrix","neg","getRow","getRowVector","setRow","row1","row2","temp","getColumn","getColumnVector","setColumn","swapColumns","column1","column2","addRowVector","subRowVector","mulRowVector","divRowVector","addColumnVector","subColumnVector","mulColumnVector","divColumnVector","mulRow","mulColumn","maxIndex","minIndex","maxRowIndex","minRow","minRowIndex","maxColumn","maxColumnIndex","minColumn","minColumnIndex","norm","cumulativeSum","dot","vector2","vector1","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","c1","r2","c2","console","warn","embed","resultat","blockMult","halfRows","halfCols","subMatrix","scaleRows","scaleColumns","flipRows","middle","first","last","flipColumns","kroneckerProduct","q","transpose","sortRows","compareFunction","compareNumbers","sort","sortColumns","subMatrixRow","indices","subMatrixColumn","selection","rowIndex","columnIndex","trace","by","product","center","for","randomInt","diagonal","identity","negate","tensorProduct","nColumns","arrayData","removeRow","splice","addRow","removeColumn","newRow","addColumn","BaseView","MatrixColumnView","MatrixColumnSelectionView","MatrixFlipColumnView","MatrixFlipRowView","MatrixRowView","MatrixRowSelectionView","MatrixSelectionView","MatrixSubView","MatrixTransposeView","WrapperMatrix1D","_calculateIndex","WrapperMatrix2D","wrap","LuDecomposition","lu","pivotVector","pivotSign","t","LUcolj","kmax","LU","isSingular","col","solve","count","X","determinant","lowerTriangularMatrix","upperTriangularMatrix","pivotPermutationVector","hypotenuse","QrDecomposition","qr","rdiag","nrm","QR","Rdiag","isFullRank","orthogonalMatrix","SingularValueDecomposition","computeLeftSingularVectors","computeRightSingularVectors","autoTranspose","wantu","Boolean","wantv","swapped","aux","nu","ni","U","V","work","si","nct","nrt","mrc","pp","iter","eps","EPSILON","kase","alpha","MIN_VALUE","ks","cs","sn","sp","spm1","epm1","sk","ek","shift","Y","threshold","scols","Ls","rightSingularVectors","VL","vrows","urows","VLU","solveForDiagonal","inverse","vcols","ucols","condition","norm2","rank","tol","ii","leftSingularVectors","diagonalMatrix","useSVD","leftHandSide","rightHandSide","subMatrix0","subMatrix1","subMatrix2","xrange","exception","range","dependenciesOneRow","thresholdValue","thresholdError","returnArray","linearDependencies","results","Abis","svd","pseudoInverse","svdSolution","SVD","covariance","xMatrix","yMatrix","yIsSame","cov","correlation","sdx","sdy","corr","EigenvalueDecomposition","assumeSymmetric","tred2","tql2","H","ort","orthes","hqr2","realEigenvalues","imaginaryEigenvalues","eigenvectorMatrix","hh","dl1","c3","el1","tst1","low","high","nn","exshift","z","w","ra","sa","vr","vi","notlast","cdivres","cdiv","xr","xi","yr","yi","CholeskyDecomposition","dimension","positiveDefinite","L","isPositiveDefinite","B","nipals","scaleScores","maxIterations","terminationCriteria","diff","tOld","xResidual","residual","yResidual","betas"],"mappings":"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","file":"ml-generate-dataset.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[\"dist\"] = factory();\n\telse\n\t\troot[\"dist\"] = 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 = 37);\n","'use strict';\n\n/**\n* FUNCTION: isArray( value )\n*\tValidates if a value is an array.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is an array\n*/\nfunction isArray( value ) {\n\treturn Object.prototype.toString.call( value ) === '[object Array]';\n} // end FUNCTION isArray()\n\n// EXPORTS //\n\nmodule.exports = Array.isArray || isArray;\n","'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {Boolean} boolean indicating if a value is a string primitive\n*/\nfunction isString( value ) {\n\treturn typeof value === 'string';\n} // end FUNCTION isString()\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n","'use strict';\n\nconst toString = Object.prototype.toString;\n\nfunction isAnyArray(object) {\n  return toString.call(object).endsWith('Array]');\n}\n\nmodule.exports = isAnyArray;\n","/**\n*\n*\tVALIDATE: number-primitive\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a number primitive.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isNumber( value )\n*\tValidates if a value is a number primitive, excluding `NaN`.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a number primitive\n*/\nfunction isNumber( value ) {\n\treturn (typeof value === 'number') && (value === value);\n} // end FUNCTION isNumber()\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n","'use strict';\n\n// BASE TYPES //\n\nvar BTYPES = {\n\t'int8': Int8Array,\n\t'uint8': Uint8Array,\n\t'uint8_clamped': Uint8ClampedArray,\n\t'int16': Int16Array,\n\t'uint16': Uint16Array,\n\t'int32': Int32Array,\n\t'uint32': Uint32Array,\n\t'float32': Float32Array,\n\t'float64': Float64Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = BTYPES;\n","/**\n*\n*\tVALIDATE: nonnegative-integer\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a nonnegative integer.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( 'validate.io-integer' );\n\n\n// IS NONNEGATIVE INTEGER //\n\n/**\n* FUNCTION: isNonNegativeInteger( value )\n*\tValidates if a value is a nonnegative integer.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a nonnegative integer\n*/\nfunction isNonNegativeInteger( value ) {\n\treturn isInteger( value ) && value >= 0;\n} // end FUNCTION isNonNegativeInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isNonNegativeInteger;\n","'use strict';\n\n// MODULES //\n\nvar dRanNormalTail = require( './dRanNormalTail.js' );\nvar abs = require( 'math-abs' );\nvar exp = require( 'math-exp' );\nvar log = require( 'math-ln' );\nvar pow = require( 'math-power' );\nvar sqrt = require( 'math-sqrt' );\n\n\n// CONSTANTS //\n\nvar TWO_P_32 = pow( 2, 32 );\nvar ZIGNOR_C = 128; /* number of blocks */\nvar ZIGNOR_R = 3.442619855899; /* start of the right tail *\n/* (R * phi(R) + Pr(X>=R)) * sqrt(2\\pi) */\nvar ZIGNOR_V = 9.91256303526217e-3;\n\n\n// PARTIAL //\n\n/**\n* FUNCTION: partial( mu, sigma[, rand] )\n*\tPartially applies `mu` and `sigma` and returns a function\n*\tto generate random variables from the normal distribution. Implementation\n*\tof the \"Improved Ziggurat Method\" by J. Doornik.\n*\tReference:\n*\t\tDoornik, J. a. (2005).\n*\t\tAn Improved Ziggurat Method to Generate Normal Random Samples.\n*\n* @param {Number} mu - mean parameter\n* @param {Number} sigma - standard deviation\n* @param {Function} [rand=Math.random] - random number generator\n* @returns {Function} function which generates random draws from the specified distribution\n*/\nfunction partial( mu, sigma, rand ) {\n\tvar random;\n\t/* s_adZigX holds coordinates, such that each rectangle has\n\t\tsame area; s_adZigR holds s_adZigX[i + 1] / s_adZigX[i] */\n\tvar s_adZigX = new Array( ZIGNOR_C + 1 );\n\tvar s_adZigR = new Array( ZIGNOR_C );\n\tvar i;\n\tvar f;\n\n\tif ( rand ) {\n\t\trandom = rand;\n\t} else {\n\t\trandom = Math.random;\n\t}\n\n\tf = exp( -0.5 * ZIGNOR_R * ZIGNOR_R );\n\ts_adZigX[0] = ZIGNOR_V / f; /* [0] is bottom block: V / f(R) */\n\ts_adZigX[1] = ZIGNOR_R;\n\ts_adZigX[ZIGNOR_C] = 0;\n\tfor ( i = 2; i < ZIGNOR_C; i++ ) {\n\t\ts_adZigX[i] = sqrt( -2 * log( ZIGNOR_V / s_adZigX[i - 1] + f ) );\n\t\tf = exp( -0.5 * s_adZigX[i] * s_adZigX[i] );\n\t}\n\tfor ( i = 0; i < ZIGNOR_C; i++ ) {\n\t\ts_adZigR[i] = s_adZigX[i + 1] / s_adZigX[i];\n\t}\n\n\t/**\n\t* FUNCTION: draw( x )\n\t*\tGenerates a random draw for a normal distribution with parameters `mu` and `sigma`.\n\t*\n\t* @private\n\t* @returns {Number} random draw from the specified distribution\n\t*/\n\treturn function draw() {\n\t\tvar x, u, f0, f1;\n\t\tfor (;;) {\n\t\t\tu = 2 * random() - 1;\n\t\t\ti = TWO_P_32 * random() & 0x7F;\n\t\t\t/* first try the rectangular boxes */\n\t\t\tif ( abs(u) < s_adZigR[i] ) {\n\t\t\t\treturn mu + sigma * u * s_adZigX[i];\n\t\t\t}\n\t\t\t/* bottom box: sample from the tail */\n\t\t\tif ( i === 0 ) {\n\t\t\t\treturn mu + sigma * dRanNormalTail( ZIGNOR_R, u < 0, rand );\n\t\t\t}\n\t\t\t/* is this a sample from the wedges? */\n\t\t\tx = u * s_adZigX[i];\n\t\t\tf0 = exp( -0.5 * ( s_adZigX[i] * s_adZigX[i] - x * x ) );\n\t\t\tf1 = exp( -0.5 * ( s_adZigX[i+1] * s_adZigX[i+1] - x * x ) );\n\t\t\tif ( f1 + random() * (f0 - f1) < 1.0 ) {\n\t\t\t\treturn mu + sigma * x;\n\t\t\t}\n\t\t}\n\t}; // end FUNCTION draw()\n} // end FUNCTION partial()\n\n\n// EXPORTS //\n\nmodule.exports = partial;\n","'use strict';\n\n// MODULES //\n\nvar isNumber = require( 'validate.io-number-primitive' );\n\n\n// IS INTEGER //\n\n/**\n* FUNCTION: isInteger( value )\n*\tValidates if a value is a number primitive, excluding `NaN`, and an integer.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a integer primitive\n*/\nfunction isInteger( value ) {\n\treturn isNumber( value ) && value%1 === 0;\n} // end FUNCTION isInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isInteger;\n","/**\n*\n*\tCOMPUTE: indexspace\n*\n*\n*\tDESCRIPTION:\n*\t\t- Generates a linearly spaced index array from a subsequence string.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' ),\n\tisNonNegativeInteger = require( 'validate.io-nonnegative-integer' );\n\n\n// VARIABLES //\n\nvar re = /^(?:(?:-(?=\\d+))?\\d*|end(?:-\\d+|\\/\\d+)?):(?:(?:-(?=\\d+))?\\d*|end(?:-\\d+|\\/\\d+)?)(?:\\:(?=-?\\d*)(?:-?\\d+)?)?$/;\n\n/**\n*\t^(...)\n*\t=> require that the string begin with either a digit (+ or -), an `end` keyword, or a colon\n*\n*\t(?:(?:-(?=\\d+))?\\d*|end(?:-?\\d+|/\\\\d+)?)\n*\t=> match but do not capture\n*\t\t(?:-(?=\\d+))?\n*\t\t=> match but do not capture a minus sign but only if followed by one or more digits\n*\t\t\\d*\n*\t\t=> 0 or more digits\n*\t\t|\n*\t\t=> OR\n*\t\tend(?:-\\d+|/\\d+)?\n*\t\t=> the word `end` exactly, which may be followed by either a minus sign and 1 or more digits or a division sign and 1 or more digits\n*\n*\t:\n*\t=> match a colon exactly\n*\n*\t(?:(?:-(?=\\d+))?\\d*|end(?:-\\d+|/\\\\d+)?)\n*\t=> same as above\n*\n*\t(?:\\:(?=-?\\d*)(?:-?\\d+)?)?\n*\t=> match but do not capture\n*\t\t\\:(?=-?\\d*)\n*\t\t=> a colon but only if followed by either a possible minus sign and 0 or more digits\n*\t\t(?:-?\\d+)?\n*\t\t=> match but do not capture a possible minus sign and 1 or more digits\n*\n*\t$\n*\t=> require that the string end with either a digit, `end` keyword, or a colon.\n*\n*\n* Examples:\n*\t-\t:\n*\t-\t::\n*\t-\t4:\n*\t-\t:4\n*\t-\t::-1\n*\t-\t3::-1\n*\t-\t:10:2\n*\t-\t1:3:1\n*\t-\t9:1:-3\n*\t-\t1:-1\n*\t-\t:-1\n*\t-\t-5:\n*\t-\t1:-5:2\n*\t-\t-9:10:1\n*\t-\t-9:-4:2\n*\t-\t-4:-9:-2\n*\t-\t1:end:2\n*\t-\t:end/2\n*\t-\tend/2:end:5\n*/\n\nvar reEnd = /^end/,\n\treMatch = /(-|\\/)(?=\\d+)(\\d+)?$/;\n\n\n// INDEXSPACE\n\n/**\n* FUNCTION: indexspace( str, len )\n*\tGenerates a linearly spaced index array from a subsequence string.\n*\n* @param {String} str - subsequence string\n* @param {Number} len - reference array length\n* @returns {Number[]} array of indices\n*/\nfunction indexspace( str, len ) {\n\tvar x1,\n\t\tx2,\n\t\ttmp,\n\t\tinc,\n\t\tarr;\n\tif ( !isString( str ) || !re.test( str ) ) {\n\t\tthrow new Error( 'indexspace()::invalid input argument. Invalid subsequence syntax. Please consult documentation. Value: `' + str + '`.' );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( 'indexspace()::invalid input argument. Reference array length must be a nonnegative integer. Value: `' + len + '`.' );\n\t}\n\tif ( !len ) {\n\t\treturn [];\n\t}\n\tstr = str.split( ':' );\n\tx1 = str[ 0 ];\n\tx2 = str[ 1 ];\n\n\tif ( str.length === 2 ) {\n\t\tinc = 1;\n\t} else {\n\t\tinc = parseInt( str[ 2 ], 10 );\n\t}\n\t// Handle zero increment...\n\tif ( inc === 0 ) {\n\t\tthrow new Error( 'indexspace()::invalid syntax. Increment must be an integer not equal to 0. Value: `' + inc + '`.' );\n\t}\n\n\t// START //\n\n\t// Handle use of 'end' keyword...\n\tif ( reEnd.test( x1 ) ) {\n\t\ttmp = x1.match( reMatch );\n\t\tif ( tmp ) {\n\t\t\tif ( tmp[ 1 ] === '-' ) {\n\t\t\t\tx1 = len - 1 - parseInt( tmp[ 2 ], 10 );\n\t\t\t\tif ( x1 < 0 ) {\n\t\t\t\t\t// WARNING: forgive the user for exceeding the range bounds...\n\t\t\t\t\tx1 = 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tx1 = (len-1) / parseInt( tmp[ 2 ], 10 );\n\t\t\t\tx1 = Math.ceil( x1 );\n\t\t\t}\n\t\t} else {\n\t\t\tx1 = len - 1;\n\t\t}\n\t} else {\n\t\tx1 = parseInt( x1, 10 );\n\n\t\t// Handle empty index...\n\t\tif ( x1 !== x1 ) {\n\t\t\t// :-?\\d*:-?\\d+\n\t\t\tif ( inc < 0 ) {\n\t\t\t\t// Max index:\n\t\t\t\tx1 = len - 1;\n\t\t\t} else {\n\t\t\t\t// Min index:\n\t\t\t\tx1 = 0;\n\t\t\t}\n\t\t}\n\t\t// Handle negative index...\n\t\telse if ( x1 < 0 ) {\n\t\t\tx1 = len + x1; // len-x1\n\t\t\tif ( x1 < 0 ) {\n\t\t\t\t// WARNING: forgive the user for exceeding index bounds...\n\t\t\t\tx1 = 0;\n\t\t\t}\n\t\t}\n\t\t// Handle exceeding bounds...\n\t\telse if ( x1 >= len ) {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// END //\n\n\t// NOTE: here, we determine an inclusive `end` value; i.e., the last acceptable index value.\n\n\t// Handle use of 'end' keyword...\n\tif ( reEnd.test( x2 ) ) {\n\t\ttmp = x2.match( reMatch );\n\t\tif ( tmp ) {\n\t\t\tif ( tmp[ 1 ] === '-' ) {\n\t\t\t\tx2 = len - 1 - parseInt( tmp[ 2 ], 10 );\n\t\t\t\tif ( x2 < 0 ) {\n\t\t\t\t\t// WARNING: forgive the user for exceeding the range bounds...\n\t\t\t\t\tx2 = 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tx2 = (len-1) / parseInt( tmp[ 2 ], 10 );\n\t\t\t\tx2 = Math.ceil( x2 ) - 1;\n\t\t\t}\n\t\t} else {\n\t\t\tx2 = len - 1;\n\t\t}\n\t} else {\n\t\tx2 = parseInt( x2, 10 );\n\n\t\t// Handle empty index...\n\t\tif ( x2 !== x2 ) {\n\t\t\t// -?\\d*::-?\\d+\n\t\t\tif ( inc < 0 ) {\n\t\t\t\t// Min index:\n\t\t\t\tx2 = 0;\n\t\t\t} else {\n\t\t\t\t// Max index:\n\t\t\t\tx2 = len - 1;\n\t\t\t}\n\t\t}\n\t\t// Handle negative index...\n\t\telse if ( x2 < 0 ) {\n\t\t\tx2 = len + x2; // len-x2\n\t\t\tif ( x2 < 0 ) {\n\t\t\t\t// WARNING: forgive the user for exceeding index bounds...\n\t\t\t\tx2 = 0;\n\t\t\t}\n\t\t\tif ( inc > 0 ) {\n\t\t\t\tx2 = x2 - 1;\n\t\t\t}\n\t\t}\n\t\t// Handle positive index...\n\t\telse {\n\t\t\tif ( inc < 0 ) {\n\t\t\t\tx2 = x2 + 1;\n\t\t\t}\n\t\t\telse if ( x2 >= len ) {\n\t\t\t\tx2 = len - 1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tx2 = x2 - 1;\n\t\t\t}\n\t\t}\n\t}\n\n\t// INDICES //\n\n\tarr = [];\n\tif ( inc < 0 ) {\n\t\tif ( x2 > x1 ) {\n\t\t\treturn arr;\n\t\t}\n\t\twhile ( x1 >= x2 ) {\n\t\t\tarr.push( x1 );\n\t\t\tx1 += inc;\n\t\t}\n\t} else {\n\t\tif ( x1 > x2 ) {\n\t\t\treturn arr;\n\t\t}\n\t\twhile ( x1 <= x2 ) {\n\t\t\tarr.push( x1 );\n\t\t\tx1 += inc;\n\t\t}\n\t}\n\treturn arr;\n} // end FUNCTION indexspace()\n\n\n// EXPORTS //\n\nmodule.exports = indexspace;\n","/**\n*\n*\tVALIDATE: positive-integer\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a positive integer.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( 'validate.io-integer' );\n\n\n// IS POSITIVE INTEGER //\n\n/**\n* FUNCTION: isPositiveInteger( value )\n*\tValidates if a value is a positive integer.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a positive integer\n*/\nfunction isPositiveInteger( value ) {\n\treturn isInteger( value ) && value > 0;\n} // end FUNCTION isPositiveInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isPositiveInteger;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = Math.log;\n","/**\n*\n*\tVALIDATE: nonnegative-integer-array\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a nonnegative integer array.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' ),\n\tisNonNegativeInteger = require( 'validate.io-nonnegative-integer' );\n\n\n// IS NONNEGATIVE INTEGER ARRAY //\n\n/**\n* FUNCTION: isNonNegativeIntegerArray( value )\n*\tValidates if a value is a nonnegative integer array.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a nonnegative integer array\n*/\nfunction isNonNegativeIntegerArray( value ) {\n\tvar len;\n\tif ( !isArray( value ) ) {\n\t\treturn false;\n\t}\n\tlen = value.length;\n\tif ( !len ) {\n\t\treturn false;\n\t}\n\tfor ( var i = 0; i < len; i++ ) {\n\t\tif ( !isNonNegativeInteger( value[i] ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n} // end FUNCTION isNonNegativeIntegerArray()\n\n\n// EXPORTS //\n\nmodule.exports = isNonNegativeIntegerArray;\n","/**\n*\n*\tVALIDATE: nan\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is NaN.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: nan( value )\n*\tValidates if a value is not-a-number.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether the value is a NaN\n*/\nfunction nan( value ) {\n\treturn ( typeof value === 'number' || Object.prototype.toString.call( value ) === '[object Number]' ) && value.valueOf() !== value.valueOf();\n} // end FUNCTION nan()\n\n\n// EXPORTS //\n\nmodule.exports = nan;\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","/**\n*\n*\tVALIDATE: integer\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is an integer.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( 'validate.io-number' );\n\n\n// ISINTEGER //\n\n/**\n* FUNCTION: isInteger( value )\n*\tValidates if a value is an integer.\n*\n* @param {Number} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is an integer\n*/\nfunction isInteger( value ) {\n\treturn isNumber( value ) && value%1 === 0;\n} // end FUNCTION isInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isInteger;\n","/**\n*\n*\tVALIDATE: number\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a number.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isNumber( value )\n*\tValidates if a value is a number.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a number\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' || Object.prototype.toString.call( value ) === '[object Number]' ) && value.valueOf() === value.valueOf();\n} // end FUNCTION isNumber()\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n","'use strict';\n\n// MODULES //\n\nvar ln = require( 'math-ln' );\n\n\n// NORMAL TAIL //\n\n/**\n* FUNCTION dRanNormalTail( dMin, iNegative, rand )\n*\tTransform the tail of the normal distribution to\n*\tthe unit interval and then use rejection technique\n*\tto generate standar normal variable.\n*\tReference:\n*\t\tMarsaclia, G. (1964). Generating a Variable from the Tail\n*\t\tof the Normal Distribution. Technometrics, 6(1),\n*\t\t101–102. doi:10.1080/00401706.1964.10490150\n*\n* @param {Number} dMin - start value of the right tail\n* @param {Boolean} iNegative - boolean indicating which side to evaluate\n* @param {Function} rand - random number generator\n* @returns {Number} standard normal variable\n*/\nfunction dRanNormalTail( dMin, iNegative, rand ) {\n\tvar x, y;\n\tdo {\n\t\tx = ln( rand() ) / dMin;\n\t\ty = ln( rand() );\n\t} while ( -2 * y < x * x );\n\treturn iNegative ? x - dMin : dMin - x;\n} // end FUNCTION dRanNormalTail()\n\n\n// EXPORTS //\n\nmodule.exports = dRanNormalTail;\n","'use strict';\n\n/**\n* FUNCTION: abs( x )\n*\tComputes the absolute value of `x`.\n*\n* @param {Number} x - input value\n* @returns {Number} absolute value\n*/\nfunction abs( x ) {\n\tif ( x < 0 ) {\n\t\treturn -x;\n\t}\n\tif ( x === 0 ) {\n\t\treturn 0; // handle negative zero\n\t}\n\treturn x;\n} // end FUNCTION abs()\n\n\n// EXPORTS //\n\nmodule.exports = abs;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = Math.exp;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = Math.pow;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = Math.sqrt;\n","/**\n*\n*\tVALIDATE: contains\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if an array contains an input value.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' ),\n\tisnan = require( 'validate.io-nan-primitive' );\n\n\n// CONTAINS //\n\n/**\n* FUNCTION: contains( arr, value )\n*\tValidates if an array contains an input value.\n*\n* @param {Array} arr - search array\n* @param {*} value - search value\n* @returns {Boolean} boolean indicating if an array contains an input value\n*/\nfunction contains( arr, value ) {\n\tvar len, i;\n\tif ( !isArray( arr ) ) {\n\t\tthrow new TypeError( 'contains()::invalid input argument. First argument must be an array. Value: `' + arr + '`.' );\n\t}\n\tlen = arr.length;\n\tif ( isnan( value ) ) {\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tif ( isnan( arr[ i ] ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < len; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n} // end FUNCTION contains()\n\n\n// EXPORTS //\n\nmodule.exports = contains;\n","'use strict';\n\n// MODULES //\n\nvar arrayLike = require( 'validate.io-array-like' ),\n\ttypeName = require( 'type-name' ),\n\tdtype = require( 'dstructs-array-dtype' ),\n\tgetCtor = require( 'dstructs-array-constructors' );\n\n\n// CAST //\n\n/**\n* FUNCTION: cast( x, type )\n*\tCasts an input array or array-like object to a specified type.\n*\n* @param {String|Object|Array|Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} x - value to cast\n* @param {String|Array|Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} type - type to which to cast or a value from which the desired type should be inferred\n* @returns {Array|Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} casted value\n*/\nfunction cast( x, type ) {\n\t/* jshint newcap:false */\n\tvar ctor,\n\t\tlen,\n\t\td,\n\t\ti;\n\n\tif ( !arrayLike( x ) ) {\n\t\tthrow new TypeError( 'invalid input argument. First argument must be an array-like object. Value: `' + x + '`.' );\n\t}\n\tif ( typeof type === 'string' ) {\n\t\tctor = getCtor( type );\n\t} else {\n\t\tctor = getCtor( dtype( typeName( type ) ) );\n\t}\n\tif ( ctor === null ) {\n\t\tthrow new Error( 'invalid input argument. Unrecognized/unsupported type to which to cast. Value: `' + type + '`.' );\n\t}\n\tlen = x.length;\n\n\t// Ensure fast elements (contiguous memory)...\n\tif ( type === 'generic' && len > 64000 ) {\n\t\td = new ctor( 64000 );\n\t\tfor ( i = 0; i < 64000; i++ ) {\n\t\t\td[ i ] = x[ i ];\n\t\t}\n\t\tfor ( i = 64000; i < len; i++ ) {\n\t\t\td.push( x[ i ] );\n\t\t}\n\t} else {\n\t\td = new ctor( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\td[ i ] = x[ i ];\n\t\t}\n\t}\n\treturn d;\n} // end FUNCTION cast()\n\n\n// EXPORTS //\n\nmodule.exports = cast;\n","'use strict';\n\n// MODULES //\n\nvar isInteger = require( 'validate.io-integer-primitive' );\n\n\n// CONSTANTS //\n\nvar MAX = require( 'const-max-uint32' );\n\n\n// IS ARRAY-LIKE //\n\n/**\n* FUNCTION: isArrayLike( value )\n*\tValidates if a value is array-like.\n*\n* @param {*} value - value to validate\n* @param {Boolean} boolean indicating if a value is array-like\n*/\nfunction isArrayLike( value ) {\n\treturn (\n\t\tvalue !== void 0 &&\n\t\tvalue !== null &&\n\t\ttypeof value !== 'function' &&\n\t\tisInteger( value.length ) &&\n\t\tvalue.length >= 0 &&\n\t\tvalue.length <= MAX\n\t);\n} // end FUNCTION isArrayLike()\n\n\n// EXPORTS //\n\nmodule.exports = isArrayLike;\n","/**\n * type-name - Just a reasonable typeof\n * \n * https://github.com/twada/type-name\n *\n * Copyright (c) 2014-2015 Takuto Wada\n * Licensed under the MIT license.\n *   http://twada.mit-license.org/2014-2015\n */\n'use strict';\n\nvar toStr = Object.prototype.toString;\n\nfunction funcName (f) {\n    return f.name ? f.name : /^\\s*function\\s*([^\\(]*)/im.exec(f.toString())[1];\n}\n\nfunction ctorName (obj) {\n    var strName = toStr.call(obj).slice(8, -1);\n    if (strName === 'Object' && obj.constructor) {\n        return funcName(obj.constructor);\n    }\n    return strName;\n}\n\nfunction typeName (val) {\n    var type;\n    if (val === null) {\n        return 'null';\n    }\n    type = typeof(val);\n    if (type === 'object') {\n        return ctorName(val);\n    }\n    return type;\n}\n\nmodule.exports = typeName;\n","'use strict';\n\n// MODULES //\n\nvar typeName = require( 'type-name' ),\n\tgetType = require( 'compute-array-dtype' );\n\n\n// DTYPE //\n\n/**\n* FUNCTION: dtype( value )\n*\tDetermines the data type of an input value.\n*\n* @param {*} value - input value\n* @returns {String} data type\n*/\nfunction dtype( value ) {\n\tvar type,\n\t\tdt;\n\tif ( value === null ) {\n\t\treturn 'null';\n\t}\n\t// Check for base types:\n\ttype = typeof value;\n\tswitch ( type ) {\n\t\tcase 'undefined':\n\t\tcase 'boolean':\n\t\tcase 'number':\n\t\tcase 'string':\n\t\tcase 'function':\n\t\tcase 'symbol':\n\t\t\treturn type;\n\t}\n\t// Resort to slower look-up:\n\ttype = typeName( value );\n\n\t// Is value a known array type?\n\tdt = getType( type );\n\tif ( dt ) {\n\t\treturn dt;\n\t}\n\t// Is value a buffer object?\n\tif ( type === 'Buffer' || type === 'ArrayBuffer' ) {\n\t\treturn 'binary';\n\t}\n\t// Assume the value is a generic object (Object|Class instance) which could contain any or multiple data types...\n\treturn 'generic';\n} // end FUNCTION dtype()\n\n\n// EXPORTS //\n\nmodule.exports = dtype;\n","/**\n*\n*\tVALIDATE: function\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a function.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isFunction( value )\n*\tValidates if a value is a function.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a function\n*/\nfunction isFunction( value ) {\n\treturn ( typeof value === 'function' );\n} // end FUNCTION isFunction()\n\n\n// EXPORTS //\n\nmodule.exports = isFunction;\n","'use strict';\n\n/**\n* FUNCTION: mset1( mat, idx, v )\n*\tSets multiple matrix elements to a numeric value `v`.\n*\n* @private\n* @param {Matrix} mat - Matrix instance\n* @param {Number[]} idx - linear indices\n* @param {Number} v - numeric value\n* @returns {Void}\n*/\nfunction mset1( mat, idx, v ) {\n\tvar s0 = mat.strides[ 0 ],\n\t\ts1 = mat.strides[ 1 ],\n\t\tlen = idx.length,\n\t\to = mat.offset,\n\t\tsgn,\n\t\tr, j, n;\n\n\tsgn = ( s0 < 0 ) ? -1 : 1;\n\tfor ( n = 0; n < len; n++ ) {\n\t\tj = idx[ n ] % s0;\n\t\tr = sgn * ( idx[n] - j );\n\t\tmat.data[ o + r + j*s1 ] = v;\n\t}\n} // end FUNCTION mset1()\n\n\n// EXPORTS //\n\nmodule.exports = mset1;\n","'use strict';\n\n/**\n* FUNCTION: mset2( mat, idx, clbk, ctx )\n*\tSets multiple matrix elements using a callback function.\n*\n* @private\n* @param {Matrix} mat - Matrix instance\n* @param {Number[]} idx - linear indices\n* @param {Function} clbk - callback function\n* @param {Object} ctx - `this` context when invoking the provided callback\n* @returns {Void}\n*/\nfunction mset2( mat, idx, clbk, ctx ) {\n\tvar s0 = mat.strides[ 0 ],\n\t\ts1 = mat.strides[ 1 ],\n\t\tlen = idx.length,\n\t\to = mat.offset,\n\t\tsgn,\n\t\tr, c,\n\t\ti, k, n;\n\n\tsgn = ( s0 < 0 ) ? -1 : 1;\n\tfor ( n = 0; n < len; n++ ) {\n\t\t// Get the column number:\n\t\tc = idx[ n ] % s0;\n\n\t\t// Determine the row offset:\n\t\ti = sgn * ( idx[n] - c );\n\n\t\t// Get the row number:\n\t\tr = i / s0;\n\n\t\t// Calculate the index:\n\t\tk = o + i + c*s1;\n\n\t\t// Set the value:\n\t\tmat.data[ k ] = clbk.call( ctx, mat.data[ k ], r, c, k );\n\t}\n} // end FUNCTION mset2()\n\n\n// EXPORTS //\n\nmodule.exports = mset2;\n","'use strict';\n\n/**\n* FUNCTION: mset3( mat, idx, m )\n*\tSets multiple matrix elements using elements from another matrix.\n*\n* @private\n* @param {Matrix} mat - Matrix instance\n* @param {Number[]} idx - linear indices\n* @param {Matrix} m - Matrix instance\n* @returns {Void}\n*/\nfunction mset3( mat, idx, m ) {\n\tvar s0 = mat.strides[ 0 ],\n\t\ts1 = mat.strides[ 1 ],\n\t\ts2 = m.strides[ 0 ],\n\t\ts3 = m.strides[ 1 ],\n\t\tlen = idx.length,\n\t\to0 = mat.offset,\n\t\to1 = m.offset,\n\t\tsgn0, sgn1,\n\t\tr0, r1,\n\t\tj0, j1,\n\t\tn;\n\n\tif ( m.length !== len ) {\n\t\tthrow new Error( 'invalid input argument. Number of indices does not match the number of elements in the value matrix.' );\n\t}\n\tsgn0 = ( s0 < 0 ) ? -1 : 1;\n\tsgn1 = ( s2 < 0 ) ? -1 : 1;\n\tfor ( n = 0; n < len; n++ ) {\n\t\t// Get the column number and row offset for the first matrix:\n\t\tj0 = idx[ n ] % s0;\n\t\tr0 = sgn0 * ( idx[n] - j0 );\n\n\t\t// Get the column number and row offset for the value matrix:\n\t\tj1 = n % s2;\n\t\tr1 = sgn1 * ( n - j1 );\n\n\t\tmat.data[ o0 + r0 + j0*s1 ] = m.data[ o1 + r1 + j1*s3  ];\n\t}\n} // end FUNCTION mset3()\n\n\n// EXPORTS //\n\nmodule.exports = mset3;\n","'use strict';\n\n/**\n* FUNCTION: mset4( mat, rows, cols, clbk, ctx )\n*\tSets multiple matrix elements using a callback function.\n*\n* @private\n* @param {Matrix} mat - Matrix instance\n* @param {Number[]} rows - row indices\n* @param {Number[]} cols - column indices\n* @param {Function} clbk - callback function\n* @param {Object} ctx - `this` context when invoking the provided callback\n* @returns {Void}\n*/\nfunction mset4( mat, rows, cols, clbk, ctx ) {\n\tvar s0 = mat.strides[ 0 ],\n\t\ts1 = mat.strides[ 1 ],\n\t\tnRows = rows.length,\n\t\tnCols = cols.length,\n\t\to = mat.offset,\n\t\tr,\n\t\ti, j, k;\n\n\tfor ( i = 0; i < nRows; i++ ) {\n\t\tr = o + rows[i]*s0;\n\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\tk = r + cols[j]*s1;\n\t\t\tmat.data[ k ] = clbk.call( ctx, mat.data[ k ], rows[ i ], cols[ j ], k );\n\t\t}\n\t}\n} // end FUNCTION mset4()\n\n\n// EXPORTS //\n\nmodule.exports = mset4;\n","'use strict';\n\n/**\n* FUNCTION: mset5( mat, rows, cols, v )\n*\tSets multiple matrix elements to a numeric value `v`.\n*\n* @private\n* @param {Matrix} mat - Matrix instance\n* @param {Number[]} rows - row indices\n* @param {Number[]} cols - column indices\n* @param {Number} v - numeric value\n* @returns {Void}\n*/\nfunction mset5( mat, rows, cols, v ) {\n\tvar s0 = mat.strides[ 0 ],\n\t\ts1 = mat.strides[ 1 ],\n\t\tnRows = rows.length,\n\t\tnCols = cols.length,\n\t\to = mat.offset,\n\t\tr,\n\t\ti, j;\n\n\tfor ( i = 0; i < nRows; i++ ) {\n\t\tr = o + rows[i]*s0;\n\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\tmat.data[ r + cols[j]*s1 ] = v;\n\t\t}\n\t}\n} // end FUNCTION mset5()\n\n\n// EXPORTS //\n\nmodule.exports = mset5;\n","'use strict';\n\n/**\n* FUNCTION: mset6( mat, rows, cols, m )\n*\tSets multiple matrix elements using elements from another matrix.\n*\n* @private\n* @param {Matrix} mat - Matrix instance\n* @param {Number[]} rows - row indices\n* @param {Number[]} cols - column indices\n* @param {Matrix} m - Matrix instance\n* @returns {Void}\n*/\nfunction mset6( mat, rows, cols, m ) {\n\tvar s0 = mat.strides[ 0 ],\n\t\ts1 = mat.strides[ 1 ],\n\t\ts2 = m.strides[ 0 ],\n\t\ts3 = m.strides[ 1 ],\n\t\tnRows = rows.length,\n\t\tnCols = cols.length,\n\t\to0 = mat.offset,\n\t\to1 = m.offset,\n\t\tr0, r1,\n\t\ti, j;\n\n\tif ( m.shape[ 0 ] !== nRows || m.shape[ 1 ] !== nCols ) {\n\t\tthrow new Error( 'invalid input argument. The dimensions given by the row and column indices do not match the value matrix dimensions.' );\n\t}\n\tfor ( i = 0; i < nRows; i++ ) {\n\t\tr0 = o0 + rows[i]*s0;\n\t\tr1 = o1 + i*s2;\n\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\tmat.data[ r0 + cols[j]*s1 ] = m.data[ r1 + j*s3 ];\n\t\t}\n\t}\n} // end FUNCTION mset6()\n\n\n// EXPORTS //\n\nmodule.exports = mset6;\n","'use strict';\n\n/**\n* FUNCTION: toString()\n*\tReturns a string representation of Matrix elements. Rows are delineated by semicolons. Column values are comma-delimited.\n*\n* @returns {String} string representation\n*/\nfunction toString() {\n\t/* jshint validthis: true */\n\tvar nRows = this.shape[ 0 ],\n\t\tnCols = this.shape[ 1 ],\n\t\ts0 = this.strides[ 0 ],\n\t\ts1 = this.strides[ 1 ],\n\t\tm = nRows - 1,\n\t\tn = nCols - 1,\n\t\tstr = '',\n\t\to,\n\t\ti, j;\n\n\tfor ( i = 0; i < nRows; i++ ) {\n\t\to = this.offset + i*s0;\n\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\tstr += this.data[ o + j*s1 ];\n\t\t\tif ( j < n ) {\n\t\t\t\tstr += ',';\n\t\t\t}\n\t\t}\n\t\tif ( i < m ) {\n\t\t\tstr += ';';\n\t\t}\n\t}\n\treturn str;\n} // end FUNCTION toString()\n\n\n// EXPORTS //\n\nmodule.exports = toString;\n","'use strict';\n\n// MODULES //\n\nvar cast = require( 'dstructs-cast-arrays' ),\n\tcopy = require( 'utils-copy' );\n\n\n// TOJSON //\n\n/**\n* FUNCTION: toJSON()\n*\tReturns a JSON representation of a Matrix.\n*\n* @returns {Object} JSON representation\n*/\nfunction toJSON() {\n\t/* jshint validthis: true */\n\tvar prop,\n\t\tout;\n\n\t// Build an object containing all Matrix properties needed to revive a serialized Matrix...\n\tout = {};\n\tout.type = 'Matrix';\n\tout.dtype = this.dtype;\n\tout.shape = copy( this.shape );\n\tout.offset = this.offset;\n\tout.strides = copy( this.strides );\n\n\tprop = Object.getOwnPropertyDescriptor( this, 'data' );\n\tout.raw = prop.writable && prop.configurable && prop.enumerable;\n\n\t// Cast data to a generic array:\n\tout.data = cast( this.data, 'generic' );\n\n\treturn out;\n} // end FUNCTION toJSON()\n\n\n// EXPORTS //\n\nmodule.exports = toJSON;\n","'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' );\nvar isNonNegativeInteger = require( 'validate.io-nonnegative-integer' );\nvar PINF = require( 'const-pinf-float64' );\nvar deepCopy = require( './deepcopy.js' );\n\n\n// COPY //\n\n/**\n* FUNCTION: createCopy( value[, level] )\n*\tCopy or deep clone a value to an arbitrary depth.\n*\n* @param {*} value - value to be copied\n* @param {Number} [level=+infinity] - option to control copy depth. For example, set to `0` for a shallow copy. Default behavior returns a full deep copy.\n* @returns {*} copy\n*/\nfunction createCopy( val, level ) {\n\tvar copy;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isNonNegativeInteger( level ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Level must be a nonnegative integer. Value: `' + level + '`.' );\n\t\t}\n\t\tif ( level === 0 ) {\n\t\t\treturn val;\n\t\t}\n\t} else {\n\t\tlevel = PINF;\n\t}\n\tcopy = ( isArray(val) ) ? [] : {};\n\treturn deepCopy( val, copy, [val], [copy], level );\n} // end FUNCTION createCopy()\n\n\n// EXPORTS //\n\nmodule.exports = createCopy;\n","'use strict';\n\n// DATA TYPES //\n\nvar DTYPES = [\n\t'int8',\n\t'uint8',\n\t'uint8_clamped',\n\t'int16',\n\t'uint16',\n\t'int32',\n\t'uint32',\n\t'float32',\n\t'float64'\n];\n\n\n// EXPORTS //\n\nmodule.exports = DTYPES;\n","'use strict';\n\nvar {Matrix} = require('ml-matrix');\nvar normalRandGenerator = require('distributions-normal-random');\n\n/**\n * Create a dataset by the linear combination of pure elements with a specific gaussian distribution,\n * @param {Array<Array<number>>} pureElements - matrix where each row is a pure element\n * @param {object} [options]\n * @param {number} [options.seed] - the seed to initialize the random vector.\n * @param {Array<object>} [options.classes] - the parameters to create the dataset. @example <caption> see the example </caption>.\n * @param {number} [options.classes.nbSpectra] - number of sample for this class.\n * @param {Array<object>} [options.classes.elements] - contain the object with the index of pure element and the distribution parameters,@example <caption> see the example </caption>.\n * @return {object} - object with one or three properties depending on the options\n * {dataset: Array<Array<number>>, compositionMatrix: Array<Array<number>>, dataClass: Array<Array<number>>}.\n */\nfunction generate(pureElements, options = {}) {\n    checkParameters(pureElements, options);\n    var compositionMatrix = createCompMatrix(options);\n    let [classVector, classMatrix] = getDataClass(options);\n    return {\n        compositionMatrix,\n        dataset: compositionMatrix.mmul(pureElements),\n        classVector,\n        classMatrix\n    };\n}\n\nfunction getDataClass(options) {\n    let counter = 0;\n    let classes = options.classes;\n    let nbClasses = classes.length;\n    let nbSamples = classes.reduce((acc, clase) => clase.nbSpectra + acc, 0);\n\n    let classVector = new Array(nbSamples);\n    let classMatrix = Matrix.zeros(nbSamples, nbClasses);\n    for (let i = 0; i < nbClasses; i++) {\n        let nbSamplesPerClass = classes[i].nbSpectra;\n        for (let j = 0; j < nbSamplesPerClass; j++) {\n            classMatrix.set(counter, i, 1);\n            classVector[counter++] = i;\n        }\n    }\n\n    return [classVector, classMatrix];\n}\n\nfunction createCompMatrix(options) {\n    var {\n        classes,\n        nbPureElements,\n        seed = Date.now()\n    } = options;\n    normalRandGenerator.seed = seed;\n    let matrixComposition = [];\n    for (let classParameters of classes) {\n        for (let i = 0; i < classParameters.nbSpectra; i++) {\n            let arrayComposition = new Array(nbPureElements).fill(0);\n            for (let element of classParameters.unitParameters) {\n                let mean = element.distribution.parameters.mean;\n                let std = element.distribution.parameters.standardDeviation;\n                arrayComposition[element.index] = normalRandGenerator() * std + mean;\n            }\n            matrixComposition.push(arrayComposition);\n        }\n    }\n    return new Matrix(matrixComposition);\n}\n\nfunction checkParameters(pureElements, options) {\n    if (!Array.isArray(pureElements)) throw new RangeError('pureElements should be an Array');\n    if (pureElements.length < 2) throw new RangeError('pureElements array should has more than one element');\n    if (!Array.isArray(options.classes)) throw new RangeError('classes should be an Array');\n    options.nbPureElements = pureElements.length;\n}\n\nmodule.exports = generate;\n","'use strict';\n\n// MODULES //\n\nvar isPositiveIntegerArray = require( 'validate.io-positive-integer-array' );\nvar isPositiveInteger = require( 'validate.io-positive-integer' );\nvar lcg = require( 'compute-lcg' );\nvar validate = require( './validate.js' );\n\n\n// FUNCTIONS //\n\nvar array = require( './array.js' );\nvar typedarray = require( './typedarray.js' );\nvar arrayarray = require( './arrayarray.js' );\nvar matrix = require( './matrix.js' );\nvar number = require( './number.js' );\n\n\n// UNIFORM GENERATOR //\n\nvar RAND = lcg();\n\n\n// NORMAL RANDOM VARIATES //\n\n/**\n* FUNCTION: random( [dims][, opts] )\n*\tCreates a matrix or array filled with normal random numbers.\n*\n* @param {Number|Number[]} [dims] - dimensions\n* @param {Object} [opts] - function options\n* @param {Number} [opts.mu=0] - mean parameter\n* @param {Number} [opts.sigma=1] - standard deviation\n* @param {String} [opts.dtype=\"generic\"] - output data type\n* @param {Number} [opts.seed] - integer-valued seed\n* @returns {Array|Number[]|Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array|Matrix} random numbers\n*/\nfunction random( dims, options ) {\n\tvar opts = {};\n\tvar isArray;\n\tvar ndims;\n\tvar err;\n\tvar len;\n\tvar mu;\n\tvar sigma;\n\tvar rand;\n\tvar dt;\n\n\tif ( arguments.length > 0 ) {\n\t\tisArray = isPositiveIntegerArray( dims );\n\t\tif ( !isArray && !isPositiveInteger( dims ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Dimensions argument must be either a positive integer or a positive integer array. Value: `' + dims + '`.' );\n\t\t}\n\t}\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tif ( opts.seed ) {\n\t\trand = lcg( opts.seed );\n\t} else {\n\t\trand = RAND;\n\t}\n\tdt = opts.dtype || 'generic';\n\n\tmu = typeof opts.mu !== 'undefined' ? opts.mu : 0;\n\tsigma = typeof opts.sigma !== 'undefined' ? opts.sigma : 1;\n\n\tif ( arguments.length === 0 ) {\n\t\treturn number( mu, sigma, rand );\n\t}\n\tif ( isArray ) {\n\t\tndims = dims.length;\n\t\tif ( ndims < 2 ) {\n\t\t\tlen = dims[ 0 ];\n\t\t}\n\t} else {\n\t\tndims = 1;\n\t\tlen = dims;\n\t}\n\t// 1-dimensional data structures...\n\tif ( ndims === 1 ) {\n\t\tif ( len === 1 ) {\n\t\t\treturn number( mu, sigma, rand );\n\t\t}\n\t\tif ( dt === 'generic' ) {\n\t\t\treturn array( len, mu, sigma, rand );\n\t\t}\n\t\treturn typedarray( len, dt, mu, sigma, rand );\n\t}\n\t// Multidimensional data structures...\n\tif ( dt !== 'generic' ) {\n\t\tif ( ndims === 2 ) {\n\t\t\treturn matrix( dims, dt, mu, sigma, rand );\n\t\t}\n\t\t// TODO: dstructs-ndarray support goes here. Until then, fall through to plain arrays...\n\t}\n\treturn arrayarray( dims, mu, sigma, rand );\n} // end FUNCTION random()\n\n\n// EXPORTS //\n\nmodule.exports = random;\n\nObject.defineProperty( module.exports, 'seed', {\n\tset: function ( newVal ) {\n\t\tif ( !isPositiveInteger( newVal ) ) {\n\t\t\tthrow new TypeError( 'invalid value. Seed property must be a positive integer. Option: `' + newVal + '`.' );\n\t\t}\n\t\tRAND = lcg( newVal );\n\t}\n});\n","'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' ),\n\tisPositiveInteger = require( 'validate.io-positive-integer' );\n\n\n// IS POSITIVE INTEGER ARRAY //\n\n/**\n* FUNCTION: isPositiveIntegerArray( value )\n*\tValidates if a value is a positive integer array.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a positive integer array\n*/\nfunction isPositiveIntegerArray( value ) {\n\tvar len, i;\n\tif ( !isArray( value ) ) {\n\t\treturn false;\n\t}\n\tlen = value.length;\n\tif ( !len ) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < len; i++ ) {\n\t\tif ( !isPositiveInteger( value[i] ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n} // end FUNCTION isPositiveIntegerArray()\n\n\n// EXPORTS //\n\nmodule.exports = isPositiveIntegerArray;\n","/**\n*\n*\tCOMPUTE: lcg\n*\n*\n*\tDESCRIPTION:\n*\t\t- A linear congruential pseudorandom number generator (lcg).\n*\n*\n*\tNOTES:\n*\t\t[1] Based on W. Press, et al., Numerical Recipes in C (2d ed. 1992)\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. rgizz.\n*\n*\n*\tAUTHOR:\n*\t\trgizz. gztown2216@yahoo.com. 2014.\n*\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar MASK = 123459876,\n\tM = 2147483647,\n\tA = 16807;\n\n\n// LCG //\n\n/**\n* FUNCTION: lcg( [seed] )\n*\tReturns a linear congruential pseudorandom number generator. If not provided a seed, a seed is generated based on the current time.\n*\n* @param {Number} [seed] - random number generator seed\n* @returns {Function} generator\n*/\nfunction lcg( val ) {\n\tvar seed;\n\tif ( arguments.length ) {\n\t\tif ( typeof val !== 'number' || val !== val || val % 1 !== 0 || val < 1 ) {\n\t\t\tthrow new TypeError( 'lcg()::invalid input argument. Seed must be a positive integer.' );\n\t\t}\n\t\tseed = val;\n\t} else {\n\t\tseed = Date.now() % 100000000;\n\t}\n\t/**\n\t* FUNCTION: lcg( [N] )\n\t*\tLinear congruential pseudorandom number generator.\n\t*\n\t* @param {Number} [N] - number of pseudorandom numbers to return\n\t* @returns {Number|Array} pseudorandom floating-point number(s) between 0 and 1\n\t*/\n\treturn function lcg( N ) {\n\t\tvar arr,\n\t\t\trand;\n\t\tif ( !arguments.length ) {\n\t\t\tseed = seed ^ MASK;\n\t\t\tseed = ( A * seed ) % M;\n\t\t\trand = seed / M;\n\t\t\tseed = seed ^ MASK;\n\t\t\treturn rand;\n\t\t}\n\t\tif ( typeof N !== 'number' || N !== N || N%1 !== 0 || N < 1 ) {\n\t\t\tthrow new TypeError( 'lcg()::invalid input argument. Array length must be a positive integer.' );\n\t\t}\n\t\tarr = new Array( N );\n\t\tfor ( var i = 0; i < N; i++ ) {\n\t\t\tseed = seed ^ MASK;\n\t\t\tseed = ( A * seed ) % M;\n\t\t\tarr[ i ] = seed / M;\n\t\t\tseed = seed ^ MASK;\n\t\t}\n\t\treturn arr;\n\t};\n} // end FUNCTION lcg()\n\n\n// EXPORTS //\n\nmodule.exports = lcg;\n\n\n","'use strict';\n\n// MODULES //\n\nvar isObject = require( 'validate.io-object' );\nvar isNonNegative = require( 'validate.io-nonnegative' );\nvar isNumber = require( 'validate.io-number-primitive' );\nvar isPositiveInteger = require( 'validate.io-positive-integer' );\nvar isString = require( 'validate.io-string-primitive' );\n\n\n// VALIDATE //\n\n/**\n* FUNCTION: validate( opts, options )\n*\tValidates function options.\n*\n* @param {Object} opts - destination for validated options\n* @param {Object} options - function options\n* @param {Number} [options.mu] - mean parameter\n* @param {Number} [options.sigma] - standard deviation\n* @param {String} [options.dtype] - output data type\n* @param {Number} [options.seed] - integer-valued seed\n* @returns {Null|Error} null or an error\n*/\nfunction validate( opts, options ) {\n\tif ( !isObject( options ) ) {\n\t\treturn new TypeError( 'invalid input argument. Options argument must be an object. Value: `' + options + '`.' );\n\t}\n\tif ( options.hasOwnProperty( 'mu' ) ) {\n\t\topts.mu = options.mu;\n\t\tif ( !isNumber( opts.mu ) ) {\n\t\t\treturn new TypeError( 'invalid option. `mu` parameter must be a number primitive. Option: `' + opts.mu + '`.' );\n\t\t}\n\t}\n\tif ( options.hasOwnProperty( 'sigma' ) ) {\n\t\topts.sigma = options.sigma;\n\t\tif ( !isNonNegative( opts.sigma ) ) {\n\t\t\treturn new TypeError( 'invalid option. `sigma` parameter must be a non-negative number. Option: `' + opts.sigma + '`.' );\n\t\t}\n\t}\n\tif ( options.hasOwnProperty( 'dtype' ) ) {\n\t\topts.dtype = options.dtype;\n\t\tif ( !isString( opts.dtype ) ) {\n\t\t\treturn new TypeError( 'invalid option. Data type option must be a string primitive. Option: `' + opts.dtype + '`.' );\n\t\t}\n\t}\n\tif ( options.hasOwnProperty( 'seed' ) ) {\n\t\topts.seed = options.seed;\n\t\tif ( !isPositiveInteger( opts.seed ) ) {\n\t\t\treturn new TypeError( 'invalid option. Seed option must be a positive integer. Option: `' + opts.seed + '`.' );\n\t\t}\n\t}\n\treturn null;\n} // end FUNCTION validate()\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n","'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' );\n\n\n// ISOBJECT //\n\n/**\n* FUNCTION: isObject( value )\n*\tValidates if a value is a object; e.g., {}.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a object\n*/\nfunction isObject( value ) {\n\treturn ( typeof value === 'object' && value !== null && !isArray( value ) );\n} // end FUNCTION isObject()\n\n\n// EXPORTS //\n\nmodule.exports = isObject;\n","/**\n*\n*\tVALIDATE: nonnegative\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a nonnegative number.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( 'validate.io-number' );\n\n\n// IS NONNEGATIVE //\n\n/**\n* FUNCTION: isNonNegative( value )\n*\tValidates if a value is a nonnegative number.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is a nonnegative number\n*/\nfunction isNonNegative( value ) {\n\treturn isNumber( value ) && value >= 0;\n} // end FUNCTION isNonNegative()\n\n\n// EXPORTS //\n\nmodule.exports = isNonNegative;\n","'use strict';\n\n// MODULES //\n\nvar partial = require( './partial.js' );\n\n\n// RANDOM //\n\n/**\n* FUNCTION: random( len, mu, sigma[, rand] )\n*\tCreates an array of normally distributed random numbers.\n*\n* @param {Number} len - array length\n* @param {Number} mu - mean parameter\n* @param {Number} sigma - standard deviation\n* @param {Function} [rand=Math.random] - random number generator\n* @returns {Number[]} array filled with normal random numbers\n*/\nfunction random( len, mu, sigma, rand ) {\n\tvar out;\n\tvar draw;\n\tvar i;\n\n\tdraw = partial( mu, sigma, rand );\n\t// Ensure fast elements...\n\tif ( len < 64000 ) {\n\t\tout = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tout[ i ] = draw();\n\t\t}\n\t} else {\n\t\tout = [];\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tout.push( draw() );\n\t\t}\n\t}\n\treturn out;\n} // end FUNCTION random()\n\n\n// EXPORTS //\n\nmodule.exports = random;\n","'use strict';\n\n// MODULES //\n\nvar ctors = require( 'compute-array-constructors' ),\n\tpartial = require( './partial.js' );\n\n\n// RANDOM //\n\n/**\n* FUNCTION: random( len, dt, mu, sigma[, rand] )\n*\tCreates a typed array of normally distributed random numbers.\n*\n* @param {Number} len - array length\n* @param {String} dt - data type\n* @param {Number} mu - mean parameter\n* @param {Number} sigma - standard deviation\n* @param {Function} [rand=Math.random] - random number generator\n* @returns {Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} typed array filled with normal random numbers\n*/\nfunction random( len, dt, mu, sigma, rand ) {\n\t/* jshint newcap:false */\n\tvar ctor;\n\tvar out;\n\tvar draw;\n\tvar i;\n\n\tdraw = partial( mu, sigma, rand );\n\tctor = ctors( dt );\n\tif ( ctor === null ) {\n\t\tthrow new Error( 'invalid value. Data type does not have a corresponding array constructor. Value: `' + dt + '`.' );\n\t}\n\tout = new ctor( len );\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout[ i ] = draw();\n\t}\n\treturn out;\n} // end FUNCTION random()\n\n\n// EXPORTS //\n\nmodule.exports = random;\n","'use strict';\n\n// CTORS //\n\nvar CTORS = require( './ctors.js' );\n\n\n// GET CTOR //\n\n/**\n* FUNCTION: getCtor( dtype )\n*\tReturns an array constructor corresponding to an input data type.\n*\n* @param {String} dtype - data type\n* @returns {Function|Null} array constructor or null\n*/\nfunction getCtor( dtype ) {\n\treturn CTORS[ dtype ] || null;\n} // end FUNCTION getCtor()\n\n\n// EXPORTS //\n\nmodule.exports = getCtor;\n","'use strict';\n\nvar CTORS = {\n\t'int8': Int8Array,\n\t'uint8': Uint8Array,\n\t'uint8_clamped': Uint8ClampedArray,\n\t'int16': Int16Array,\n\t'uint16': Uint16Array,\n\t'int32': Int32Array,\n\t'uint32': Uint32Array,\n\t'float32': Float32Array,\n\t'float64': Float64Array,\n\t'generic': Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = CTORS;\n","'use strict';\n\n// MODULES //\n\nvar partial = require( './partial.js' ),\n\trecurse = require( './recurse.js' );\n\n\n// RANDOM //\n\n/**\n* FUNCTION: random( dims, mu, sigma[, rand] )\n*\tCreates a multidimensional array of normally distributed random numbers.\n*\n* @param {Number[]} dims - dimensions\n* @param {Number} mu - mean parameter\n* @param {Number} sigma - standard deviation\n* @param {Function} [rand=Math.random] - random number generator\n* @returns {Array} multidimensional array filled with normal random numbers\n*/\nfunction random( dims, mu, sigma, rand ) {\n\tvar draw = partial( mu, sigma, rand );\n\treturn recurse( dims, 0, draw );\n} // end FUNCTION random()\n\n\n// EXPORTS //\n\nmodule.exports = random;\n","'use strict';\n\n/**\n* FUNCTION: recurse( dims, d, draw )\n*\tRecursively create a multidimensional array of normally distributed random numbers.\n*\n* @param {Number[]} dims - dimensions\n* @param {Number} d - current recursion depth\n* @param {Function} draw - function to generate normal random numbers with given `mu` and `sigma`\n* @returns {Array} output array\n*/\nfunction recurse( dims, d, draw ) {\n\tvar out = [];\n\tvar len;\n\tvar i;\n\n\tlen = dims[ d ];\n\td += 1;\n\tif ( d < dims.length ) {\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tout.push( recurse( dims, d, draw ) );\n\t\t}\n\t} else {\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tout.push( draw() );\n\t\t}\n\t}\n\treturn out;\n} // end FUNCTION recurse()\n\n\n// EXPORTS //\n\nmodule.exports = recurse;\n","'use strict';\n\n// MODULES //\n\nvar matrix = require( 'dstructs-matrix' );\nvar partial = require( './partial.js' );\n\n\n// RANDOM //\n\n/**\n* FUNCTION: random( dims, dt, mu, sigma[, rand] )\n*\tCreates a matrix of normally distributed random numbers.\n*\n* @param {Number[]} dims - dimensions\n* @param {String} dt - data type\n* @param {Number} mu - mean parameter\n* @param {Number} sigma - standard deviation\n* @param {Function} [rand=Math.random] - random number generator\n* @returns {Matrix} matrix filled with normal random numbers\n*/\nfunction random( dims, dt, mu, sigma, rand ) {\n\tvar out;\n\tvar draw;\n\tvar i;\n\n\tdraw = partial( mu, sigma, rand );\n\tout = matrix( dims, dt );\n\tfor ( i = 0; i < out.length; i++ ) {\n\t\tout.data[ i ] = draw();\n\t}\n\treturn out;\n} // end FUNCTION random()\n\n\n// EXPORTS //\n\nmodule.exports = random;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = require( './matrix.js' );\nmodule.exports.raw = require( './matrix.raw.js' );\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' ),\n\tisNonNegativeIntegerArray = require( 'validate.io-nonnegative-integer-array' ),\n\tcontains = require( 'validate.io-contains' ),\n\tisArray = require( 'validate.io-array' ),\n\tcast = require( 'dstructs-cast-arrays' ),\n\tgetType = require( 'compute-dtype' ),\n\tMatrix = require( './ctor.js' );\n\n\n// VARIABLES //\n\nvar BTYPES = require( './btypes.js' ),\n\tDTYPES = require( './dtypes.js' );\n\n\n// CREATE MATRIX //\n\n/**\n* FUNCTION: matrix( [data,] shape[, dtype] )\n*\tReturns a Matrix instance.\n*\n* @constructor\n* @param {Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} [data] - input typed array\n* @param {Number[]} shape - matrix dimensions/shape\n* @param {String} [dtype=\"float64\"] - matrix data type\n* @returns {Matrix} Matrix instance\n*/\nfunction matrix() {\n\tvar dtype,\n\t\tndims,\n\t\tshape,\n\t\tdata,\n\t\tvFLG,\n\t\tlen,\n\t\tdt,\n\t\ti;\n\n\t// Parse the input arguments (polymorphic interface)...\n\tif ( arguments.length === 1 ) {\n\t\tshape = arguments[ 0 ];\n\t\tvFLG = 2; // arg #s\n\t}\n\telse if ( arguments.length === 2 ) {\n\t\tif ( isString( arguments[ 1 ] ) ) {\n\t\t\tshape = arguments[ 0 ];\n\t\t\tdtype = arguments[ 1 ];\n\t\t\tvFLG = 23; // arg #s\n\t\t} else {\n\t\t\tdata = arguments[ 0 ];\n\t\t\tshape = arguments[ 1 ];\n\t\t\tvFLG = 12; // arg #s\n\t\t}\n\t}\n\telse {\n\t\tdata = arguments[ 0 ];\n\t\tshape = arguments[ 1 ];\n\t\tdtype = arguments[ 2 ];\n\t\tvFLG = 123; // arg #s\n\t}\n\n\t// Input argument validation...\n\tif ( !isNonNegativeIntegerArray( shape ) ) {\n\t\tthrow new TypeError( 'invalid input argument. A matrix shape must be an array of nonnegative integers. Value: `' + shape + '`.' );\n\t}\n\tndims = shape.length;\n\tif ( ndims !== 2 ) {\n\t\tthrow new Error( 'invalid input argument. Shape must be a 2-element array. Value: `' + shape + '`.' );\n\t}\n\t// If a `dtype` has been provided, validate...\n\tif ( vFLG === 123 || vFLG === 23 ) {\n\t\tif ( !contains( DTYPES, dtype ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Unrecognized/unsupported data type. Value: `' + dtype + '`.' );\n\t\t}\n\t} else {\n\t\tdtype = 'float64';\n\t}\n\tlen = 1;\n\tfor ( i = 0; i < ndims; i++ ) {\n\t\tlen *= shape[ i ];\n\t}\n\t// If a `data` argument has been provided, validate...\n\tif ( vFLG === 123 || vFLG === 12 ) {\n\t\tdt = getType( data );\n\t\tif ( !contains( DTYPES, dt ) && !isArray( data ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Input data must be a valid type. Consult the documentation for a list of valid data types. Value: `' + data + '`.' );\n\t\t}\n\t\tif ( len !== data.length ) {\n\t\t\tthrow new Error( 'invalid input argument. Matrix shape does not match the input data length.' );\n\t\t}\n\t\t// Only cast if either 1) both a `data` and `dtype` argument have been provided and they do not agree or 2) when provided a plain Array...\n\t\tif ( ( vFLG === 123 && dt !== dtype ) || dt === 'generic' ) {\n\t\t\tdata = cast( data, dtype );\n\t\t} else {\n\t\t\tdtype = dt;\n\t\t}\n\t} else {\n\t\t// Initialize a zero-filled typed array:\n\t\tdata = new BTYPES[ dtype ]( len );\n\t}\n\t// Return a new Matrix instance:\n\treturn new Matrix( data, dtype, shape, 0, [shape[1],1] );\n} // end FUNCTION matrix()\n\n\n// EXPORTS //\n\nmodule.exports = matrix;\n","/**\n*\n*\tVALIDATE: nan-primitive\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a NaN primitive.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: nan( value )\n*\tValidates if a value is a NaN primitive.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether the value is a NaN primitive\n*/\nfunction nan( value ) {\n\treturn typeof value === 'number' && value !== value;\n} // end FUNCTION nan()\n\n\n// EXPORTS //\n\nmodule.exports = nan;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = 4294967295; // 2**32 - 1\n","'use strict';\n\n// DTYPES //\n\nvar DTYPES = require( './dtypes.js' );\n\n\n// GET DTYPE //\n\n/**\n* FUNCTION: getType( name )\n*\tReturns an array data type corresponding to an array constructor name.\n*\n* @param {String} name - constructor name\n* @returns {String|Null} array data type or null\n*/\nfunction getType( name ) {\n\treturn DTYPES[ name ] || null;\n} // end FUNCTION getType()\n\n\n// EXPORTS //\n\nmodule.exports = getType;\n","'use strict';\n\nvar DTYPES = {\n\t'Int8Array': 'int8',\n\t'Uint8Array': 'uint8',\n\t'Uint8ClampedArray': 'uint8_clamped',\n\t'Int16Array': 'int16',\n\t'Uint16Array': 'uint16',\n\t'Int32Array': 'int32',\n\t'Uint32Array': 'uint32',\n\t'Float32Array': 'float32',\n\t'Float64Array': 'float64',\n\t'Array': 'generic'\n};\n\n\n// EXPORTS //\n\nmodule.exports = DTYPES;\n","'use strict';\n\n// CTORS //\n\nvar CTORS = require( './ctors.js' );\n\n\n// GET CTOR //\n\n/**\n* FUNCTION: getCtor( dtype )\n*\tReturns an array constructor corresponding to an input data type.\n*\n* @param {String} dtype - data type\n* @returns {Function|Null} array constructor or null\n*/\nfunction getCtor( dtype ) {\n\treturn CTORS[ dtype ] || null;\n} // end FUNCTION getCtor()\n\n\n// EXPORTS //\n\nmodule.exports = getCtor;\n","'use strict';\n\nvar CTORS = {\n\t'int8': Int8Array,\n\t'uint8': Uint8Array,\n\t'uint8_clamped': Uint8ClampedArray,\n\t'int16': Int16Array,\n\t'uint16': Uint16Array,\n\t'int32': Int32Array,\n\t'uint32': Uint32Array,\n\t'float32': Float32Array,\n\t'float64': Float64Array,\n\t'generic': Array\n};\n\n\n// EXPORTS //\n\nmodule.exports = CTORS;\n","'use strict';\n\n// DTYPES //\n\nvar DTYPES = require( './dtypes.js' );\n\n\n// GET DTYPE //\n\n/**\n* FUNCTION: getType( name )\n*\tReturns an array data type corresponding to an array constructor name.\n*\n* @param {String} name - constructor name\n* @returns {String|Null} array data type or null\n*/\nfunction getType( name ) {\n\treturn DTYPES[ name ] || null;\n} // end FUNCTION getType()\n\n\n// EXPORTS //\n\nmodule.exports = getType;\n","'use strict';\n\nvar DTYPES = {\n\t'Int8Array': 'int8',\n\t'Uint8Array': 'uint8',\n\t'Uint8ClampedArray': 'uint8_clamped',\n\t'Int16Array': 'int16',\n\t'Uint16Array': 'uint16',\n\t'Int32Array': 'int32',\n\t'Uint32Array': 'uint32',\n\t'Float32Array': 'float32',\n\t'Float64Array': 'float64',\n\t'Array': 'generic'\n};\n\n\n// EXPORTS //\n\nmodule.exports = DTYPES;\n","'use strict';\n\n// MATRIX //\n\n/**\n* FUNCTION: Matrix( data, dtype, shape, offset, strides )\n*\tMatrix constructor.\n*\n* @constructor\n* @param {Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} data - input typed array\n* @param {String} dtype - matrix data type\n* @param {Number[]} shape - matrix dimensions/shape\n* @param {Number} offset - matrix offset\n* @param {Number[]} strides - matrix strides\n* @returns {Matrix} Matrix instance\n*/\nfunction Matrix( data, dtype, shape, offset, strides ) {\n\tif ( !( this instanceof Matrix ) ) {\n\t\treturn new Matrix( data, dtype, shape, offset, strides );\n\t}\n\t// Underlying data type:\n\tObject.defineProperty( this, 'dtype', {\n\t\t'value': dtype,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': false\n\t});\n\n\t// Matrix dimensions:\n\tObject.defineProperty( this, 'shape', {\n\t\t'value': shape,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': false\n\t});\n\n\t// Matrix strides:\n\tObject.defineProperty( this, 'strides', {\n\t\t'value': strides,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': false\n\t});\n\n\t// Matrix offset:\n\tObject.defineProperty( this, 'offset', {\n\t\t'value': offset,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': true\n\t});\n\n\t// Number of matrix dimensions:\n\tObject.defineProperty( this, 'ndims', {\n\t\t'value': shape.length,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': false\n\t});\n\n\t// Matrix length:\n\tObject.defineProperty( this, 'length', {\n\t\t'value': data.length,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': false\n\t});\n\n\t// Number of bytes used by the matrix elements:\n\tObject.defineProperty( this, 'nbytes', {\n\t\t'value': data.byteLength,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': false\n\t});\n\n\t// Matrix data store:\n\tObject.defineProperty( this, 'data', {\n\t\t'value': data,\n\t\t'configurable': false,\n\t\t'enumerable': true,\n\t\t'writable': false\n\t});\n\n\treturn this;\n} // end FUNCTION Matrix()\n\n\n// METHODS //\n\nMatrix.prototype.set = require( './set.js' );\nMatrix.prototype.iset = require( './iset.js' );\nMatrix.prototype.mset = require( './mset.js' );\nMatrix.prototype.sset = require( './sset.js' );\n\nMatrix.prototype.get = require( './get.js' );\nMatrix.prototype.iget = require( './iget.js' );\nMatrix.prototype.mget = require( './mget.js' );\nMatrix.prototype.sget = require( './sget.js' );\n\nMatrix.prototype.toString = require( './tostring.js' );\nMatrix.prototype.toJSON = require( './tojson.js' );\n\n\n// EXPORTS //\n\nmodule.exports = Matrix;\n","'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( 'validate.io-nonnegative-integer' ),\n\tisnan = require( 'validate.io-nan' ),\n\tisNumber = require( 'validate.io-number-primitive' );\n\n\n// SET //\n\n/**\n* FUNCTION: set( i, j, value )\n*\tSets a matrix element based on the provided row and column indices.\n*\n* @param {Number} i - row index\n* @param {Number} j - column index\n* @param {Number} value - value to set\n* @returns {Matrix} Matrix instance\n*/\nfunction set( i, j, v ) {\n\t/* jshint validthis: true */\n\tif ( !isNonNegativeInteger( i ) || !isNonNegativeInteger( j ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Row and column indices must be nonnegative integers. Values: `[' + i + ',' + j + ']`.' );\n\t}\n\tif ( !isNumber( v ) && !isnan( v ) ) {\n\t\tthrow new TypeError( 'invalid input argument. An input value must be a number primitive. Value: `' + v + '`.' );\n\t}\n\ti = this.offset + i*this.strides[0] + j*this.strides[1];\n\tif ( i >= 0 ) {\n\t\tthis.data[ i ] = v;\n\t}\n\treturn this;\n} // end FUNCTION set()\n\n\n// EXPORTS //\n\nmodule.exports = set;\n","'use strict';\n\n// MODULES //\n\nvar isInteger = require( 'validate.io-integer-primitive' ),\n\tisnan = require( 'validate.io-nan' ),\n\tisNumber = require( 'validate.io-number-primitive' );\n\n\n// ISET //\n\n/**\n* FUNCTION: iset( idx, value )\n*\tSets a matrix element located at a specified index.\n*\n* @param {Number} idx - linear index\n* @param {Number} value - value to set\n* @returns {Matrix} Matrix instance\n*/\nfunction iset( idx, v ) {\n\t/* jshint validthis: true */\n\tvar r, j;\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( 'invalid input argument. An index must be an integer. Value: `' + idx + '`.' );\n\t}\n\tif ( !isNumber( v ) && !isnan( v ) ) {\n\t\tthrow new TypeError( 'invalid input argument. An input value must be a number primitive. Value: `' + v + '`.' );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += this.length;\n\t\tif ( idx < 0 ) {\n\t\t\treturn this;\n\t\t}\n\t}\n\tj = idx % this.strides[ 0 ];\n\tr = idx - j;\n\tif ( this.strides[ 0 ] < 0 ) {\n\t\tr = -r;\n\t}\n\tthis.data[ this.offset + r + j*this.strides[1] ] = v;\n\treturn this;\n} // end FUNCTION iset()\n\n\n// EXPORTS //\n\nmodule.exports = iset;\n","'use strict';\n\n// MODULES //\n\nvar isFunction = require( 'validate.io-function' ),\n\tisnan = require( 'validate.io-nan' ),\n\tisNumber = require( 'validate.io-number-primitive' ),\n\tisNonNegativeIntegerArray = require( 'validate.io-nonnegative-integer-array' );\n\n\n// FUNCTIONS //\n\nvar mset1 = require( './mset1.js' ),\n\tmset2 = require( './mset2.js' ),\n\tmset3 = require( './mset3.js' ),\n\tmset4 = require( './mset4.js' ),\n\tmset5 = require( './mset5.js' ),\n\tmset6 = require( './mset6.js' );\n\n/**\n* FUNCTION: getIndices( idx, len )\n*\tValidates and returns an array of indices.\n*\n* @private\n* @param {Number[]|Null} idx - indices\n* @param {Number} len - max index\n* @returns {Number[]} indices\n*/\nfunction getIndices( idx, len ) {\n\tvar out,\n\t\ti;\n\tif ( idx === null ) {\n\t\tout = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tout[ i ] = i;\n\t\t}\n\t}\n\telse if ( isNonNegativeIntegerArray( idx ) ) {\n\t\tout = [];\n\t\tfor ( i = 0; i < idx.length; i++ ) {\n\t\t\tif ( idx[ i ] < len ) {\n\t\t\t\tout.push( idx[ i ] );\n\t\t\t}\n\t\t}\n\t}\n\telse {\n\t\tthrow new TypeError( 'invalid input argument. Row and column indices must be arrays of nonnegative integers. Value: `' + idx + '`.' );\n\t}\n\treturn out;\n} // end FUNCTION getIndices()\n\n\n// MSET //\n\n/**\n* FUNCTION: mset( i[, j], value[, thisArg] )\n*\tSets multiple matrix elements. If provided a single array, `i` is treated as an array of linear indices.\n*\n* @param {Number[]|Null} i - linear/row indices\n* @param {Number[]|Null} [j] - column indices\n* @param {Number|Matrix|Function} value - either a single numeric value, a matrix containing the values to set, or a function which returns a numeric value\n* @returns {Matrix} Matrix instance\n*/\nfunction mset() {\n\t/*jshint validthis:true */\n\tvar nargs = arguments.length,\n\t\targs,\n\t\trows,\n\t\tcols,\n\t\ti;\n\n\targs = new Array( nargs );\n\tfor ( i = 0; i < nargs; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\n\t// 2 input arguments...\n\tif ( nargs < 3 ) {\n\t\tif ( !isNonNegativeIntegerArray( args[ 0 ] ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. First argument must be an array of nonnegative integers. Value: `' + args[ 0 ] + '`.' );\n\t\t}\n\t\t// indices, clbk\n\t\tif ( isFunction( args[ 1 ] ) ) {\n\t\t\tmset2( this, args[ 0 ], args[ 1 ] );\n\t\t}\n\t\t// indices, number\n\t\telse if ( isNumber( args[ 1 ] ) || isnan( args[ 1 ] ) ) {\n\t\t\tmset1( this, args[ 0 ], args[ 1 ] );\n\t\t}\n\t\t// indices, matrix\n\t\telse {\n\t\t\t// NOTE: no validation for Matrix instance.\n\t\t\tmset3( this, args[ 0 ], args[ 1 ] );\n\t\t}\n\t}\n\t// 3 input arguments...\n\telse if ( nargs === 3 ) {\n\t\t// indices, clbk, context\n\t\tif ( isFunction( args[ 1 ] ) ) {\n\t\t\tif ( !isNonNegativeIntegerArray( args[ 0 ] ) ) {\n\t\t\t\tthrow new TypeError( 'invalid input argument. First argument must be an array of nonnegative integers. Value: `' + args[ 0 ] + '`.' );\n\t\t\t}\n\t\t\tmset2( this, args[ 0 ], args[ 1 ], args[ 2 ] );\n\t\t}\n\t\t// rows, cols, function\n\t\telse if ( isFunction( args[ 2 ] ) ) {\n\t\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\t\t\tmset4( this, rows, cols, args[ 2 ], this );\n\t\t}\n\t\t// rows, cols, number\n\t\telse if ( isNumber( args[ 2 ] ) ) {\n\t\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\t\t\tmset5( this, rows, cols, args[ 2 ] );\n\t\t}\n\t\t// rows, cols, matrix\n\t\telse {\n\t\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\n\t\t\t// NOTE: no validation for Matrix instance.\n\t\t\tmset6( this, rows, cols, args[ 2 ] );\n\t\t}\n\t}\n\t// 4 input arguments...\n\telse {\n\t\t// rows, cols, function, context\n\t\tif ( !isFunction( args[ 2 ] ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Callback argument must be a function. Value: `' + args[ 2 ] + '`.' );\n\t\t}\n\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\t\tmset4( this, rows, cols, args[ 2 ], args[ 3 ] );\n\t}\n\treturn this;\n} // end FUNCTION mset()\n\n\n// EXPORTS //\n\nmodule.exports = mset;\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' ),\n\tisNumber = require( 'validate.io-number-primitive' ),\n\tisFunction = require( 'validate.io-function' ),\n\tispace = require( 'compute-indexspace' );\n\n\n// SUBSEQUENCE SET //\n\n/**\n* FUNCTION: sset( subsequence, value[, thisArg] )\n*\tSets matrix elements according to a specified subsequence.\n*\n* @param {String} subsequence - subsequence string\n* @param {Number|Matrix|Function} value - either a single numeric value, a matrix containing the values to set, or a function which returns a numeric value\n* @param {Object} [thisArg] - `this` context when executing a callback\n* @returns {Matrix} Matrix instance\n*/\nfunction sset( seq, val, thisArg ) {\n\t/* jshint validthis: true */\n\tvar nRows,\n\t\tnCols,\n\t\tclbk,\n\t\trows,\n\t\tcols,\n\t\tseqs,\n\t\tmat,\n\t\tctx,\n\t\ts0, s1, s2, s3,\n\t\to0, o1,\n\t\tr0, r1,\n\t\ti, j, k;\n\n\tif ( !isString( seq ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Must provide a string primitive. Value: `' + seq + '`.' );\n\t}\n\tseqs = seq.split( ',' );\n\tif ( seqs.length !== 2 ) {\n\t\tthrow new Error( 'invalid input argument. Subsequence string must specify row and column subsequences. Value: `' + seq + '`.' );\n\t}\n\tif ( isFunction( val ) ) {\n\t\tclbk = val;\n\t}\n\telse if ( !isNumber( val ) ) {\n\t\tmat = val;\n\t}\n\trows = ispace( seqs[ 0 ], this.shape[ 0 ] );\n\tcols = ispace( seqs[ 1 ], this.shape[ 1 ] );\n\n\tnRows = rows.length;\n\tnCols = cols.length;\n\n\tif ( !( nRows && nCols ) ) {\n\t\treturn this;\n\t}\n\ts0 = this.strides[ 0 ];\n\ts1 = this.strides[ 1 ];\n\to0 = this.offset;\n\n\t// Callback...\n\tif ( clbk ) {\n\t\tif ( arguments.length > 2 ) {\n\t\t\tctx = thisArg;\n\t\t} else {\n\t\t\tctx = this;\n\t\t}\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr0 = o0 + rows[i]*s0;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\tk = r0 + cols[j]*s1;\n\t\t\t\tthis.data[ k ] = clbk.call( ctx, this.data[ k ], rows[i], cols[j], k );\n\t\t\t}\n\t\t}\n\t}\n\t// Input matrix...\n\telse if ( mat ) {\n\t\tif ( nRows !== mat.shape[ 0 ] ) {\n\t\t\tthrow new Error( 'invalid input arguments. Row subsequence does not match input matrix dimensions. Expected a [' + nRows + ',' + nCols + '] matrix and instead received a [' + mat.shape.join( ',' ) + '] matrix.' );\n\t\t}\n\t\tif ( nCols !== mat.shape[ 1 ] ) {\n\t\t\tthrow new Error( 'invalid input arguments. Column subsequence does not match input matrix dimensions. Expected a [' + nRows + ',' + nCols + '] matrix and instead received a [' + mat.shape.join( ',' ) + '] matrix.' );\n\t\t}\n\t\ts2 = mat.strides[ 0 ];\n\t\ts3 = mat.strides[ 1 ];\n\t\to1 = mat.offset;\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr0 = o0 + rows[i]*s0;\n\t\t\tr1 = o1 + i*s2;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\tthis.data[ r0 + cols[j]*s1 ] = mat.data[ r1 + j*s3 ];\n\t\t\t}\n\t\t}\n\t}\n\t// Single numeric value...\n\telse {\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr0 = o0 + rows[i]*s0;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\tthis.data[ r0 + cols[j]*s1 ] = val;\n\t\t\t}\n\t\t}\n\t}\n\treturn this;\n} // end FUNCTION sset()\n\n\n// EXPORTS //\n\nmodule.exports = sset;\n","'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( 'validate.io-nonnegative-integer' );\n\n\n// GET //\n\n/**\n* FUNCTION: get( i, j )\n*\tReturns a matrix element based on the provided row and column indices.\n*\n* @param {Number} i - row index\n* @param {Number} j - column index\n* @returns {Number|Undefined} matrix element\n*/\nfunction get( i, j ) {\n\t/*jshint validthis:true */\n\tif ( !isNonNegativeInteger( i ) || !isNonNegativeInteger( j ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Indices must be nonnegative integers. Values: `[' + i + ','+ j + ']`.' );\n\t}\n\treturn this.data[ this.offset + i*this.strides[0] + j*this.strides[1] ];\n} // end FUNCTION get()\n\n\n// EXPORTS //\n\nmodule.exports = get;\n","'use strict';\n\n// MODULES //\n\nvar isInteger = require( 'validate.io-integer-primitive' );\n\n\n// IGET //\n\n/**\n* FUNCTION: iget( idx )\n*\tReturns a matrix element located at a specified index.\n*\n* @param {Number} idx - linear index\n* @returns {Number|Undefined} matrix element\n*/\nfunction iget( idx ) {\n\t/*jshint validthis:true */\n\tvar r, j;\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Must provide a integer. Value: `' + idx + '`.' );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += this.length;\n\t\tif ( idx < 0 ) {\n\t\t\treturn;\n\t\t}\n\t}\n\tj = idx % this.strides[ 0 ];\n\tr = idx - j;\n\tif ( this.strides[ 0 ] < 0 ) {\n\t\tr = -r;\n\t}\n\treturn this.data[ this.offset + r + j*this.strides[1] ];\n} // end FUNCTION iget()\n\n\n// EXPORTS //\n\nmodule.exports = iget;\n","'use strict';\n\n// MODULES //\n\nvar isNonNegativeIntegerArray = require( 'validate.io-nonnegative-integer-array' );\n\n\n// VARIABLES //\n\nvar BTYPES = require( './btypes.js' );\n\n\n// MGET //\n\n/**\n* FUNCTION: mget( i[, j] )\n*\tReturns multiple matrix elements. If provided a single argument, `i` is treated as an array of linear indices.\n*\n* @param {Number[]|Null} i - linear/row indices\n* @param {Number[]|Null} [j] - column indices\n* @returns {Matrix} a new Matrix instance\n*/\nfunction mget( rows, cols ) {\n\t/*jshint validthis:true */\n\tvar nRows,\n\t\tnCols,\n\t\tout,\n\t\tsgn,\n\t\td,\n\t\ts0, s1, s2, s3,\n\t\to,\n\t\tr, dr,\n\t\ti, j, m, n;\n\n\ts0 = this.strides[ 0 ];\n\ts1 = this.strides[ 1 ];\n\to = this.offset;\n\n\tif ( arguments.length < 2 ) {\n\t\tif ( !isNonNegativeIntegerArray( rows ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. Linear indices must be specified as a nonnegative integer array. Value: `' + rows + '`.' );\n\t\t}\n\t\t// Filter the input indices to ensure within bounds...\n\t\ti = [];\n\t\tfor ( n = 0; n < rows.length; n++ ) {\n\t\t\tif ( rows[ n ] < this.length ) {\n\t\t\t\ti.push( rows[ n ] );\n\t\t\t}\n\t\t}\n\t\tm = i.length;\n\n\t\t// Create a row vector (matrix):\n\t\td = new BTYPES[ this.dtype ]( m );\n\t\tout = new this.constructor( d, this.dtype, [1,m], 0, [m,1] );\n\n\t\tsgn = ( s0 < 0 ) ? -1 : 1;\n\t\tfor ( n = 0; n < m; n++ ) {\n\t\t\tj = i[ n ] % s0;\n\t\t\tr = sgn * ( i[n] - j );\n\t\t\td[ n ] = this.data[ o + r + j*s1 ];\n\t\t}\n\t} else {\n\t\tnRows = this.shape[ 0 ];\n\t\tif ( rows === null ) {\n\t\t\ti = new Array( nRows );\n\t\t\tfor ( n = 0; n < nRows; n++ ) {\n\t\t\t\ti[ n ] = n;\n\t\t\t}\n\t\t}\n\t\telse if ( isNonNegativeIntegerArray( rows ) ) {\n\t\t\ti = [];\n\t\t\tfor ( n = 0; n < rows.length; n++ ) {\n\t\t\t\tif ( rows[ n ] < nRows ) {\n\t\t\t\t\ti.push( rows[ n ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthrow new TypeError( 'invalid input argument. Row indices must be specified as a nonnegative integer array. Value: `' + rows + '`.' );\n\t\t}\n\n\t\tnCols = this.shape[ 1 ];\n\t\tif ( cols === null ) {\n\t\t\tj = new Array( nCols );\n\t\t\tfor ( n = 0; n < nCols; n++ ) {\n\t\t\t\tj[ n ] = n;\n\t\t\t}\n\t\t}\n\t\telse if ( isNonNegativeIntegerArray( cols ) ) {\n\t\t\tj = [];\n\t\t\tfor ( n = 0; n < cols.length; n++ ) {\n\t\t\t\tif ( cols[ n ] < nCols ) {\n\t\t\t\t\tj.push( cols[ n ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthrow new TypeError( 'invalid input argument. Column indices must be specified as a nonnegative integer array. Value: `' + cols + '`.' );\n\t\t}\n\t\tnRows = i.length;\n\t\tnCols = j.length;\n\n\t\td = new BTYPES[ this.dtype ]( nRows*nCols );\n\t\tout = new this.constructor( d, this.dtype, [nRows,nCols], 0, [nCols,1]);\n\n\t\ts2 = out.strides[ 0 ];\n\t\ts3 = out.strides[ 1 ];\n\t\tfor ( m = 0; m < nRows; m++ ) {\n\t\t\tr = o + i[m]*s0;\n\t\t\tdr = m * s2;\n\t\t\tfor ( n = 0; n < nCols; n++ ) {\n\t\t\t\td[ dr + n*s3 ] = this.data[ r + j[n]*s1 ];\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n} // end FUNCTION mget()\n\n\n// EXPORTS //\n\nmodule.exports = mget;\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' ),\n\tispace = require( 'compute-indexspace' );\n\n\n// VARIABLES //\n\nvar BTYPES = require( './btypes.js' );\n\n\n// SUBSEQUENCE GET //\n\n/**\n* FUNCTION: sget( subsequence )\n*\tReturns matrix elements according to a specified subsequence.\n*\n* @param {String} subsequence - subsequence string\n* @returns {Matrix} Matrix instance\n*/\nfunction sget( seq ) {\n\t/*jshint validthis:true */\n\tvar nRows,\n\t\tnCols,\n\t\trows,\n\t\tcols,\n\t\tseqs,\n\t\tmat,\n\t\tlen,\n\t\ts0, s1,\n\t\to,\n\t\td,\n\t\tr, dr,\n\t\ti, j;\n\n\tif ( !isString( seq ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Must provide a string primitive. Value: `' + seq + '`.' );\n\t}\n\tseqs = seq.split( ',' );\n\tif ( seqs.length !== 2 ) {\n\t\tthrow new Error( 'invalid input argument. Subsequence string must specify row and column subsequences. Value: `' + seq + '`.' );\n\t}\n\trows = ispace( seqs[ 0 ], this.shape[ 0 ] );\n\tcols = ispace( seqs[ 1 ], this.shape[ 1 ] );\n\n\tnRows = rows.length;\n\tnCols = cols.length;\n\tlen = nRows * nCols;\n\n\td = new BTYPES[ this.dtype ]( len );\n\tmat = new this.constructor( d, this.dtype, [nRows,nCols], 0, [nCols,1] );\n\n\tif ( len ) {\n\t\ts0 = this.strides[ 0 ];\n\t\ts1 = this.strides[ 1 ];\n\t\to = this.offset;\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr = o + rows[i]*s0;\n\t\t\tdr = i * nCols;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\td[ dr + j ] = this.data[ r + cols[j]*s1 ];\n\t\t\t}\n\t\t}\n\t}\n\treturn mat;\n} // end FUNCTION sget()\n\n\n// EXPORTS //\n\nmodule.exports = sget;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = Number.POSITIVE_INFINITY;\n","'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' );\nvar isBuffer = require( 'validate.io-buffer' );\nvar typeName = require( 'type-name' );\nvar regex = require( 'utils-regex-from-string' );\nvar copyError = require( 'utils-copy-error' );\nvar indexOf = require( 'utils-indexof' );\nvar objectKeys = require( 'object-keys' );\nvar typedArrays = require( './typedarrays.js' );\n\n\n// FUNCTIONS //\n\n/**\n* FUNCTION: cloneInstance( val )\n*\tClones a class instance.\n*\n*\tWARNING: this should only be used for simple cases. Any instances with privileged access to variables (e.g., within closures) cannot be cloned. This approach should be considered fragile.\n*\n*\tNOTE: the function is greedy, disregarding the notion of a 'level'. Instead, the function deep copies all properties, as we assume the concept of 'level' applies only to the class instance reference but not to its internal state. This prevents, in theory, two instances from sharing state.\n*\n* @private\n* @param {Object} val - class instance\n* @returns {Object} new instance\n*/\nfunction cloneInstance( val ) {\n\tvar cache = [];\n\tvar refs = [];\n\tvar names;\n\tvar name;\n\tvar desc;\n\tvar tmp;\n\tvar ref;\n\tvar i;\n\n\tref = Object.create( Object.getPrototypeOf( val ) );\n\tcache.push( val );\n\trefs.push( ref );\n\n\tnames = Object.getOwnPropertyNames( val );\n\tfor ( i = 0; i < names.length; i++ ) {\n\t\tname = names[ i ];\n\t\tdesc = Object.getOwnPropertyDescriptor( val, name );\n\t\tif ( desc.hasOwnProperty( 'value' ) ) {\n\t\t\ttmp = ( isArray( val[name] ) ) ? [] : {};\n\t\t\tdesc.value = deepCopy( val[name], tmp, cache, refs, -1 );\n\t\t}\n\t\tObject.defineProperty( ref, name, desc );\n\t}\n\tif ( !Object.isExtensible( val ) ) {\n\t\tObject.preventExtensions( ref );\n\t}\n\tif ( Object.isSealed( val ) ) {\n\t\tObject.seal( ref );\n\t}\n\tif ( Object.isFrozen( val ) ) {\n\t\tObject.freeze( ref );\n\t}\n\treturn ref;\n} // end FUNCTION cloneInstance()\n\n\n// DEEP COPY //\n\n/**\n* FUNCTION: deepCopy( val, copy, cache, refs, level )\n*\tRecursively performs a deep copy of an input object.\n*\n* @private\n* @param {Array|Object} val - value to copy\n* @param {Array|Object} copy - copy\n* @param {Array} cache - an array of visited objects\n* @param {Array} refs - an array of object references\n* @param {Number} level - copy depth\n* @returns {*} deep copy\n*/\nfunction deepCopy( val, copy, cache, refs, level ) {\n\tvar parent;\n\tvar keys;\n\tvar name;\n\tvar desc;\n\tvar ctor;\n\tvar key;\n\tvar ref;\n\tvar x;\n\tvar i;\n\tvar j;\n\n\tlevel = level - 1;\n\n\t// Primitives and functions...\n\tif (\n\t\ttypeof val !== 'object' ||\n\t\tval === null\n\t) {\n\t\treturn val;\n\t}\n\tif ( isBuffer( val ) ) {\n\t\treturn new Buffer( val );\n\t}\n\tif ( val instanceof Error ) {\n\t\treturn copyError( val );\n\t}\n\t// Objects...\n\tname = typeName( val );\n\n\tif ( name === 'Date' ) {\n\t\treturn new Date( +val );\n\t}\n\tif ( name === 'RegExp' ) {\n\t\treturn regex( val.toString() );\n\t}\n\tif ( name === 'Set' ) {\n\t\treturn new Set( val );\n\t}\n\tif ( name === 'Map' ) {\n\t\treturn new Map( val );\n\t}\n\tif (\n\t\tname === 'String' ||\n\t\tname === 'Boolean' ||\n\t\tname === 'Number'\n\t) {\n\t\t// Return an equivalent primitive!\n\t\treturn val.valueOf();\n\t}\n\tctor = typedArrays[ name ];\n\tif ( ctor ) {\n\t\treturn ctor( val );\n\t}\n\t// Class instances...\n\tif (\n\t\tname !== 'Array' &&\n\t\tname !== 'Object'\n\t) {\n\t\t// Cloning requires ES5 or higher...\n\t\tif ( typeof Object.freeze === 'function' ) {\n\t\t\treturn cloneInstance( val );\n\t\t}\n\t\treturn {};\n\t}\n\t// Arrays and plain objects...\n\tkeys = objectKeys( val );\n\tif ( level > 0 ) {\n\t\tparent = name;\n\t\tfor ( j = 0; j < keys.length; j++ ) {\n\t\t\tkey = keys[ j ];\n\t\t\tx = val[ key ];\n\n\t\t\t// Primitive, Buffer, special class instance...\n\t\t\tname = typeName( x );\n\t\t\tif (\n\t\t\t\ttypeof x !== 'object' ||\n\t\t\t\tx === null ||\n\t\t\t\t(\n\t\t\t\t\tname !== 'Array' &&\n\t\t\t\t\tname !== 'Object'\n\t\t\t\t) ||\n\t\t\t\tisBuffer( x )\n\t\t\t) {\n\t\t\t\tif ( parent === 'Object' ) {\n\t\t\t\t\tdesc = Object.getOwnPropertyDescriptor( val, key );\n\t\t\t\t\tif ( desc.hasOwnProperty( 'value' ) ) {\n\t\t\t\t\t\tdesc.value = deepCopy( x );\n\t\t\t\t\t}\n\t\t\t\t\tObject.defineProperty( copy, key, desc );\n\t\t\t\t} else {\n\t\t\t\t\tcopy[ key ] = deepCopy( x );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Circular reference...\n\t\t\ti = indexOf( cache, x );\n\t\t\tif ( i !== -1 ) {\n\t\t\t\tcopy[ key ] = refs[ i ];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// Plain array or object...\n\t\t\tref = ( isArray(x) ) ? [] : {};\n\t\t\tcache.push( x );\n\t\t\trefs.push( ref );\n\t\t\tif ( parent === 'Array' ) {\n\t\t\t\tcopy[ key ] = deepCopy( x, ref, cache, refs, level );\n\t\t\t} else {\n\t\t\t\tdesc = Object.getOwnPropertyDescriptor( val, key );\n\t\t\t\tif ( desc.hasOwnProperty( 'value' ) ) {\n\t\t\t\t\tdesc.value = deepCopy( x, ref, cache, refs, level );\n\t\t\t\t}\n\t\t\t\tObject.defineProperty( copy, key, desc );\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ( name === 'Array' ) {\n\t\t\tfor ( j = 0; j < keys.length; j++ ) {\n\t\t\t\tkey = keys[ j ];\n\t\t\t\tcopy[ key ] = val[ key ];\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( j = 0; j < keys.length; j++ ) {\n\t\t\t\tkey = keys[ j ];\n\t\t\t\tdesc = Object.getOwnPropertyDescriptor( val, key );\n\t\t\t\tObject.defineProperty( copy, key, desc );\n\t\t\t}\n\t\t}\n\t}\n\tif ( !Object.isExtensible( val ) ) {\n\t\tObject.preventExtensions( copy );\n\t}\n\tif ( Object.isSealed( val ) ) {\n\t\tObject.seal( copy );\n\t}\n\tif ( Object.isFrozen( val ) ) {\n\t\tObject.freeze( copy );\n\t}\n\treturn copy;\n} // end FUNCTION deepCopy()\n\n\n// EXPORTS //\n\nmodule.exports = deepCopy;\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n *     incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n  ? global.TYPED_ARRAY_SUPPORT\n  : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n  try {\n    var arr = new Uint8Array(1)\n    arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n    return arr.foo() === 42 && // typed array instances can be augmented\n        typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n        arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n  } catch (e) {\n    return false\n  }\n}\n\nfunction kMaxLength () {\n  return Buffer.TYPED_ARRAY_SUPPORT\n    ? 0x7fffffff\n    : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n  if (kMaxLength() < length) {\n    throw new RangeError('Invalid typed array length')\n  }\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = new Uint8Array(length)\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    if (that === null) {\n      that = new Buffer(length)\n    }\n    that.length = length\n  }\n\n  return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n    return new Buffer(arg, encodingOrOffset, length)\n  }\n\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new Error(\n        'If encoding is specified then the first argument must be a string'\n      )\n    }\n    return allocUnsafe(this, arg)\n  }\n  return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n  arr.__proto__ = Buffer.prototype\n  return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n    return fromArrayBuffer(that, value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(that, value, encodingOrOffset)\n  }\n\n  return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n  Buffer.prototype.__proto__ = Uint8Array.prototype\n  Buffer.__proto__ = Uint8Array\n  if (typeof Symbol !== 'undefined' && Symbol.species &&\n      Buffer[Symbol.species] === Buffer) {\n    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n    Object.defineProperty(Buffer, Symbol.species, {\n      value: null,\n      configurable: true\n    })\n  }\n}\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be a number')\n  } else if (size < 0) {\n    throw new RangeError('\"size\" argument must not be negative')\n  }\n}\n\nfunction alloc (that, size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(that, size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpretted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(that, size).fill(fill, encoding)\n      : createBuffer(that, size).fill(fill)\n  }\n  return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n  assertSize(size)\n  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) {\n    for (var i = 0; i < size; ++i) {\n      that[i] = 0\n    }\n  }\n  return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  var length = byteLength(string, encoding) | 0\n  that = createBuffer(that, length)\n\n  var actual = that.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    that = that.slice(0, actual)\n  }\n\n  return that\n}\n\nfunction fromArrayLike (that, array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  that = createBuffer(that, length)\n  for (var i = 0; i < length; i += 1) {\n    that[i] = array[i] & 255\n  }\n  return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n  array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\\'offset\\' is out of bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\\'length\\' is out of bounds')\n  }\n\n  if (byteOffset === undefined && length === undefined) {\n    array = new Uint8Array(array)\n  } else if (length === undefined) {\n    array = new Uint8Array(array, byteOffset)\n  } else {\n    array = new Uint8Array(array, byteOffset, length)\n  }\n\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    // Return an augmented `Uint8Array` instance, for best performance\n    that = array\n    that.__proto__ = Buffer.prototype\n  } else {\n    // Fallback: Return an object instance of the Buffer class\n    that = fromArrayLike(that, array)\n  }\n  return that\n}\n\nfunction fromObject (that, obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    that = createBuffer(that, len)\n\n    if (that.length === 0) {\n      return that\n    }\n\n    obj.copy(that, 0, 0, len)\n    return that\n  }\n\n  if (obj) {\n    if ((typeof ArrayBuffer !== 'undefined' &&\n        obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n      if (typeof obj.length !== 'number' || isnan(obj.length)) {\n        return createBuffer(that, 0)\n      }\n      return fromArrayLike(that, obj)\n    }\n\n    if (obj.type === 'Buffer' && isArray(obj.data)) {\n      return fromArrayLike(that, obj.data)\n    }\n  }\n\n  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < kMaxLength()` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= kMaxLength()) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + kMaxLength().toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError('Arguments must be Buffers')\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    }\n    buf.copy(buffer, pos)\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n      (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    string = '' + string\n  }\n\n  var len = string.length\n  if (len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n      case undefined:\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) return utf8ToBytes(string).length // assume utf8\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length | 0\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  if (this.length > 0) {\n    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n    if (this.length > max) str += ' ... '\n  }\n  return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError('Argument must be a Buffer')\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset  // Coerce to Number.\n  if (isNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (Buffer.TYPED_ARRAY_SUPPORT &&\n        typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  // must be an even number of digits\n  var strLen = string.length\n  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (isNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n  return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset | 0\n    if (isFinite(length)) {\n      length = length | 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  // legacy write(string, encoding, offset, length) - remove in v0.13\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n        return asciiWrite(this, string, offset, length)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Write(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF) ? 4\n      : (firstByte > 0xDF) ? 3\n      : (firstByte > 0xBF) ? 2\n      : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += toHex(buf[i])\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  for (var i = 0; i < bytes.length; i += 2) {\n    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    newBuf = this.subarray(start, end)\n    newBuf.__proto__ = Buffer.prototype\n  } else {\n    var sliceLen = end - start\n    newBuf = new Buffer(sliceLen, undefined)\n    for (var i = 0; i < sliceLen; ++i) {\n      newBuf[i] = this[i + start]\n    }\n  }\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  byteLength = byteLength | 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n    buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n      (littleEndian ? i : 1 - i) * 8\n  }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n  if (value < 0) value = 0xffffffff + value + 1\n  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n    buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n  }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset + 3] = (value >>> 24)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 1] = (value >>> 8)\n    this[offset] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) {\n    var limit = Math.pow(2, 8 * byteLength - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n  } else {\n    objectWriteUInt16(this, value, offset, true)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 8)\n    this[offset + 1] = (value & 0xff)\n  } else {\n    objectWriteUInt16(this, value, offset, false)\n  }\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value & 0xff)\n    this[offset + 1] = (value >>> 8)\n    this[offset + 2] = (value >>> 16)\n    this[offset + 3] = (value >>> 24)\n  } else {\n    objectWriteUInt32(this, value, offset, true)\n  }\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset | 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  if (Buffer.TYPED_ARRAY_SUPPORT) {\n    this[offset] = (value >>> 24)\n    this[offset + 1] = (value >>> 16)\n    this[offset + 2] = (value >>> 8)\n    this[offset + 3] = (value & 0xff)\n  } else {\n    objectWriteUInt32(this, value, offset, false)\n  }\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n  var i\n\n  if (this === target && start < targetStart && targetStart < end) {\n    // descending copy from end\n    for (i = len - 1; i >= 0; --i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n    // ascending copy from start\n    for (i = 0; i < len; ++i) {\n      target[i + targetStart] = this[i + start]\n    }\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, start + len),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if (code < 256) {\n        val = code\n      }\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : utf8ToBytes(new Buffer(val, encoding).toString())\n    var len = bytes.length\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction stringtrim (str) {\n  if (str.trim) return str.trim()\n  return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n  if (n < 16) return '0' + n.toString(16)\n  return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\nfunction isnan (val) {\n  return val !== val // eslint-disable-line no-self-compare\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  for (var i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(\n      uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n    ))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\n/**\n* FUNCTION: isBuffer( value )\n*\tValidates if a value is a Buffer object.\n*\n* @param {*} value - value to validate\n* @returns {Boolean} boolean indicating if a value is a Buffer object\n*/\nfunction isBuffer( val ) {\n\treturn typeof val === 'object' &&\n\t\tval !== null &&\n\t\t(\n\t\t\tval._isBuffer || // for envs missing Object.prototype.constructor (e.g., Safari 5-7)\n\t\t\t(\n\t\t\t\tval.constructor &&\n\t\t\t\ttypeof val.constructor.isBuffer === 'function' &&\n\t\t\t\tval.constructor.isBuffer( val )\n\t\t\t)\n\t\t);\n} // end FUNCTION isBuffer()\n\n\n// EXPORTS //\n\nmodule.exports = isBuffer;\n","/**\n * type-name - Just a reasonable typeof\n *\n * https://github.com/twada/type-name\n *\n * Copyright (c) 2014-2016 Takuto Wada\n * Licensed under the MIT license.\n *   https://github.com/twada/type-name/blob/master/LICENSE\n */\n'use strict';\n\nvar toStr = Object.prototype.toString;\n\nfunction funcName (f) {\n    if (f.name) {\n        return f.name;\n    }\n    var match = /^\\s*function\\s*([^\\(]*)/im.exec(f.toString());\n    return match ? match[1] : '';\n}\n\nfunction ctorName (obj) {\n    var strName = toStr.call(obj).slice(8, -1);\n    if ((strName === 'Object' || strName === 'Error') && obj.constructor) {\n        return funcName(obj.constructor);\n    }\n    return strName;\n}\n\nfunction typeName (val) {\n    var type;\n    if (val === null) {\n        return 'null';\n    }\n    type = typeof val;\n    if (type === 'object') {\n        return ctorName(val);\n    }\n    return type;\n}\n\nmodule.exports = typeName;\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' ),\n\tRE = require( 'regex-regex' );\n\n\n// REGEX //\n\n/**\n* FUNCTION: regex( str )\n*\tParses a regular expression string and returns a new regular expression.\n*\n* @param {String} str - regular expression string\n* @returns {RegExp|Null} regular expression or null\n*/\nfunction regex( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Must provide a regular expression string. Value: `' + str + '`.' );\n\t}\n\t// Capture the regular expression pattern and any flags:\n\tstr = RE.exec( str );\n\n\t// Create a new regular expression:\n\treturn ( str ) ? new RegExp( str[1], str[2] ) : null;\n} // end FUNCTION regex()\n\n\n// EXPORTS //\n\nmodule.exports = regex;\n","'use strict';\n\nvar re = /^\\/((?:\\\\\\/|[^\\/])+)\\/([imgy]*)$/;\n/*\n\tMatches parts of a regular expression string.\n\n\t/^\\/\n\t\t-\tmatch a string that begins with a /\n\t()\n\t\t-\tcapture\n\t(?:)+\n\t\t-\tcapture, but do not remember, a group of characters which occur 1 or more times\n\t\\\\\\/\n\t\t-\tmatch the literal \\/\n\t|\n\t\t-\tOR\n\t[^\\/]\n\t\t-\tanything which is not the literal \\/\n\t\\/\n\t\t-\tmatch the literal /\n\t([imgy]*)\n\t\t-\tcapture any characters matching `imgy` occurring 0 or more times\n\t$/\n\t\t-\tstring end\n*/\n\n\n// EXPORTS //\n\nmodule.exports = re;\n","'use strict';\n\n// EXPORTS //\n\nmodule.exports = require( './copy.js' );\n","'use strict';\n\n// MODULES //\n\nvar deepCopy = require( 'utils-copy' );\nvar getKeys = require( 'object-keys' ).shim();\n\n\n// COPY ERROR //\n\n/**\n* FUNCTION: copy( error )\n*\tCopies an error.\n*\n* @param {Error|TypeError|SyntaxError|URIError|ReferenceError|RangeError|RangeError|EvalError} error - error to copy\n* @returns {Error|TypeError|SyntaxError|URIError|ReferenceError|RangeError|RangeError|EvalError} error copy\n*/\nfunction copy( error ) {\n\t/* jshint newcap:false */\n\tvar keys;\n\tvar desc;\n\tvar key;\n\tvar err;\n\tvar i;\n\tif ( !( error instanceof Error ) ) {\n\t\tthrow new TypeError( 'invalid input argument. Must provide an error object. Value: `' + error + '`.' );\n\t}\n\t// Create a new error...\n\terr = new error.constructor( error.message );\n\n\t// If a `stack` property is present, copy it over...\n\tif ( error.stack ) {\n\t\terr.stack = error.stack;\n\t}\n\t// Node.js specific (system errors)...\n\tif ( error.code ) {\n\t\terr.code = error.code;\n\t}\n\tif ( error.errno ) {\n\t\terr.errno = error.errno;\n\t}\n\tif ( error.syscall ) {\n\t\terr.syscall = error.syscall;\n\t}\n\t// Any enumerable properties...\n\tkeys = getKeys( error );\n\tfor ( i = 0; i < keys.length; i++ ) {\n\t\tkey = keys[ i ];\n\t\tdesc = Object.getOwnPropertyDescriptor( error, key );\n\t\tif ( desc.hasOwnProperty( 'value' ) ) {\n\t\t\tdesc.value = deepCopy( error[ key ] );\n\t\t}\n\t\tObject.defineProperty( err, key, desc );\n\t}\n\treturn err;\n} // end FUNCTION copy()\n\n\n// EXPORTS //\n\nmodule.exports = copy;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\n// MODULES //\n\nvar isArrayLike = require( 'validate.io-array-like' );\nvar isInteger = require( 'validate.io-integer-primitive' );\n\n\n// INDEXOF //\n\n/**\n* FUNCTION: indexOf( arr, searchElement[, fromIndex] )\n*\tReturns the first index at which a given element can be found.\n*\n* @param {Array|String|Object} arr - array-like object\n* @param {*} searchElement - element to find\n* @param {Number} [fromIndex] - starting index (if negative, the start index is determined relative to last element)\n* @returns {Number} index or -1\n*/\nfunction indexOf( arr, searchElement, fromIndex ) {\n\tvar len;\n\tvar i;\n\tif ( !isArrayLike( arr ) ) {\n\t\tthrow new TypeError( 'invalid input argument. First argument must be an array-like object. Value: `' + arr + '`.' );\n\t}\n\tlen = arr.length;\n\tif ( len === 0 ) {\n\t\treturn -1;\n\t}\n\tif ( arguments.length === 3 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( 'invalid input argument. `fromIndex` must be an integer. Value: `' + fromIndex + '`.' );\n\t\t}\n\t\tif ( fromIndex >= 0 ) {\n\t\t\tif ( fromIndex >= len ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\ti = fromIndex;\n\t\t} else {\n\t\t\ti = len + fromIndex;\n\t\t\tif ( i < 0 ) {\n\t\t\t\ti = 0;\n\t\t\t}\n\t\t}\n\t} else {\n\t\ti = 0;\n\t}\n\tif ( searchElement !== searchElement ) { // check for NaN\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( arr[ i ] !== arr[ i ] ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( arr[ i ] === searchElement ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n} // end FUNCTION indexOf()\n\n\n// EXPORTS //\n\nmodule.exports = indexOf;\n","'use strict';\n\n// MODULES //\n\nvar objectKeys = require( 'object-keys' );\n\n\n// TYPED ARRAY FUNCTIONS //\n\n/**\n* Create functions for copying typed arrays.\n*/\nvar typedArrays = {\n\t'Int8Array': null,\n\t'Uint8Array': null,\n\t'Uint8ClampedArray': null,\n\t'Int16Array': null,\n\t'Uint16Array': null,\n\t'Int32Array': null,\n\t'Uint32Array': null,\n\t'Float32Array': null,\n\t'Float64Array': null\n};\n\n(function createTypedArrayFcns() {\n\t/* jshint evil:true */\n\tvar keys = objectKeys( typedArrays );\n\tvar len = keys.length;\n\tvar key;\n\tvar i;\n\tfor ( i = 0; i < len; i++ ) {\n\t\tkey = keys[ i ];\n\t\ttypedArrays[ key ] = new Function( 'arr', 'return new '+key+'( arr );' );\n\t}\n})();\n\n\n// EXPORTS //\n\nmodule.exports = typedArrays;\n","'use strict';\n\n// MODULES //\n\nvar isString = require( 'validate.io-string-primitive' ),\n\tcontains = require( 'validate.io-contains' ),\n\tgetType = require( 'compute-dtype' ),\n\tMatrix = require( './ctor.raw.js' );\n\n\n// VARIABLES //\n\nvar BTYPES = require( './btypes.js' ),\n\tDTYPES = require( './dtypes.js' );\n\n\n// CREATE MATRIX //\n\n/**\n* FUNCTION: matrix( [data,] shape[, dtype] )\n*\tReturns a Matrix instance.\n*\n* @constructor\n* @param {Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} [data] - input typed array\n* @param {Number[]} shape - matrix dimensions/shape\n* @param {String} [dtype=\"float64\"] - matrix data type\n* @returns {Matrix} Matrix instance\n*/\nfunction matrix() {\n\tvar dtype,\n\t\tndims,\n\t\tshape,\n\t\tdata,\n\t\tlen,\n\t\ti;\n\n\tif ( arguments.length === 1 ) {\n\t\tshape = arguments[ 0 ];\n\t}\n\telse if ( arguments.length === 2 ) {\n\t\tif ( isString( arguments[ 1 ] ) ) {\n\t\t\tshape = arguments[ 0 ];\n\t\t\tdtype = arguments[ 1 ];\n\t\t} else {\n\t\t\tdata = arguments[ 0 ];\n\t\t\tshape = arguments[ 1 ];\n\t\t}\n\t}\n\telse {\n\t\tdata = arguments[ 0 ];\n\t\tshape = arguments[ 1 ];\n\t\tdtype = arguments[ 2 ];\n\t}\n\tndims = shape.length;\n\tif ( ndims !== 2 ) {\n\t\tthrow new Error( 'invalid input argument. Shape must be a 2-element array. Value: `' + shape + '`.' );\n\t}\n\tlen = 1;\n\tfor ( i = 0; i < ndims; i++ ) {\n\t\tlen *= shape[ i ];\n\t}\n\tif ( data ) {\n\t\tif ( !dtype ) {\n\t\t\tdtype = getType( data );\n\t\t\tif ( !contains( DTYPES, dtype ) ) {\n\t\t\t\tthrow new TypeError( 'invalid input argument. Input data must be a valid type. Consult the documentation for a list of valid data types. Value: `' + data + '`.' );\n\t\t\t}\n\t\t}\n\t\tif ( len !== data.length ) {\n\t\t\tthrow new Error( 'invalid input argument. Matrix shape does not match the input data length.' );\n\t\t}\n\t} else {\n\t\t// Initialize a zero-filled typed array...\n\t\tif ( !dtype ) {\n\t\t\tdtype = 'float64';\n\t\t}\n\t\tdata = new BTYPES[ dtype ]( len );\n\t}\n\t// Return a new Matrix instance:\n\treturn new Matrix( data, dtype, shape, 0, [shape[1],1] );\n} // end FUNCTION matrix()\n\n\n// EXPORTS //\n\nmodule.exports = matrix;\n","'use strict';\n\n// MATRIX //\n\n/**\n* FUNCTION: Matrix( data, dtype, shape, offset, strides )\n*\tMatrix constructor.\n*\n* @constructor\n* @param {Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array} data - input typed array\n* @param {String} dtype - matrix data type\n* @param {Number[]} shape - matrix dimensions/shape\n* @param {Number} offset - matrix offset\n* @param {Number[]} strides - matrix strides\n* @returns {Matrix} Matrix instance\n*/\nfunction Matrix( data, dtype, shape, offset, strides ) {\n\tif ( !( this instanceof Matrix ) ) {\n\t\treturn new Matrix( data, dtype, shape, offset, strides );\n\t}\n\tthis.dtype = dtype;\n\tthis.shape = shape;\n\tthis.strides = strides;\n\tthis.offset = offset;\n\tthis.ndims = shape.length;\n\tthis.length = data.length;\n\tthis.nbytes = data.byteLength;\n\tthis.data = data;\n\treturn this;\n} // end FUNCTION Matrix()\n\n\n// METHODS //\n\nMatrix.prototype.set = require( './set.raw.js' );\nMatrix.prototype.iset = require( './iset.raw.js' );\nMatrix.prototype.mset = require( './mset.raw.js' );\nMatrix.prototype.sset = require( './sset.raw.js' );\n\nMatrix.prototype.get = require( './get.raw.js' );\nMatrix.prototype.iget = require( './iget.raw.js' );\nMatrix.prototype.mget = require( './mget.raw.js' );\nMatrix.prototype.sget = require( './sget.raw.js' );\n\nMatrix.prototype.toString = require( './tostring.js' );\nMatrix.prototype.toJSON = require( './tojson.js' );\n\n// EXPORTS //\n\nmodule.exports = Matrix;\n","'use strict';\n\n/**\n* FUNCTION: set( i, j, value )\n*\tSets a matrix element based on the provided row and column indices.\n*\n* @param {Number} i - row index\n* @param {Number} j - column index\n* @param {Number} value - value to set\n* @returns {Matrix} Matrix instance\n*/\nfunction set( i, j, v ) {\n\t/* jshint validthis: true */\n\ti = this.offset + i*this.strides[0] + j*this.strides[1];\n\tif ( i >= 0 ) {\n\t\tthis.data[ i ] = v;\n\t}\n\treturn this;\n} // end FUNCTION set()\n\n\n// EXPORTS //\n\nmodule.exports = set;\n","'use strict';\n\n/**\n* FUNCTION: iset( idx, value )\n*\tSets a matrix element located at a specified index.\n*\n* @param {Number} idx - linear index\n* @param {Number} value - value to set\n* @returns {Matrix} Matrix instance\n*/\nfunction iset( idx, v ) {\n\t/* jshint validthis: true */\n\tvar r, j;\n\tif ( idx < 0 ) {\n\t\tidx += this.length;\n\t\tif ( idx < 0 ) {\n\t\t\treturn this;\n\t\t}\n\t}\n\tj = idx % this.strides[ 0 ];\n\tr = idx - j;\n\tif ( this.strides[ 0 ] < 0 ) {\n\t\tr = -r;\n\t}\n\tthis.data[ this.offset + r + j*this.strides[1] ] = v;\n\treturn this;\n} // end FUNCTION iset()\n\n\n// EXPORTS //\n\nmodule.exports = iset;\n","'use strict';\n\n// FUNCTIONS //\n\nvar mset1 = require( './mset1.js' ),\n\tmset2 = require( './mset2.js' ),\n\tmset3 = require( './mset3.js' ),\n\tmset4 = require( './mset4.js' ),\n\tmset5 = require( './mset5.js' ),\n\tmset6 = require( './mset6.js' );\n\n/**\n* FUNCTION: getIndices( idx, len )\n*\tReturns an array of indices.\n*\n* @private\n* @param {Number[]|Null} idx - indices\n* @param {Number} len - max index\n* @returns {Number[]} indices\n*/\nfunction getIndices( idx, len ) {\n\tvar out,\n\t\ti;\n\tif ( idx === null ) {\n\t\tout = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tout[ i ] = i;\n\t\t}\n\t} else {\n\t\tout = idx;\n\t}\n\treturn out;\n} // end FUNCTION getIndices()\n\n\n// MSET //\n\n/**\n* FUNCTION: mset( i[, j], value[, thisArg] )\n*\tSets multiple matrix elements. If provided a single array, `i` is treated as an array of linear indices.\n*\n* @param {Number[]|Null} i - linear/row indices\n* @param {Number[]|Null} [j] - column indices\n* @param {Number|Matrix|Function} value - either a single numeric value, a matrix containing the values to set, or a function which returns a numeric value\n* @returns {Matrix} Matrix instance\n*/\nfunction mset() {\n\t/*jshint validthis:true */\n\tvar nargs = arguments.length,\n\t\targs,\n\t\trows,\n\t\tcols,\n\t\ti;\n\n\targs = new Array( nargs );\n\tfor ( i = 0; i < nargs; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\n\t// 2 input arguments...\n\tif ( nargs < 3 ) {\n\t\t// indices, clbk\n\t\tif ( typeof args[ 1 ] === 'function' ) {\n\t\t\tmset2( this, args[ 0 ], args[ 1 ] );\n\t\t}\n\t\t// indices, number\n\t\telse if ( typeof args[ 1 ] === 'number' ) {\n\t\t\tmset1( this, args[ 0 ], args[ 1 ] );\n\t\t}\n\t\t// indices, matrix\n\t\telse {\n\t\t\tmset3( this, args[ 0 ], args[ 1 ] );\n\t\t}\n\t}\n\t// 3 input arguments...\n\telse if ( nargs === 3 ) {\n\t\t// indices, clbk, context\n\t\tif ( typeof args[ 1 ] === 'function' ) {\n\t\t\tmset2( this, args[ 0 ], args[ 1 ], args[ 2 ] );\n\t\t}\n\t\t// rows, cols, function\n\t\telse if ( typeof args[ 2 ] === 'function' ) {\n\t\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\t\t\tmset4( this, rows, cols, args[ 2 ], this );\n\t\t}\n\t\t// rows, cols, number\n\t\telse if ( typeof args[ 2 ] === 'number' ) {\n\t\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\t\t\tmset5( this, rows, cols, args[ 2 ] );\n\t\t}\n\t\t// rows, cols, matrix\n\t\telse {\n\t\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\t\t\tmset6( this, rows, cols, args[ 2 ] );\n\t\t}\n\t}\n\t// 4 input arguments...\n\telse {\n\t\trows = getIndices( args[ 0 ], this.shape[ 0 ] );\n\t\tcols = getIndices( args[ 1 ], this.shape[ 1 ] );\n\t\tmset4( this, rows, cols, args[ 2 ], args[ 3 ] );\n\t}\n\treturn this;\n} // end FUNCTION mset()\n\n\n// EXPORTS //\n\nmodule.exports = mset;\n","'use strict';\n\n// MODULES //\n\nvar ispace = require( 'compute-indexspace' );\n\n\n// SUBSEQUENCE SET //\n\n/**\n* FUNCTION: sset( subsequence, value[, thisArg] )\n*\tSets matrix elements according to a specified subsequence.\n*\n* @param {String} subsequence - subsequence string\n* @param {Number|Matrix|Function} value - either a single numeric value, a matrix containing the values to set, or a function which returns a numeric value\n* @param {Object} [thisArg] - `this` context when executing a callback\n* @returns {Matrix} Matrix instance\n*/\nfunction sset( seq, val, thisArg ) {\n\t/* jshint validthis: true */\n\tvar nRows,\n\t\tnCols,\n\t\tclbk,\n\t\trows,\n\t\tcols,\n\t\tseqs,\n\t\tmat,\n\t\tctx,\n\t\ts0, s1, s2, s3,\n\t\to0, o1,\n\t\tr0, r1,\n\t\ti, j, k;\n\n\tseqs = seq.split( ',' );\n\tif ( typeof val === 'function' ) {\n\t\tclbk = val;\n\t}\n\telse if ( typeof val !== 'number' ) {\n\t\tmat = val;\n\t}\n\trows = ispace( seqs[ 0 ], this.shape[ 0 ] );\n\tcols = ispace( seqs[ 1 ], this.shape[ 1 ] );\n\n\tnRows = rows.length;\n\tnCols = cols.length;\n\n\tif ( !( nRows && nCols ) ) {\n\t\treturn this;\n\t}\n\ts0 = this.strides[ 0 ];\n\ts1 = this.strides[ 1 ];\n\to0 = this.offset;\n\n\t// Callback...\n\tif ( clbk ) {\n\t\tif ( arguments.length > 2 ) {\n\t\t\tctx = thisArg;\n\t\t} else {\n\t\t\tctx = this;\n\t\t}\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr0 = o0 + rows[i]*s0;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\tk = r0 + cols[j]*s1;\n\t\t\t\tthis.data[ k ] = clbk.call( ctx, this.data[ k ], rows[i], cols[j], k );\n\t\t\t}\n\t\t}\n\t}\n\t// Input matrix...\n\telse if ( mat ) {\n\t\tif ( nRows !== mat.shape[ 0 ] ) {\n\t\t\tthrow new Error( 'invalid input arguments. Row subsequence does not match input matrix dimensions. Expected a [' + nRows + ',' + nCols + '] matrix and instead received a [' + mat.shape.join( ',' ) + '] matrix.' );\n\t\t}\n\t\tif ( nCols !== mat.shape[ 1 ] ) {\n\t\t\tthrow new Error( 'invalid input arguments. Column subsequence does not match input matrix dimensions. Expected a [' + nRows + ',' + nCols + '] matrix and instead received a [' + mat.shape.join( ',' ) + '] matrix.' );\n\t\t}\n\t\ts2 = mat.strides[ 0 ];\n\t\ts3 = mat.strides[ 1 ];\n\t\to1 = mat.offset;\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr0 = o0 + rows[i]*s0;\n\t\t\tr1 = o1 + i*s2;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\tthis.data[ r0 + cols[j]*s1 ] = mat.data[ r1 + j*s3 ];\n\t\t\t}\n\t\t}\n\t}\n\t// Single numeric value...\n\telse {\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr0 = o0 + rows[i]*s0;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\tthis.data[ r0 + cols[j]*s1 ] = val;\n\t\t\t}\n\t\t}\n\t}\n\treturn this;\n} // end FUNCTION sset()\n\n\n// EXPORTS //\n\nmodule.exports = sset;\n","'use strict';\n\n/**\n* FUNCTION: get( i, j )\n*\tReturns a matrix element based on the provided row and column indices.\n*\n* @param {Number} i - row index\n* @param {Number} j - column index\n* @returns {Number|Undefined} matrix element\n*/\nfunction get( i, j ) {\n\t/*jshint validthis:true */\n\treturn this.data[ this.offset + i*this.strides[0] + j*this.strides[1] ];\n} // end FUNCTION get()\n\n\n// EXPORTS //\n\nmodule.exports = get;\n","'use strict';\n\n/**\n* FUNCTION: iget( idx )\n*\tReturns a matrix element located at a specified index.\n*\n* @param {Number} idx - linear index\n* @returns {Number|Undefined} matrix element\n*/\nfunction iget( idx ) {\n\t/*jshint validthis:true */\n\tvar r, j;\n\tif ( idx < 0 ) {\n\t\tidx += this.length;\n\t\tif ( idx < 0 ) {\n\t\t\treturn;\n\t\t}\n\t}\n\tj = idx % this.strides[ 0 ];\n\tr = idx - j;\n\tif ( this.strides[ 0 ] < 0 ) {\n\t\tr = -r;\n\t}\n\treturn this.data[ this.offset + r + j*this.strides[1] ];\n} // end FUNCTION iget()\n\n\n// EXPORTS //\n\nmodule.exports = iget;\n","'use strict';\n\n// VARIABLES //\n\nvar BTYPES = require( './btypes.js' );\n\n\n// MGET //\n\n/**\n* FUNCTION: mget( i[, j] )\n*\tReturns multiple matrix elements. If provided a single argument, `i` is treated as an array of linear indices.\n*\n* @param {Number[]|Null} i - linear/row indices\n* @param {Number[]|Null} [j] - column indices\n* @returns {Matrix} a new Matrix instance\n*/\nfunction mget( rows, cols ) {\n\t/*jshint validthis:true */\n\tvar nRows,\n\t\tnCols,\n\t\tout,\n\t\tsgn,\n\t\td,\n\t\ts0, s1, s2, s3,\n\t\to,\n\t\tr, dr,\n\t\ti, j, m, n;\n\n\ts0 = this.strides[ 0 ];\n\ts1 = this.strides[ 1 ];\n\to = this.offset;\n\n\tif ( arguments.length < 2 ) {\n\t\ti = rows;\n\t\tm = i.length;\n\n\t\t// Create a row vector (matrix):\n\t\td = new BTYPES[ this.dtype ]( m );\n\t\tout = new this.constructor( d, this.dtype, [1,m], 0, [m,1] );\n\n\t\tsgn = ( s0 < 0 ) ? -1 : 1;\n\t\tfor ( n = 0; n < m; n++ ) {\n\t\t\tj = i[ n ] % s0;\n\t\t\tr = sgn * ( i[n] - j );\n\t\t\td[ n ] = this.data[ o + r + j*s1 ];\n\t\t}\n\t} else {\n\t\tif ( rows === null ) {\n\t\t\tnRows = this.shape[ 0 ];\n\t\t\ti = new Array( nRows );\n\t\t\tfor ( n = 0; n < nRows; n++ ) {\n\t\t\t\ti[ n ] = n;\n\t\t\t}\n\t\t} else {\n\t\t\tnRows = rows.length;\n\t\t\ti = rows;\n\t\t}\n\n\t\tif ( cols === null ) {\n\t\t\tnCols = this.shape[ 1 ];\n\t\t\tj = new Array( nCols );\n\t\t\tfor ( n = 0; n < nCols; n++ ) {\n\t\t\t\tj[ n ] = n;\n\t\t\t}\n\t\t} else {\n\t\t\tnCols = cols.length;\n\t\t\tj = cols;\n\t\t}\n\n\t\td = new BTYPES[ this.dtype ]( nRows*nCols );\n\t\tout = new this.constructor( d, this.dtype, [nRows,nCols], 0, [nCols,1] );\n\n\t\ts2 = out.strides[ 0 ];\n\t\ts3 = out.strides[ 1 ];\n\t\tfor ( m = 0; m < nRows; m++ ) {\n\t\t\tr = o + i[m]*s0;\n\t\t\tdr = m * s2;\n\t\t\tfor ( n = 0; n < nCols; n++ ) {\n\t\t\t\td[ dr + n*s3 ] = this.data[ r + j[n]*s1 ];\n\t\t\t}\n\t\t}\n\t}\n\treturn out;\n} // end FUNCTION mget()\n\n\n// EXPORTS //\n\nmodule.exports = mget;\n","'use strict';\n\n// MODULES //\n\nvar ispace = require( 'compute-indexspace' );\n\n\n// VARIABLES //\n\nvar BTYPES = require( './btypes.js' );\n\n\n// SUBSEQUENCE GET //\n\n/**\n* FUNCTION: sget( subsequence )\n*\tReturns matrix elements according to a specified subsequence.\n*\n* @param {String} subsequence - subsequence string\n* @returns {Matrix} Matrix instance\n*/\nfunction sget( seq ) {\n\t/*jshint validthis:true */\n\tvar nRows,\n\t\tnCols,\n\t\trows,\n\t\tcols,\n\t\tseqs,\n\t\tmat,\n\t\tlen,\n\t\ts0, s1,\n\t\to,\n\t\td,\n\t\tr, dr,\n\t\ti, j;\n\n\tseqs = seq.split( ',' );\n\trows = ispace( seqs[ 0 ], this.shape[ 0 ] );\n\tcols = ispace( seqs[ 1 ], this.shape[ 1 ] );\n\n\tnRows = rows.length;\n\tnCols = cols.length;\n\tlen = nRows * nCols;\n\n\td = new BTYPES[ this.dtype ]( len );\n\tmat = new this.constructor( d, this.dtype, [nRows,nCols], 0, [nCols,1] );\n\n\tif ( len ) {\n\t\ts0 = this.strides[ 0 ];\n\t\ts1 = this.strides[ 1 ];\n\t\to = this.offset;\n\t\tfor ( i = 0; i < nRows; i++ ) {\n\t\t\tr = o + rows[i]*s0;\n\t\t\tdr = i * nCols;\n\t\t\tfor ( j = 0; j < nCols; j++ ) {\n\t\t\t\td[ dr + j ] = this.data[ r + cols[j]*s1 ];\n\t\t\t}\n\t\t}\n\t}\n\treturn mat;\n} // end FUNCTION sget()\n\n\n// EXPORTS //\n\nmodule.exports = sget;\n","'use strict';\n\n// MODULES //\n\nvar dRanNormalTail = require( './dRanNormalTail.js' );\nvar abs = require( 'math-abs' );\nvar exp = require( 'math-exp' );\nvar log = require( 'math-ln' );\nvar pow = require( 'math-power' );\nvar sqrt = require( 'math-sqrt' );\n\n\n// CONSTANTS //\n\nvar TWO_P_32 = pow( 2, 32);\nvar ZIGNOR_C = 128; /* number of blocks */\nvar ZIGNOR_R = 3.442619855899; /* start of the right tail *\n/* (R * phi(R) + Pr(X>=R)) * sqrt(2\\pi) */\nvar ZIGNOR_V = 9.91256303526217e-3;\n\n// GENERATE NORMAL RANDOM NUMBERS //\n\n/**\n* FUNCTION random( mu, sigma[, rand] )\n*\tGenerates a random draw from a normal distribution\n*\twith parameters `mu` and `sigma`. Implementation\n*\tof the \"Improved Ziggurat Method\" by J. Doornik.\n*\tReference:\n*\t\tDoornik, J. a. (2005).\n*\t\tAn Improved Ziggurat Method to Generate Normal Random Samples.\n*\n* @param {Number} mu - mean parameter\n* @param {Number} sigma - standard deviation\n* @param {Function} [rand=Math.random] - random number generator\n* @returns {Number} random draw from the specified distribution\n*/\nfunction random( mu, sigma, rand ) {\n\tif ( !rand ) {\n\t\trand = Math.random;\n\t}\n\n\t/* s_adZigX holds coordinates, such that each rectangle has\n\t\tsame area; s_adZigR holds s_adZigX[i + 1] / s_adZigX[i] */\n\tvar s_adZigX = new Array( ZIGNOR_C + 1 );\n\tvar s_adZigR = new Array( ZIGNOR_C );\n\tvar i;\n\tvar f;\n\n\tf = exp( -0.5 * ZIGNOR_R * ZIGNOR_R );\n\ts_adZigX[0] = ZIGNOR_V / f; /* [0] is bottom block: V / f(R) */\n\ts_adZigX[1] = ZIGNOR_R;\n\ts_adZigX[ZIGNOR_C] = 0;\n\tfor ( i = 2; i < ZIGNOR_C; i++ ) {\n\t\ts_adZigX[i] = sqrt( -2 * log( ZIGNOR_V / s_adZigX[i - 1] + f ) );\n\t\tf = exp( -0.5 * s_adZigX[i] * s_adZigX[i] );\n\t}\n\tfor ( i = 0; i < ZIGNOR_C; i++ ) {\n\t\ts_adZigR[i] = s_adZigX[i + 1] / s_adZigX[i];\n\t}\n\tvar x, u, f0, f1;\n\tfor (;;) {\n\t\tu = 2 * rand() - 1;\n\t\ti = TWO_P_32 * rand() & 0x7F;\n\t\t/* first try the rectangular boxes */\n\t\tif ( abs(u) < s_adZigR[i] ) {\n\t\t\treturn mu + sigma * u * s_adZigX[i];\n\t\t}\n\t\t/* bottom box: sample from the tail */\n\t\tif ( i === 0 ) {\n\t\t\treturn mu + sigma * dRanNormalTail( ZIGNOR_R, u < 0, rand );\n\t\t}\n\t\t/* is this a sample from the wedges? */\n\t\tx = u * s_adZigX[i];\n\t\tf0 = exp( -0.5 * ( s_adZigX[i] * s_adZigX[i] - x * x ) );\n\t\tf1 = exp( -0.5 * ( s_adZigX[i+1] * s_adZigX[i+1] - x * x ) );\n\t\tif ( f1 + rand() * (f0 - f1) < 1.0 ) {\n\t\t\treturn mu + sigma * x;\n\t\t}\n\t}\n} // end FUNCTION random()\n\n\n// EXPORTS //\n\nmodule.exports = random;\n","import isArray from 'is-any-array';\n\n/**\n * Computes the maximum of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction max(input) {\n  if (!isArray(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 maxValue = input[0];\n\n  for (var i = 1; i < input.length; i++) {\n    if (input[i] > maxValue) maxValue = input[i];\n  }\n\n  return maxValue;\n}\n\nexport default max;\n","import isArray from 'is-any-array';\n\n/**\n * Computes the minimum of the given values\n * @param {Array<number>} input\n * @return {number}\n */\n\nfunction min(input) {\n  if (!isArray(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 minValue = input[0];\n\n  for (var i = 1; i < input.length; i++) {\n    if (input[i] < minValue) minValue = input[i];\n  }\n\n  return minValue;\n}\n\nexport default min;\n","import max from 'ml-array-max';\nimport min from 'ml-array-min';\nimport isArray from 'is-any-array';\n\nfunction rescale(input) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  if (!isArray(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 (!isArray(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 default rescale;\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 checkIndices(matrix, rowIndices, columnIndices) {\n  return {\n    row: checkRowIndices(matrix, rowIndices),\n    column: checkColumnIndices(matrix, columnIndices),\n  };\n}\n\nexport function checkRowIndices(matrix, rowIndices) {\n  if (typeof rowIndices !== 'object') {\n    throw new TypeError('unexpected type for row indices');\n  }\n\n  let rowOut = rowIndices.some((r) => {\n    return r < 0 || r >= matrix.rows;\n  });\n\n  if (rowOut) {\n    throw new RangeError('row indices are out of range');\n  }\n\n  if (!Array.isArray(rowIndices)) rowIndices = Array.from(rowIndices);\n\n  return rowIndices;\n}\n\nexport function checkColumnIndices(matrix, columnIndices) {\n  if (typeof columnIndices !== 'object') {\n    throw new TypeError('unexpected type for column indices');\n  }\n\n  let columnOut = columnIndices.some((c) => {\n    return c < 0 || c >= matrix.columns;\n  });\n\n  if (columnOut) {\n    throw new RangeError('column indices are out of range');\n  }\n  if (!Array.isArray(columnIndices)) columnIndices = Array.from(columnIndices);\n\n  return columnIndices;\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","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","export function inspectMatrix() {\n  const indent = ' '.repeat(2);\n  const indentData = ' '.repeat(4);\n  return `${this.constructor.name} {\n${indent}[\n${indentData}${inspectData(this, indentData)}\n${indent}]\n${indent}rows: ${this.rows}\n${indent}columns: ${this.columns}\n}`;\n}\n\nconst maxRows = 15;\nconst maxColumns = 10;\nconst maxNumSize = 8;\n\nfunction inspectData(matrix, indent) {\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)));\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${indent}`);\n}\n\nfunction formatNumber(num) {\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.substring(eIndex);\n  return exponential.substring(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 rescale from 'ml-array-rescale';\n\nimport {\n  checkRowVector,\n  checkRowIndex,\n  checkColumnIndex,\n  checkColumnVector,\n  checkRange,\n  checkIndices,\n} from './util';\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 { inspectMatrix } from './inspect';\nimport { installMathOperations } from './mathOperations';\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  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() {\n    let v = this.get(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        }\n      }\n    }\n    return v;\n  }\n\n  maxIndex() {\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() {\n    let v = this.get(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        }\n      }\n    }\n    return v;\n  }\n\n  minIndex() {\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    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    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    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    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    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    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    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    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    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      rescale(row, { min, max, output: row });\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      rescale(column, {\n        min: min,\n        max: max,\n        output: column,\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  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    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    let indices = checkIndices(this, rowIndices, columnIndices);\n    let newMatrix = new Matrix(rowIndices.length, columnIndices.length);\n    for (let i = 0; i < indices.row.length; i++) {\n      let rowIndex = indices.row[i];\n      for (let j = 0; j < indices.column.length; j++) {\n        let columnIndex = indices.column[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 (!Array.isArray(mean)) {\n          throw new TypeError('mean must be an array');\n        }\n        return varianceByRow(this, unbiased, mean);\n      }\n      case 'column': {\n        if (!Array.isArray(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 (!Array.isArray(center)) {\n          throw new TypeError('center must be an array');\n        }\n        centerByRow(this, center);\n        return this;\n      }\n      case 'column': {\n        if (!Array.isArray(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 (!Array.isArray(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 (!Array.isArray(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\nAbstractMatrix.prototype.klass = 'Matrix';\nif (typeof Symbol !== 'undefined') {\n  AbstractMatrix.prototype[\n    Symbol.for('nodejs.util.inspect.custom')\n  ] = inspectMatrix;\n}\n\nfunction compareNumbers(a, b) {\n  return a - b;\n}\n\n// Synonyms\nAbstractMatrix.random = AbstractMatrix.rand;\nAbstractMatrix.randomInt = AbstractMatrix.randInt;\nAbstractMatrix.diagonal = AbstractMatrix.diag;\nAbstractMatrix.prototype.diagonal = AbstractMatrix.prototype.diag;\nAbstractMatrix.identity = AbstractMatrix.eye;\nAbstractMatrix.prototype.negate = AbstractMatrix.prototype.neg;\nAbstractMatrix.prototype.tensorProduct =\n  AbstractMatrix.prototype.kroneckerProduct;\n\nexport default class Matrix extends AbstractMatrix {\n  constructor(nRows, nColumns) {\n    super();\n    if (Matrix.isMatrix(nRows)) {\n      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 (Array.isArray(nRows)) {\n      // Copy the values from the 2D array\n      const arrayData = nRows;\n      nRows = arrayData.length;\n      nColumns = arrayData[0].length;\n      if (typeof nColumns !== 'number' || nColumns === 0) {\n        throw new TypeError(\n          'Data must be a 2D array with at least one element',\n        );\n      }\n      this.data = [];\n      for (let i = 0; i < nRows; i++) {\n        if (arrayData[i].length !== nColumns) {\n          throw new RangeError('Inconsistent array dimensions');\n        }\n        this.data.push(Float64Array.from(arrayData[i]));\n      }\n    } else {\n      throw new TypeError(\n        'First argument must be a positive number or an array',\n      );\n    }\n    this.rows = nRows;\n    this.columns = nColumns;\n    return this;\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    if (this.rows === 1) {\n      throw new RangeError('A matrix cannot have less than one row');\n    }\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, true));\n    this.data.splice(index, 0, array);\n    this.rows += 1;\n    return this;\n  }\n\n  removeColumn(index) {\n    checkColumnIndex(this, index);\n    if (this.columns === 1) {\n      throw new RangeError('A matrix cannot have less than one column');\n    }\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns - 1);\n      for (let j = 0; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      for (let j = index + 1; j < this.columns; j++) {\n        newRow[j - 1] = this.data[i][j];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns -= 1;\n    return this;\n  }\n\n  addColumn(index, array) {\n    if (typeof array === 'undefined') {\n      array = index;\n      index = this.columns;\n    }\n    checkColumnIndex(this, index, true);\n    array = checkColumnVector(this, array);\n    for (let i = 0; i < this.rows; i++) {\n      const newRow = new Float64Array(this.columns + 1);\n      let j = 0;\n      for (; j < index; j++) {\n        newRow[j] = this.data[i][j];\n      }\n      newRow[j++] = array[i];\n      for (; j < this.columns + 1; j++) {\n        newRow[j] = this.data[i][j - 1];\n      }\n      this.data[i] = newRow;\n    }\n    this.columns += 1;\n    return this;\n  }\n}\n\ninstallMathOperations(AbstractMatrix, Matrix);\n","import { AbstractMatrix } from '../matrix';\n\nexport default class BaseView extends AbstractMatrix {\n  constructor(matrix, rows, columns) {\n    super();\n    this.matrix = matrix;\n    this.rows = rows;\n    this.columns = columns;\n  }\n}\n","import { checkColumnIndex } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixColumnView extends BaseView {\n  constructor(matrix, column) {\n    checkColumnIndex(matrix, column);\n    super(matrix, matrix.rows, 1);\n    this.column = column;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(rowIndex, this.column, value);\n    return this;\n  }\n\n  get(rowIndex) {\n    return this.matrix.get(rowIndex, this.column);\n  }\n}\n","import { checkColumnIndices } from '../util';\r\n\r\nimport BaseView from './base';\r\n\r\nexport default class MatrixColumnSelectionView extends BaseView {\r\n  constructor(matrix, columnIndices) {\r\n    columnIndices = checkColumnIndices(matrix, columnIndices);\r\n    super(matrix, matrix.rows, columnIndices.length);\r\n    this.columnIndices = columnIndices;\r\n  }\r\n\r\n  set(rowIndex, columnIndex, value) {\r\n    this.matrix.set(rowIndex, this.columnIndices[columnIndex], value);\r\n    return this;\r\n  }\r\n\r\n  get(rowIndex, columnIndex) {\r\n    return this.matrix.get(rowIndex, this.columnIndices[columnIndex]);\r\n  }\r\n}\r\n","import BaseView from './base';\r\n\r\nexport default class MatrixFlipColumnView extends BaseView {\r\n  constructor(matrix) {\r\n    super(matrix, matrix.rows, matrix.columns);\r\n  }\r\n\r\n  set(rowIndex, columnIndex, value) {\r\n    this.matrix.set(rowIndex, this.columns - columnIndex - 1, value);\r\n    return this;\r\n  }\r\n\r\n  get(rowIndex, columnIndex) {\r\n    return this.matrix.get(rowIndex, this.columns - columnIndex - 1);\r\n  }\r\n}\r\n","import BaseView from './base';\r\n\r\nexport default class MatrixFlipRowView extends BaseView {\r\n  constructor(matrix) {\r\n    super(matrix, matrix.rows, matrix.columns);\r\n  }\r\n\r\n  set(rowIndex, columnIndex, value) {\r\n    this.matrix.set(this.rows - rowIndex - 1, columnIndex, value);\r\n    return this;\r\n  }\r\n\r\n  get(rowIndex, columnIndex) {\r\n    return this.matrix.get(this.rows - rowIndex - 1, columnIndex);\r\n  }\r\n}\r\n","import { checkRowIndex } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixRowView extends BaseView {\n  constructor(matrix, row) {\n    checkRowIndex(matrix, row);\n    super(matrix, 1, matrix.columns);\n    this.row = row;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(this.row, columnIndex, value);\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(this.row, columnIndex);\n  }\n}\n","import { checkRowIndices } from '../util';\r\n\r\nimport BaseView from './base';\r\n\r\nexport default class MatrixRowSelectionView extends BaseView {\r\n  constructor(matrix, rowIndices) {\r\n    rowIndices = checkRowIndices(matrix, rowIndices);\r\n    super(matrix, rowIndices.length, matrix.columns);\r\n    this.rowIndices = rowIndices;\r\n  }\r\n\r\n  set(rowIndex, columnIndex, value) {\r\n    this.matrix.set(this.rowIndices[rowIndex], columnIndex, value);\r\n    return this;\r\n  }\r\n\r\n  get(rowIndex, columnIndex) {\r\n    return this.matrix.get(this.rowIndices[rowIndex], columnIndex);\r\n  }\r\n}\r\n","import { checkIndices } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixSelectionView extends BaseView {\n  constructor(matrix, rowIndices, columnIndices) {\n    let indices = checkIndices(matrix, rowIndices, columnIndices);\n    super(matrix, indices.row.length, indices.column.length);\n    this.rowIndices = indices.row;\n    this.columnIndices = indices.column;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.rowIndices[rowIndex],\n      this.columnIndices[columnIndex],\n    );\n  }\n}\n","import { checkRange } from '../util';\n\nimport BaseView from './base';\n\nexport default class MatrixSubView extends BaseView {\n  constructor(matrix, startRow, endRow, startColumn, endColumn) {\n    checkRange(matrix, startRow, endRow, startColumn, endColumn);\n    super(matrix, endRow - startRow + 1, endColumn - startColumn + 1);\n    this.startRow = startRow;\n    this.startColumn = startColumn;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.matrix.set(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n      value,\n    );\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.matrix.get(\n      this.startRow + rowIndex,\n      this.startColumn + columnIndex,\n    );\n  }\n}\n","import BaseView from './base';\r\n\r\nexport default class MatrixTransposeView extends BaseView {\r\n  constructor(matrix) {\r\n    super(matrix, matrix.columns, matrix.rows);\r\n  }\r\n\r\n  set(rowIndex, columnIndex, value) {\r\n    this.matrix.set(columnIndex, rowIndex, value);\r\n    return this;\r\n  }\r\n\r\n  get(rowIndex, columnIndex) {\r\n    return this.matrix.get(columnIndex, rowIndex);\r\n  }\r\n}\r\n","export { default as MatrixColumnView } from './column';\nexport { default as MatrixColumnSelectionView } from './columnSelection';\nexport { default as MatrixFlipColumnView } from './flipColumn';\nexport { default as MatrixFlipRowView } from './flipRow';\nexport { default as MatrixRowView } from './row';\nexport { default as MatrixRowSelectionView } from './rowSelection';\nexport { default as MatrixSelectionView } from './selection';\nexport { default as MatrixSubView } from './sub';\nexport { default as MatrixTransposeView } from './transpose';\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix1D extends AbstractMatrix {\n  constructor(data, options = {}) {\n    const { rows = 1 } = options;\n\n    if (data.length % rows !== 0) {\n      throw new Error('the data length is not divisible by the number of rows');\n    }\n    super();\n    this.rows = rows;\n    this.columns = data.length / rows;\n    this.data = data;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    this.data[index] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    let index = this._calculateIndex(rowIndex, columnIndex);\n    return this.data[index];\n  }\n\n  _calculateIndex(row, column) {\n    return row * this.columns + column;\n  }\n}\n","import { AbstractMatrix } from '../matrix';\n\nexport default class WrapperMatrix2D extends AbstractMatrix {\n  constructor(data) {\n    super();\n    this.data = data;\n    this.rows = data.length;\n    this.columns = data[0].length;\n  }\n\n  set(rowIndex, columnIndex, value) {\n    this.data[rowIndex][columnIndex] = value;\n    return this;\n  }\n\n  get(rowIndex, columnIndex) {\n    return this.data[rowIndex][columnIndex];\n  }\n}\n","import WrapperMatrix1D from './WrapperMatrix1D';\nimport WrapperMatrix2D from './WrapperMatrix2D';\n\nexport function wrap(array, options) {\n  if (Array.isArray(array)) {\n    if (array[0] && Array.isArray(array[0])) {\n      return new WrapperMatrix2D(array);\n    } else {\n      return new WrapperMatrix1D(array, options);\n    }\n  } else {\n    throw new Error('the argument is not an array');\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class LuDecomposition {\n  constructor(matrix) {\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n\n    let lu = matrix.clone();\n    let rows = lu.rows;\n    let columns = lu.columns;\n    let pivotVector = new Float64Array(rows);\n    let pivotSign = 1;\n    let i, j, k, p, s, t, v;\n    let LUcolj, kmax;\n\n    for (i = 0; i < rows; i++) {\n      pivotVector[i] = i;\n    }\n\n    LUcolj = new Float64Array(rows);\n\n    for (j = 0; j < columns; j++) {\n      for (i = 0; i < rows; i++) {\n        LUcolj[i] = lu.get(i, j);\n      }\n\n      for (i = 0; i < rows; i++) {\n        kmax = Math.min(i, j);\n        s = 0;\n        for (k = 0; k < kmax; k++) {\n          s += lu.get(i, k) * LUcolj[k];\n        }\n        LUcolj[i] -= s;\n        lu.set(i, j, LUcolj[i]);\n      }\n\n      p = j;\n      for (i = j + 1; i < rows; i++) {\n        if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) {\n          p = i;\n        }\n      }\n\n      if (p !== j) {\n        for (k = 0; k < columns; k++) {\n          t = lu.get(p, k);\n          lu.set(p, k, lu.get(j, k));\n          lu.set(j, k, t);\n        }\n\n        v = pivotVector[p];\n        pivotVector[p] = pivotVector[j];\n        pivotVector[j] = v;\n\n        pivotSign = -pivotSign;\n      }\n\n      if (j < rows && lu.get(j, j) !== 0) {\n        for (i = j + 1; i < rows; i++) {\n          lu.set(i, j, lu.get(i, j) / lu.get(j, j));\n        }\n      }\n    }\n\n    this.LU = lu;\n    this.pivotVector = pivotVector;\n    this.pivotSign = pivotSign;\n  }\n\n  isSingular() {\n    let data = this.LU;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      if (data.get(j, j) === 0) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let lu = this.LU;\n    let rows = lu.rows;\n\n    if (rows !== value.rows) {\n      throw new Error('Invalid matrix dimensions');\n    }\n    if (this.isSingular()) {\n      throw new Error('LU matrix is singular');\n    }\n\n    let count = value.columns;\n    let X = value.subMatrixRow(this.pivotVector, 0, count - 1);\n    let columns = lu.columns;\n    let i, j, k;\n\n    for (k = 0; k < columns; k++) {\n      for (i = k + 1; i < columns; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    for (k = columns - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / lu.get(k, k));\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * lu.get(i, k));\n        }\n      }\n    }\n    return X;\n  }\n\n  get determinant() {\n    let data = this.LU;\n    if (!data.isSquare()) {\n      throw new Error('Matrix must be square');\n    }\n    let determinant = this.pivotSign;\n    let col = data.columns;\n    for (let j = 0; j < col; j++) {\n      determinant *= data.get(j, j);\n    }\n    return determinant;\n  }\n\n  get lowerTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i > j) {\n          X.set(i, j, data.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, 1);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get upperTriangularMatrix() {\n    let data = this.LU;\n    let rows = data.rows;\n    let columns = data.columns;\n    let X = new Matrix(rows, columns);\n    for (let i = 0; i < rows; i++) {\n      for (let j = 0; j < columns; j++) {\n        if (i <= j) {\n          X.set(i, j, data.get(i, j));\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get pivotPermutationVector() {\n    return Array.from(this.pivotVector);\n  }\n}\n","export function hypotenuse(a, b) {\n  let r = 0;\n  if (Math.abs(a) > Math.abs(b)) {\n    r = b / a;\n    return Math.abs(a) * Math.sqrt(1 + r * r);\n  }\n  if (b !== 0) {\n    r = a / b;\n    return Math.abs(b) * Math.sqrt(1 + r * r);\n  }\n  return 0;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class QrDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let qr = value.clone();\n    let m = value.rows;\n    let n = value.columns;\n    let rdiag = new Float64Array(n);\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      let nrm = 0;\n      for (i = k; i < m; i++) {\n        nrm = hypotenuse(nrm, qr.get(i, k));\n      }\n      if (nrm !== 0) {\n        if (qr.get(k, k) < 0) {\n          nrm = -nrm;\n        }\n        for (i = k; i < m; i++) {\n          qr.set(i, k, qr.get(i, k) / nrm);\n        }\n        qr.set(k, k, qr.get(k, k) + 1);\n        for (j = k + 1; j < n; j++) {\n          s = 0;\n          for (i = k; i < m; i++) {\n            s += qr.get(i, k) * qr.get(i, j);\n          }\n          s = -s / qr.get(k, k);\n          for (i = k; i < m; i++) {\n            qr.set(i, j, qr.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n      rdiag[k] = -nrm;\n    }\n\n    this.QR = qr;\n    this.Rdiag = rdiag;\n  }\n\n  solve(value) {\n    value = Matrix.checkMatrix(value);\n\n    let qr = this.QR;\n    let m = qr.rows;\n\n    if (value.rows !== m) {\n      throw new Error('Matrix row dimensions must agree');\n    }\n    if (!this.isFullRank()) {\n      throw new Error('Matrix is rank deficient');\n    }\n\n    let count = value.columns;\n    let X = value.clone();\n    let n = qr.columns;\n    let i, j, k, s;\n\n    for (k = 0; k < n; k++) {\n      for (j = 0; j < count; j++) {\n        s = 0;\n        for (i = k; i < m; i++) {\n          s += qr.get(i, k) * X.get(i, j);\n        }\n        s = -s / qr.get(k, k);\n        for (i = k; i < m; i++) {\n          X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n        }\n      }\n    }\n    for (k = n - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        X.set(k, j, X.get(k, j) / this.Rdiag[k]);\n      }\n      for (i = 0; i < k; i++) {\n        for (j = 0; j < count; j++) {\n          X.set(i, j, X.get(i, j) - X.get(k, j) * qr.get(i, k));\n        }\n      }\n    }\n\n    return X.subMatrix(0, n - 1, 0, count - 1);\n  }\n\n  isFullRank() {\n    let columns = this.QR.columns;\n    for (let i = 0; i < columns; i++) {\n      if (this.Rdiag[i] === 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  get upperTriangularMatrix() {\n    let qr = this.QR;\n    let n = qr.columns;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        if (i < j) {\n          X.set(i, j, qr.get(i, j));\n        } else if (i === j) {\n          X.set(i, j, this.Rdiag[i]);\n        } else {\n          X.set(i, j, 0);\n        }\n      }\n    }\n    return X;\n  }\n\n  get orthogonalMatrix() {\n    let qr = this.QR;\n    let rows = qr.rows;\n    let columns = qr.columns;\n    let X = new Matrix(rows, columns);\n    let i, j, k, s;\n\n    for (k = columns - 1; k >= 0; k--) {\n      for (i = 0; i < rows; i++) {\n        X.set(i, k, 0);\n      }\n      X.set(k, k, 1);\n      for (j = k; j < columns; j++) {\n        if (qr.get(k, k) !== 0) {\n          s = 0;\n          for (i = k; i < rows; i++) {\n            s += qr.get(i, k) * X.get(i, j);\n          }\n\n          s = -s / qr.get(k, k);\n\n          for (i = k; i < rows; i++) {\n            X.set(i, j, X.get(i, j) + s * qr.get(i, k));\n          }\n        }\n      }\n    }\n    return X;\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class SingularValueDecomposition {\n  constructor(value, options = {}) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let m = value.rows;\n    let n = value.columns;\n\n    const {\n      computeLeftSingularVectors = true,\n      computeRightSingularVectors = true,\n      autoTranspose = false,\n    } = options;\n\n    let wantu = Boolean(computeLeftSingularVectors);\n    let wantv = Boolean(computeRightSingularVectors);\n\n    let swapped = false;\n    let a;\n    if (m < n) {\n      if (!autoTranspose) {\n        a = value.clone();\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose',\n        );\n      } else {\n        a = value.transpose();\n        m = a.rows;\n        n = a.columns;\n        swapped = true;\n        let aux = wantu;\n        wantu = wantv;\n        wantv = aux;\n      }\n    } else {\n      a = value.clone();\n    }\n\n    let nu = Math.min(m, n);\n    let ni = Math.min(m + 1, n);\n    let s = new Float64Array(ni);\n    let U = new Matrix(m, nu);\n    let V = new Matrix(n, n);\n\n    let e = new Float64Array(n);\n    let work = new Float64Array(m);\n\n    let si = new Float64Array(ni);\n    for (let i = 0; i < ni; i++) si[i] = i;\n\n    let nct = Math.min(m - 1, n);\n    let nrt = Math.max(0, Math.min(n - 2, m));\n    let mrc = Math.max(nct, nrt);\n\n    for (let k = 0; k < mrc; k++) {\n      if (k < nct) {\n        s[k] = 0;\n        for (let i = k; i < m; i++) {\n          s[k] = hypotenuse(s[k], a.get(i, k));\n        }\n        if (s[k] !== 0) {\n          if (a.get(k, k) < 0) {\n            s[k] = -s[k];\n          }\n          for (let i = k; i < m; i++) {\n            a.set(i, k, a.get(i, k) / s[k]);\n          }\n          a.set(k, k, a.get(k, k) + 1);\n        }\n        s[k] = -s[k];\n      }\n\n      for (let j = k + 1; j < n; j++) {\n        if (k < nct && s[k] !== 0) {\n          let t = 0;\n          for (let i = k; i < m; i++) {\n            t += a.get(i, k) * a.get(i, j);\n          }\n          t = -t / a.get(k, k);\n          for (let i = k; i < m; i++) {\n            a.set(i, j, a.get(i, j) + t * a.get(i, k));\n          }\n        }\n        e[j] = a.get(k, j);\n      }\n\n      if (wantu && k < nct) {\n        for (let i = k; i < m; i++) {\n          U.set(i, k, a.get(i, k));\n        }\n      }\n\n      if (k < nrt) {\n        e[k] = 0;\n        for (let i = k + 1; i < n; i++) {\n          e[k] = hypotenuse(e[k], e[i]);\n        }\n        if (e[k] !== 0) {\n          if (e[k + 1] < 0) {\n            e[k] = 0 - e[k];\n          }\n          for (let i = k + 1; i < n; i++) {\n            e[i] /= e[k];\n          }\n          e[k + 1] += 1;\n        }\n        e[k] = -e[k];\n        if (k + 1 < m && e[k] !== 0) {\n          for (let i = k + 1; i < m; i++) {\n            work[i] = 0;\n          }\n          for (let i = k + 1; i < m; i++) {\n            for (let j = k + 1; j < n; j++) {\n              work[i] += e[j] * a.get(i, j);\n            }\n          }\n          for (let j = k + 1; j < n; j++) {\n            let t = -e[j] / e[k + 1];\n            for (let i = k + 1; i < m; i++) {\n              a.set(i, j, a.get(i, j) + t * work[i]);\n            }\n          }\n        }\n        if (wantv) {\n          for (let i = k + 1; i < n; i++) {\n            V.set(i, k, e[i]);\n          }\n        }\n      }\n    }\n\n    let p = Math.min(n, m + 1);\n    if (nct < n) {\n      s[nct] = a.get(nct, nct);\n    }\n    if (m < p) {\n      s[p - 1] = 0;\n    }\n    if (nrt + 1 < p) {\n      e[nrt] = a.get(nrt, p - 1);\n    }\n    e[p - 1] = 0;\n\n    if (wantu) {\n      for (let j = nct; j < nu; j++) {\n        for (let i = 0; i < m; i++) {\n          U.set(i, j, 0);\n        }\n        U.set(j, j, 1);\n      }\n      for (let k = nct - 1; k >= 0; k--) {\n        if (s[k] !== 0) {\n          for (let j = k + 1; j < nu; j++) {\n            let t = 0;\n            for (let i = k; i < m; i++) {\n              t += U.get(i, k) * U.get(i, j);\n            }\n            t = -t / U.get(k, k);\n            for (let i = k; i < m; i++) {\n              U.set(i, j, U.get(i, j) + t * U.get(i, k));\n            }\n          }\n          for (let i = k; i < m; i++) {\n            U.set(i, k, -U.get(i, k));\n          }\n          U.set(k, k, 1 + U.get(k, k));\n          for (let i = 0; i < k - 1; i++) {\n            U.set(i, k, 0);\n          }\n        } else {\n          for (let i = 0; i < m; i++) {\n            U.set(i, k, 0);\n          }\n          U.set(k, k, 1);\n        }\n      }\n    }\n\n    if (wantv) {\n      for (let k = n - 1; k >= 0; k--) {\n        if (k < nrt && e[k] !== 0) {\n          for (let j = k + 1; j < n; j++) {\n            let t = 0;\n            for (let i = k + 1; i < n; i++) {\n              t += V.get(i, k) * V.get(i, j);\n            }\n            t = -t / V.get(k + 1, k);\n            for (let i = k + 1; i < n; i++) {\n              V.set(i, j, V.get(i, j) + t * V.get(i, k));\n            }\n          }\n        }\n        for (let i = 0; i < n; i++) {\n          V.set(i, k, 0);\n        }\n        V.set(k, k, 1);\n      }\n    }\n\n    let pp = p - 1;\n    let iter = 0;\n    let eps = Number.EPSILON;\n    while (p > 0) {\n      let k, kase;\n      for (k = p - 2; k >= -1; k--) {\n        if (k === -1) {\n          break;\n        }\n        const alpha =\n          Number.MIN_VALUE + eps * Math.abs(s[k] + Math.abs(s[k + 1]));\n        if (Math.abs(e[k]) <= alpha || Number.isNaN(e[k])) {\n          e[k] = 0;\n          break;\n        }\n      }\n      if (k === p - 2) {\n        kase = 4;\n      } else {\n        let ks;\n        for (ks = p - 1; ks >= k; ks--) {\n          if (ks === k) {\n            break;\n          }\n          let t =\n            (ks !== p ? Math.abs(e[ks]) : 0) +\n            (ks !== k + 1 ? Math.abs(e[ks - 1]) : 0);\n          if (Math.abs(s[ks]) <= eps * t) {\n            s[ks] = 0;\n            break;\n          }\n        }\n        if (ks === k) {\n          kase = 3;\n        } else if (ks === p - 1) {\n          kase = 1;\n        } else {\n          kase = 2;\n          k = ks;\n        }\n      }\n\n      k++;\n\n      switch (kase) {\n        case 1: {\n          let f = e[p - 2];\n          e[p - 2] = 0;\n          for (let j = p - 2; j >= k; j--) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            if (j !== k) {\n              f = -sn * e[j - 1];\n              e[j - 1] = cs * e[j - 1];\n            }\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, p - 1);\n                V.set(i, p - 1, -sn * V.get(i, j) + cs * V.get(i, p - 1));\n                V.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 2: {\n          let f = e[k - 1];\n          e[k - 1] = 0;\n          for (let j = k; j < p; j++) {\n            let t = hypotenuse(s[j], f);\n            let cs = s[j] / t;\n            let sn = f / t;\n            s[j] = t;\n            f = -sn * e[j];\n            e[j] = cs * e[j];\n            if (wantu) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, k - 1);\n                U.set(i, k - 1, -sn * U.get(i, j) + cs * U.get(i, k - 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          break;\n        }\n        case 3: {\n          const scale = Math.max(\n            Math.abs(s[p - 1]),\n            Math.abs(s[p - 2]),\n            Math.abs(e[p - 2]),\n            Math.abs(s[k]),\n            Math.abs(e[k]),\n          );\n          const sp = s[p - 1] / scale;\n          const spm1 = s[p - 2] / scale;\n          const epm1 = e[p - 2] / scale;\n          const sk = s[k] / scale;\n          const ek = e[k] / scale;\n          const b = ((spm1 + sp) * (spm1 - sp) + epm1 * epm1) / 2;\n          const c = sp * epm1 * (sp * epm1);\n          let shift = 0;\n          if (b !== 0 || c !== 0) {\n            if (b < 0) {\n              shift = 0 - Math.sqrt(b * b + c);\n            } else {\n              shift = Math.sqrt(b * b + c);\n            }\n            shift = c / (b + shift);\n          }\n          let f = (sk + sp) * (sk - sp) + shift;\n          let g = sk * ek;\n          for (let j = k; j < p - 1; j++) {\n            let t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            let cs = f / t;\n            let sn = g / t;\n            if (j !== k) {\n              e[j - 1] = t;\n            }\n            f = cs * s[j] + sn * e[j];\n            e[j] = cs * e[j] - sn * s[j];\n            g = sn * s[j + 1];\n            s[j + 1] = cs * s[j + 1];\n            if (wantv) {\n              for (let i = 0; i < n; i++) {\n                t = cs * V.get(i, j) + sn * V.get(i, j + 1);\n                V.set(i, j + 1, -sn * V.get(i, j) + cs * V.get(i, j + 1));\n                V.set(i, j, t);\n              }\n            }\n            t = hypotenuse(f, g);\n            if (t === 0) t = Number.MIN_VALUE;\n            cs = f / t;\n            sn = g / t;\n            s[j] = t;\n            f = cs * e[j] + sn * s[j + 1];\n            s[j + 1] = -sn * e[j] + cs * s[j + 1];\n            g = sn * e[j + 1];\n            e[j + 1] = cs * e[j + 1];\n            if (wantu && j < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = cs * U.get(i, j) + sn * U.get(i, j + 1);\n                U.set(i, j + 1, -sn * U.get(i, j) + cs * U.get(i, j + 1));\n                U.set(i, j, t);\n              }\n            }\n          }\n          e[p - 2] = f;\n          iter = iter + 1;\n          break;\n        }\n        case 4: {\n          if (s[k] <= 0) {\n            s[k] = s[k] < 0 ? -s[k] : 0;\n            if (wantv) {\n              for (let i = 0; i <= pp; i++) {\n                V.set(i, k, -V.get(i, k));\n              }\n            }\n          }\n          while (k < pp) {\n            if (s[k] >= s[k + 1]) {\n              break;\n            }\n            let t = s[k];\n            s[k] = s[k + 1];\n            s[k + 1] = t;\n            if (wantv && k < n - 1) {\n              for (let i = 0; i < n; i++) {\n                t = V.get(i, k + 1);\n                V.set(i, k + 1, V.get(i, k));\n                V.set(i, k, t);\n              }\n            }\n            if (wantu && k < m - 1) {\n              for (let i = 0; i < m; i++) {\n                t = U.get(i, k + 1);\n                U.set(i, k + 1, U.get(i, k));\n                U.set(i, k, t);\n              }\n            }\n            k++;\n          }\n          iter = 0;\n          p--;\n          break;\n        }\n        // no default\n      }\n    }\n\n    if (swapped) {\n      let tmp = V;\n      V = U;\n      U = tmp;\n    }\n\n    this.m = m;\n    this.n = n;\n    this.s = s;\n    this.U = U;\n    this.V = V;\n  }\n\n  solve(value) {\n    let Y = value;\n    let e = this.threshold;\n    let scols = this.s.length;\n    let Ls = Matrix.zeros(scols, scols);\n\n    for (let i = 0; i < scols; i++) {\n      if (Math.abs(this.s[i]) <= e) {\n        Ls.set(i, i, 0);\n      } else {\n        Ls.set(i, i, 1 / this.s[i]);\n      }\n    }\n\n    let U = this.U;\n    let V = this.rightSingularVectors;\n\n    let VL = V.mmul(Ls);\n    let vrows = V.rows;\n    let urows = U.rows;\n    let VLU = Matrix.zeros(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < scols; k++) {\n          sum += VL.get(i, k) * U.get(j, k);\n        }\n        VLU.set(i, j, sum);\n      }\n    }\n\n    return VLU.mmul(Y);\n  }\n\n  solveForDiagonal(value) {\n    return this.solve(Matrix.diag(value));\n  }\n\n  inverse() {\n    let V = this.V;\n    let e = this.threshold;\n    let vrows = V.rows;\n    let vcols = V.columns;\n    let X = new Matrix(vrows, this.s.length);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < vcols; j++) {\n        if (Math.abs(this.s[j]) > e) {\n          X.set(i, j, V.get(i, j) / this.s[j]);\n        }\n      }\n    }\n\n    let U = this.U;\n\n    let urows = U.rows;\n    let ucols = U.columns;\n    let Y = new Matrix(vrows, urows);\n\n    for (let i = 0; i < vrows; i++) {\n      for (let j = 0; j < urows; j++) {\n        let sum = 0;\n        for (let k = 0; k < ucols; k++) {\n          sum += X.get(i, k) * U.get(j, k);\n        }\n        Y.set(i, j, sum);\n      }\n    }\n\n    return Y;\n  }\n\n  get condition() {\n    return this.s[0] / this.s[Math.min(this.m, this.n) - 1];\n  }\n\n  get norm2() {\n    return this.s[0];\n  }\n\n  get rank() {\n    let tol = Math.max(this.m, this.n) * this.s[0] * Number.EPSILON;\n    let r = 0;\n    let s = this.s;\n    for (let i = 0, ii = s.length; i < ii; i++) {\n      if (s[i] > tol) {\n        r++;\n      }\n    }\n    return r;\n  }\n\n  get diagonal() {\n    return Array.from(this.s);\n  }\n\n  get threshold() {\n    return (Number.EPSILON / 2) * Math.max(this.m, this.n) * this.s[0];\n  }\n\n  get leftSingularVectors() {\n    return this.U;\n  }\n\n  get rightSingularVectors() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    return Matrix.diag(this.s);\n  }\n}\n","import LuDecomposition from './dc/lu';\nimport QrDecomposition from './dc/qr';\nimport SingularValueDecomposition from './dc/svd';\nimport Matrix from './matrix';\nimport WrapperMatrix2D from './wrap/WrapperMatrix2D';\n\nexport function inverse(matrix, useSVD = false) {\n  matrix = WrapperMatrix2D.checkMatrix(matrix);\n  if (useSVD) {\n    return new SingularValueDecomposition(matrix).inverse();\n  } else {\n    return solve(matrix, Matrix.eye(matrix.rows));\n  }\n}\n\nexport function solve(leftHandSide, rightHandSide, useSVD = false) {\n  leftHandSide = WrapperMatrix2D.checkMatrix(leftHandSide);\n  rightHandSide = WrapperMatrix2D.checkMatrix(rightHandSide);\n  if (useSVD) {\n    return new SingularValueDecomposition(leftHandSide).solve(rightHandSide);\n  } else {\n    return leftHandSide.isSquare()\n      ? new LuDecomposition(leftHandSide).solve(rightHandSide)\n      : new QrDecomposition(leftHandSide).solve(rightHandSide);\n  }\n}\n","import Matrix from './matrix';\nimport LuDecomposition from './dc/lu';\nimport MatrixSelectionView from './views/selection';\n\nexport function determinant(matrix) {\n  matrix = Matrix.checkMatrix(matrix);\n  if (matrix.isSquare()) {\n    let a, b, c, d;\n    if (matrix.columns === 2) {\n      // 2 x 2 matrix\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(1, 0);\n      d = matrix.get(1, 1);\n\n      return a * d - b * c;\n    } else if (matrix.columns === 3) {\n      // 3 x 3 matrix\n      let subMatrix0, subMatrix1, subMatrix2;\n      subMatrix0 = new MatrixSelectionView(matrix, [1, 2], [1, 2]);\n      subMatrix1 = new MatrixSelectionView(matrix, [1, 2], [0, 2]);\n      subMatrix2 = new MatrixSelectionView(matrix, [1, 2], [0, 1]);\n      a = matrix.get(0, 0);\n      b = matrix.get(0, 1);\n      c = matrix.get(0, 2);\n\n      return (\n        a * determinant(subMatrix0) -\n        b * determinant(subMatrix1) +\n        c * determinant(subMatrix2)\n      );\n    } else {\n      // general purpose determinant using the LU decomposition\n      return new LuDecomposition(matrix).determinant;\n    }\n  } else {\n    throw Error('determinant can only be calculated for a square matrix');\n  }\n}\n","import Matrix from './matrix';\nimport SingularValueDecomposition from './dc/svd';\n\nfunction xrange(n, exception) {\n  let range = [];\n  for (let i = 0; i < n; i++) {\n    if (i !== exception) {\n      range.push(i);\n    }\n  }\n  return range;\n}\n\nfunction dependenciesOneRow(\n  error,\n  matrix,\n  index,\n  thresholdValue = 10e-10,\n  thresholdError = 10e-10,\n) {\n  if (error > thresholdError) {\n    return new Array(matrix.rows + 1).fill(0);\n  } else {\n    let returnArray = matrix.addRow(index, [0]);\n    for (let i = 0; i < returnArray.rows; i++) {\n      if (Math.abs(returnArray.get(i, 0)) < thresholdValue) {\n        returnArray.set(i, 0, 0);\n      }\n    }\n    return returnArray.to1DArray();\n  }\n}\n\nexport function linearDependencies(matrix, options = {}) {\n  const { thresholdValue = 10e-10, thresholdError = 10e-10 } = options;\n  matrix = Matrix.checkMatrix(matrix);\n\n  let n = matrix.rows;\n  let results = new Matrix(n, n);\n\n  for (let i = 0; i < n; i++) {\n    let b = Matrix.columnVector(matrix.getRow(i));\n    let Abis = matrix.subMatrixRow(xrange(n, i)).transpose();\n    let svd = new SingularValueDecomposition(Abis);\n    let x = svd.solve(b);\n    let error = Matrix.sub(b, Abis.mmul(x))\n      .abs()\n      .max();\n    results.setRow(\n      i,\n      dependenciesOneRow(error, x, i, thresholdValue, thresholdError),\n    );\n  }\n  return results;\n}\n","import SVD from './dc/svd';\nimport Matrix from './matrix';\n\nexport function pseudoInverse(matrix, threshold = Number.EPSILON) {\n  matrix = Matrix.checkMatrix(matrix);\n  let svdSolution = new SVD(matrix, { autoTranspose: true });\n\n  let U = svdSolution.leftSingularVectors;\n  let V = svdSolution.rightSingularVectors;\n  let s = svdSolution.diagonal;\n\n  for (let i = 0; i < s.length; i++) {\n    if (Math.abs(s[i]) > threshold) {\n      s[i] = 1.0 / s[i];\n    } else {\n      s[i] = 0.0;\n    }\n  }\n\n  return V.mmul(Matrix.diag(s).mmul(U.transpose()));\n}\n","import Matrix from './matrix';\n\nexport function covariance(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = Matrix.checkMatrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !Array.isArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = Matrix.checkMatrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n  const { center = true } = options;\n  if (center) {\n    xMatrix = xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix = yMatrix.center('column');\n    }\n  }\n  const cov = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < cov.rows; i++) {\n    for (let j = 0; j < cov.columns; j++) {\n      cov.set(i, j, cov.get(i, j) * (1 / (xMatrix.rows - 1)));\n    }\n  }\n  return cov;\n}\n","import Matrix from './matrix';\n\nexport function correlation(xMatrix, yMatrix = xMatrix, options = {}) {\n  xMatrix = Matrix.checkMatrix(xMatrix);\n  let yIsSame = false;\n  if (\n    typeof yMatrix === 'object' &&\n    !Matrix.isMatrix(yMatrix) &&\n    !Array.isArray(yMatrix)\n  ) {\n    options = yMatrix;\n    yMatrix = xMatrix;\n    yIsSame = true;\n  } else {\n    yMatrix = Matrix.checkMatrix(yMatrix);\n  }\n  if (xMatrix.rows !== yMatrix.rows) {\n    throw new TypeError('Both matrices must have the same number of rows');\n  }\n\n  const { center = true, scale = true } = options;\n  if (center) {\n    xMatrix.center('column');\n    if (!yIsSame) {\n      yMatrix.center('column');\n    }\n  }\n  if (scale) {\n    xMatrix.scale('column');\n    if (!yIsSame) {\n      yMatrix.scale('column');\n    }\n  }\n\n  const sdx = xMatrix.standardDeviation('column', { unbiased: true });\n  const sdy = yIsSame\n    ? sdx\n    : yMatrix.standardDeviation('column', { unbiased: true });\n\n  const corr = xMatrix.transpose().mmul(yMatrix);\n  for (let i = 0; i < corr.rows; i++) {\n    for (let j = 0; j < corr.columns; j++) {\n      corr.set(\n        i,\n        j,\n        corr.get(i, j) * (1 / (sdx[i] * sdy[j])) * (1 / (xMatrix.rows - 1)),\n      );\n    }\n  }\n  return corr;\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nimport { hypotenuse } from './util';\n\nexport default class EigenvalueDecomposition {\n  constructor(matrix, options = {}) {\n    const { assumeSymmetric = false } = options;\n\n    matrix = WrapperMatrix2D.checkMatrix(matrix);\n    if (!matrix.isSquare()) {\n      throw new Error('Matrix is not a square matrix');\n    }\n\n    let n = matrix.columns;\n    let V = new Matrix(n, n);\n    let d = new Float64Array(n);\n    let e = new Float64Array(n);\n    let value = matrix;\n    let i, j;\n\n    let isSymmetric = false;\n    if (assumeSymmetric) {\n      isSymmetric = true;\n    } else {\n      isSymmetric = matrix.isSymmetric();\n    }\n\n    if (isSymmetric) {\n      for (i = 0; i < n; i++) {\n        for (j = 0; j < n; j++) {\n          V.set(i, j, value.get(i, j));\n        }\n      }\n      tred2(n, e, d, V);\n      tql2(n, e, d, V);\n    } else {\n      let H = new Matrix(n, n);\n      let ort = new Float64Array(n);\n      for (j = 0; j < n; j++) {\n        for (i = 0; i < n; i++) {\n          H.set(i, j, value.get(i, j));\n        }\n      }\n      orthes(n, H, ort, V);\n      hqr2(n, e, d, V, H);\n    }\n\n    this.n = n;\n    this.e = e;\n    this.d = d;\n    this.V = V;\n  }\n\n  get realEigenvalues() {\n    return Array.from(this.d);\n  }\n\n  get imaginaryEigenvalues() {\n    return Array.from(this.e);\n  }\n\n  get eigenvectorMatrix() {\n    return this.V;\n  }\n\n  get diagonalMatrix() {\n    let n = this.n;\n    let e = this.e;\n    let d = this.d;\n    let X = new Matrix(n, n);\n    let i, j;\n    for (i = 0; i < n; i++) {\n      for (j = 0; j < n; j++) {\n        X.set(i, j, 0);\n      }\n      X.set(i, i, d[i]);\n      if (e[i] > 0) {\n        X.set(i, i + 1, e[i]);\n      } else if (e[i] < 0) {\n        X.set(i, i - 1, e[i]);\n      }\n    }\n    return X;\n  }\n}\n\nfunction tred2(n, e, d, V) {\n  let f, g, h, i, j, k, hh, scale;\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n  }\n\n  for (i = n - 1; i > 0; i--) {\n    scale = 0;\n    h = 0;\n    for (k = 0; k < i; k++) {\n      scale = scale + Math.abs(d[k]);\n    }\n\n    if (scale === 0) {\n      e[i] = d[i - 1];\n      for (j = 0; j < i; j++) {\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n        V.set(j, i, 0);\n      }\n    } else {\n      for (k = 0; k < i; k++) {\n        d[k] /= scale;\n        h += d[k] * d[k];\n      }\n\n      f = d[i - 1];\n      g = Math.sqrt(h);\n      if (f > 0) {\n        g = -g;\n      }\n\n      e[i] = scale * g;\n      h = h - f * g;\n      d[i - 1] = f - g;\n      for (j = 0; j < i; j++) {\n        e[j] = 0;\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        V.set(j, i, f);\n        g = e[j] + V.get(j, j) * f;\n        for (k = j + 1; k <= i - 1; k++) {\n          g += V.get(k, j) * d[k];\n          e[k] += V.get(k, j) * f;\n        }\n        e[j] = g;\n      }\n\n      f = 0;\n      for (j = 0; j < i; j++) {\n        e[j] /= h;\n        f += e[j] * d[j];\n      }\n\n      hh = f / (h + h);\n      for (j = 0; j < i; j++) {\n        e[j] -= hh * d[j];\n      }\n\n      for (j = 0; j < i; j++) {\n        f = d[j];\n        g = e[j];\n        for (k = j; k <= i - 1; k++) {\n          V.set(k, j, V.get(k, j) - (f * e[k] + g * d[k]));\n        }\n        d[j] = V.get(i - 1, j);\n        V.set(i, j, 0);\n      }\n    }\n    d[i] = h;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    V.set(n - 1, i, V.get(i, i));\n    V.set(i, i, 1);\n    h = d[i + 1];\n    if (h !== 0) {\n      for (k = 0; k <= i; k++) {\n        d[k] = V.get(k, i + 1) / h;\n      }\n\n      for (j = 0; j <= i; j++) {\n        g = 0;\n        for (k = 0; k <= i; k++) {\n          g += V.get(k, i + 1) * V.get(k, j);\n        }\n        for (k = 0; k <= i; k++) {\n          V.set(k, j, V.get(k, j) - g * d[k]);\n        }\n      }\n    }\n\n    for (k = 0; k <= i; k++) {\n      V.set(k, i + 1, 0);\n    }\n  }\n\n  for (j = 0; j < n; j++) {\n    d[j] = V.get(n - 1, j);\n    V.set(n - 1, j, 0);\n  }\n\n  V.set(n - 1, n - 1, 1);\n  e[0] = 0;\n}\n\nfunction tql2(n, e, d, V) {\n  let g, h, i, j, k, l, m, p, r, dl1, c, c2, c3, el1, s, s2, iter;\n\n  for (i = 1; i < n; i++) {\n    e[i - 1] = e[i];\n  }\n\n  e[n - 1] = 0;\n\n  let f = 0;\n  let tst1 = 0;\n  let eps = Number.EPSILON;\n\n  for (l = 0; l < n; l++) {\n    tst1 = Math.max(tst1, Math.abs(d[l]) + Math.abs(e[l]));\n    m = l;\n    while (m < n) {\n      if (Math.abs(e[m]) <= eps * tst1) {\n        break;\n      }\n      m++;\n    }\n\n    if (m > l) {\n      iter = 0;\n      do {\n        iter = iter + 1;\n\n        g = d[l];\n        p = (d[l + 1] - g) / (2 * e[l]);\n        r = hypotenuse(p, 1);\n        if (p < 0) {\n          r = -r;\n        }\n\n        d[l] = e[l] / (p + r);\n        d[l + 1] = e[l] * (p + r);\n        dl1 = d[l + 1];\n        h = g - d[l];\n        for (i = l + 2; i < n; i++) {\n          d[i] -= h;\n        }\n\n        f = f + h;\n\n        p = d[m];\n        c = 1;\n        c2 = c;\n        c3 = c;\n        el1 = e[l + 1];\n        s = 0;\n        s2 = 0;\n        for (i = m - 1; i >= l; i--) {\n          c3 = c2;\n          c2 = c;\n          s2 = s;\n          g = c * e[i];\n          h = c * p;\n          r = hypotenuse(p, e[i]);\n          e[i + 1] = s * r;\n          s = e[i] / r;\n          c = p / r;\n          p = c * d[i] - s * g;\n          d[i + 1] = h + s * (c * g + s * d[i]);\n\n          for (k = 0; k < n; k++) {\n            h = V.get(k, i + 1);\n            V.set(k, i + 1, s * V.get(k, i) + c * h);\n            V.set(k, i, c * V.get(k, i) - s * h);\n          }\n        }\n\n        p = (-s * s2 * c3 * el1 * e[l]) / dl1;\n        e[l] = s * p;\n        d[l] = c * p;\n      } while (Math.abs(e[l]) > eps * tst1);\n    }\n    d[l] = d[l] + f;\n    e[l] = 0;\n  }\n\n  for (i = 0; i < n - 1; i++) {\n    k = i;\n    p = d[i];\n    for (j = i + 1; j < n; j++) {\n      if (d[j] < p) {\n        k = j;\n        p = d[j];\n      }\n    }\n\n    if (k !== i) {\n      d[k] = d[i];\n      d[i] = p;\n      for (j = 0; j < n; j++) {\n        p = V.get(j, i);\n        V.set(j, i, V.get(j, k));\n        V.set(j, k, p);\n      }\n    }\n  }\n}\n\nfunction orthes(n, H, ort, V) {\n  let low = 0;\n  let high = n - 1;\n  let f, g, h, i, j, m;\n  let scale;\n\n  for (m = low + 1; m <= high - 1; m++) {\n    scale = 0;\n    for (i = m; i <= high; i++) {\n      scale = scale + Math.abs(H.get(i, m - 1));\n    }\n\n    if (scale !== 0) {\n      h = 0;\n      for (i = high; i >= m; i--) {\n        ort[i] = H.get(i, m - 1) / scale;\n        h += ort[i] * ort[i];\n      }\n\n      g = Math.sqrt(h);\n      if (ort[m] > 0) {\n        g = -g;\n      }\n\n      h = h - ort[m] * g;\n      ort[m] = ort[m] - g;\n\n      for (j = m; j < n; j++) {\n        f = 0;\n        for (i = high; i >= m; i--) {\n          f += ort[i] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (i = m; i <= high; i++) {\n          H.set(i, j, H.get(i, j) - f * ort[i]);\n        }\n      }\n\n      for (i = 0; i <= high; i++) {\n        f = 0;\n        for (j = high; j >= m; j--) {\n          f += ort[j] * H.get(i, j);\n        }\n\n        f = f / h;\n        for (j = m; j <= high; j++) {\n          H.set(i, j, H.get(i, j) - f * ort[j]);\n        }\n      }\n\n      ort[m] = scale * ort[m];\n      H.set(m, m - 1, scale * g);\n    }\n  }\n\n  for (i = 0; i < n; i++) {\n    for (j = 0; j < n; j++) {\n      V.set(i, j, i === j ? 1 : 0);\n    }\n  }\n\n  for (m = high - 1; m >= low + 1; m--) {\n    if (H.get(m, m - 1) !== 0) {\n      for (i = m + 1; i <= high; i++) {\n        ort[i] = H.get(i, m - 1);\n      }\n\n      for (j = m; j <= high; j++) {\n        g = 0;\n        for (i = m; i <= high; i++) {\n          g += ort[i] * V.get(i, j);\n        }\n\n        g = g / ort[m] / H.get(m, m - 1);\n        for (i = m; i <= high; i++) {\n          V.set(i, j, V.get(i, j) + g * ort[i]);\n        }\n      }\n    }\n  }\n}\n\nfunction hqr2(nn, e, d, V, H) {\n  let n = nn - 1;\n  let low = 0;\n  let high = nn - 1;\n  let eps = Number.EPSILON;\n  let exshift = 0;\n  let norm = 0;\n  let p = 0;\n  let q = 0;\n  let r = 0;\n  let s = 0;\n  let z = 0;\n  let iter = 0;\n  let i, j, k, l, m, t, w, x, y;\n  let ra, sa, vr, vi;\n  let notlast, cdivres;\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      d[i] = H.get(i, i);\n      e[i] = 0;\n    }\n\n    for (j = Math.max(i - 1, 0); j < nn; j++) {\n      norm = norm + Math.abs(H.get(i, j));\n    }\n  }\n\n  while (n >= low) {\n    l = n;\n    while (l > low) {\n      s = Math.abs(H.get(l - 1, l - 1)) + Math.abs(H.get(l, l));\n      if (s === 0) {\n        s = norm;\n      }\n      if (Math.abs(H.get(l, l - 1)) < eps * s) {\n        break;\n      }\n      l--;\n    }\n\n    if (l === n) {\n      H.set(n, n, H.get(n, n) + exshift);\n      d[n] = H.get(n, n);\n      e[n] = 0;\n      n--;\n      iter = 0;\n    } else if (l === n - 1) {\n      w = H.get(n, n - 1) * H.get(n - 1, n);\n      p = (H.get(n - 1, n - 1) - H.get(n, n)) / 2;\n      q = p * p + w;\n      z = Math.sqrt(Math.abs(q));\n      H.set(n, n, H.get(n, n) + exshift);\n      H.set(n - 1, n - 1, H.get(n - 1, n - 1) + exshift);\n      x = H.get(n, n);\n\n      if (q >= 0) {\n        z = p >= 0 ? p + z : p - z;\n        d[n - 1] = x + z;\n        d[n] = d[n - 1];\n        if (z !== 0) {\n          d[n] = x - w / z;\n        }\n        e[n - 1] = 0;\n        e[n] = 0;\n        x = H.get(n, n - 1);\n        s = Math.abs(x) + Math.abs(z);\n        p = x / s;\n        q = z / s;\n        r = Math.sqrt(p * p + q * q);\n        p = p / r;\n        q = q / r;\n\n        for (j = n - 1; j < nn; j++) {\n          z = H.get(n - 1, j);\n          H.set(n - 1, j, q * z + p * H.get(n, j));\n          H.set(n, j, q * H.get(n, j) - p * z);\n        }\n\n        for (i = 0; i <= n; i++) {\n          z = H.get(i, n - 1);\n          H.set(i, n - 1, q * z + p * H.get(i, n));\n          H.set(i, n, q * H.get(i, n) - p * z);\n        }\n\n        for (i = low; i <= high; i++) {\n          z = V.get(i, n - 1);\n          V.set(i, n - 1, q * z + p * V.get(i, n));\n          V.set(i, n, q * V.get(i, n) - p * z);\n        }\n      } else {\n        d[n - 1] = x + p;\n        d[n] = x + p;\n        e[n - 1] = z;\n        e[n] = -z;\n      }\n\n      n = n - 2;\n      iter = 0;\n    } else {\n      x = H.get(n, n);\n      y = 0;\n      w = 0;\n      if (l < n) {\n        y = H.get(n - 1, n - 1);\n        w = H.get(n, n - 1) * H.get(n - 1, n);\n      }\n\n      if (iter === 10) {\n        exshift += x;\n        for (i = low; i <= n; i++) {\n          H.set(i, i, H.get(i, i) - x);\n        }\n        s = Math.abs(H.get(n, n - 1)) + Math.abs(H.get(n - 1, n - 2));\n        x = y = 0.75 * s;\n        w = -0.4375 * s * s;\n      }\n\n      if (iter === 30) {\n        s = (y - x) / 2;\n        s = s * s + w;\n        if (s > 0) {\n          s = Math.sqrt(s);\n          if (y < x) {\n            s = -s;\n          }\n          s = x - w / ((y - x) / 2 + s);\n          for (i = low; i <= n; i++) {\n            H.set(i, i, H.get(i, i) - s);\n          }\n          exshift += s;\n          x = y = w = 0.964;\n        }\n      }\n\n      iter = iter + 1;\n\n      m = n - 2;\n      while (m >= l) {\n        z = H.get(m, m);\n        r = x - z;\n        s = y - z;\n        p = (r * s - w) / H.get(m + 1, m) + H.get(m, m + 1);\n        q = H.get(m + 1, m + 1) - z - r - s;\n        r = H.get(m + 2, m + 1);\n        s = Math.abs(p) + Math.abs(q) + Math.abs(r);\n        p = p / s;\n        q = q / s;\n        r = r / s;\n        if (m === l) {\n          break;\n        }\n        if (\n          Math.abs(H.get(m, m - 1)) * (Math.abs(q) + Math.abs(r)) <\n          eps *\n            (Math.abs(p) *\n              (Math.abs(H.get(m - 1, m - 1)) +\n                Math.abs(z) +\n                Math.abs(H.get(m + 1, m + 1))))\n        ) {\n          break;\n        }\n        m--;\n      }\n\n      for (i = m + 2; i <= n; i++) {\n        H.set(i, i - 2, 0);\n        if (i > m + 2) {\n          H.set(i, i - 3, 0);\n        }\n      }\n\n      for (k = m; k <= n - 1; k++) {\n        notlast = k !== n - 1;\n        if (k !== m) {\n          p = H.get(k, k - 1);\n          q = H.get(k + 1, k - 1);\n          r = notlast ? H.get(k + 2, k - 1) : 0;\n          x = Math.abs(p) + Math.abs(q) + Math.abs(r);\n          if (x !== 0) {\n            p = p / x;\n            q = q / x;\n            r = r / x;\n          }\n        }\n\n        if (x === 0) {\n          break;\n        }\n\n        s = Math.sqrt(p * p + q * q + r * r);\n        if (p < 0) {\n          s = -s;\n        }\n\n        if (s !== 0) {\n          if (k !== m) {\n            H.set(k, k - 1, -s * x);\n          } else if (l !== m) {\n            H.set(k, k - 1, -H.get(k, k - 1));\n          }\n\n          p = p + s;\n          x = p / s;\n          y = q / s;\n          z = r / s;\n          q = q / p;\n          r = r / p;\n\n          for (j = k; j < nn; j++) {\n            p = H.get(k, j) + q * H.get(k + 1, j);\n            if (notlast) {\n              p = p + r * H.get(k + 2, j);\n              H.set(k + 2, j, H.get(k + 2, j) - p * z);\n            }\n\n            H.set(k, j, H.get(k, j) - p * x);\n            H.set(k + 1, j, H.get(k + 1, j) - p * y);\n          }\n\n          for (i = 0; i <= Math.min(n, k + 3); i++) {\n            p = x * H.get(i, k) + y * H.get(i, k + 1);\n            if (notlast) {\n              p = p + z * H.get(i, k + 2);\n              H.set(i, k + 2, H.get(i, k + 2) - p * r);\n            }\n\n            H.set(i, k, H.get(i, k) - p);\n            H.set(i, k + 1, H.get(i, k + 1) - p * q);\n          }\n\n          for (i = low; i <= high; i++) {\n            p = x * V.get(i, k) + y * V.get(i, k + 1);\n            if (notlast) {\n              p = p + z * V.get(i, k + 2);\n              V.set(i, k + 2, V.get(i, k + 2) - p * r);\n            }\n\n            V.set(i, k, V.get(i, k) - p);\n            V.set(i, k + 1, V.get(i, k + 1) - p * q);\n          }\n        }\n      }\n    }\n  }\n\n  if (norm === 0) {\n    return;\n  }\n\n  for (n = nn - 1; n >= 0; n--) {\n    p = d[n];\n    q = e[n];\n\n    if (q === 0) {\n      l = n;\n      H.set(n, n, 1);\n      for (i = n - 1; i >= 0; i--) {\n        w = H.get(i, i) - p;\n        r = 0;\n        for (j = l; j <= n; j++) {\n          r = r + H.get(i, j) * H.get(j, n);\n        }\n\n        if (e[i] < 0) {\n          z = w;\n          s = r;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            H.set(i, n, w !== 0 ? -r / w : -r / (eps * norm));\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            q = (d[i] - p) * (d[i] - p) + e[i] * e[i];\n            t = (x * s - z * r) / q;\n            H.set(i, n, t);\n            H.set(\n              i + 1,\n              n,\n              Math.abs(x) > Math.abs(z) ? (-r - w * t) / x : (-s - y * t) / z,\n            );\n          }\n\n          t = Math.abs(H.get(i, n));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    } else if (q < 0) {\n      l = n - 1;\n\n      if (Math.abs(H.get(n, n - 1)) > Math.abs(H.get(n - 1, n))) {\n        H.set(n - 1, n - 1, q / H.get(n, n - 1));\n        H.set(n - 1, n, -(H.get(n, n) - p) / H.get(n, n - 1));\n      } else {\n        cdivres = cdiv(0, -H.get(n - 1, n), H.get(n - 1, n - 1) - p, q);\n        H.set(n - 1, n - 1, cdivres[0]);\n        H.set(n - 1, n, cdivres[1]);\n      }\n\n      H.set(n, n - 1, 0);\n      H.set(n, n, 1);\n      for (i = n - 2; i >= 0; i--) {\n        ra = 0;\n        sa = 0;\n        for (j = l; j <= n; j++) {\n          ra = ra + H.get(i, j) * H.get(j, n - 1);\n          sa = sa + H.get(i, j) * H.get(j, n);\n        }\n\n        w = H.get(i, i) - p;\n\n        if (e[i] < 0) {\n          z = w;\n          r = ra;\n          s = sa;\n        } else {\n          l = i;\n          if (e[i] === 0) {\n            cdivres = cdiv(-ra, -sa, w, q);\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n          } else {\n            x = H.get(i, i + 1);\n            y = H.get(i + 1, i);\n            vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q;\n            vi = (d[i] - p) * 2 * q;\n            if (vr === 0 && vi === 0) {\n              vr =\n                eps *\n                norm *\n                (Math.abs(w) +\n                  Math.abs(q) +\n                  Math.abs(x) +\n                  Math.abs(y) +\n                  Math.abs(z));\n            }\n            cdivres = cdiv(\n              x * r - z * ra + q * sa,\n              x * s - z * sa - q * ra,\n              vr,\n              vi,\n            );\n            H.set(i, n - 1, cdivres[0]);\n            H.set(i, n, cdivres[1]);\n            if (Math.abs(x) > Math.abs(z) + Math.abs(q)) {\n              H.set(\n                i + 1,\n                n - 1,\n                (-ra - w * H.get(i, n - 1) + q * H.get(i, n)) / x,\n              );\n              H.set(\n                i + 1,\n                n,\n                (-sa - w * H.get(i, n) - q * H.get(i, n - 1)) / x,\n              );\n            } else {\n              cdivres = cdiv(\n                -r - y * H.get(i, n - 1),\n                -s - y * H.get(i, n),\n                z,\n                q,\n              );\n              H.set(i + 1, n - 1, cdivres[0]);\n              H.set(i + 1, n, cdivres[1]);\n            }\n          }\n\n          t = Math.max(Math.abs(H.get(i, n - 1)), Math.abs(H.get(i, n)));\n          if (eps * t * t > 1) {\n            for (j = i; j <= n; j++) {\n              H.set(j, n - 1, H.get(j, n - 1) / t);\n              H.set(j, n, H.get(j, n) / t);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  for (i = 0; i < nn; i++) {\n    if (i < low || i > high) {\n      for (j = i; j < nn; j++) {\n        V.set(i, j, H.get(i, j));\n      }\n    }\n  }\n\n  for (j = nn - 1; j >= low; j--) {\n    for (i = low; i <= high; i++) {\n      z = 0;\n      for (k = low; k <= Math.min(j, high); k++) {\n        z = z + V.get(i, k) * H.get(k, j);\n      }\n      V.set(i, j, z);\n    }\n  }\n}\n\nfunction cdiv(xr, xi, yr, yi) {\n  let r, d;\n  if (Math.abs(yr) > Math.abs(yi)) {\n    r = yi / yr;\n    d = yr + r * yi;\n    return [(xr + r * xi) / d, (xi - r * xr) / d];\n  } else {\n    r = yr / yi;\n    d = yi + r * yr;\n    return [(r * xr + xi) / d, (r * xi - xr) / d];\n  }\n}\n","import Matrix from '../matrix';\nimport WrapperMatrix2D from '../wrap/WrapperMatrix2D';\n\nexport default class CholeskyDecomposition {\n  constructor(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n    if (!value.isSymmetric()) {\n      throw new Error('Matrix is not symmetric');\n    }\n\n    let a = value;\n    let dimension = a.rows;\n    let l = new Matrix(dimension, dimension);\n    let positiveDefinite = true;\n    let i, j, k;\n\n    for (j = 0; j < dimension; j++) {\n      let d = 0;\n      for (k = 0; k < j; k++) {\n        let s = 0;\n        for (i = 0; i < k; i++) {\n          s += l.get(k, i) * l.get(j, i);\n        }\n        s = (a.get(j, k) - s) / l.get(k, k);\n        l.set(j, k, s);\n        d = d + s * s;\n      }\n\n      d = a.get(j, j) - d;\n\n      positiveDefinite &= d > 0;\n      l.set(j, j, Math.sqrt(Math.max(d, 0)));\n      for (k = j + 1; k < dimension; k++) {\n        l.set(j, k, 0);\n      }\n    }\n\n    this.L = l;\n    this.positiveDefinite = Boolean(positiveDefinite);\n  }\n\n  isPositiveDefinite() {\n    return this.positiveDefinite;\n  }\n\n  solve(value) {\n    value = WrapperMatrix2D.checkMatrix(value);\n\n    let l = this.L;\n    let dimension = l.rows;\n\n    if (value.rows !== dimension) {\n      throw new Error('Matrix dimensions do not match');\n    }\n    if (this.isPositiveDefinite() === false) {\n      throw new Error('Matrix is not positive definite');\n    }\n\n    let count = value.columns;\n    let B = value.clone();\n    let i, j, k;\n\n    for (k = 0; k < dimension; k++) {\n      for (j = 0; j < count; j++) {\n        for (i = 0; i < k; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(k, i));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    for (k = dimension - 1; k >= 0; k--) {\n      for (j = 0; j < count; j++) {\n        for (i = k + 1; i < dimension; i++) {\n          B.set(k, j, B.get(k, j) - B.get(i, j) * l.get(i, k));\n        }\n        B.set(k, j, B.get(k, j) / l.get(k, k));\n      }\n    }\n\n    return B;\n  }\n\n  get lowerTriangularMatrix() {\n    return this.L;\n  }\n}\n","import WrapperMatrix2D from '../wrap/WrapperMatrix2D';\nimport Matrix from '../matrix';\n\nexport default class nipals {\n  constructor(X, options = {}) {\n    X = WrapperMatrix2D.checkMatrix(X);\n    let { Y } = options;\n    const {\n      scaleScores = false,\n      maxIterations = 1000,\n      terminationCriteria = 1e-10,\n    } = options;\n\n    let u;\n    if (Y) {\n      if (Array.isArray(Y) && typeof Y[0] === 'number') {\n        Y = Matrix.columnVector(Y);\n      } else {\n        Y = WrapperMatrix2D.checkMatrix(Y);\n      }\n      if (!Y.isColumnVector() || Y.rows !== X.rows) {\n        throw new Error('Y must be a column vector of length X.rows');\n      }\n      u = Y;\n    } else {\n      u = X.getColumnVector(0);\n    }\n\n    let diff = 1;\n    let t, q, w, tOld;\n\n    for (\n      let counter = 0;\n      counter < maxIterations && diff > terminationCriteria;\n      counter++\n    ) {\n      w = X.transpose()\n        .mmul(u)\n        .div(\n          u\n            .transpose()\n            .mmul(u)\n            .get(0, 0),\n        );\n      w = w.div(w.norm());\n\n      t = X.mmul(w).div(\n        w\n          .transpose()\n          .mmul(w)\n          .get(0, 0),\n      );\n\n      if (counter > 0) {\n        diff = t\n          .clone()\n          .sub(tOld)\n          .pow(2)\n          .sum();\n      }\n      tOld = t.clone();\n\n      if (Y) {\n        q = Y.transpose()\n          .mmul(t)\n          .div(\n            t\n              .transpose()\n              .mmul(t)\n              .get(0, 0),\n          );\n        q = q.div(q.norm());\n\n        u = Y.mmul(q).div(\n          q\n            .transpose()\n            .mmul(q)\n            .get(0, 0),\n        );\n      } else {\n        u = t;\n      }\n    }\n\n    if (Y) {\n      let p = X.transpose()\n        .mmul(t)\n        .div(\n          t\n            .transpose()\n            .mmul(t)\n            .get(0, 0),\n        );\n      p = p.div(p.norm());\n      let xResidual = X.clone().sub(t.clone().mmul(p.transpose()));\n      let residual = u\n        .transpose()\n        .mmul(t)\n        .div(\n          t\n            .transpose()\n            .mmul(t)\n            .get(0, 0),\n        );\n      let yResidual = Y.clone().sub(\n        t\n          .clone()\n          .mulS(residual.get(0, 0))\n          .mmul(q.transpose()),\n      );\n\n      this.t = t;\n      this.p = p.transpose();\n      this.w = w.transpose();\n      this.q = q;\n      this.u = u;\n      this.s = t.transpose().mmul(t);\n      this.xResidual = xResidual;\n      this.yResidual = yResidual;\n      this.betas = residual;\n    } else {\n      this.w = w.transpose();\n      this.s = t\n        .transpose()\n        .mmul(t)\n        .sqrt();\n      if (scaleScores) {\n        this.t = t.clone().div(this.s.get(0, 0));\n      } else {\n        this.t = t;\n      }\n      this.xResidual = X.sub(t.mmul(w.transpose()));\n    }\n  }\n}\n","export { AbstractMatrix, default, default as Matrix } from './matrix';\nexport * from './views/index';\n\nexport { wrap } from './wrap/wrap';\nexport { default as WrapperMatrix1D } from './wrap/WrapperMatrix1D';\nexport { default as WrapperMatrix2D } from './wrap/WrapperMatrix2D';\n\nexport { solve, inverse } from './decompositions';\nexport { determinant } from './determinant';\nexport { linearDependencies } from './linearDependencies';\nexport { pseudoInverse } from './pseudoInverse';\nexport { covariance } from './covariance';\nexport { correlation } from './correlation';\n\nexport {\n  default as SingularValueDecomposition,\n  default as SVD,\n} from './dc/svd.js';\nexport {\n  default as EigenvalueDecomposition,\n  default as EVD,\n} from './dc/evd.js';\nexport {\n  default as CholeskyDecomposition,\n  default as CHO,\n} from './dc/cholesky.js';\nexport { default as LuDecomposition, default as LU } from './dc/lu.js';\nexport { default as QrDecomposition, default as QR } from './dc/qr.js';\nexport { default as Nipals, default as NIPALS } from './dc/nipals.js';\n"],"sourceRoot":""}