{"version":3,"sources":["/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-CDUKTYES.cjs","../src/data/vectorOps.ts","../src/std/numeric.ts"],"names":["lengthVec2","v","lengthVec3","lengthVec4","dotVec2","lhs","rhs","dotVec3","dotVec4","clamp","value","low","high","unary2f","op","a","vec2f","unary2h","vec2h","unary2i","vec2i","unary2u","vec2u","unary3f","vec3f","unary3h","vec3h","unary3i","vec3i","unary3u","vec3u","unary4f","vec4f","unary4h","vec4h","unary4i","vec4i","unary4u","vec4u","unary2x2f","a_","mat2x2f","unary3x3f","mat3x3f","unary4x4f","mat4x4f","binaryComponentWise2f","b","binaryComponentWise2h","binaryComponentWise2i","binaryComponentWise2u","binaryComponentWise3f","binaryComponentWise3h","binaryComponentWise3i","binaryComponentWise3u","binaryComponentWise4f","binaryComponentWise4h","binaryComponentWise4i","binaryComponentWise4u","binaryComponentWise2x2f","b_","binaryComponentWise3x3f","binaryComponentWise4x4f","NumberOps","VectorOps","e1","e2","vec2b","vec3b","vec4b","e","s","m","m_","len","base","exponent","e3","val","f","t","c","isSnippetNumeric","snippet","isNumericSchema","schema","type","$internal","cpuAdd","isVecInstance","isMatInstance","add","createDualImpl","snip","cpuSub","mul","sub","cpuMul","isFloat32VecInstance","returnType","cpuDiv","div","f32","abs","atan2","y","x","acos","acosh","asin","ceil","cos","cosh","cross","dot","normalize","floor","fract","length","log","log2","max","min","sign","sin","exp","exp2","pow","mix","reflect","distance","neg","sqrt","tanh"],"mappings":"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,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACxDpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAC1D,CACF,CAAA,CAEA,OAAA,CAAS,CAAC7C,CAAAA,CAAegC,CAAAA,CAAAA,EAAkB,CACzC,IAAMP,CAAAA,CAAKzB,CAAAA,CAAE,OAAA,CACP6C,CAAAA,CAAKb,CAAAA,CAAE,OAAA,CAEb,OAAOF,kCAAAA,CACLL,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CACdpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAChBpB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAAIoB,CAAAA,CAAG,CAAC,CAAA,CAAE,CAAA,CAClBpB,CAA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","file":"/Users/iwo/Projects/wigsill/packages/typegpu/dist/chunk-CDUKTYES.cjs","sourcesContent":[null,"import { mat2x2f, mat3x3f, mat4x4f } from './matrix.ts';\nimport {\n  vec2b,\n  vec2f,\n  vec2h,\n  vec2i,\n  vec2u,\n  vec3b,\n  vec3f,\n  vec3h,\n  vec3i,\n  vec3u,\n  vec4b,\n  vec4f,\n  vec4h,\n  vec4i,\n  vec4u,\n} from './vector.ts';\nimport type * as wgsl from './wgslTypes.ts';\nimport type { VecKind } from './wgslTypes.ts';\n\ntype vBase = { kind: VecKind };\ntype mBase = { kind: MatKind };\ntype v2 = wgsl.v2f | wgsl.v2h | wgsl.v2i | wgsl.v2u;\ntype v3 = wgsl.v3f | wgsl.v3h | wgsl.v3i | wgsl.v3u;\ntype v4 = wgsl.v4f | wgsl.v4h | wgsl.v4i | wgsl.v4u;\n\ntype MatKind = 'mat2x2f' | 'mat3x3f' | 'mat4x4f';\n\nconst lengthVec2 = (v: v2) => Math.sqrt(v.x ** 2 + v.y ** 2);\nconst lengthVec3 = (v: v3) => Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2);\nconst lengthVec4 = (v: v4) =>\n  Math.sqrt(v.x ** 2 + v.y ** 2 + v.z ** 2 + v.w ** 2);\n\nconst dotVec2 = (lhs: v2, rhs: v2) => lhs.x * rhs.x + lhs.y * rhs.y;\nconst dotVec3 = (lhs: v3, rhs: v3) =>\n  lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z;\nconst dotVec4 = (lhs: v4, rhs: v4) =>\n  lhs.x * rhs.x + lhs.y * rhs.y + lhs.z * rhs.z + lhs.w * rhs.w;\n\nconst clamp = (value: number, low: number, high: number) =>\n  Math.min(Math.max(low, value), high);\n\ntype UnaryOp = (a: number) => number;\ntype BinaryOp = (a: number, b: number) => number;\n\nconst unary2f = (op: UnaryOp) => (a: wgsl.v2f) => vec2f(op(a.x), op(a.y));\nconst unary2h = (op: UnaryOp) => (a: wgsl.v2h) => vec2h(op(a.x), op(a.y));\nconst unary2i = (op: UnaryOp) => (a: wgsl.v2i) => vec2i(op(a.x), op(a.y));\nconst unary2u = (op: UnaryOp) => (a: wgsl.v2u) => vec2u(op(a.x), op(a.y));\n\nconst unary3f = (op: UnaryOp) => (a: wgsl.v3f) =>\n  vec3f(op(a.x), op(a.y), op(a.z));\n\nconst unary3h = (op: UnaryOp) => (a: wgsl.v3h) =>\n  vec3h(op(a.x), op(a.y), op(a.z));\n\nconst unary3i = (op: UnaryOp) => (a: wgsl.v3i) =>\n  vec3i(op(a.x), op(a.y), op(a.z));\n\nconst unary3u = (op: UnaryOp) => (a: wgsl.v3u) =>\n  vec3u(op(a.x), op(a.y), op(a.z));\n\nconst unary4f = (op: UnaryOp) => (a: wgsl.v4f) =>\n  vec4f(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4h = (op: UnaryOp) => (a: wgsl.v4h) =>\n  vec4h(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4i = (op: UnaryOp) => (a: wgsl.v4i) =>\n  vec4i(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary4u = (op: UnaryOp) => (a: wgsl.v4u) =>\n  vec4u(op(a.x), op(a.y), op(a.z), op(a.w));\n\nconst unary2x2f = (op: UnaryOp) => (a: wgsl.m2x2f) => {\n  const a_ = a.columns as [wgsl.v2f, wgsl.v2f];\n  return mat2x2f(unary2f(op)(a_[0]), unary2f(op)(a_[1]));\n};\n\nconst unary3x3f = (op: UnaryOp) => (a: wgsl.m3x3f) => {\n  const a_ = a.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n  return mat3x3f(unary3f(op)(a_[0]), unary3f(op)(a_[1]), unary3f(op)(a_[2]));\n};\n\nconst unary4x4f = (op: UnaryOp) => (a: wgsl.m4x4f) => {\n  const a_ = a.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n  return mat4x4f(\n    unary4f(op)(a_[0]),\n    unary4f(op)(a_[1]),\n    unary4f(op)(a_[2]),\n    unary4f(op)(a_[3]),\n  );\n};\n\nconst binaryComponentWise2f = (op: BinaryOp) => (a: wgsl.v2f, b: wgsl.v2f) =>\n  vec2f(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2h = (op: BinaryOp) => (a: wgsl.v2h, b: wgsl.v2h) =>\n  vec2h(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2i = (op: BinaryOp) => (a: wgsl.v2i, b: wgsl.v2i) =>\n  vec2i(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise2u = (op: BinaryOp) => (a: wgsl.v2u, b: wgsl.v2u) =>\n  vec2u(op(a.x, b.x), op(a.y, b.y));\n\nconst binaryComponentWise3f = (op: BinaryOp) => (a: wgsl.v3f, b: wgsl.v3f) =>\n  vec3f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3h = (op: BinaryOp) => (a: wgsl.v3h, b: wgsl.v3h) =>\n  vec3h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3i = (op: BinaryOp) => (a: wgsl.v3i, b: wgsl.v3i) =>\n  vec3i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise3u = (op: BinaryOp) => (a: wgsl.v3u, b: wgsl.v3u) =>\n  vec3u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z));\n\nconst binaryComponentWise4f = (op: BinaryOp) => (a: wgsl.v4f, b: wgsl.v4f) =>\n  vec4f(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4h = (op: BinaryOp) => (a: wgsl.v4h, b: wgsl.v4h) =>\n  vec4h(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4i = (op: BinaryOp) => (a: wgsl.v4i, b: wgsl.v4i) =>\n  vec4i(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise4u = (op: BinaryOp) => (a: wgsl.v4u, b: wgsl.v4u) =>\n  vec4u(op(a.x, b.x), op(a.y, b.y), op(a.z, b.z), op(a.w, b.w));\n\nconst binaryComponentWise2x2f =\n  (op: BinaryOp) => (a: wgsl.m2x2f, b: wgsl.m2x2f) => {\n    const a_ = a.columns as [wgsl.v2f, wgsl.v2f];\n    const b_ = b.columns as [wgsl.v2f, wgsl.v2f];\n    return mat2x2f(\n      binaryComponentWise2f(op)(a_[0], b_[0]),\n      binaryComponentWise2f(op)(a_[1], b_[1]),\n    );\n  };\n\nconst binaryComponentWise3x3f =\n  (op: BinaryOp) => (a: wgsl.m3x3f, b: wgsl.m3x3f) => {\n    const a_ = a.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n    const b_ = b.columns as [wgsl.v3f, wgsl.v3f, wgsl.v3f];\n    return mat3x3f(\n      binaryComponentWise3f(op)(a_[0], b_[0]),\n      binaryComponentWise3f(op)(a_[1], b_[1]),\n      binaryComponentWise3f(op)(a_[2], b_[2]),\n    );\n  };\n\nconst binaryComponentWise4x4f =\n  (op: BinaryOp) => (a: wgsl.m4x4f, b: wgsl.m4x4f) => {\n    const a_ = a.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n    const b_ = b.columns as [wgsl.v4f, wgsl.v4f, wgsl.v4f, wgsl.v4f];\n    return mat4x4f(\n      binaryComponentWise4f(op)(a_[0], b_[0]),\n      binaryComponentWise4f(op)(a_[1], b_[1]),\n      binaryComponentWise4f(op)(a_[2], b_[2]),\n      binaryComponentWise4f(op)(a_[3], b_[3]),\n    );\n  };\n\nexport const NumberOps = {\n  divInteger: (lhs: number, rhs: number) => {\n    if (rhs === 0) {\n      return lhs;\n    }\n    return Math.trunc(lhs / rhs);\n  },\n};\n\nexport const VectorOps = {\n  eq: {\n    vec2f: (e1: wgsl.v2f, e2: wgsl.v2f) => vec2b(e1.x === e2.x, e1.y === e2.y),\n    vec2h: (e1: wgsl.v2h, e2: wgsl.v2h) => vec2b(e1.x === e2.x, e1.y === e2.y),\n    vec2i: (e1: wgsl.v2i, e2: wgsl.v2i) => vec2b(e1.x === e2.x, e1.y === e2.y),\n    vec2u: (e1: wgsl.v2u, e2: wgsl.v2u) => vec2b(e1.x === e2.x, e1.y === e2.y),\n    'vec2<bool>': (e1: wgsl.v2b, e2: wgsl.v2b) =>\n      vec2b(e1.x === e2.x, e1.y === e2.y),\n\n    vec3f: (e1: wgsl.v3f, e2: wgsl.v3f) =>\n      vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n    vec3h: (e1: wgsl.v3h, e2: wgsl.v3h) =>\n      vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n    vec3i: (e1: wgsl.v3i, e2: wgsl.v3i) =>\n      vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n    vec3u: (e1: wgsl.v3u, e2: wgsl.v3u) =>\n      vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n    'vec3<bool>': (e1: wgsl.v3b, e2: wgsl.v3b) =>\n      vec3b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z),\n\n    vec4f: (e1: wgsl.v4f, e2: wgsl.v4f) =>\n      vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n    vec4h: (e1: wgsl.v4h, e2: wgsl.v4h) =>\n      vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n    vec4i: (e1: wgsl.v4i, e2: wgsl.v4i) =>\n      vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n    vec4u: (e1: wgsl.v4u, e2: wgsl.v4u) =>\n      vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n    'vec4<bool>': (e1: wgsl.v4b, e2: wgsl.v4b) =>\n      vec4b(e1.x === e2.x, e1.y === e2.y, e1.z === e2.z, e1.w === e2.w),\n  } as Record<\n    VecKind,\n    <T extends wgsl.AnyVecInstance>(\n      e1: T,\n      e2: T,\n    ) => T extends wgsl.AnyVec2Instance ? wgsl.v2b\n      : T extends wgsl.AnyVec3Instance ? wgsl.v3b\n      : wgsl.v4b\n  >,\n\n  lt: {\n    vec2f: (e1: wgsl.v2f, e2: wgsl.v2f) => vec2b(e1.x < e2.x, e1.y < e2.y),\n    vec2h: (e1: wgsl.v2h, e2: wgsl.v2h) => vec2b(e1.x < e2.x, e1.y < e2.y),\n    vec2i: (e1: wgsl.v2i, e2: wgsl.v2i) => vec2b(e1.x < e2.x, e1.y < e2.y),\n    vec2u: (e1: wgsl.v2u, e2: wgsl.v2u) => vec2b(e1.x < e2.x, e1.y < e2.y),\n\n    vec3f: (e1: wgsl.v3f, e2: wgsl.v3f) =>\n      vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n    vec3h: (e1: wgsl.v3h, e2: wgsl.v3h) =>\n      vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n    vec3i: (e1: wgsl.v3i, e2: wgsl.v3i) =>\n      vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n    vec3u: (e1: wgsl.v3u, e2: wgsl.v3u) =>\n      vec3b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z),\n\n    vec4f: (e1: wgsl.v4f, e2: wgsl.v4f) =>\n      vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n    vec4h: (e1: wgsl.v4h, e2: wgsl.v4h) =>\n      vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n    vec4i: (e1: wgsl.v4i, e2: wgsl.v4i) =>\n      vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n    vec4u: (e1: wgsl.v4u, e2: wgsl.v4u) =>\n      vec4b(e1.x < e2.x, e1.y < e2.y, e1.z < e2.z, e1.w < e2.w),\n  } as Record<\n    VecKind,\n    <T extends wgsl.AnyNumericVecInstance>(\n      e1: T,\n      e2: T,\n    ) => T extends wgsl.AnyVec2Instance ? wgsl.v2b\n      : T extends wgsl.AnyVec3Instance ? wgsl.v3b\n      : wgsl.v4b\n  >,\n\n  or: {\n    'vec2<bool>': (e1: wgsl.v2b, e2: wgsl.v2b) =>\n      vec2b(e1.x || e2.x, e1.y || e2.y),\n    'vec3<bool>': (e1: wgsl.v3b, e2: wgsl.v3b) =>\n      vec3b(e1.x || e2.x, e1.y || e2.y, e1.z || e2.z),\n    'vec4<bool>': (e1: wgsl.v4b, e2: wgsl.v4b) =>\n      vec4b(e1.x || e2.x, e1.y || e2.y, e1.z || e2.z, e1.w || e2.w),\n  } as Record<\n    VecKind,\n    <T extends wgsl.AnyBooleanVecInstance>(e1: T, e2: T) => T\n  >,\n\n  all: {\n    'vec2<bool>': (e: wgsl.v2b) => e.x && e.y,\n    'vec3<bool>': (e: wgsl.v3b) => e.x && e.y && e.z,\n    'vec4<bool>': (e: wgsl.v4b) => e.x && e.y && e.z && e.w,\n  } as Record<VecKind, (v: wgsl.AnyBooleanVecInstance) => boolean>,\n\n  abs: {\n    vec2f: unary2f(Math.abs),\n    vec2h: unary2h(Math.abs),\n    vec2i: unary2i(Math.abs),\n    vec2u: unary2u(Math.abs),\n\n    vec3f: unary3f(Math.abs),\n    vec3h: unary3h(Math.abs),\n    vec3i: unary3i(Math.abs),\n    vec3u: unary3u(Math.abs),\n\n    vec4f: unary4f(Math.abs),\n    vec4h: unary4h(Math.abs),\n    vec4i: unary4i(Math.abs),\n    vec4u: unary4u(Math.abs),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  atan2: {\n    vec2f: binaryComponentWise2f(Math.atan2),\n    vec2h: binaryComponentWise2h(Math.atan2),\n\n    vec3f: binaryComponentWise3f(Math.atan2),\n    vec3h: binaryComponentWise3h(Math.atan2),\n\n    vec4f: binaryComponentWise4f(Math.atan2),\n    vec4h: binaryComponentWise4h(Math.atan2),\n  } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n  acos: {\n    vec2f: unary2f(Math.acos),\n    vec2h: unary2h(Math.acos),\n    vec2i: unary2i(Math.acos),\n    vec2u: unary2u(Math.acos),\n\n    vec3f: unary3f(Math.acos),\n    vec3h: unary3h(Math.acos),\n    vec3i: unary3i(Math.acos),\n    vec3u: unary3u(Math.acos),\n\n    vec4f: unary4f(Math.acos),\n    vec4h: unary4h(Math.acos),\n    vec4i: unary4i(Math.acos),\n    vec4u: unary4u(Math.acos),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  acosh: {\n    vec2f: unary2f(Math.acosh),\n    vec2h: unary2h(Math.acosh),\n\n    vec3f: unary3f(Math.acosh),\n    vec3h: unary3h(Math.acosh),\n\n    vec4f: unary4f(Math.acosh),\n    vec4h: unary4h(Math.acosh),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  asin: {\n    vec2f: unary2f(Math.asin),\n    vec2h: unary2h(Math.asin),\n    vec2i: unary2i(Math.asin),\n    vec2u: unary2u(Math.asin),\n\n    vec3f: unary3f(Math.asin),\n    vec3h: unary3h(Math.asin),\n    vec3i: unary3i(Math.asin),\n    vec3u: unary3u(Math.asin),\n\n    vec4f: unary4f(Math.asin),\n    vec4h: unary4h(Math.asin),\n    vec4i: unary4i(Math.asin),\n    vec4u: unary4u(Math.asin),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  ceil: {\n    vec2f: unary2f(Math.ceil),\n    vec2h: unary2h(Math.ceil),\n\n    vec3f: unary3f(Math.ceil),\n    vec3h: unary3h(Math.ceil),\n\n    vec4f: unary4f(Math.ceil),\n    vec4h: unary4h(Math.ceil),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  clamp: {\n    vec2f: (v: wgsl.v2f, low: wgsl.v2f, high: wgsl.v2f) =>\n      vec2f(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n    vec2h: (v: wgsl.v2h, low: wgsl.v2h, high: wgsl.v2h) =>\n      vec2h(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n    vec2i: (v: wgsl.v2i, low: wgsl.v2i, high: wgsl.v2i) =>\n      vec2i(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n    vec2u: (v: wgsl.v2u, low: wgsl.v2u, high: wgsl.v2u) =>\n      vec2u(clamp(v.x, low.x, high.x), clamp(v.y, low.y, high.y)),\n\n    vec3f: (v: wgsl.v3f, low: wgsl.v3f, high: wgsl.v3f) =>\n      vec3f(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n      ),\n    vec3h: (v: wgsl.v3h, low: wgsl.v3h, high: wgsl.v3h) =>\n      vec3h(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n      ),\n    vec3i: (v: wgsl.v3i, low: wgsl.v3i, high: wgsl.v3f) =>\n      vec3i(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n      ),\n    vec3u: (v: wgsl.v3u, low: wgsl.v3u, high: wgsl.v3f) =>\n      vec3u(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n      ),\n\n    vec4f: (v: wgsl.v4f, low: wgsl.v4f, high: wgsl.v4f) =>\n      vec4f(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n        clamp(v.w, low.w, high.w),\n      ),\n    vec4h: (v: wgsl.v4h, low: wgsl.v4h, high: wgsl.v4h) =>\n      vec4h(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n        clamp(v.w, low.w, high.w),\n      ),\n    vec4i: (v: wgsl.v4i, low: wgsl.v4i, high: wgsl.v4i) =>\n      vec4i(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n        clamp(v.w, low.w, high.w),\n      ),\n    vec4u: (v: wgsl.v4u, low: wgsl.v4u, high: wgsl.v4u) =>\n      vec4u(\n        clamp(v.x, low.x, high.x),\n        clamp(v.y, low.y, high.y),\n        clamp(v.z, low.z, high.z),\n        clamp(v.w, low.w, high.w),\n      ),\n  } as Record<VecKind, <T extends vBase>(v: T, low: T, high: T) => T>,\n\n  length: {\n    vec2f: lengthVec2,\n    vec2h: lengthVec2,\n\n    vec3f: lengthVec3,\n    vec3h: lengthVec3,\n\n    vec4f: lengthVec4,\n    vec4h: lengthVec4,\n  } as Record<VecKind, (v: vBase) => number>,\n\n  add: {\n    vec2f: binaryComponentWise2f((a, b) => a + b),\n    vec2h: binaryComponentWise2h((a, b) => a + b),\n    vec2i: binaryComponentWise2i((a, b) => a + b),\n    vec2u: binaryComponentWise2u((a, b) => a + b),\n\n    vec3f: binaryComponentWise3f((a, b) => a + b),\n    vec3h: binaryComponentWise3h((a, b) => a + b),\n    vec3i: binaryComponentWise3i((a, b) => a + b),\n    vec3u: binaryComponentWise3u((a, b) => a + b),\n\n    vec4f: binaryComponentWise4f((a, b) => a + b),\n    vec4h: binaryComponentWise4h((a, b) => a + b),\n    vec4i: binaryComponentWise4i((a, b) => a + b),\n    vec4u: binaryComponentWise4u((a, b) => a + b),\n\n    mat2x2f: binaryComponentWise2x2f((a, b) => a + b),\n    mat3x3f: binaryComponentWise3x3f((a, b) => a + b),\n    mat4x4f: binaryComponentWise4x4f((a, b) => a + b),\n  } as Record<\n    VecKind | MatKind,\n    <T extends vBase | mBase>(lhs: T, rhs: T) => T\n  >,\n\n  addMixed: {\n    vec2f: (a: wgsl.v2f, b: number) => unary2f((e) => e + b)(a),\n    vec2h: (a: wgsl.v2h, b: number) => unary2h((e) => e + b)(a),\n    vec2i: (a: wgsl.v2i, b: number) => unary2i((e) => e + b)(a),\n    vec2u: (a: wgsl.v2u, b: number) => unary2u((e) => e + b)(a),\n\n    vec3f: (a: wgsl.v3f, b: number) => unary3f((e) => e + b)(a),\n    vec3h: (a: wgsl.v3h, b: number) => unary3h((e) => e + b)(a),\n    vec3i: (a: wgsl.v3i, b: number) => unary3i((e) => e + b)(a),\n    vec3u: (a: wgsl.v3u, b: number) => unary3u((e) => e + b)(a),\n\n    vec4f: (a: wgsl.v4f, b: number) => unary4f((e) => e + b)(a),\n    vec4h: (a: wgsl.v4h, b: number) => unary4h((e) => e + b)(a),\n    vec4i: (a: wgsl.v4i, b: number) => unary4i((e) => e + b)(a),\n    vec4u: (a: wgsl.v4u, b: number) => unary4u((e) => e + b)(a),\n\n    mat2x2f: (a: wgsl.m2x2f, b: number) => unary2x2f((e) => e + b)(a),\n    mat3x3f: (a: wgsl.m3x3f, b: number) => unary3x3f((e) => e + b)(a),\n    mat4x4f: (a: wgsl.m4x4f, b: number) => unary4x4f((e) => e + b)(a),\n  } as Record<\n    VecKind | MatKind,\n    <T extends vBase | mBase>(lhs: T, rhs: number) => T\n  >,\n\n  mulSxV: {\n    vec2f: (s: number, v: wgsl.v2f) => unary2f((e) => s * e)(v),\n    vec2h: (s: number, v: wgsl.v2h) => unary2h((e) => s * e)(v),\n    vec2i: (s: number, v: wgsl.v2i) => unary2i((e) => s * e)(v),\n    vec2u: (s: number, v: wgsl.v2u) => unary2u((e) => s * e)(v),\n\n    vec3f: (s: number, v: wgsl.v3f) => unary3f((e) => s * e)(v),\n    vec3h: (s: number, v: wgsl.v3h) => unary3h((e) => s * e)(v),\n    vec3i: (s: number, v: wgsl.v3i) => unary3i((e) => s * e)(v),\n    vec3u: (s: number, v: wgsl.v3u) => unary3u((e) => s * e)(v),\n\n    vec4f: (s: number, v: wgsl.v4f) => unary4f((e) => s * e)(v),\n    vec4h: (s: number, v: wgsl.v4h) => unary4h((e) => s * e)(v),\n    vec4i: (s: number, v: wgsl.v4i) => unary4i((e) => s * e)(v),\n    vec4u: (s: number, v: wgsl.v4u) => unary4u((e) => s * e)(v),\n\n    mat2x2f: (s: number, m: wgsl.m2x2f) => unary2x2f((e) => s * e)(m),\n    mat3x3f: (s: number, m: wgsl.m3x3f) => unary3x3f((e) => s * e)(m),\n    mat4x4f: (s: number, m: wgsl.m4x4f) => unary4x4f((e) => s * e)(m),\n  } as Record<\n    VecKind | MatKind,\n    <T extends vBase | wgsl.AnyMatInstance>(s: number, v: T) => T\n  >,\n\n  mulVxV: {\n    vec2f: binaryComponentWise2f((a, b) => a * b),\n    vec2h: binaryComponentWise2h((a, b) => a * b),\n    vec2i: binaryComponentWise2i((a, b) => a * b),\n    vec2u: binaryComponentWise2u((a, b) => a * b),\n\n    vec3f: binaryComponentWise3f((a, b) => a * b),\n    vec3h: binaryComponentWise3h((a, b) => a * b),\n    vec3i: binaryComponentWise3i((a, b) => a * b),\n    vec3u: binaryComponentWise3u((a, b) => a * b),\n\n    vec4f: binaryComponentWise4f((a, b) => a * b),\n    vec4h: binaryComponentWise4h((a, b) => a * b),\n    vec4i: binaryComponentWise4i((a, b) => a * b),\n    vec4u: binaryComponentWise4u((a, b) => a * b),\n\n    mat2x2f: (a: wgsl.m2x2f, b: wgsl.m2x2f) => {\n      const a_ = a.columns;\n      const b_ = b.columns;\n\n      return mat2x2f(\n        a_[0].x * b_[0].x + a_[1].x * b_[0].y,\n        a_[0].y * b_[0].x + a_[1].y * b_[0].y,\n        a_[0].x * b_[1].x + a_[1].x * b_[1].y,\n        a_[0].y * b_[1].x + a_[1].y * b_[1].y,\n      );\n    },\n\n    mat3x3f: (a: wgsl.m3x3f, b: wgsl.m3x3f) => {\n      const a_ = a.columns;\n      const b_ = b.columns;\n\n      return mat3x3f(\n        a_[0].x * b_[0].x + a_[1].x * b_[0].y + a_[2].x * b_[0].z,\n        a_[0].y * b_[0].x + a_[1].y * b_[0].y + a_[2].y * b_[0].z,\n        a_[0].z * b_[0].x + a_[1].z * b_[0].y + a_[2].z * b_[0].z,\n        a_[0].x * b_[1].x + a_[1].x * b_[1].y + a_[2].x * b_[1].z,\n        a_[0].y * b_[1].x + a_[1].y * b_[1].y + a_[2].y * b_[1].z,\n        a_[0].z * b_[1].x + a_[1].z * b_[1].y + a_[2].z * b_[1].z,\n        a_[0].x * b_[2].x + a_[1].x * b_[2].y + a_[2].x * b_[2].z,\n        a_[0].y * b_[2].x + a_[1].y * b_[2].y + a_[2].y * b_[2].z,\n        a_[0].z * b_[2].x + a_[1].z * b_[2].y + a_[2].z * b_[2].z,\n      );\n    },\n\n    mat4x4f: (a: wgsl.m4x4f, b: wgsl.m4x4f) => {\n      const a_ = a.columns;\n      const b_ = b.columns;\n\n      return mat4x4f(\n        a_[0].x * b_[0].x +\n          a_[1].x * b_[0].y +\n          a_[2].x * b_[0].z +\n          a_[3].x * b_[0].w,\n        a_[0].y * b_[0].x +\n          a_[1].y * b_[0].y +\n          a_[2].y * b_[0].z +\n          a_[3].y * b_[0].w,\n        a_[0].z * b_[0].x +\n          a_[1].z * b_[0].y +\n          a_[2].z * b_[0].z +\n          a_[3].z * b_[0].w,\n        a_[0].w * b_[0].x +\n          a_[1].w * b_[0].y +\n          a_[2].w * b_[0].z +\n          a_[3].w * b_[0].w,\n        a_[0].x * b_[1].x +\n          a_[1].x * b_[1].y +\n          a_[2].x * b_[1].z +\n          a_[3].x * b_[1].w,\n        a_[0].y * b_[1].x +\n          a_[1].y * b_[1].y +\n          a_[2].y * b_[1].z +\n          a_[3].y * b_[1].w,\n        a_[0].z * b_[1].x +\n          a_[1].z * b_[1].y +\n          a_[2].z * b_[1].z +\n          a_[3].z * b_[1].w,\n        a_[0].w * b_[1].x +\n          a_[1].w * b_[1].y +\n          a_[2].w * b_[1].z +\n          a_[3].w * b_[1].w,\n        a_[0].x * b_[2].x +\n          a_[1].x * b_[2].y +\n          a_[2].x * b_[2].z +\n          a_[3].x * b_[2].w,\n        a_[0].y * b_[2].x +\n          a_[1].y * b_[2].y +\n          a_[2].y * b_[2].z +\n          a_[3].y * b_[2].w,\n        a_[0].z * b_[2].x +\n          a_[1].z * b_[2].y +\n          a_[2].z * b_[2].z +\n          a_[3].z * b_[2].w,\n        a_[0].w * b_[2].x +\n          a_[1].w * b_[2].y +\n          a_[2].w * b_[2].z +\n          a_[3].w * b_[2].w,\n        a_[0].x * b_[3].x +\n          a_[1].x * b_[3].y +\n          a_[2].x * b_[3].z +\n          a_[3].x * b_[3].w,\n        a_[0].y * b_[3].x +\n          a_[1].y * b_[3].y +\n          a_[2].y * b_[3].z +\n          a_[3].y * b_[3].w,\n        a_[0].z * b_[3].x +\n          a_[1].z * b_[3].y +\n          a_[2].z * b_[3].z +\n          a_[3].z * b_[3].w,\n        a_[0].w * b_[3].x +\n          a_[1].w * b_[3].y +\n          a_[2].w * b_[3].z +\n          a_[3].w * b_[3].w,\n      );\n    },\n  } as Record<\n    VecKind | MatKind,\n    <T extends vBase | wgsl.AnyMatInstance>(lhs: T, rhs: T) => T\n  >,\n\n  mulMxV: {\n    mat2x2f: (m: wgsl.m2x2f, v: wgsl.v2f) => {\n      const m_ = m.columns;\n      return vec2f(\n        m_[0].x * v.x + m_[1].x * v.y,\n        m_[0].y * v.x + m_[1].y * v.y,\n      );\n    },\n\n    mat3x3f: (m: wgsl.m3x3f, v: wgsl.v3f) => {\n      const m_ = m.columns;\n      return vec3f(\n        m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z,\n        m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z,\n        m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z,\n      );\n    },\n\n    mat4x4f: (m: wgsl.m4x4f, v: wgsl.v4f) => {\n      const m_ = m.columns;\n      return vec4f(\n        m_[0].x * v.x + m_[1].x * v.y + m_[2].x * v.z + m_[3].x * v.w,\n        m_[0].y * v.x + m_[1].y * v.y + m_[2].y * v.z + m_[3].y * v.w,\n        m_[0].z * v.x + m_[1].z * v.y + m_[2].z * v.z + m_[3].z * v.w,\n        m_[0].w * v.x + m_[1].w * v.y + m_[2].w * v.z + m_[3].w * v.w,\n      );\n    },\n  } as Record<\n    MatKind,\n    <T extends wgsl.AnyMatInstance>(\n      m: T,\n      v: wgsl.vBaseForMat<T>,\n    ) => wgsl.vBaseForMat<T>\n  >,\n\n  mulVxM: {\n    mat2x2f: (v: wgsl.v2f, m: wgsl.m2x2f) => {\n      const m_ = m.columns;\n      return vec2f(\n        v.x * m_[0].x + v.y * m_[0].y,\n        v.x * m_[1].x + v.y * m_[1].y,\n      );\n    },\n\n    mat3x3f: (v: wgsl.v3f, m: wgsl.m3x3f) => {\n      const m_ = m.columns;\n      return vec3f(\n        v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z,\n        v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z,\n        v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z,\n      );\n    },\n\n    mat4x4f: (v: wgsl.v4f, m: wgsl.m4x4f) => {\n      const m_ = m.columns;\n      return vec4f(\n        v.x * m_[0].x + v.y * m_[0].y + v.z * m_[0].z + v.w * m_[0].w,\n        v.x * m_[1].x + v.y * m_[1].y + v.z * m_[1].z + v.w * m_[1].w,\n        v.x * m_[2].x + v.y * m_[2].y + v.z * m_[2].z + v.w * m_[2].w,\n        v.x * m_[3].x + v.y * m_[3].y + v.z * m_[3].z + v.w * m_[3].w,\n      );\n    },\n  } as Record<\n    MatKind,\n    <T extends wgsl.AnyMatInstance>(\n      v: wgsl.vBaseForMat<T>,\n      m: T,\n    ) => wgsl.vBaseForMat<T>\n  >,\n\n  div: {\n    vec2f: binaryComponentWise2f((a, b) => a / b),\n    vec2h: binaryComponentWise2h((a, b) => a / b),\n    vec2i: binaryComponentWise2i(NumberOps.divInteger),\n    vec2u: binaryComponentWise2u(NumberOps.divInteger),\n\n    vec3f: binaryComponentWise3f((a, b) => a / b),\n    vec3h: binaryComponentWise3h((a, b) => a / b),\n    vec3i: binaryComponentWise3i(NumberOps.divInteger),\n    vec3u: binaryComponentWise3u(NumberOps.divInteger),\n\n    vec4f: binaryComponentWise4f((a, b) => a / b),\n    vec4h: binaryComponentWise4h((a, b) => a / b),\n    vec4i: binaryComponentWise4i(NumberOps.divInteger),\n    vec4u: binaryComponentWise4u(NumberOps.divInteger),\n  } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n  divMixed: {\n    vec2f: (a: wgsl.v2f, b: number) => unary2f((e) => e / b)(a),\n    vec2h: (a: wgsl.v2h, b: number) => unary2h((e) => e / b)(a),\n    vec2i: (a: wgsl.v2i, b: number) =>\n      unary2i((e) => NumberOps.divInteger(e, b))(a),\n    vec2u: (a: wgsl.v2u, b: number) =>\n      unary2u((e) => NumberOps.divInteger(e, b))(a),\n\n    vec3f: (a: wgsl.v3f, b: number) => unary3f((e) => e / b)(a),\n    vec3h: (a: wgsl.v3h, b: number) => unary3h((e) => e / b)(a),\n    vec3i: (a: wgsl.v3i, b: number) =>\n      unary3i((e) => NumberOps.divInteger(e, b))(a),\n    vec3u: (a: wgsl.v3u, b: number) =>\n      unary3u((e) => NumberOps.divInteger(e, b))(a),\n\n    vec4f: (a: wgsl.v4f, b: number) => unary4f((e) => e / b)(a),\n    vec4h: (a: wgsl.v4h, b: number) => unary4h((e) => e / b)(a),\n    vec4i: (a: wgsl.v4i, b: number) =>\n      unary4i((e) => NumberOps.divInteger(e, b))(a),\n    vec4u: (a: wgsl.v4u, b: number) =>\n      unary4u((e) => NumberOps.divInteger(e, b))(a),\n  } as Record<VecKind, <T extends vBase>(lhs: T, rhs: number) => T>,\n\n  dot: {\n    vec2f: dotVec2,\n    vec2h: dotVec2,\n    vec2i: dotVec2,\n    vec2u: dotVec2,\n    vec3f: dotVec3,\n    vec3h: dotVec3,\n    vec3i: dotVec3,\n    vec3u: dotVec3,\n    vec4f: dotVec4,\n    vec4h: dotVec4,\n    vec4i: dotVec4,\n    vec4u: dotVec4,\n  } as Record<VecKind, <T extends vBase>(lhs: T, rhs: T) => number>,\n\n  normalize: {\n    vec2f: (v: wgsl.v2f) => {\n      const len = lengthVec2(v);\n      return vec2f(v.x / len, v.y / len);\n    },\n    vec2h: (v: wgsl.v2h) => {\n      const len = lengthVec2(v);\n      return vec2h(v.x / len, v.y / len);\n    },\n    vec2i: (v: wgsl.v2i) => {\n      const len = lengthVec2(v);\n      return vec2i(v.x / len, v.y / len);\n    },\n    vec2u: (v: wgsl.v2u) => {\n      const len = lengthVec2(v);\n      return vec2u(v.x / len, v.y / len);\n    },\n\n    vec3f: (v: wgsl.v3f) => {\n      const len = lengthVec3(v);\n      return vec3f(v.x / len, v.y / len, v.z / len);\n    },\n    vec3h: (v: wgsl.v3h) => {\n      const len = lengthVec3(v);\n      return vec3h(v.x / len, v.y / len, v.z / len);\n    },\n    vec3i: (v: wgsl.v3i) => {\n      const len = lengthVec3(v);\n      return vec3i(v.x / len, v.y / len, v.z / len);\n    },\n    vec3u: (v: wgsl.v3u) => {\n      const len = lengthVec3(v);\n      return vec3u(v.x / len, v.y / len, v.z / len);\n    },\n\n    vec4f: (v: wgsl.v4f) => {\n      const len = lengthVec4(v);\n      return vec4f(v.x / len, v.y / len, v.z / len, v.w / len);\n    },\n    vec4h: (v: wgsl.v4h) => {\n      const len = lengthVec4(v);\n      return vec4h(v.x / len, v.y / len, v.z / len, v.w / len);\n    },\n    vec4i: (v: wgsl.v4i) => {\n      const len = lengthVec4(v);\n      return vec4i(v.x / len, v.y / len, v.z / len, v.w / len);\n    },\n    vec4u: (v: wgsl.v4u) => {\n      const len = lengthVec4(v);\n      return vec4u(v.x / len, v.y / len, v.z / len, v.w / len);\n    },\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  cross: {\n    vec3f: (a: wgsl.v3f, b: wgsl.v3f) => {\n      return vec3f(\n        a.y * b.z - a.z * b.y,\n        a.z * b.x - a.x * b.z,\n        a.x * b.y - a.y * b.x,\n      );\n    },\n    vec3h: (a: wgsl.v3h, b: wgsl.v3h) => {\n      return vec3h(\n        a.y * b.z - a.z * b.y,\n        a.z * b.x - a.x * b.z,\n        a.x * b.y - a.y * b.x,\n      );\n    },\n  } as Record<\n    'vec3f' | 'vec3h',\n    <T extends wgsl.v3f | wgsl.v3h>(a: T, b: T) => T\n  >,\n\n  floor: {\n    vec2f: unary2f(Math.floor),\n    vec2h: unary2h(Math.floor),\n\n    vec3f: unary3f(Math.floor),\n    vec3h: unary3h(Math.floor),\n\n    vec4f: unary4f(Math.floor),\n    vec4h: unary4h(Math.floor),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  max: {\n    vec2f: binaryComponentWise2f(Math.max),\n    vec2h: binaryComponentWise2h(Math.max),\n    vec2i: binaryComponentWise2i(Math.max),\n    vec2u: binaryComponentWise2u(Math.max),\n\n    vec3f: binaryComponentWise3f(Math.max),\n    vec3h: binaryComponentWise3h(Math.max),\n    vec3i: binaryComponentWise3i(Math.max),\n    vec3u: binaryComponentWise3u(Math.max),\n\n    vec4f: binaryComponentWise4f(Math.max),\n    vec4h: binaryComponentWise4h(Math.max),\n    vec4i: binaryComponentWise4i(Math.max),\n    vec4u: binaryComponentWise4u(Math.max),\n  } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n  min: {\n    vec2f: binaryComponentWise2f(Math.min),\n    vec2h: binaryComponentWise2h(Math.min),\n    vec2i: binaryComponentWise2i(Math.min),\n    vec2u: binaryComponentWise2u(Math.min),\n\n    vec3f: binaryComponentWise3f(Math.min),\n    vec3h: binaryComponentWise3h(Math.min),\n    vec3i: binaryComponentWise3i(Math.min),\n    vec3u: binaryComponentWise3u(Math.min),\n\n    vec4f: binaryComponentWise4f(Math.min),\n    vec4h: binaryComponentWise4h(Math.min),\n    vec4i: binaryComponentWise4i(Math.min),\n    vec4u: binaryComponentWise4u(Math.min),\n  } as Record<VecKind, <T extends vBase>(a: T, b: T) => T>,\n\n  pow: {\n    vec2f: (base: wgsl.v2f, exponent: wgsl.v2f) =>\n      vec2f(base.x ** exponent.x, base.y ** exponent.y),\n    vec2h: (base: wgsl.v2h, exponent: wgsl.v2h) =>\n      vec2h(base.x ** exponent.x, base.y ** exponent.y),\n\n    vec3f: (base: wgsl.v3f, exponent: wgsl.v3f) =>\n      vec3f(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n    vec3h: (base: wgsl.v3h, exponent: wgsl.v3h) =>\n      vec3h(base.x ** exponent.x, base.y ** exponent.y, base.z ** exponent.z),\n\n    vec4f: (base: wgsl.v4f, exponent: wgsl.v4f) =>\n      vec4f(\n        base.x ** exponent.x,\n        base.y ** exponent.y,\n        base.z ** exponent.z,\n        base.w ** exponent.w,\n      ),\n    vec4h: (base: wgsl.v4h, exponent: wgsl.v4h) =>\n      vec4h(\n        base.x ** exponent.x,\n        base.y ** exponent.y,\n        base.z ** exponent.z,\n        base.w ** exponent.w,\n      ),\n  } as Record<\n    'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h' | 'number',\n    <T extends wgsl.AnyFloatVecInstance | number>(a: T, b: T) => T\n  >,\n\n  sign: {\n    vec2f: unary2f(Math.sign),\n    vec2h: unary2h(Math.sign),\n    vec2i: unary2i(Math.sign),\n\n    vec3f: unary3f(Math.sign),\n    vec3h: unary3h(Math.sign),\n    vec3i: unary3i(Math.sign),\n\n    vec4f: unary4f(Math.sign),\n    vec4h: unary4h(Math.sign),\n    vec4i: unary4i(Math.sign),\n  } as Record<VecKind, <T extends vBase>(e: T) => T>,\n\n  sqrt: {\n    vec2f: unary2f(Math.sqrt),\n    vec2h: unary2h(Math.sqrt),\n\n    vec3f: unary3f(Math.sqrt),\n    vec3h: unary3h(Math.sqrt),\n\n    vec4f: unary4f(Math.sqrt),\n    vec4h: unary4h(Math.sqrt),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  mix: {\n    vec2f: (e1: wgsl.v2f, e2: wgsl.v2f, e3: wgsl.v2f | number) => {\n      if (typeof e3 === 'number') {\n        return vec2f(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n      }\n      return vec2f(\n        e1.x * (1 - e3.x) + e2.x * e3.x,\n        e1.y * (1 - e3.y) + e2.y * e3.y,\n      );\n    },\n    vec2h: (e1: wgsl.v2h, e2: wgsl.v2h, e3: wgsl.v2h | number) => {\n      if (typeof e3 === 'number') {\n        return vec2h(e1.x * (1 - e3) + e2.x * e3, e1.y * (1 - e3) + e2.y * e3);\n      }\n      return vec2h(\n        e1.x * (1 - e3.x) + e2.x * e3.x,\n        e1.y * (1 - e3.y) + e2.y * e3.y,\n      );\n    },\n\n    vec3f: (e1: wgsl.v3f, e2: wgsl.v3f, e3: wgsl.v3f | number) => {\n      if (typeof e3 === 'number') {\n        return vec3f(\n          e1.x * (1 - e3) + e2.x * e3,\n          e1.y * (1 - e3) + e2.y * e3,\n          e1.z * (1 - e3) + e2.z * e3,\n        );\n      }\n      return vec3f(\n        e1.x * (1 - e3.x) + e2.x * e3.x,\n        e1.y * (1 - e3.y) + e2.y * e3.y,\n        e1.z * (1 - e3.z) + e2.z * e3.z,\n      );\n    },\n    vec3h: (e1: wgsl.v3h, e2: wgsl.v3h, e3: wgsl.v3h | number) => {\n      if (typeof e3 === 'number') {\n        return vec3h(\n          e1.x * (1 - e3) + e2.x * e3,\n          e1.y * (1 - e3) + e2.y * e3,\n          e1.z * (1 - e3) + e2.z * e3,\n        );\n      }\n      return vec3h(\n        e1.x * (1 - e3.x) + e2.x * e3.x,\n        e1.y * (1 - e3.y) + e2.y * e3.y,\n        e1.z * (1 - e3.z) + e2.z * e3.z,\n      );\n    },\n\n    vec4f: (e1: wgsl.v4f, e2: wgsl.v4f, e3: wgsl.v4f | number) => {\n      if (typeof e3 === 'number') {\n        return vec4f(\n          e1.x * (1 - e3) + e2.x * e3,\n          e1.y * (1 - e3) + e2.y * e3,\n          e1.z * (1 - e3) + e2.z * e3,\n          e1.w * (1 - e3) + e2.w * e3,\n        );\n      }\n      return vec4f(\n        e1.x * (1 - e3.x) + e2.x * e3.x,\n        e1.y * (1 - e3.y) + e2.y * e3.y,\n        e1.z * (1 - e3.z) + e2.z * e3.z,\n        e1.w * (1 - e3.w) + e2.w * e3.w,\n      );\n    },\n    vec4h: (e1: wgsl.v4h, e2: wgsl.v4h, e3: wgsl.v4h | number) => {\n      if (typeof e3 === 'number') {\n        return vec4h(\n          e1.x * (1 - e3) + e2.x * e3,\n          e1.y * (1 - e3) + e2.y * e3,\n          e1.z * (1 - e3) + e2.z * e3,\n          e1.w * (1 - e3) + e2.w * e3,\n        );\n      }\n      return vec4h(\n        e1.x * (1 - e3.x) + e2.x * e3.x,\n        e1.y * (1 - e3.y) + e2.y * e3.y,\n        e1.z * (1 - e3.z) + e2.z * e3.z,\n        e1.w * (1 - e3.w) + e2.w * e3.w,\n      );\n    },\n  } as Record<\n    'vec2f' | 'vec3f' | 'vec4f' | 'vec2h' | 'vec3h' | 'vec4h',\n    <T extends wgsl.v2f | wgsl.v3f | wgsl.v4f | wgsl.v2h | wgsl.v3h | wgsl.v4h>(\n      a: T,\n      b: T,\n      c: T | number,\n    ) => T\n  >,\n\n  sin: {\n    vec2f: unary2f(Math.sin),\n    vec2h: unary2h(Math.sin),\n\n    vec3f: unary3f(Math.sin),\n    vec3h: unary3h(Math.sin),\n\n    vec4f: unary4f(Math.sin),\n    vec4h: unary4h(Math.sin),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  cos: {\n    vec2f: unary2f(Math.cos),\n    vec2h: unary2h(Math.cos),\n\n    vec3f: unary3f(Math.cos),\n    vec3h: unary3h(Math.cos),\n\n    vec4f: unary4f(Math.cos),\n    vec4h: unary4h(Math.cos),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  cosh: {\n    vec2f: unary2f(Math.cosh),\n    vec2h: unary2h(Math.cosh),\n\n    vec3f: unary3f(Math.cosh),\n    vec3h: unary3h(Math.cosh),\n\n    vec4f: unary4f(Math.cosh),\n    vec4h: unary4h(Math.cosh),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  exp: {\n    vec2f: unary2f(Math.exp),\n    vec2h: unary2h(Math.exp),\n\n    vec3f: unary3f(Math.exp),\n    vec3h: unary3h(Math.exp),\n\n    vec4f: unary4f(Math.exp),\n    vec4h: unary4h(Math.exp),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  exp2: {\n    vec2f: unary2f((val) => 2 ** val),\n    vec2h: unary2h((val) => 2 ** val),\n\n    vec3f: unary3f((val) => 2 ** val),\n    vec3h: unary3h((val) => 2 ** val),\n\n    vec4f: unary4f((val) => 2 ** val),\n    vec4h: unary4h((val) => 2 ** val),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  log: {\n    vec2f: unary2f(Math.log),\n    vec2h: unary2h(Math.log),\n\n    vec3f: unary3f(Math.log),\n    vec3h: unary3h(Math.log),\n\n    vec4f: unary4f(Math.log),\n    vec4h: unary4h(Math.log),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  log2: {\n    vec2f: unary2f(Math.log2),\n    vec2h: unary2h(Math.log2),\n\n    vec3f: unary3f(Math.log2),\n    vec3h: unary3h(Math.log2),\n\n    vec4f: unary4f(Math.log2),\n    vec4h: unary4h(Math.log2),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  fract: {\n    vec2f: unary2f((value) => value - Math.floor(value)),\n    vec2h: unary2h((value) => value - Math.floor(value)),\n\n    vec3f: unary3f((value) => value - Math.floor(value)),\n    vec3h: unary3h((value) => value - Math.floor(value)),\n\n    vec4f: unary4f((value) => value - Math.floor(value)),\n    vec4h: unary4h((value) => value - Math.floor(value)),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  isCloseToZero: {\n    vec2f: (v: wgsl.v2f, n: number) => Math.abs(v.x) <= n && Math.abs(v.y) <= n,\n    vec2h: (v: wgsl.v2h, n: number) => Math.abs(v.x) <= n && Math.abs(v.y) <= n,\n\n    vec3f: (v: wgsl.v3f, n: number) =>\n      Math.abs(v.x) <= n && Math.abs(v.y) <= n && Math.abs(v.z) <= n,\n    vec3h: (v: wgsl.v3h, n: number) =>\n      Math.abs(v.x) <= n && Math.abs(v.y) <= n && Math.abs(v.z) <= n,\n\n    vec4f: (v: wgsl.v4f, n: number) =>\n      Math.abs(v.x) <= n &&\n      Math.abs(v.y) <= n &&\n      Math.abs(v.z) <= n &&\n      Math.abs(v.w) <= n,\n    vec4h: (v: wgsl.v4h, n: number) =>\n      Math.abs(v.x) <= n &&\n      Math.abs(v.y) <= n &&\n      Math.abs(v.z) <= n &&\n      Math.abs(v.w) <= n,\n  } as Record<VecKind, <T extends vBase>(v: T, n: number) => boolean>,\n\n  neg: {\n    vec2f: unary2f((value) => -value),\n    vec2h: unary2h((value) => -value),\n    vec2i: unary2i((value) => -value),\n    vec2u: unary2u((value) => -value),\n    'vec2<bool>': (e: wgsl.v2b) => vec2b(!e.x, !e.y),\n\n    vec3f: unary3f((value) => -value),\n    vec3h: unary3h((value) => -value),\n    vec3i: unary3i((value) => -value),\n    vec3u: unary3u((value) => -value),\n    'vec3<bool>': (e: wgsl.v3b) => vec3b(!e.x, !e.y, !e.z),\n\n    vec4f: unary4f((value) => -value),\n    vec4h: unary4h((value) => -value),\n    vec4i: unary4i((value) => -value),\n    vec4u: unary4u((value) => -value),\n    'vec4<bool>': (e: wgsl.v4b) => vec4b(!e.x, !e.y, !e.z, !e.w),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n\n  select: {\n    vec2f: (f: wgsl.v2f, t: wgsl.v2f, c: wgsl.v2b) =>\n      vec2f(c.x ? t.x : f.x, c.y ? t.y : f.y),\n    vec2h: (f: wgsl.v2h, t: wgsl.v2h, c: wgsl.v2b) =>\n      vec2h(c.x ? t.x : f.x, c.y ? t.y : f.y),\n    vec2i: (f: wgsl.v2i, t: wgsl.v2i, c: wgsl.v2b) =>\n      vec2i(c.x ? t.x : f.x, c.y ? t.y : f.y),\n    vec2u: (f: wgsl.v2u, t: wgsl.v2u, c: wgsl.v2b) =>\n      vec2u(c.x ? t.x : f.x, c.y ? t.y : f.y),\n    'vec2<bool>': (f: wgsl.v2b, t: wgsl.v2b, c: wgsl.v2b) =>\n      vec2b(c.x ? t.x : f.x, c.y ? t.y : f.y),\n\n    vec3f: (f: wgsl.v3f, t: wgsl.v3f, c: wgsl.v3b) =>\n      vec3f(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n    vec3h: (f: wgsl.v3h, t: wgsl.v3h, c: wgsl.v3b) =>\n      vec3h(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n    vec3i: (f: wgsl.v3i, t: wgsl.v3i, c: wgsl.v3b) =>\n      vec3i(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n    vec3u: (f: wgsl.v3u, t: wgsl.v3u, c: wgsl.v3b) =>\n      vec3u(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n    'vec3<bool>': (f: wgsl.v3b, t: wgsl.v3b, c: wgsl.v3b) =>\n      vec3b(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z),\n\n    vec4f: (f: wgsl.v4f, t: wgsl.v4f, c: wgsl.v4b) =>\n      vec4f(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n    vec4h: (f: wgsl.v4h, t: wgsl.v4h, c: wgsl.v4b) =>\n      vec4h(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n    vec4i: (f: wgsl.v4i, t: wgsl.v4i, c: wgsl.v4b) =>\n      vec4i(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n    vec4u: (f: wgsl.v4u, t: wgsl.v4u, c: wgsl.v4b) =>\n      vec4u(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n    'vec4<bool>': (f: wgsl.v4b, t: wgsl.v4b, c: wgsl.v4b) =>\n      vec4b(c.x ? t.x : f.x, c.y ? t.y : f.y, c.z ? t.z : f.z, c.w ? t.w : f.w),\n  } as Record<\n    VecKind,\n    <T extends wgsl.AnyVecInstance>(\n      f: T,\n      t: T,\n      c: T extends wgsl.AnyVec2Instance ? wgsl.v2b\n        : T extends wgsl.AnyVec3Instance ? wgsl.v3b\n        : wgsl.v4b,\n    ) => T\n  >,\n\n  tanh: {\n    vec2f: unary2f(Math.tanh),\n    vec2h: unary2h(Math.tanh),\n\n    vec3f: unary3f(Math.tanh),\n    vec3h: unary3h(Math.tanh),\n\n    vec4f: unary4f(Math.tanh),\n    vec4h: unary4h(Math.tanh),\n  } as Record<VecKind, <T extends vBase>(v: T) => T>,\n};\n","import { type AnyData, snip, type Snippet } from '../data/dataTypes.ts';\nimport { f32 } from '../data/numeric.ts';\nimport { VectorOps } from '../data/vectorOps.ts';\nimport {\n  type AbstractFloat,\n  type AbstractInt,\n  type AnyFloatVecInstance,\n  type AnyMatInstance,\n  type AnyNumericVecInstance,\n  type F16,\n  type F32,\n  type I32,\n  isFloat32VecInstance,\n  isMatInstance,\n  isVecInstance,\n  type mBaseForVec,\n  type U32,\n  type v2f,\n  type v2h,\n  type v2i,\n  type v3f,\n  type v3h,\n  type v3i,\n  type v4f,\n  type v4h,\n  type v4i,\n  type vBaseForMat,\n} from '../data/wgslTypes.ts';\nimport { createDualImpl } from '../shared/generators.ts';\nimport { $internal } from '../shared/symbols.ts';\n\ntype NumVec = AnyNumericVecInstance;\ntype Mat = AnyMatInstance;\n\nexport function isSnippetNumeric(snippet: Snippet) {\n  return isNumericSchema(snippet.dataType);\n}\n\nexport function isNumericSchema(\n  schema: unknown,\n): schema is AbstractInt | AbstractFloat | F32 | F16 | I32 | U32 {\n  const type = (schema as AnyData)?.type;\n\n  return (\n    !!(schema as AnyData)?.[$internal] &&\n    (type === 'abstractInt' ||\n      type === 'abstractFloat' ||\n      type === 'f32' ||\n      type === 'f16' ||\n      type === 'i32' ||\n      type === 'u32')\n  );\n}\n\nfunction cpuAdd(lhs: number, rhs: number): number; // default addition\nfunction cpuAdd<T extends NumVec>(lhs: number, rhs: T): T; // mixed addition\nfunction cpuAdd<T extends NumVec>(lhs: T, rhs: number): T; // mixed addition\nfunction cpuAdd<T extends NumVec | Mat>(lhs: T, rhs: T): T; // component-wise addition\nfunction cpuAdd<\n  // union overload\n  Lhs extends number | NumVec | Mat,\n  Rhs extends (Lhs extends number ? number | NumVec\n    : Lhs extends NumVec ? number | Lhs\n    : Lhs extends Mat ? Lhs\n    : never),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuAdd(lhs: number | NumVec | Mat, rhs: number | NumVec | Mat) {\n  if (typeof lhs === 'number' && typeof rhs === 'number') {\n    return lhs + rhs; // default addition\n  }\n  if (typeof lhs === 'number' && isVecInstance(rhs)) {\n    return VectorOps.addMixed[rhs.kind](rhs, lhs); // mixed addition\n  }\n  if (isVecInstance(lhs) && typeof rhs === 'number') {\n    return VectorOps.addMixed[lhs.kind](lhs, rhs); // mixed addition\n  }\n  if (\n    (isVecInstance(lhs) && isVecInstance(rhs)) ||\n    (isMatInstance(lhs) && isMatInstance(rhs))\n  ) {\n    return VectorOps.add[lhs.kind](lhs, rhs); // component-wise addition\n  }\n\n  throw new Error('Add/Sub called with invalid arguments.');\n}\n\nexport const add = createDualImpl(\n  // CPU implementation\n  cpuAdd,\n  // GPU implementation\n  (lhs, rhs) =>\n    snip(\n      `(${lhs.value} + ${rhs.value})`,\n      isSnippetNumeric(lhs) ? rhs.dataType : lhs.dataType,\n    ),\n  'coerce',\n);\n\nfunction cpuSub(lhs: number, rhs: number): number; // default subtraction\nfunction cpuSub<T extends NumVec>(lhs: number, rhs: T): T; // mixed subtraction\nfunction cpuSub<T extends NumVec>(lhs: T, rhs: number): T; // mixed subtraction\nfunction cpuSub<T extends NumVec | Mat>(lhs: T, rhs: T): T; // component-wise subtraction\nfunction cpuSub<\n  // union overload\n  Lhs extends number | NumVec | Mat,\n  Rhs extends (Lhs extends number ? number | NumVec\n    : Lhs extends NumVec ? number | Lhs\n    : Lhs extends Mat ? Lhs\n    : never),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuSub(lhs: number | NumVec | Mat, rhs: number | NumVec | Mat) {\n  // while illegal on the wgsl side, we can do this in js\n  return cpuAdd(lhs, mul(-1, rhs));\n}\n\nexport const sub = createDualImpl(\n  // CPU implementation\n  cpuSub,\n  // GPU implementation\n  (lhs, rhs) =>\n    snip(\n      `(${lhs.value} - ${rhs.value})`,\n      isSnippetNumeric(lhs) ? rhs.dataType : lhs.dataType,\n    ),\n  'sub',\n  'coerce',\n);\n\nfunction cpuMul(lhs: number, rhs: number): number; // default multiplication\nfunction cpuMul<MV extends NumVec | Mat>(lhs: number, rhs: MV): MV; // scale\nfunction cpuMul<MV extends NumVec | Mat>(lhs: MV, rhs: number): MV; // scale\nfunction cpuMul<V extends NumVec>(lhs: V, rhs: V): V; // component-wise multiplication\nfunction cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: V, rhs: M): V; // row-vector-matrix\nfunction cpuMul<M extends Mat, V extends vBaseForMat<M>>(lhs: M, rhs: V): V; // matrix-column-vector\nfunction cpuMul<M extends Mat>(lhs: M, rhs: M): M; // matrix multiplication\nfunction cpuMul<\n  // union overload\n  Lhs extends number | NumVec | Mat,\n  Rhs extends (\n    Lhs extends number ? number | NumVec | Mat\n      : Lhs extends NumVec ? number | Lhs | mBaseForVec<Lhs>\n      : Lhs extends Mat ? number | vBaseForMat<Lhs> | Lhs\n      : never\n  ),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuMul(lhs: number | NumVec | Mat, rhs: number | NumVec | Mat) {\n  if (typeof lhs === 'number' && typeof rhs === 'number') {\n    return lhs * rhs; // default multiplication\n  }\n  if (typeof lhs === 'number' && (isVecInstance(rhs) || isMatInstance(rhs))) {\n    return VectorOps.mulSxV[rhs.kind](lhs, rhs); // scale\n  }\n  if ((isVecInstance(lhs) || isMatInstance(lhs)) && typeof rhs === 'number') {\n    return VectorOps.mulSxV[lhs.kind](rhs, lhs); // scale\n  }\n  if (isVecInstance(lhs) && isVecInstance(rhs)) {\n    return VectorOps.mulVxV[lhs.kind](lhs, rhs); // component-wise\n  }\n  if (isFloat32VecInstance(lhs) && isMatInstance(rhs)) {\n    return VectorOps.mulVxM[rhs.kind](lhs, rhs); // row-vector-matrix\n  }\n  if (isMatInstance(lhs) && isFloat32VecInstance(rhs)) {\n    return VectorOps.mulMxV[lhs.kind](lhs, rhs); // matrix-column-vector\n  }\n  if (isMatInstance(lhs) && isMatInstance(rhs)) {\n    return VectorOps.mulVxV[lhs.kind](lhs, rhs); // matrix multiplication\n  }\n\n  throw new Error('Mul called with invalid arguments.');\n}\n\nexport const mul = createDualImpl(\n  // CPU implementation\n  cpuMul,\n  // GPU implementation\n  (lhs, rhs) => {\n    const returnType = isSnippetNumeric(lhs)\n      // Scalar * Scalar/Vector/Matrix\n      ? rhs.dataType\n      : isSnippetNumeric(rhs)\n      // Vector/Matrix * Scalar\n      ? lhs.dataType\n      : lhs.dataType.type.startsWith('vec')\n      // Vector * Vector/Matrix\n      ? lhs.dataType\n      : rhs.dataType.type.startsWith('vec')\n      // Matrix * Vector\n      ? rhs.dataType\n      // Matrix * Matrix\n      : lhs.dataType;\n    return snip(`(${lhs.value} * ${rhs.value})`, returnType);\n  },\n  'mul',\n);\n\nfunction cpuDiv(lhs: number, rhs: number): number; // default js division\nfunction cpuDiv<MV extends NumVec>(lhs: number, rhs: MV): MV; // scale\nfunction cpuDiv<MV extends NumVec>(lhs: MV, rhs: number): MV; // scale\nfunction cpuDiv<V extends NumVec>(lhs: V, rhs: V): V; // component-wise division\nfunction cpuDiv<\n  // union overload\n  Lhs extends number | NumVec,\n  Rhs extends (Lhs extends number ? number | NumVec\n    : Lhs extends NumVec ? number | Lhs\n    : never),\n>(lhs: Lhs, rhs: Rhs): Lhs | Rhs;\nfunction cpuDiv(lhs: number | NumVec, rhs: number | NumVec) {\n  if (typeof lhs === 'number' && typeof rhs === 'number') {\n    return (lhs / rhs);\n  }\n  if (typeof lhs === 'number' && isVecInstance(rhs)) {\n    return VectorOps.divMixed[rhs.kind](rhs, lhs);\n  }\n  if (isVecInstance(lhs) && typeof rhs === 'number') {\n    return VectorOps.divMixed[lhs.kind](lhs, rhs);\n  }\n  if (isVecInstance(lhs) && isVecInstance(rhs)) {\n    return VectorOps.div[lhs.kind](lhs, rhs);\n  }\n\n  throw new Error('Div called with invalid arguments.');\n}\n\nexport const div = createDualImpl(\n  // CPU implementation\n  cpuDiv,\n  // GPU implementation\n  (lhs, rhs) => {\n    if (isSnippetNumeric(lhs) && isSnippetNumeric(rhs)) {\n      return snip(`(f32(${lhs.value}) / ${rhs.value})`, f32);\n    }\n    return snip(`(${lhs.value} / ${rhs.value})`, lhs.dataType);\n  },\n  'div',\n);\n\nexport const abs = createDualImpl(\n  // CPU implementation\n  <T extends NumVec | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.abs(value) as T;\n    }\n    return VectorOps.abs[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`abs(${value.value})`, value.dataType),\n  'abs',\n);\n\nexport const atan2 = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(y: T, x: T): T => {\n    if (typeof y === 'number' && typeof x === 'number') {\n      return Math.atan2(y, x) as T;\n    }\n    return VectorOps.atan2[(y as AnyFloatVecInstance).kind](\n      y as never,\n      x as never,\n    ) as T;\n  },\n  // GPU implementation\n  (y, x) => snip(`atan2(${y.value}, ${x.value})`, y.dataType),\n  'atan2',\n);\n\nexport const acos = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.acos(value) as T;\n    }\n    return VectorOps.acos[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`acos(${value.value})`, value.dataType),\n  'acos',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#acosh-builtin\n */\nexport const acosh = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.acosh(value) as T;\n    }\n    return VectorOps.acosh[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`acosh(${value.value})`, value.dataType),\n  'acosh',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#asin-builtin\n */\nexport const asin = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.asin(value) as T;\n    }\n    return VectorOps.asin[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`asin(${value.value})`, value.dataType),\n  'asin',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#ceil-builtin\n */\nexport const ceil = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.ceil(value) as T;\n    }\n    return VectorOps.ceil[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`ceil(${value.value})`, value.dataType),\n  'ceil',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#clamp\n */\nexport const clamp = createDualImpl(\n  // CPU implementation\n  <T extends NumVec | number>(value: T, low: T, high: T): T => {\n    if (typeof value === 'number') {\n      return Math.min(Math.max(low as number, value), high as number) as T;\n    }\n    return VectorOps.clamp[value.kind](\n      value,\n      low as NumVec,\n      high as NumVec,\n    ) as T;\n  },\n  // GPU implementation\n  (value, low, high) =>\n    snip(`clamp(${value.value}, ${low.value}, ${high.value})`, value.dataType),\n  'clamp',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cos-builtin\n */\nexport const cos = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.cos(value) as T;\n    }\n    return VectorOps.cos[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`cos(${value.value})`, value.dataType),\n  'cos',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cosh-builtin\n */\nexport const cosh = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.cosh(value) as T;\n    }\n    return VectorOps.cosh[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`cosh(${value.value})`, value.dataType),\n  'cosh',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#cross-builtin\n */\nexport const cross = createDualImpl(\n  // CPU implementation\n  <T extends v3f | v3h>(a: T, b: T): T => VectorOps.cross[a.kind](a, b),\n  // GPU implementation\n  (a, b) => snip(`cross(${a.value}, ${b.value})`, a.dataType),\n  'cross',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#dot-builtin\n */\nexport const dot = createDualImpl(\n  // CPU implementation\n  <T extends NumVec>(lhs: T, rhs: T): number =>\n    VectorOps.dot[lhs.kind](lhs, rhs),\n  // GPU implementation\n  (lhs, rhs) => snip(`dot(${lhs.value}, ${rhs.value})`, f32),\n  'dot',\n);\n\nexport const normalize = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance>(v: T): T => VectorOps.normalize[v.kind](v),\n  // GPU implementation\n  (v) => snip(`normalize(${v.value})`, v.dataType),\n  'normalize',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#floor-builtin\n */\nexport const floor = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.floor(value) as T;\n    }\n    return VectorOps.floor[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`floor(${value.value})`, value.dataType),\n  'floor',\n);\n\nexport const fract = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(a: T): T => {\n    if (typeof a === 'number') {\n      return (a - Math.floor(a)) as T;\n    }\n    return VectorOps.fract[a.kind](a) as T;\n  },\n  // GPU implementation\n  (a) => snip(`fract(${a.value})`, a.dataType),\n  'fract',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#length-builtin\n */\nexport const length = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): number => {\n    if (typeof value === 'number') {\n      return Math.abs(value);\n    }\n    return VectorOps.length[value.kind](value);\n  },\n  // GPU implementation\n  (value) => snip(`length(${value.value})`, f32),\n  'length',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#log-builtin\n */\nexport const log = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.log(value) as T;\n    }\n    return VectorOps.log[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`log(${value.value})`, value.dataType),\n  'log',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#log2-builtin\n */\nexport const log2 = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.log2(value) as T;\n    }\n    return VectorOps.log2[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`log2(${value.value})`, value.dataType),\n  'log2',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#max-float-builtin\n */\nexport const max = createDualImpl(\n  // CPU implementation\n  <T extends NumVec | number>(a: T, b: T): T => {\n    if (typeof a === 'number') {\n      return Math.max(a, b as number) as T;\n    }\n    return VectorOps.max[a.kind](a, b as NumVec) as T;\n  },\n  // GPU implementation\n  (a, b) => snip(`max(${a.value}, ${b.value})`, a.dataType),\n  'max',\n  'coerce',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#min-float-builtin\n */\nexport const min = createDualImpl(\n  // CPU implementation\n  <T extends NumVec | number>(a: T, b: T): T => {\n    if (typeof a === 'number') {\n      return Math.min(a, b as number) as T;\n    }\n    return VectorOps.min[a.kind](a, b as NumVec) as T;\n  },\n  // GPU implementation\n  (a, b) => snip(`min(${a.value}, ${b.value})`, a.dataType),\n  'min',\n  'coerce',\n);\n\nexport const sign = createDualImpl(\n  // CPU implementation\n  //         \\/ specifically no unsigned variants\n  <T extends v2f | v2h | v2i | v3f | v3h | v3i | v4f | v4h | v4i | number>(\n    e: T,\n  ): T => {\n    if (typeof e === 'number') {\n      return Math.sign(e) as T;\n    }\n    return VectorOps.sign[e.kind](e) as T;\n  },\n  // GPU implementation\n  (e) => snip(`sign(${e.value})`, e.dataType),\n  'sign',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#sin-builtin\n */\nexport const sin = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.sin(value) as T;\n    }\n    return VectorOps.sin[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`sin(${value.value})`, value.dataType),\n  'sin',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#exp-builtin\n */\nexport const exp = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.exp(value) as T;\n    }\n    return VectorOps.exp[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`exp(${value.value})`, value.dataType),\n  'exp',\n);\n\n/**\n * @privateRemarks\n * https://www.w3.org/TR/WGSL/#exp2-builtin\n */\nexport const exp2 = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return (2 ** value) as T;\n    }\n    return VectorOps.exp2[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`exp2(${value.value})`, value.dataType),\n  'exp2',\n);\n\ntype PowOverload = {\n  (base: number, exponent: number): number;\n  <T extends AnyFloatVecInstance>(base: T, exponent: T): T;\n};\n\nexport const pow: PowOverload = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(base: T, exponent: T): T => {\n    if (typeof base === 'number' && typeof exponent === 'number') {\n      return (base ** exponent) as T;\n    }\n    if (\n      typeof base === 'object' &&\n      typeof exponent === 'object' &&\n      'kind' in base &&\n      'kind' in exponent\n    ) {\n      return VectorOps.pow[base.kind](base, exponent) as T;\n    }\n    throw new Error('Invalid arguments to pow()');\n  },\n  // GPU implementation\n  (base, exponent) =>\n    snip(`pow(${base.value}, ${exponent.value})`, base.dataType),\n  'pow',\n);\n\ntype MixOverload = {\n  (e1: number, e2: number, e3: number): number;\n  <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: number): T;\n  <T extends AnyFloatVecInstance>(e1: T, e2: T, e3: T): T;\n};\n\nexport const mix: MixOverload = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(e1: T, e2: T, e3: T | number): T => {\n    if (typeof e1 === 'number') {\n      if (typeof e3 !== 'number' || typeof e2 !== 'number') {\n        throw new Error(\n          'When e1 and e2 are numbers, the blend factor must be a number.',\n        );\n      }\n      return (e1 * (1 - e3) + e2 * e3) as T;\n    }\n\n    if (typeof e1 === 'number' || typeof e2 === 'number') {\n      throw new Error('e1 and e2 need to both be vectors of the same kind.');\n    }\n\n    return VectorOps.mix[e1.kind](e1, e2, e3) as T;\n  },\n  // GPU implementation\n  (e1, e2, e3) =>\n    snip(`mix(${e1.value}, ${e2.value}, ${e3.value})`, e1.dataType),\n  'mix',\n);\n\nexport const reflect = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance>(e1: T, e2: T): T =>\n    sub(e1, mul(2 * dot(e2, e1), e2)),\n  // GPU implementation\n  (e1, e2) => snip(`reflect(${e1.value}, ${e2.value})`, e1.dataType),\n  'reflect',\n);\n\nexport const distance = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(a: T, b: T): number => {\n    if (typeof a === 'number' && typeof b === 'number') {\n      return Math.abs(a - b);\n    }\n    return length(\n      sub(a as AnyFloatVecInstance, b as AnyFloatVecInstance),\n    ) as number;\n  },\n  // GPU implementation\n  (a, b) => snip(`distance(${a.value}, ${b.value})`, f32),\n  'distance',\n);\n\nexport const neg = createDualImpl(\n  // CPU implementation\n  <T extends NumVec | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return -value as T;\n    }\n    return VectorOps.neg[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`-(${value.value})`, value.dataType),\n  'neg',\n);\n\nexport const sqrt = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.sqrt(value) as T;\n    }\n    return VectorOps.sqrt[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`sqrt(${value.value})`, value.dataType),\n  'sqrt',\n);\n\nexport const tanh = createDualImpl(\n  // CPU implementation\n  <T extends AnyFloatVecInstance | number>(value: T): T => {\n    if (typeof value === 'number') {\n      return Math.tanh(value) as T;\n    }\n    return VectorOps.tanh[value.kind](value) as T;\n  },\n  // GPU implementation\n  (value) => snip(`tanh(${value.value})`, value.dataType),\n  'tanh',\n);\n"]}