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.
52 lines
1.5 KiB
52 lines
1.5 KiB
4 years ago
|
"use strict"
|
||
|
|
||
|
function compileSearch(funcName, predicate, reversed, extraArgs, earlyOut) {
|
||
|
var code = [
|
||
|
"function ", funcName, "(a,l,h,", extraArgs.join(","), "){",
|
||
|
earlyOut ? "" : "var i=", (reversed ? "l-1" : "h+1"),
|
||
|
";while(l<=h){var m=(l+h)>>>1,x=a[m]"]
|
||
|
if(earlyOut) {
|
||
|
if(predicate.indexOf("c") < 0) {
|
||
|
code.push(";if(x===y){return m}else if(x<=y){")
|
||
|
} else {
|
||
|
code.push(";var p=c(x,y);if(p===0){return m}else if(p<=0){")
|
||
|
}
|
||
|
} else {
|
||
|
code.push(";if(", predicate, "){i=m;")
|
||
|
}
|
||
|
if(reversed) {
|
||
|
code.push("l=m+1}else{h=m-1}")
|
||
|
} else {
|
||
|
code.push("h=m-1}else{l=m+1}")
|
||
|
}
|
||
|
code.push("}")
|
||
|
if(earlyOut) {
|
||
|
code.push("return -1};")
|
||
|
} else {
|
||
|
code.push("return i};")
|
||
|
}
|
||
|
return code.join("")
|
||
|
}
|
||
|
|
||
|
function compileBoundsSearch(predicate, reversed, suffix, earlyOut) {
|
||
|
var result = new Function([
|
||
|
compileSearch("A", "x" + predicate + "y", reversed, ["y"], earlyOut),
|
||
|
compileSearch("P", "c(x,y)" + predicate + "0", reversed, ["y", "c"], earlyOut),
|
||
|
"function dispatchBsearch", suffix, "(a,y,c,l,h){\
|
||
|
if(typeof(c)==='function'){\
|
||
|
return P(a,(l===void 0)?0:l|0,(h===void 0)?a.length-1:h|0,y,c)\
|
||
|
}else{\
|
||
|
return A(a,(c===void 0)?0:c|0,(l===void 0)?a.length-1:l|0,y)\
|
||
|
}}\
|
||
|
return dispatchBsearch", suffix].join(""))
|
||
|
return result()
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
ge: compileBoundsSearch(">=", false, "GE"),
|
||
|
gt: compileBoundsSearch(">", false, "GT"),
|
||
|
lt: compileBoundsSearch("<", true, "LT"),
|
||
|
le: compileBoundsSearch("<=", true, "LE"),
|
||
|
eq: compileBoundsSearch("-", true, "EQ", true)
|
||
|
}
|