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.
66 lines
1.5 KiB
66 lines
1.5 KiB
"use strict"
|
|
|
|
var triangle = require('a-big-triangle')
|
|
var glslify = require('glslify')
|
|
var unpackFloat = require("../index.js")
|
|
|
|
var canvas = document.body.appendChild(document.createElement('canvas'))
|
|
var gl = canvas.getContext('webgl')
|
|
|
|
var shader = glslify({
|
|
vert: "\
|
|
attribute vec2 position;\
|
|
void main() {\
|
|
gl_Position = vec4(position, 0, 1);\
|
|
}",
|
|
frag: "\
|
|
#pragma glslify: packFloat = require(../index.glsl)\n\
|
|
uniform highp float f;\
|
|
void main() {\
|
|
gl_FragColor = packFloat(f);\
|
|
}",
|
|
inline: true
|
|
})(gl)
|
|
|
|
var FLOAT = new Float32Array(1)
|
|
var BYTE = new Uint8Array(FLOAT.buffer)
|
|
|
|
function render(num) {
|
|
//Convert to float
|
|
FLOAT[0] = num
|
|
|
|
//Draw shader
|
|
shader.bind()
|
|
shader.uniforms.f = FLOAT[0]
|
|
triangle(gl)
|
|
|
|
//Read back the float
|
|
var buffer = new Uint8Array(4)
|
|
gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buffer)
|
|
var unpacked = unpackFloat(buffer[0], buffer[1], buffer[2], buffer[3])
|
|
|
|
FLOAT[0] = num
|
|
console.log('in bits:', BYTE[3], BYTE[2], BYTE[1], BYTE[0])
|
|
console.log('out bits: ', buffer[0], buffer[1], buffer[2], buffer[3])
|
|
|
|
//Log output to console
|
|
if(FLOAT[0] === unpacked) {
|
|
console.log('ok')
|
|
} else {
|
|
console.log('fail, expected:', FLOAT[0], 'got:', unpacked)
|
|
}
|
|
}
|
|
|
|
for(var i=-300; i<300; ++i) {
|
|
render(i)
|
|
}
|
|
for(var j=0; j<100; ++j) {
|
|
render(Math.random())
|
|
}
|
|
//Test edge cases
|
|
render(1.70141184e38)
|
|
render(-1.70141184e38)
|
|
render(1.17549435e-38)
|
|
render(-1.17549435e-38)
|
|
render(Infinity)
|
|
render(-Infinity)
|
|
|