function newchunked(a = new Float32Array(), n = 5, balanced = true) {
if (n < 2) return [a.buffer.slice(0)];
const len = a.length;
const bytesPerElement = a.BYTES_PER_ELEMENT;
const totalBytes = a.byteLength;
const out = [];
let i = 0;
let size;
function pushBuffer(start, end) {
const byteStart = start * bytesPerElement
const byteEnd = end * bytesPerElement
const byteLength = byteEnd - byteStart;
let t1 = performance.now()
out.push(a.buffer.slice(byteStart,byteEnd));
}
if (len % n === 0) {
size = Math.floor(len / n);
while (i < len) {
pushBuffer(i, i + size);
i += size;
}
} else if (balanced) {
while (i < len) {
size = Math.ceil((len - i) / n--);
pushBuffer(i, i + size);
i += size;
}
} else {
n--;
size = Math.floor(len / n);
if (len % size === 0) size--;
while (i < size * n) {
pushBuffer(i, i + size);
i += size;
}
pushBuffer(i, len);
}
return out;
}