Malevich's CS 16f "black square" (is stolen) - f16 vertex array is written by CS
//   gl.bufferData(gl.SHADER_STORAGE_BUFFER, new Float32Array(8), gl.STATIC_DRAW);
     gl.bufferData(gl.SHADER_STORAGE_BUFFER, new Uint16Array(8), gl.STATIC_DRAW);

//   gl.vertexAttribPointer(aPosLoc, 2, gl.FLOAT, gl.FALSE, 0, 0)
     gl.vertexAttribPointer(aPosLoc, 2, gl.HALF_FLOAT, gl.FALSE, 0, 0)

Simulations on GPU
updated 20 Feb 2019