@thi.ng/vectors
Version:
Optimized 2d/3d/4d and arbitrary length vector operations, support for memory mapping/layouts
16 lines (15 loc) • 521 B
JavaScript
import { unsupported } from "@thi.ng/errors/unsupported";
const vop = (dispatch = 1, fallback, ...optimized) => {
const impls = [, ,].concat(optimized);
const fn = (...args) => {
const g = impls[args[dispatch].length] || fallback;
return g ? g(...args) : unsupported(`no impl for vec size ${args[dispatch].length}`);
};
fn.add = (dim, fn2) => impls[dim] = fn2;
fn.default = (fn2) => fallback = fn2;
fn.impl = (dim) => dim != null ? impls[dim] || fallback : fallback;
return fn;
};
export {
vop
};