{"version":3,"sources":["jsdelivr-header.js","/npm/ml-kernel@3.0.0/src/kernel.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,MAAM,OAAE,OAAM,oBAAE,qBAAwB,QAAQ,aAC1C,eAAiB,QAAQ,sBACzB,iBAAmB,QAAQ,wBAC3B,cAAgB,QAAQ,qBAExB,YAAc,QAAQ,0BACtB,aAAe,QAAQ,2BACvB,kBAAoB,QAAQ,gCAC5B,gBAAkB,QAAQ,2CAC1B,gBAAkB,QAAQ,8BAC1B,qBAAuB,QAAQ,mCAC/B,eAAiB,QAAQ,uCAEzB,WAAa,CACjB,SAAU,eACV,IAAK,eACL,WAAY,iBACZ,KAAM,iBACN,MAAO,YACP,OAAQ,aACR,YAAa,kBACb,UAAW,gBACX,IAAK,gBACL,UAAW,gBACX,eAAgB,qBAChB,SAAU,eACV,QAAS,cACT,IAAK,eAGP,MAAM,OACJ,WAAA,CAAY,EAAM,GAEhB,GADA,KAAK,WAAa,EACL,WAAT,EAEJ,GAAoB,iBAAT,EAAmB,CAC5B,EAAO,EAAK,cAEZ,IAAI,EAAoB,WAAW,GACnC,IAAI,EAGF,MAAM,IAAI,MAAM,4BAA4B,KAF5C,KAAK,eAAiB,IAAI,EAAkB,EAIhD,KAAO,IAAoB,iBAAT,GAA6C,mBAAjB,EAAK,QAGjD,MAAM,IAAI,UACR,0DAHF,KAAK,eAAiB,CAKxB,CACF,CAEA,OAAA,CAAQ,EAAQ,GAOd,GANA,EAAS,OAAO,YAAY,GAE1B,OADgB,IAAd,EACU,EAEA,OAAO,YAAY,GAET,WAApB,KAAK,WACP,OAAO,EAAO,KAAK,IAAI,oBAAoB,IAG7C,MAAM,EAAe,IAAI,OAAO,EAAO,KAAM,EAAU,MACvD,GAAI,IAAW,EAEb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,KAAM,IAC/B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACpC,MAAM,EAAQ,KAAK,eAAe,QAChC,EAAO,OAAO,GACd,EAAO,OAAO,IAEhB,EAAa,IAAI,EAAG,EAAG,GACvB,EAAa,IAAI,EAAG,EAAG,EACzB,MAGF,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,KAAM,IAC/B,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,KAAM,IAClC,EAAa,IACX,EACA,EACA,KAAK,eAAe,QAAQ,EAAO,OAAO,GAAI,EAAU,OAAO,KAKvE,OAAO,CACT,EAGF,OAAO,QAAU","file":"/npm/ml-kernel@3.0.0/src/kernel.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ml-kernel@3.0.0/src/kernel.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nconst { Matrix, MatrixTransposeView } = require('ml-matrix');\nconst GaussianKernel = require('ml-kernel-gaussian');\nconst PolynomialKernel = require('ml-kernel-polynomial');\nconst SigmoidKernel = require('ml-kernel-sigmoid');\n\nconst ANOVAKernel = require('./kernels/anova-kernel');\nconst CauchyKernel = require('./kernels/cauchy-kernel');\nconst ExponentialKernel = require('./kernels/exponential-kernel');\nconst HistogramKernel = require('./kernels/histogram-intersection-kernel');\nconst LaplacianKernel = require('./kernels/laplacian-kernel');\nconst MultiquadraticKernel = require('./kernels/multiquadratic-kernel');\nconst RationalKernel = require('./kernels/rational-quadratic-kernel');\n\nconst kernelType = {\n  gaussian: GaussianKernel,\n  rbf: GaussianKernel,\n  polynomial: PolynomialKernel,\n  poly: PolynomialKernel,\n  anova: ANOVAKernel,\n  cauchy: CauchyKernel,\n  exponential: ExponentialKernel,\n  histogram: HistogramKernel,\n  min: HistogramKernel,\n  laplacian: LaplacianKernel,\n  multiquadratic: MultiquadraticKernel,\n  rational: RationalKernel,\n  sigmoid: SigmoidKernel,\n  mlp: SigmoidKernel\n};\n\nclass Kernel {\n  constructor(type, options) {\n    this.kernelType = type;\n    if (type === 'linear') return;\n\n    if (typeof type === 'string') {\n      type = type.toLowerCase();\n\n      var KernelConstructor = kernelType[type];\n      if (KernelConstructor) {\n        this.kernelFunction = new KernelConstructor(options);\n      } else {\n        throw new Error(`unsupported kernel type: ${type}`);\n      }\n    } else if (typeof type === 'object' && typeof type.compute === 'function') {\n      this.kernelFunction = type;\n    } else {\n      throw new TypeError(\n        'first argument must be a valid kernel type or instance'\n      );\n    }\n  }\n\n  compute(inputs, landmarks) {\n    inputs = Matrix.checkMatrix(inputs);\n    if (landmarks === undefined) {\n      landmarks = inputs;\n    } else {\n      landmarks = Matrix.checkMatrix(landmarks);\n    }\n    if (this.kernelType === 'linear') {\n      return inputs.mmul(new MatrixTransposeView(landmarks));\n    }\n\n    const kernelMatrix = new Matrix(inputs.rows, landmarks.rows);\n    if (inputs === landmarks) {\n      // fast path, matrix is symmetric\n      for (let i = 0; i < inputs.rows; i++) {\n        for (let j = i; j < inputs.rows; j++) {\n          const value = this.kernelFunction.compute(\n            inputs.getRow(i),\n            inputs.getRow(j)\n          );\n          kernelMatrix.set(i, j, value);\n          kernelMatrix.set(j, i, value);\n        }\n      }\n    } else {\n      for (let i = 0; i < inputs.rows; i++) {\n        for (let j = 0; j < landmarks.rows; j++) {\n          kernelMatrix.set(\n            i,\n            j,\n            this.kernelFunction.compute(inputs.getRow(i), landmarks.getRow(j))\n          );\n        }\n      }\n    }\n    return kernelMatrix;\n  }\n}\n\nmodule.exports = Kernel;\n"]}