StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.7 KiB
71 lines
1.7 KiB
4 years ago
|
"use strict"
|
||
|
|
||
|
var determinant = require("robust-determinant")
|
||
|
|
||
|
var NUM_EXPAND = 6
|
||
|
|
||
|
function generateSolver(n) {
|
||
|
var funcName = "robustLinearSolve" + n + "d"
|
||
|
var code = ["function ", funcName, "(A,b){return ["]
|
||
|
for(var i=0; i<n; ++i) {
|
||
|
code.push("det([")
|
||
|
for(var j=0; j<n; ++j) {
|
||
|
if(j > 0) {
|
||
|
code.push(",")
|
||
|
}
|
||
|
code.push("[")
|
||
|
for(var k=0; k<n; ++k) {
|
||
|
if(k > 0) {
|
||
|
code.push(",")
|
||
|
}
|
||
|
if(k === i) {
|
||
|
code.push("+b[", j, "]")
|
||
|
} else {
|
||
|
code.push("+A[", j, "][", k, "]")
|
||
|
}
|
||
|
}
|
||
|
code.push("]")
|
||
|
}
|
||
|
code.push("]),")
|
||
|
}
|
||
|
code.push("det(A)]}return ", funcName)
|
||
|
var proc = new Function("det", code.join(""))
|
||
|
if(n < 6) {
|
||
|
return proc(determinant[n])
|
||
|
}
|
||
|
return proc(determinant)
|
||
|
}
|
||
|
|
||
|
function robustLinearSolve0d() {
|
||
|
return [ 0 ]
|
||
|
}
|
||
|
|
||
|
function robustLinearSolve1d(A, b) {
|
||
|
return [ [ b[0] ], [ A[0][0] ] ]
|
||
|
}
|
||
|
|
||
|
var CACHE = [
|
||
|
robustLinearSolve0d,
|
||
|
robustLinearSolve1d
|
||
|
]
|
||
|
|
||
|
function generateDispatch() {
|
||
|
while(CACHE.length < NUM_EXPAND) {
|
||
|
CACHE.push(generateSolver(CACHE.length))
|
||
|
}
|
||
|
var procArgs = []
|
||
|
var code = ["function dispatchLinearSolve(A,b){switch(A.length){"]
|
||
|
for(var i=0; i<NUM_EXPAND; ++i) {
|
||
|
procArgs.push("s" + i)
|
||
|
code.push("case ", i, ":return s", i, "(A,b);")
|
||
|
}
|
||
|
code.push("}var s=CACHE[A.length];if(!s)s=CACHE[A.length]=g(A.length);return s(A,b)}return dispatchLinearSolve")
|
||
|
procArgs.push("CACHE", "g", code.join(""))
|
||
|
var proc = Function.apply(undefined, procArgs)
|
||
|
module.exports = proc.apply(undefined, CACHE.concat([CACHE, generateSolver]))
|
||
|
for(var i=0; i<NUM_EXPAND; ++i) {
|
||
|
module.exports[i] = CACHE[i]
|
||
|
}
|
||
|
}
|
||
|
|
||
|
generateDispatch()
|