From 005a6235efced161a6e19842adf33c6b9164bcac Mon Sep 17 00:00:00 2001 From: treeform Date: Mon, 8 Aug 2022 11:03:41 -0700 Subject: [PATCH] More work on swizzle. --- src/vmath/swizzle.nim | 8098 ++++++++++----------------------------- tests/bench_swizzle.nim | 31 + tests/test.nim | 46 +- tools/genswizzle.nim | 54 +- 4 files changed, 2132 insertions(+), 6097 deletions(-) create mode 100644 tests/bench_swizzle.nim diff --git a/src/vmath/swizzle.nim b/src/vmath/swizzle.nim index 82cd772..5cadb31 100644 --- a/src/vmath/swizzle.nim +++ b/src/vmath/swizzle.nim @@ -1,6087 +1,2055 @@ -# Generated by tools/gensswizzle +# Generated by tools/gensswizzle - don't edit manually. # 1 x rgba -template r*[T](a: GVec234[T]): T = a[0] -template `r=`*[T](a: var GVec234[T], b: T) = a[0] = b -template g*[T](a: GVec234[T]): T = a[1] -template `g=`*[T](a: var GVec234[T], b: T) = a[1] = b -template b*[T](a: GVec234[T]): T = a[2] -template `b=`*[T](a: var GVec234[T], b: T) = a[2] = b -template a*[T](a: GVec234[T]): T = a[3] -template `a=`*[T](a: var GVec234[T], b: T) = a[3] = b +proc r*[T](a: GVec234[T]): T = a[0] +proc g*[T](a: GVec234[T]): T = a[1] +proc b*[T](a: GVec234[T]): T = a[2] +proc a*[T](a: GVec234[T]): T = a[3] +proc `r=`*[T](a: var GVec234[T], b: T) = a[0] = b +proc `g=`*[T](a: var GVec234[T], b: T) = a[1] = b +proc `b=`*[T](a: var GVec234[T], b: T) = a[2] = b +proc `a=`*[T](a: var GVec234[T], b: T) = a[3] = b # 1 x stpq -template s*[T](a: GVec234[T]): T = a[0] -template `s=`*[T](a: var GVec234[T], b: T) = a[0] = b -template t*[T](a: GVec234[T]): T = a[1] -template `t=`*[T](a: var GVec234[T], b: T) = a[1] = b -template p*[T](a: GVec234[T]): T = a[2] -template `p=`*[T](a: var GVec234[T], b: T) = a[2] = b -template q*[T](a: GVec234[T]): T = a[3] -template `q=`*[T](a: var GVec234[T], b: T) = a[3] = b +proc s*[T](a: GVec234[T]): T = a[0] +proc t*[T](a: GVec234[T]): T = a[1] +proc p*[T](a: GVec234[T]): T = a[2] +proc q*[T](a: GVec234[T]): T = a[3] +proc `s=`*[T](a: var GVec234[T], b: T) = a[0] = b +proc `t=`*[T](a: var GVec234[T], b: T) = a[1] = b +proc `p=`*[T](a: var GVec234[T], b: T) = a[2] = b +proc `q=`*[T](a: var GVec234[T], b: T) = a[3] = b # 2 x xyzw -template xx*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[0]) -func `xx=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y -template xy*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[1]) -func `xy=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y -template xz*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[2]) -func `xz=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y -template xw*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[3]) -func `xw=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y -template yx*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[0]) -func `yx=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y -template yy*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[1]) -func `yy=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y -template yz*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[2]) -func `yz=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y -template yw*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[3]) -func `yw=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y -template zx*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[0]) -func `zx=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y -template zy*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[1]) -func `zy=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y -template zz*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[2]) -func `zz=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y -template zw*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[3]) -func `zw=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y -template wx*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[0]) -func `wx=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y -template wy*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[1]) -func `wy=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y -template wz*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[2]) -func `wz=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y -template ww*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[3]) -func `ww=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y +proc xx*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[0]) +proc xy*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[1]) +proc xz*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[2]) +proc xw*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[3]) +proc yx*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[0]) +proc yy*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[1]) +proc yz*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[2]) +proc yw*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[3]) +proc zx*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[0]) +proc zy*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[1]) +proc zz*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[2]) +proc zw*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[3]) +proc wx*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[0]) +proc wy*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[1]) +proc wz*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[2]) +proc ww*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[3]) +proc `xx=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[0] = b.y) +proc `xy=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[1] = b.y) +proc `xz=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[2] = b.y) +proc `xw=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[3] = b.y) +proc `yx=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[0] = b.y) +proc `yy=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[1] = b.y) +proc `yz=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[2] = b.y) +proc `yw=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[3] = b.y) +proc `zx=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[0] = b.y) +proc `zy=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[1] = b.y) +proc `zz=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[2] = b.y) +proc `zw=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[3] = b.y) +proc `wx=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[0] = b.y) +proc `wy=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[1] = b.y) +proc `wz=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[2] = b.y) +proc `ww=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[3] = b.y) # 2 x rgba -template rr*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[0]) -func `rr=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y -template rg*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[1]) -func `rg=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y -template rb*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[2]) -func `rb=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y -template ra*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[3]) -func `ra=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y -template gr*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[0]) -func `gr=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y -template gg*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[1]) -func `gg=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y -template gb*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[2]) -func `gb=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y -template ga*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[3]) -func `ga=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y -template br*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[0]) -func `br=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y -template bg*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[1]) -func `bg=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y -template bb*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[2]) -func `bb=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y -template ba*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[3]) -func `ba=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y -template ar*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[0]) -func `ar=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y -template ag*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[1]) -func `ag=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y -template ab*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[2]) -func `ab=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y -template aa*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[3]) -func `aa=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y +proc rr*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[0]) +proc rg*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[1]) +proc rb*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[2]) +proc ra*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[3]) +proc gr*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[0]) +proc gg*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[1]) +proc gb*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[2]) +proc ga*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[3]) +proc br*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[0]) +proc bg*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[1]) +proc bb*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[2]) +proc ba*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[3]) +proc ar*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[0]) +proc ag*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[1]) +proc ab*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[2]) +proc aa*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[3]) +proc `rr=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[0] = b.y) +proc `rg=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[1] = b.y) +proc `rb=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[2] = b.y) +proc `ra=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[3] = b.y) +proc `gr=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[0] = b.y) +proc `gg=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[1] = b.y) +proc `gb=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[2] = b.y) +proc `ga=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[3] = b.y) +proc `br=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[0] = b.y) +proc `bg=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[1] = b.y) +proc `bb=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[2] = b.y) +proc `ba=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[3] = b.y) +proc `ar=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[0] = b.y) +proc `ag=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[1] = b.y) +proc `ab=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[2] = b.y) +proc `aa=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[3] = b.y) # 2 x stpq -template ss*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[0]) -func `ss=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y -template st*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[1]) -func `st=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y -template sp*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[2]) -func `sp=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y -template sq*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[0], a2[3]) -func `sq=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y -template ts*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[0]) -func `ts=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y -template tt*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[1]) -func `tt=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y -template tp*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[2]) -func `tp=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y -template tq*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[1], a2[3]) -func `tq=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y -template ps*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[0]) -func `ps=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y -template pt*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[1]) -func `pt=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y -template pp*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[2]) -func `pp=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y -template pq*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[2], a2[3]) -func `pq=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y -template qs*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[0]) -func `qs=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y -template qt*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[1]) -func `qt=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y -template qp*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[2]) -func `qp=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y -template qq*[T](a: GVec234[T]): GVec2[T] = - let a2 = a - gvec2(a2[3], a2[3]) -func `qq=`*[T](a: var GVec234[T], b: GVec2[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y +proc ss*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[0]) +proc st*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[1]) +proc sp*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[2]) +proc sq*[T](a: GVec234[T]): GVec2[T] = gvec2(a[0], a[3]) +proc ts*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[0]) +proc tt*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[1]) +proc tp*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[2]) +proc tq*[T](a: GVec234[T]): GVec2[T] = gvec2(a[1], a[3]) +proc ps*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[0]) +proc pt*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[1]) +proc pp*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[2]) +proc pq*[T](a: GVec234[T]): GVec2[T] = gvec2(a[2], a[3]) +proc qs*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[0]) +proc qt*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[1]) +proc qp*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[2]) +proc qq*[T](a: GVec234[T]): GVec2[T] = gvec2(a[3], a[3]) +proc `ss=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[0] = b.y) +proc `st=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[1] = b.y) +proc `sp=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[2] = b.y) +proc `sq=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[0] = b.x; a[3] = b.y) +proc `ts=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[0] = b.y) +proc `tt=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[1] = b.y) +proc `tp=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[2] = b.y) +proc `tq=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[1] = b.x; a[3] = b.y) +proc `ps=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[0] = b.y) +proc `pt=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[1] = b.y) +proc `pp=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[2] = b.y) +proc `pq=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[2] = b.x; a[3] = b.y) +proc `qs=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[0] = b.y) +proc `qt=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[1] = b.y) +proc `qp=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[2] = b.y) +proc `qq=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[3] = b.x; a[3] = b.y) # 3 x xyzw -template xxx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[0]) -func `xxx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z -template xxy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[1]) -func `xxy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z -template xxz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[2]) -func `xxz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z -template xxw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[3]) -func `xxw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z -template xyx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[0]) -func `xyx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z -template xyy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[1]) -func `xyy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z -template xyz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[2]) -func `xyz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z -template xyw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[3]) -func `xyw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z -template xzx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[0]) -func `xzx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z -template xzy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[1]) -func `xzy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z -template xzz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[2]) -func `xzz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z -template xzw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[3]) -func `xzw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z -template xwx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[0]) -func `xwx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z -template xwy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[1]) -func `xwy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z -template xwz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[2]) -func `xwz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z -template xww*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[3]) -func `xww=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z -template yxx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[0]) -func `yxx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z -template yxy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[1]) -func `yxy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z -template yxz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[2]) -func `yxz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z -template yxw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[3]) -func `yxw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z -template yyx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[0]) -func `yyx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z -template yyy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[1]) -func `yyy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z -template yyz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[2]) -func `yyz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z -template yyw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[3]) -func `yyw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z -template yzx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[0]) -func `yzx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z -template yzy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[1]) -func `yzy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z -template yzz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[2]) -func `yzz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z -template yzw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[3]) -func `yzw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z -template ywx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[0]) -func `ywx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z -template ywy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[1]) -func `ywy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z -template ywz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[2]) -func `ywz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z -template yww*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[3]) -func `yww=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z -template zxx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[0]) -func `zxx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z -template zxy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[1]) -func `zxy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z -template zxz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[2]) -func `zxz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z -template zxw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[3]) -func `zxw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z -template zyx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[0]) -func `zyx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z -template zyy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[1]) -func `zyy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z -template zyz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[2]) -func `zyz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z -template zyw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[3]) -func `zyw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z -template zzx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[0]) -func `zzx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z -template zzy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[1]) -func `zzy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z -template zzz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[2]) -func `zzz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z -template zzw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[3]) -func `zzw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z -template zwx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[0]) -func `zwx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z -template zwy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[1]) -func `zwy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z -template zwz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[2]) -func `zwz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z -template zww*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[3]) -func `zww=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z -template wxx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[0]) -func `wxx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z -template wxy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[1]) -func `wxy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z -template wxz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[2]) -func `wxz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z -template wxw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[3]) -func `wxw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z -template wyx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[0]) -func `wyx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z -template wyy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[1]) -func `wyy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z -template wyz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[2]) -func `wyz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z -template wyw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[3]) -func `wyw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z -template wzx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[0]) -func `wzx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z -template wzy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[1]) -func `wzy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z -template wzz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[2]) -func `wzz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z -template wzw*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[3]) -func `wzw=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z -template wwx*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[0]) -func `wwx=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z -template wwy*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[1]) -func `wwy=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z -template wwz*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[2]) -func `wwz=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z -template www*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[3]) -func `www=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z +proc xxx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[0]) +proc xxy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[1]) +proc xxz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[2]) +proc xxw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[3]) +proc xyx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[0]) +proc xyy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[1]) +proc xyz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[2]) +proc xyw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[3]) +proc xzx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[0]) +proc xzy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[1]) +proc xzz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[2]) +proc xzw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[3]) +proc xwx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[0]) +proc xwy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[1]) +proc xwz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[2]) +proc xww*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[3]) +proc yxx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[0]) +proc yxy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[1]) +proc yxz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[2]) +proc yxw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[3]) +proc yyx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[0]) +proc yyy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[1]) +proc yyz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[2]) +proc yyw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[3]) +proc yzx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[0]) +proc yzy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[1]) +proc yzz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[2]) +proc yzw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[3]) +proc ywx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[0]) +proc ywy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[1]) +proc ywz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[2]) +proc yww*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[3]) +proc zxx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[0]) +proc zxy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[1]) +proc zxz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[2]) +proc zxw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[3]) +proc zyx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[0]) +proc zyy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[1]) +proc zyz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[2]) +proc zyw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[3]) +proc zzx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[0]) +proc zzy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[1]) +proc zzz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[2]) +proc zzw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[3]) +proc zwx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[0]) +proc zwy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[1]) +proc zwz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[2]) +proc zww*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[3]) +proc wxx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[0]) +proc wxy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[1]) +proc wxz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[2]) +proc wxw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[3]) +proc wyx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[0]) +proc wyy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[1]) +proc wyz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[2]) +proc wyw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[3]) +proc wzx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[0]) +proc wzy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[1]) +proc wzz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[2]) +proc wzw*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[3]) +proc wwx*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[0]) +proc wwy*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[1]) +proc wwz*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[2]) +proc www*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[3]) +proc `xxx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z) +proc `xxy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z) +proc `xxz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z) +proc `xxw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z) +proc `xyx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z) +proc `xyy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z) +proc `xyz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z) +proc `xyw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z) +proc `xzx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z) +proc `xzy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z) +proc `xzz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z) +proc `xzw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z) +proc `xwx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z) +proc `xwy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z) +proc `xwz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z) +proc `xww=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z) +proc `yxx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z) +proc `yxy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z) +proc `yxz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z) +proc `yxw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z) +proc `yyx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z) +proc `yyy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z) +proc `yyz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z) +proc `yyw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z) +proc `yzx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z) +proc `yzy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z) +proc `yzz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z) +proc `yzw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z) +proc `ywx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z) +proc `ywy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z) +proc `ywz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z) +proc `yww=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z) +proc `zxx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z) +proc `zxy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z) +proc `zxz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z) +proc `zxw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z) +proc `zyx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z) +proc `zyy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z) +proc `zyz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z) +proc `zyw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z) +proc `zzx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z) +proc `zzy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z) +proc `zzz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z) +proc `zzw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z) +proc `zwx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z) +proc `zwy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z) +proc `zwz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z) +proc `zww=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z) +proc `wxx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z) +proc `wxy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z) +proc `wxz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z) +proc `wxw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z) +proc `wyx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z) +proc `wyy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z) +proc `wyz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z) +proc `wyw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z) +proc `wzx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z) +proc `wzy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z) +proc `wzz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z) +proc `wzw=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z) +proc `wwx=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z) +proc `wwy=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z) +proc `wwz=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z) +proc `www=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z) # 3 x rgba -template rrr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[0]) -func `rrr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z -template rrg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[1]) -func `rrg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z -template rrb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[2]) -func `rrb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z -template rra*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[3]) -func `rra=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z -template rgr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[0]) -func `rgr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z -template rgg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[1]) -func `rgg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z -template rgb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[2]) -func `rgb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z -template rga*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[3]) -func `rga=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z -template rbr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[0]) -func `rbr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z -template rbg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[1]) -func `rbg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z -template rbb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[2]) -func `rbb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z -template rba*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[3]) -func `rba=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z -template rar*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[0]) -func `rar=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z -template rag*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[1]) -func `rag=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z -template rab*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[2]) -func `rab=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z -template raa*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[3]) -func `raa=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z -template grr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[0]) -func `grr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z -template grg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[1]) -func `grg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z -template grb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[2]) -func `grb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z -template gra*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[3]) -func `gra=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z -template ggr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[0]) -func `ggr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z -template ggg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[1]) -func `ggg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z -template ggb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[2]) -func `ggb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z -template gga*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[3]) -func `gga=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z -template gbr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[0]) -func `gbr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z -template gbg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[1]) -func `gbg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z -template gbb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[2]) -func `gbb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z -template gba*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[3]) -func `gba=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z -template gar*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[0]) -func `gar=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z -template gag*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[1]) -func `gag=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z -template gab*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[2]) -func `gab=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z -template gaa*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[3]) -func `gaa=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z -template brr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[0]) -func `brr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z -template brg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[1]) -func `brg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z -template brb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[2]) -func `brb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z -template bra*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[3]) -func `bra=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z -template bgr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[0]) -func `bgr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z -template bgg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[1]) -func `bgg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z -template bgb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[2]) -func `bgb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z -template bga*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[3]) -func `bga=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z -template bbr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[0]) -func `bbr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z -template bbg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[1]) -func `bbg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z -template bbb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[2]) -func `bbb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z -template bba*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[3]) -func `bba=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z -template bar*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[0]) -func `bar=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z -template bag*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[1]) -func `bag=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z -template bab*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[2]) -func `bab=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z -template baa*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[3]) -func `baa=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z -template arr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[0]) -func `arr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z -template arg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[1]) -func `arg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z -template arb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[2]) -func `arb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z -template ara*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[3]) -func `ara=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z -template agr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[0]) -func `agr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z -template agg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[1]) -func `agg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z -template agb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[2]) -func `agb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z -template aga*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[3]) -func `aga=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z -template abr*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[0]) -func `abr=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z -template abg*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[1]) -func `abg=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z -template abb*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[2]) -func `abb=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z -template aba*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[3]) -func `aba=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z -template aar*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[0]) -func `aar=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z -template aag*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[1]) -func `aag=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z -template aab*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[2]) -func `aab=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z -template aaa*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[3]) -func `aaa=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z +proc rrr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[0]) +proc rrg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[1]) +proc rrb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[2]) +proc rra*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[3]) +proc rgr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[0]) +proc rgg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[1]) +proc rgb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[2]) +proc rga*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[3]) +proc rbr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[0]) +proc rbg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[1]) +proc rbb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[2]) +proc rba*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[3]) +proc rar*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[0]) +proc rag*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[1]) +proc rab*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[2]) +proc raa*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[3]) +proc grr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[0]) +proc grg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[1]) +proc grb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[2]) +proc gra*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[3]) +proc ggr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[0]) +proc ggg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[1]) +proc ggb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[2]) +proc gga*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[3]) +proc gbr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[0]) +proc gbg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[1]) +proc gbb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[2]) +proc gba*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[3]) +proc gar*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[0]) +proc gag*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[1]) +proc gab*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[2]) +proc gaa*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[3]) +proc brr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[0]) +proc brg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[1]) +proc brb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[2]) +proc bra*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[3]) +proc bgr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[0]) +proc bgg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[1]) +proc bgb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[2]) +proc bga*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[3]) +proc bbr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[0]) +proc bbg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[1]) +proc bbb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[2]) +proc bba*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[3]) +proc bar*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[0]) +proc bag*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[1]) +proc bab*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[2]) +proc baa*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[3]) +proc arr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[0]) +proc arg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[1]) +proc arb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[2]) +proc ara*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[3]) +proc agr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[0]) +proc agg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[1]) +proc agb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[2]) +proc aga*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[3]) +proc abr*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[0]) +proc abg*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[1]) +proc abb*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[2]) +proc aba*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[3]) +proc aar*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[0]) +proc aag*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[1]) +proc aab*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[2]) +proc aaa*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[3]) +proc `rrr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z) +proc `rrg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z) +proc `rrb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z) +proc `rra=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z) +proc `rgr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z) +proc `rgg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z) +proc `rgb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z) +proc `rga=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z) +proc `rbr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z) +proc `rbg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z) +proc `rbb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z) +proc `rba=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z) +proc `rar=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z) +proc `rag=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z) +proc `rab=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z) +proc `raa=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z) +proc `grr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z) +proc `grg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z) +proc `grb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z) +proc `gra=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z) +proc `ggr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z) +proc `ggg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z) +proc `ggb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z) +proc `gga=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z) +proc `gbr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z) +proc `gbg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z) +proc `gbb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z) +proc `gba=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z) +proc `gar=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z) +proc `gag=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z) +proc `gab=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z) +proc `gaa=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z) +proc `brr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z) +proc `brg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z) +proc `brb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z) +proc `bra=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z) +proc `bgr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z) +proc `bgg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z) +proc `bgb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z) +proc `bga=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z) +proc `bbr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z) +proc `bbg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z) +proc `bbb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z) +proc `bba=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z) +proc `bar=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z) +proc `bag=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z) +proc `bab=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z) +proc `baa=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z) +proc `arr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z) +proc `arg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z) +proc `arb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z) +proc `ara=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z) +proc `agr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z) +proc `agg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z) +proc `agb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z) +proc `aga=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z) +proc `abr=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z) +proc `abg=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z) +proc `abb=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z) +proc `aba=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z) +proc `aar=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z) +proc `aag=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z) +proc `aab=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z) +proc `aaa=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z) # 3 x stpq -template sss*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[0]) -func `sss=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z -template sst*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[1]) -func `sst=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z -template ssp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[2]) -func `ssp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z -template ssq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[0], a2[3]) -func `ssq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z -template sts*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[0]) -func `sts=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z -template stt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[1]) -func `stt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z -template stp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[2]) -func `stp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z -template stq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[1], a2[3]) -func `stq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z -template sps*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[0]) -func `sps=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z -template spt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[1]) -func `spt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z -template spp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[2]) -func `spp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z -template spq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[2], a2[3]) -func `spq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z -template sqs*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[0]) -func `sqs=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z -template sqt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[1]) -func `sqt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z -template sqp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[2]) -func `sqp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z -template sqq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[0], a2[3], a2[3]) -func `sqq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z -template tss*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[0]) -func `tss=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z -template tst*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[1]) -func `tst=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z -template tsp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[2]) -func `tsp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z -template tsq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[0], a2[3]) -func `tsq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z -template tts*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[0]) -func `tts=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z -template ttt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[1]) -func `ttt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z -template ttp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[2]) -func `ttp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z -template ttq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[1], a2[3]) -func `ttq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z -template tps*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[0]) -func `tps=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z -template tpt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[1]) -func `tpt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z -template tpp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[2]) -func `tpp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z -template tpq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[2], a2[3]) -func `tpq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z -template tqs*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[0]) -func `tqs=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z -template tqt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[1]) -func `tqt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z -template tqp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[2]) -func `tqp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z -template tqq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[1], a2[3], a2[3]) -func `tqq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z -template pss*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[0]) -func `pss=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z -template pst*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[1]) -func `pst=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z -template psp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[2]) -func `psp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z -template psq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[0], a2[3]) -func `psq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z -template pts*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[0]) -func `pts=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z -template ptt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[1]) -func `ptt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z -template ptp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[2]) -func `ptp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z -template ptq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[1], a2[3]) -func `ptq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z -template pps*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[0]) -func `pps=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z -template ppt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[1]) -func `ppt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z -template ppp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[2]) -func `ppp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z -template ppq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[2], a2[3]) -func `ppq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z -template pqs*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[0]) -func `pqs=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z -template pqt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[1]) -func `pqt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z -template pqp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[2]) -func `pqp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z -template pqq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[2], a2[3], a2[3]) -func `pqq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z -template qss*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[0]) -func `qss=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z -template qst*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[1]) -func `qst=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z -template qsp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[2]) -func `qsp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z -template qsq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[0], a2[3]) -func `qsq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z -template qts*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[0]) -func `qts=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z -template qtt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[1]) -func `qtt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z -template qtp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[2]) -func `qtp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z -template qtq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[1], a2[3]) -func `qtq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z -template qps*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[0]) -func `qps=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z -template qpt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[1]) -func `qpt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z -template qpp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[2]) -func `qpp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z -template qpq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[2], a2[3]) -func `qpq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z -template qqs*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[0]) -func `qqs=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z -template qqt*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[1]) -func `qqt=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z -template qqp*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[2]) -func `qqp=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z -template qqq*[T](a: GVec234[T]): GVec3[T] = - let a2 = a - gvec3(a2[3], a2[3], a2[3]) -func `qqq=`*[T](a: var GVec234[T], b: GVec3[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z +proc sss*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[0]) +proc sst*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[1]) +proc ssp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[2]) +proc ssq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[0], a[3]) +proc sts*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[0]) +proc stt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[1]) +proc stp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[2]) +proc stq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[1], a[3]) +proc sps*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[0]) +proc spt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[1]) +proc spp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[2]) +proc spq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[2], a[3]) +proc sqs*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[0]) +proc sqt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[1]) +proc sqp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[2]) +proc sqq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[0], a[3], a[3]) +proc tss*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[0]) +proc tst*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[1]) +proc tsp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[2]) +proc tsq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[0], a[3]) +proc tts*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[0]) +proc ttt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[1]) +proc ttp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[2]) +proc ttq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[1], a[3]) +proc tps*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[0]) +proc tpt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[1]) +proc tpp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[2]) +proc tpq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[2], a[3]) +proc tqs*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[0]) +proc tqt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[1]) +proc tqp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[2]) +proc tqq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[1], a[3], a[3]) +proc pss*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[0]) +proc pst*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[1]) +proc psp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[2]) +proc psq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[0], a[3]) +proc pts*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[0]) +proc ptt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[1]) +proc ptp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[2]) +proc ptq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[1], a[3]) +proc pps*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[0]) +proc ppt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[1]) +proc ppp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[2]) +proc ppq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[2], a[3]) +proc pqs*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[0]) +proc pqt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[1]) +proc pqp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[2]) +proc pqq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[2], a[3], a[3]) +proc qss*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[0]) +proc qst*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[1]) +proc qsp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[2]) +proc qsq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[0], a[3]) +proc qts*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[0]) +proc qtt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[1]) +proc qtp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[2]) +proc qtq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[1], a[3]) +proc qps*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[0]) +proc qpt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[1]) +proc qpp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[2]) +proc qpq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[2], a[3]) +proc qqs*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[0]) +proc qqt*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[1]) +proc qqp*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[2]) +proc qqq*[T](a: GVec234[T]): GVec3[T] = gvec3(a[3], a[3], a[3]) +proc `sss=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z) +proc `sst=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z) +proc `ssp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z) +proc `ssq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z) +proc `sts=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z) +proc `stt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z) +proc `stp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z) +proc `stq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z) +proc `sps=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z) +proc `spt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z) +proc `spp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z) +proc `spq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z) +proc `sqs=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z) +proc `sqt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z) +proc `sqp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z) +proc `sqq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z) +proc `tss=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z) +proc `tst=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z) +proc `tsp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z) +proc `tsq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z) +proc `tts=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z) +proc `ttt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z) +proc `ttp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z) +proc `ttq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z) +proc `tps=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z) +proc `tpt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z) +proc `tpp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z) +proc `tpq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z) +proc `tqs=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z) +proc `tqt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z) +proc `tqp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z) +proc `tqq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z) +proc `pss=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z) +proc `pst=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z) +proc `psp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z) +proc `psq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z) +proc `pts=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z) +proc `ptt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z) +proc `ptp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z) +proc `ptq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z) +proc `pps=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z) +proc `ppt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z) +proc `ppp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z) +proc `ppq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z) +proc `pqs=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z) +proc `pqt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z) +proc `pqp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z) +proc `pqq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z) +proc `qss=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z) +proc `qst=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z) +proc `qsp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z) +proc `qsq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z) +proc `qts=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z) +proc `qtt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z) +proc `qtp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z) +proc `qtq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z) +proc `qps=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z) +proc `qpt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z) +proc `qpp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z) +proc `qpq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z) +proc `qqs=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z) +proc `qqt=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z) +proc `qqp=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z) +proc `qqq=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z) # 4 x xyzw -template xxxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[0]) -func `xxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template xxxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[1]) -func `xxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template xxxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[2]) -func `xxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template xxxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[3]) -func `xxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template xxyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[0]) -func `xxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template xxyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[1]) -func `xxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template xxyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[2]) -func `xxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template xxyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[3]) -func `xxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template xxzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[0]) -func `xxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template xxzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[1]) -func `xxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template xxzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[2]) -func `xxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template xxzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[3]) -func `xxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template xxwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[0]) -func `xxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template xxwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[1]) -func `xxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template xxwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[2]) -func `xxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template xxww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[3]) -func `xxww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template xyxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[0]) -func `xyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template xyxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[1]) -func `xyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template xyxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[2]) -func `xyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template xyxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[3]) -func `xyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template xyyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[0]) -func `xyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template xyyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[1]) -func `xyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template xyyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[2]) -func `xyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template xyyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[3]) -func `xyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template xyzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[0]) -func `xyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template xyzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[1]) -func `xyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template xyzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[2]) -func `xyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template xyzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[3]) -func `xyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template xywx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[0]) -func `xywx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template xywy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[1]) -func `xywy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template xywz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[2]) -func `xywz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template xyww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[3]) -func `xyww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template xzxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[0]) -func `xzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template xzxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[1]) -func `xzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template xzxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[2]) -func `xzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template xzxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[3]) -func `xzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template xzyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[0]) -func `xzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template xzyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[1]) -func `xzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template xzyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[2]) -func `xzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template xzyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[3]) -func `xzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template xzzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[0]) -func `xzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template xzzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[1]) -func `xzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template xzzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[2]) -func `xzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template xzzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[3]) -func `xzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template xzwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[0]) -func `xzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template xzwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[1]) -func `xzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template xzwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[2]) -func `xzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template xzww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[3]) -func `xzww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template xwxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[0]) -func `xwxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template xwxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[1]) -func `xwxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template xwxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[2]) -func `xwxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template xwxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[3]) -func `xwxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template xwyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[0]) -func `xwyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template xwyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[1]) -func `xwyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template xwyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[2]) -func `xwyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template xwyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[3]) -func `xwyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template xwzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[0]) -func `xwzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template xwzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[1]) -func `xwzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template xwzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[2]) -func `xwzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template xwzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[3]) -func `xwzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template xwwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[0]) -func `xwwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template xwwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[1]) -func `xwwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template xwwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[2]) -func `xwwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template xwww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[3]) -func `xwww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template yxxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[0]) -func `yxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template yxxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[1]) -func `yxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template yxxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[2]) -func `yxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template yxxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[3]) -func `yxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template yxyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[0]) -func `yxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template yxyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[1]) -func `yxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template yxyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[2]) -func `yxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template yxyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[3]) -func `yxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template yxzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[0]) -func `yxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template yxzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[1]) -func `yxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template yxzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[2]) -func `yxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template yxzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[3]) -func `yxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template yxwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[0]) -func `yxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template yxwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[1]) -func `yxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template yxwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[2]) -func `yxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template yxww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[3]) -func `yxww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template yyxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[0]) -func `yyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template yyxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[1]) -func `yyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template yyxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[2]) -func `yyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template yyxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[3]) -func `yyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template yyyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[0]) -func `yyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template yyyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[1]) -func `yyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template yyyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[2]) -func `yyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template yyyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[3]) -func `yyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template yyzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[0]) -func `yyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template yyzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[1]) -func `yyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template yyzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[2]) -func `yyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template yyzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[3]) -func `yyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template yywx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[0]) -func `yywx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template yywy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[1]) -func `yywy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template yywz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[2]) -func `yywz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template yyww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[3]) -func `yyww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template yzxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[0]) -func `yzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template yzxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[1]) -func `yzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template yzxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[2]) -func `yzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template yzxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[3]) -func `yzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template yzyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[0]) -func `yzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template yzyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[1]) -func `yzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template yzyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[2]) -func `yzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template yzyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[3]) -func `yzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template yzzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[0]) -func `yzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template yzzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[1]) -func `yzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template yzzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[2]) -func `yzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template yzzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[3]) -func `yzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template yzwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[0]) -func `yzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template yzwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[1]) -func `yzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template yzwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[2]) -func `yzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template yzww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[3]) -func `yzww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template ywxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[0]) -func `ywxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template ywxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[1]) -func `ywxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template ywxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[2]) -func `ywxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template ywxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[3]) -func `ywxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template ywyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[0]) -func `ywyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template ywyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[1]) -func `ywyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template ywyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[2]) -func `ywyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template ywyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[3]) -func `ywyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template ywzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[0]) -func `ywzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template ywzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[1]) -func `ywzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template ywzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[2]) -func `ywzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template ywzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[3]) -func `ywzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template ywwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[0]) -func `ywwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template ywwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[1]) -func `ywwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template ywwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[2]) -func `ywwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template ywww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[3]) -func `ywww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template zxxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[0]) -func `zxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template zxxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[1]) -func `zxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template zxxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[2]) -func `zxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template zxxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[3]) -func `zxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template zxyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[0]) -func `zxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template zxyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[1]) -func `zxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template zxyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[2]) -func `zxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template zxyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[3]) -func `zxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template zxzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[0]) -func `zxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template zxzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[1]) -func `zxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template zxzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[2]) -func `zxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template zxzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[3]) -func `zxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template zxwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[0]) -func `zxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template zxwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[1]) -func `zxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template zxwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[2]) -func `zxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template zxww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[3]) -func `zxww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template zyxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[0]) -func `zyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template zyxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[1]) -func `zyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template zyxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[2]) -func `zyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template zyxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[3]) -func `zyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template zyyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[0]) -func `zyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template zyyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[1]) -func `zyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template zyyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[2]) -func `zyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template zyyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[3]) -func `zyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template zyzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[0]) -func `zyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template zyzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[1]) -func `zyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template zyzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[2]) -func `zyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template zyzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[3]) -func `zyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template zywx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[0]) -func `zywx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template zywy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[1]) -func `zywy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template zywz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[2]) -func `zywz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template zyww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[3]) -func `zyww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template zzxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[0]) -func `zzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template zzxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[1]) -func `zzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template zzxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[2]) -func `zzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template zzxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[3]) -func `zzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template zzyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[0]) -func `zzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template zzyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[1]) -func `zzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template zzyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[2]) -func `zzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template zzyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[3]) -func `zzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template zzzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[0]) -func `zzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template zzzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[1]) -func `zzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template zzzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[2]) -func `zzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template zzzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[3]) -func `zzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template zzwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[0]) -func `zzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template zzwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[1]) -func `zzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template zzwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[2]) -func `zzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template zzww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[3]) -func `zzww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template zwxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[0]) -func `zwxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template zwxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[1]) -func `zwxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template zwxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[2]) -func `zwxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template zwxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[3]) -func `zwxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template zwyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[0]) -func `zwyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template zwyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[1]) -func `zwyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template zwyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[2]) -func `zwyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template zwyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[3]) -func `zwyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template zwzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[0]) -func `zwzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template zwzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[1]) -func `zwzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template zwzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[2]) -func `zwzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template zwzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[3]) -func `zwzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template zwwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[0]) -func `zwwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template zwwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[1]) -func `zwwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template zwwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[2]) -func `zwwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template zwww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[3]) -func `zwww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template wxxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[0]) -func `wxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template wxxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[1]) -func `wxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template wxxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[2]) -func `wxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template wxxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[3]) -func `wxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template wxyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[0]) -func `wxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template wxyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[1]) -func `wxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template wxyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[2]) -func `wxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template wxyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[3]) -func `wxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template wxzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[0]) -func `wxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template wxzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[1]) -func `wxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template wxzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[2]) -func `wxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template wxzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[3]) -func `wxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template wxwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[0]) -func `wxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template wxwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[1]) -func `wxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template wxwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[2]) -func `wxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template wxww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[3]) -func `wxww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template wyxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[0]) -func `wyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template wyxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[1]) -func `wyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template wyxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[2]) -func `wyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template wyxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[3]) -func `wyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template wyyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[0]) -func `wyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template wyyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[1]) -func `wyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template wyyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[2]) -func `wyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template wyyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[3]) -func `wyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template wyzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[0]) -func `wyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template wyzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[1]) -func `wyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template wyzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[2]) -func `wyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template wyzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[3]) -func `wyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template wywx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[0]) -func `wywx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template wywy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[1]) -func `wywy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template wywz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[2]) -func `wywz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template wyww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[3]) -func `wyww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template wzxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[0]) -func `wzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template wzxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[1]) -func `wzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template wzxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[2]) -func `wzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template wzxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[3]) -func `wzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template wzyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[0]) -func `wzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template wzyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[1]) -func `wzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template wzyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[2]) -func `wzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template wzyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[3]) -func `wzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template wzzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[0]) -func `wzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template wzzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[1]) -func `wzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template wzzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[2]) -func `wzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template wzzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[3]) -func `wzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template wzwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[0]) -func `wzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template wzwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[1]) -func `wzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template wzwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[2]) -func `wzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template wzww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[3]) -func `wzww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template wwxx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[0]) -func `wwxx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template wwxy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[1]) -func `wwxy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template wwxz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[2]) -func `wwxz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template wwxw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[3]) -func `wwxw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template wwyx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[0]) -func `wwyx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template wwyy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[1]) -func `wwyy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template wwyz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[2]) -func `wwyz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template wwyw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[3]) -func `wwyw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template wwzx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[0]) -func `wwzx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template wwzy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[1]) -func `wwzy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template wwzz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[2]) -func `wwzz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template wwzw*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[3]) -func `wwzw=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template wwwx*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[0]) -func `wwwx=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template wwwy*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[1]) -func `wwwy=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template wwwz*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[2]) -func `wwwz=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template wwww*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[3]) -func `wwww=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w +proc xxxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[0]) +proc xxxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[1]) +proc xxxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[2]) +proc xxxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[3]) +proc xxyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[0]) +proc xxyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[1]) +proc xxyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[2]) +proc xxyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[3]) +proc xxzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[0]) +proc xxzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[1]) +proc xxzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[2]) +proc xxzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[3]) +proc xxwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[0]) +proc xxwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[1]) +proc xxwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[2]) +proc xxww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[3]) +proc xyxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[0]) +proc xyxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[1]) +proc xyxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[2]) +proc xyxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[3]) +proc xyyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[0]) +proc xyyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[1]) +proc xyyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[2]) +proc xyyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[3]) +proc xyzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[0]) +proc xyzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[1]) +proc xyzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[2]) +proc xyzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[3]) +proc xywx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[0]) +proc xywy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[1]) +proc xywz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[2]) +proc xyww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[3]) +proc xzxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[0]) +proc xzxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[1]) +proc xzxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[2]) +proc xzxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[3]) +proc xzyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[0]) +proc xzyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[1]) +proc xzyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[2]) +proc xzyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[3]) +proc xzzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[0]) +proc xzzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[1]) +proc xzzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[2]) +proc xzzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[3]) +proc xzwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[0]) +proc xzwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[1]) +proc xzwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[2]) +proc xzww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[3]) +proc xwxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[0]) +proc xwxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[1]) +proc xwxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[2]) +proc xwxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[3]) +proc xwyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[0]) +proc xwyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[1]) +proc xwyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[2]) +proc xwyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[3]) +proc xwzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[0]) +proc xwzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[1]) +proc xwzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[2]) +proc xwzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[3]) +proc xwwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[0]) +proc xwwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[1]) +proc xwwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[2]) +proc xwww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[3]) +proc yxxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[0]) +proc yxxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[1]) +proc yxxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[2]) +proc yxxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[3]) +proc yxyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[0]) +proc yxyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[1]) +proc yxyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[2]) +proc yxyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[3]) +proc yxzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[0]) +proc yxzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[1]) +proc yxzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[2]) +proc yxzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[3]) +proc yxwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[0]) +proc yxwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[1]) +proc yxwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[2]) +proc yxww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[3]) +proc yyxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[0]) +proc yyxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[1]) +proc yyxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[2]) +proc yyxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[3]) +proc yyyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[0]) +proc yyyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[1]) +proc yyyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[2]) +proc yyyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[3]) +proc yyzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[0]) +proc yyzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[1]) +proc yyzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[2]) +proc yyzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[3]) +proc yywx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[0]) +proc yywy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[1]) +proc yywz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[2]) +proc yyww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[3]) +proc yzxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[0]) +proc yzxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[1]) +proc yzxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[2]) +proc yzxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[3]) +proc yzyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[0]) +proc yzyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[1]) +proc yzyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[2]) +proc yzyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[3]) +proc yzzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[0]) +proc yzzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[1]) +proc yzzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[2]) +proc yzzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[3]) +proc yzwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[0]) +proc yzwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[1]) +proc yzwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[2]) +proc yzww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[3]) +proc ywxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[0]) +proc ywxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[1]) +proc ywxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[2]) +proc ywxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[3]) +proc ywyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[0]) +proc ywyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[1]) +proc ywyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[2]) +proc ywyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[3]) +proc ywzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[0]) +proc ywzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[1]) +proc ywzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[2]) +proc ywzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[3]) +proc ywwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[0]) +proc ywwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[1]) +proc ywwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[2]) +proc ywww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[3]) +proc zxxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[0]) +proc zxxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[1]) +proc zxxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[2]) +proc zxxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[3]) +proc zxyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[0]) +proc zxyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[1]) +proc zxyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[2]) +proc zxyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[3]) +proc zxzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[0]) +proc zxzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[1]) +proc zxzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[2]) +proc zxzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[3]) +proc zxwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[0]) +proc zxwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[1]) +proc zxwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[2]) +proc zxww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[3]) +proc zyxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[0]) +proc zyxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[1]) +proc zyxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[2]) +proc zyxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[3]) +proc zyyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[0]) +proc zyyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[1]) +proc zyyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[2]) +proc zyyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[3]) +proc zyzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[0]) +proc zyzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[1]) +proc zyzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[2]) +proc zyzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[3]) +proc zywx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[0]) +proc zywy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[1]) +proc zywz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[2]) +proc zyww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[3]) +proc zzxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[0]) +proc zzxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[1]) +proc zzxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[2]) +proc zzxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[3]) +proc zzyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[0]) +proc zzyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[1]) +proc zzyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[2]) +proc zzyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[3]) +proc zzzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[0]) +proc zzzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[1]) +proc zzzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[2]) +proc zzzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[3]) +proc zzwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[0]) +proc zzwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[1]) +proc zzwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[2]) +proc zzww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[3]) +proc zwxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[0]) +proc zwxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[1]) +proc zwxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[2]) +proc zwxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[3]) +proc zwyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[0]) +proc zwyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[1]) +proc zwyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[2]) +proc zwyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[3]) +proc zwzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[0]) +proc zwzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[1]) +proc zwzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[2]) +proc zwzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[3]) +proc zwwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[0]) +proc zwwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[1]) +proc zwwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[2]) +proc zwww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[3]) +proc wxxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[0]) +proc wxxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[1]) +proc wxxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[2]) +proc wxxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[3]) +proc wxyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[0]) +proc wxyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[1]) +proc wxyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[2]) +proc wxyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[3]) +proc wxzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[0]) +proc wxzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[1]) +proc wxzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[2]) +proc wxzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[3]) +proc wxwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[0]) +proc wxwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[1]) +proc wxwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[2]) +proc wxww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[3]) +proc wyxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[0]) +proc wyxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[1]) +proc wyxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[2]) +proc wyxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[3]) +proc wyyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[0]) +proc wyyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[1]) +proc wyyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[2]) +proc wyyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[3]) +proc wyzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[0]) +proc wyzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[1]) +proc wyzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[2]) +proc wyzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[3]) +proc wywx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[0]) +proc wywy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[1]) +proc wywz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[2]) +proc wyww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[3]) +proc wzxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[0]) +proc wzxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[1]) +proc wzxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[2]) +proc wzxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[3]) +proc wzyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[0]) +proc wzyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[1]) +proc wzyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[2]) +proc wzyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[3]) +proc wzzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[0]) +proc wzzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[1]) +proc wzzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[2]) +proc wzzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[3]) +proc wzwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[0]) +proc wzwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[1]) +proc wzwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[2]) +proc wzww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[3]) +proc wwxx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[0]) +proc wwxy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[1]) +proc wwxz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[2]) +proc wwxw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[3]) +proc wwyx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[0]) +proc wwyy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[1]) +proc wwyz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[2]) +proc wwyw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[3]) +proc wwzx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[0]) +proc wwzy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[1]) +proc wwzz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[2]) +proc wwzw*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[3]) +proc wwwx*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[0]) +proc wwwy*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[1]) +proc wwwz*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[2]) +proc wwww*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[3]) +proc `xxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `xxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `xxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `xxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `xxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `xxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `xxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `xxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `xxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `xxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `xxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `xxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `xxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `xxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `xxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `xxww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `xyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `xyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `xyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `xyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `xyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `xyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `xyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `xyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `xyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `xyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `xyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `xyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `xywx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `xywy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `xywz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `xyww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `xzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `xzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `xzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `xzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `xzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `xzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `xzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `xzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `xzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `xzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `xzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `xzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `xzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `xzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `xzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `xzww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `xwxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `xwxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `xwxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `xwxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `xwyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `xwyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `xwyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `xwyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `xwzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `xwzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `xwzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `xwzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `xwwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `xwwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `xwwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `xwww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `yxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `yxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `yxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `yxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `yxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `yxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `yxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `yxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `yxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `yxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `yxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `yxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `yxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `yxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `yxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `yxww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `yyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `yyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `yyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `yyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `yyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `yyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `yyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `yyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `yyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `yyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `yyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `yyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `yywx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `yywy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `yywz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `yyww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `yzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `yzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `yzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `yzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `yzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `yzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `yzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `yzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `yzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `yzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `yzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `yzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `yzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `yzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `yzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `yzww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `ywxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `ywxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `ywxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `ywxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `ywyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `ywyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `ywyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `ywyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `ywzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `ywzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `ywzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `ywzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `ywwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `ywwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `ywwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `ywww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `zxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `zxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `zxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `zxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `zxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `zxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `zxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `zxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `zxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `zxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `zxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `zxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `zxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `zxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `zxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `zxww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `zyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `zyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `zyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `zyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `zyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `zyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `zyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `zyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `zyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `zyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `zyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `zyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `zywx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `zywy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `zywz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `zyww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `zzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `zzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `zzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `zzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `zzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `zzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `zzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `zzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `zzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `zzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `zzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `zzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `zzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `zzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `zzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `zzww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `zwxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `zwxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `zwxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `zwxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `zwyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `zwyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `zwyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `zwyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `zwzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `zwzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `zwzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `zwzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `zwwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `zwwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `zwwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `zwww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `wxxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `wxxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `wxxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `wxxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `wxyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `wxyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `wxyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `wxyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `wxzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `wxzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `wxzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `wxzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `wxwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `wxwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `wxwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `wxww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `wyxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `wyxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `wyxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `wyxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `wyyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `wyyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `wyyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `wyyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `wyzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `wyzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `wyzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `wyzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `wywx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `wywy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `wywz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `wyww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `wzxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `wzxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `wzxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `wzxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `wzyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `wzyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `wzyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `wzyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `wzzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `wzzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `wzzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `wzzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `wzwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `wzwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `wzwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `wzww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `wwxx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `wwxy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `wwxz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `wwxw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `wwyx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `wwyy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `wwyz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `wwyw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `wwzx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `wwzy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `wwzz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `wwzw=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `wwwx=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `wwwy=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `wwwz=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `wwww=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) # 4 x rgba -template rrrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[0]) -func `rrrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template rrrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[1]) -func `rrrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template rrrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[2]) -func `rrrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template rrra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[3]) -func `rrra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template rrgr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[0]) -func `rrgr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template rrgg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[1]) -func `rrgg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template rrgb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[2]) -func `rrgb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template rrga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[3]) -func `rrga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template rrbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[0]) -func `rrbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template rrbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[1]) -func `rrbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template rrbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[2]) -func `rrbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template rrba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[3]) -func `rrba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template rrar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[0]) -func `rrar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template rrag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[1]) -func `rrag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template rrab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[2]) -func `rrab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template rraa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[3]) -func `rraa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template rgrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[0]) -func `rgrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template rgrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[1]) -func `rgrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template rgrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[2]) -func `rgrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template rgra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[3]) -func `rgra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template rggr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[0]) -func `rggr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template rggg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[1]) -func `rggg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template rggb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[2]) -func `rggb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template rgga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[3]) -func `rgga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template rgbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[0]) -func `rgbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template rgbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[1]) -func `rgbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template rgbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[2]) -func `rgbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template rgba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[3]) -func `rgba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template rgar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[0]) -func `rgar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template rgag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[1]) -func `rgag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template rgab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[2]) -func `rgab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template rgaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[3]) -func `rgaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template rbrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[0]) -func `rbrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template rbrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[1]) -func `rbrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template rbrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[2]) -func `rbrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template rbra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[3]) -func `rbra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template rbgr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[0]) -func `rbgr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template rbgg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[1]) -func `rbgg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template rbgb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[2]) -func `rbgb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template rbga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[3]) -func `rbga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template rbbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[0]) -func `rbbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template rbbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[1]) -func `rbbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template rbbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[2]) -func `rbbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template rbba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[3]) -func `rbba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template rbar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[0]) -func `rbar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template rbag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[1]) -func `rbag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template rbab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[2]) -func `rbab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template rbaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[3]) -func `rbaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template rarr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[0]) -func `rarr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template rarg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[1]) -func `rarg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template rarb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[2]) -func `rarb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template rara*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[3]) -func `rara=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template ragr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[0]) -func `ragr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template ragg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[1]) -func `ragg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template ragb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[2]) -func `ragb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template raga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[3]) -func `raga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template rabr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[0]) -func `rabr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template rabg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[1]) -func `rabg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template rabb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[2]) -func `rabb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template raba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[3]) -func `raba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template raar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[0]) -func `raar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template raag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[1]) -func `raag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template raab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[2]) -func `raab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template raaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[3]) -func `raaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template grrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[0]) -func `grrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template grrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[1]) -func `grrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template grrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[2]) -func `grrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template grra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[3]) -func `grra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template grgr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[0]) -func `grgr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template grgg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[1]) -func `grgg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template grgb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[2]) -func `grgb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template grga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[3]) -func `grga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template grbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[0]) -func `grbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template grbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[1]) -func `grbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template grbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[2]) -func `grbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template grba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[3]) -func `grba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template grar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[0]) -func `grar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template grag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[1]) -func `grag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template grab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[2]) -func `grab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template graa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[3]) -func `graa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template ggrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[0]) -func `ggrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template ggrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[1]) -func `ggrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template ggrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[2]) -func `ggrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template ggra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[3]) -func `ggra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template gggr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[0]) -func `gggr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template gggg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[1]) -func `gggg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template gggb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[2]) -func `gggb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template ggga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[3]) -func `ggga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template ggbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[0]) -func `ggbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template ggbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[1]) -func `ggbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template ggbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[2]) -func `ggbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template ggba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[3]) -func `ggba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template ggar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[0]) -func `ggar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template ggag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[1]) -func `ggag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template ggab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[2]) -func `ggab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template ggaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[3]) -func `ggaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template gbrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[0]) -func `gbrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template gbrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[1]) -func `gbrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template gbrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[2]) -func `gbrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template gbra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[3]) -func `gbra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template gbgr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[0]) -func `gbgr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template gbgg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[1]) -func `gbgg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template gbgb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[2]) -func `gbgb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template gbga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[3]) -func `gbga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template gbbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[0]) -func `gbbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template gbbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[1]) -func `gbbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template gbbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[2]) -func `gbbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template gbba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[3]) -func `gbba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template gbar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[0]) -func `gbar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template gbag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[1]) -func `gbag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template gbab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[2]) -func `gbab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template gbaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[3]) -func `gbaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template garr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[0]) -func `garr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template garg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[1]) -func `garg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template garb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[2]) -func `garb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template gara*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[3]) -func `gara=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template gagr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[0]) -func `gagr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template gagg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[1]) -func `gagg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template gagb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[2]) -func `gagb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template gaga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[3]) -func `gaga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template gabr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[0]) -func `gabr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template gabg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[1]) -func `gabg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template gabb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[2]) -func `gabb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template gaba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[3]) -func `gaba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template gaar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[0]) -func `gaar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template gaag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[1]) -func `gaag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template gaab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[2]) -func `gaab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template gaaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[3]) -func `gaaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template brrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[0]) -func `brrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template brrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[1]) -func `brrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template brrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[2]) -func `brrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template brra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[3]) -func `brra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template brgr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[0]) -func `brgr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template brgg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[1]) -func `brgg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template brgb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[2]) -func `brgb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template brga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[3]) -func `brga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template brbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[0]) -func `brbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template brbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[1]) -func `brbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template brbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[2]) -func `brbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template brba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[3]) -func `brba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template brar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[0]) -func `brar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template brag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[1]) -func `brag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template brab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[2]) -func `brab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template braa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[3]) -func `braa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template bgrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[0]) -func `bgrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template bgrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[1]) -func `bgrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template bgrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[2]) -func `bgrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template bgra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[3]) -func `bgra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template bggr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[0]) -func `bggr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template bggg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[1]) -func `bggg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template bggb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[2]) -func `bggb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template bgga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[3]) -func `bgga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template bgbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[0]) -func `bgbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template bgbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[1]) -func `bgbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template bgbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[2]) -func `bgbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template bgba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[3]) -func `bgba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template bgar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[0]) -func `bgar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template bgag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[1]) -func `bgag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template bgab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[2]) -func `bgab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template bgaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[3]) -func `bgaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template bbrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[0]) -func `bbrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template bbrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[1]) -func `bbrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template bbrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[2]) -func `bbrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template bbra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[3]) -func `bbra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template bbgr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[0]) -func `bbgr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template bbgg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[1]) -func `bbgg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template bbgb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[2]) -func `bbgb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template bbga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[3]) -func `bbga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template bbbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[0]) -func `bbbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template bbbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[1]) -func `bbbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template bbbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[2]) -func `bbbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template bbba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[3]) -func `bbba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template bbar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[0]) -func `bbar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template bbag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[1]) -func `bbag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template bbab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[2]) -func `bbab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template bbaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[3]) -func `bbaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template barr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[0]) -func `barr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template barg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[1]) -func `barg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template barb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[2]) -func `barb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template bara*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[3]) -func `bara=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template bagr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[0]) -func `bagr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template bagg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[1]) -func `bagg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template bagb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[2]) -func `bagb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template baga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[3]) -func `baga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template babr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[0]) -func `babr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template babg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[1]) -func `babg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template babb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[2]) -func `babb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template baba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[3]) -func `baba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template baar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[0]) -func `baar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template baag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[1]) -func `baag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template baab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[2]) -func `baab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template baaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[3]) -func `baaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template arrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[0]) -func `arrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template arrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[1]) -func `arrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template arrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[2]) -func `arrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template arra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[3]) -func `arra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template argr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[0]) -func `argr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template argg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[1]) -func `argg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template argb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[2]) -func `argb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template arga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[3]) -func `arga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template arbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[0]) -func `arbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template arbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[1]) -func `arbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template arbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[2]) -func `arbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template arba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[3]) -func `arba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template arar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[0]) -func `arar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template arag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[1]) -func `arag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template arab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[2]) -func `arab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template araa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[3]) -func `araa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template agrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[0]) -func `agrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template agrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[1]) -func `agrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template agrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[2]) -func `agrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template agra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[3]) -func `agra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template aggr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[0]) -func `aggr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template aggg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[1]) -func `aggg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template aggb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[2]) -func `aggb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template agga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[3]) -func `agga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template agbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[0]) -func `agbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template agbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[1]) -func `agbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template agbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[2]) -func `agbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template agba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[3]) -func `agba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template agar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[0]) -func `agar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template agag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[1]) -func `agag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template agab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[2]) -func `agab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template agaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[3]) -func `agaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template abrr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[0]) -func `abrr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template abrg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[1]) -func `abrg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template abrb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[2]) -func `abrb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template abra*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[3]) -func `abra=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template abgr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[0]) -func `abgr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template abgg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[1]) -func `abgg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template abgb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[2]) -func `abgb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template abga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[3]) -func `abga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template abbr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[0]) -func `abbr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template abbg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[1]) -func `abbg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template abbb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[2]) -func `abbb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template abba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[3]) -func `abba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template abar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[0]) -func `abar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template abag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[1]) -func `abag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template abab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[2]) -func `abab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template abaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[3]) -func `abaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template aarr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[0]) -func `aarr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template aarg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[1]) -func `aarg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template aarb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[2]) -func `aarb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template aara*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[3]) -func `aara=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template aagr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[0]) -func `aagr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template aagg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[1]) -func `aagg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template aagb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[2]) -func `aagb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template aaga*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[3]) -func `aaga=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template aabr*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[0]) -func `aabr=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template aabg*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[1]) -func `aabg=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template aabb*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[2]) -func `aabb=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template aaba*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[3]) -func `aaba=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template aaar*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[0]) -func `aaar=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template aaag*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[1]) -func `aaag=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template aaab*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[2]) -func `aaab=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template aaaa*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[3]) -func `aaaa=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w +proc rrrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[0]) +proc rrrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[1]) +proc rrrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[2]) +proc rrra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[3]) +proc rrgr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[0]) +proc rrgg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[1]) +proc rrgb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[2]) +proc rrga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[3]) +proc rrbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[0]) +proc rrbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[1]) +proc rrbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[2]) +proc rrba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[3]) +proc rrar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[0]) +proc rrag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[1]) +proc rrab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[2]) +proc rraa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[3]) +proc rgrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[0]) +proc rgrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[1]) +proc rgrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[2]) +proc rgra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[3]) +proc rggr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[0]) +proc rggg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[1]) +proc rggb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[2]) +proc rgga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[3]) +proc rgbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[0]) +proc rgbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[1]) +proc rgbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[2]) +proc rgba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[3]) +proc rgar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[0]) +proc rgag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[1]) +proc rgab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[2]) +proc rgaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[3]) +proc rbrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[0]) +proc rbrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[1]) +proc rbrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[2]) +proc rbra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[3]) +proc rbgr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[0]) +proc rbgg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[1]) +proc rbgb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[2]) +proc rbga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[3]) +proc rbbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[0]) +proc rbbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[1]) +proc rbbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[2]) +proc rbba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[3]) +proc rbar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[0]) +proc rbag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[1]) +proc rbab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[2]) +proc rbaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[3]) +proc rarr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[0]) +proc rarg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[1]) +proc rarb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[2]) +proc rara*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[3]) +proc ragr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[0]) +proc ragg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[1]) +proc ragb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[2]) +proc raga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[3]) +proc rabr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[0]) +proc rabg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[1]) +proc rabb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[2]) +proc raba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[3]) +proc raar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[0]) +proc raag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[1]) +proc raab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[2]) +proc raaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[3]) +proc grrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[0]) +proc grrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[1]) +proc grrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[2]) +proc grra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[3]) +proc grgr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[0]) +proc grgg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[1]) +proc grgb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[2]) +proc grga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[3]) +proc grbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[0]) +proc grbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[1]) +proc grbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[2]) +proc grba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[3]) +proc grar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[0]) +proc grag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[1]) +proc grab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[2]) +proc graa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[3]) +proc ggrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[0]) +proc ggrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[1]) +proc ggrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[2]) +proc ggra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[3]) +proc gggr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[0]) +proc gggg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[1]) +proc gggb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[2]) +proc ggga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[3]) +proc ggbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[0]) +proc ggbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[1]) +proc ggbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[2]) +proc ggba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[3]) +proc ggar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[0]) +proc ggag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[1]) +proc ggab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[2]) +proc ggaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[3]) +proc gbrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[0]) +proc gbrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[1]) +proc gbrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[2]) +proc gbra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[3]) +proc gbgr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[0]) +proc gbgg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[1]) +proc gbgb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[2]) +proc gbga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[3]) +proc gbbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[0]) +proc gbbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[1]) +proc gbbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[2]) +proc gbba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[3]) +proc gbar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[0]) +proc gbag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[1]) +proc gbab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[2]) +proc gbaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[3]) +proc garr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[0]) +proc garg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[1]) +proc garb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[2]) +proc gara*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[3]) +proc gagr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[0]) +proc gagg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[1]) +proc gagb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[2]) +proc gaga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[3]) +proc gabr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[0]) +proc gabg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[1]) +proc gabb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[2]) +proc gaba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[3]) +proc gaar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[0]) +proc gaag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[1]) +proc gaab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[2]) +proc gaaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[3]) +proc brrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[0]) +proc brrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[1]) +proc brrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[2]) +proc brra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[3]) +proc brgr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[0]) +proc brgg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[1]) +proc brgb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[2]) +proc brga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[3]) +proc brbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[0]) +proc brbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[1]) +proc brbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[2]) +proc brba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[3]) +proc brar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[0]) +proc brag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[1]) +proc brab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[2]) +proc braa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[3]) +proc bgrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[0]) +proc bgrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[1]) +proc bgrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[2]) +proc bgra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[3]) +proc bggr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[0]) +proc bggg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[1]) +proc bggb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[2]) +proc bgga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[3]) +proc bgbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[0]) +proc bgbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[1]) +proc bgbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[2]) +proc bgba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[3]) +proc bgar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[0]) +proc bgag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[1]) +proc bgab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[2]) +proc bgaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[3]) +proc bbrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[0]) +proc bbrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[1]) +proc bbrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[2]) +proc bbra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[3]) +proc bbgr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[0]) +proc bbgg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[1]) +proc bbgb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[2]) +proc bbga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[3]) +proc bbbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[0]) +proc bbbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[1]) +proc bbbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[2]) +proc bbba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[3]) +proc bbar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[0]) +proc bbag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[1]) +proc bbab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[2]) +proc bbaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[3]) +proc barr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[0]) +proc barg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[1]) +proc barb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[2]) +proc bara*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[3]) +proc bagr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[0]) +proc bagg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[1]) +proc bagb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[2]) +proc baga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[3]) +proc babr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[0]) +proc babg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[1]) +proc babb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[2]) +proc baba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[3]) +proc baar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[0]) +proc baag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[1]) +proc baab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[2]) +proc baaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[3]) +proc arrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[0]) +proc arrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[1]) +proc arrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[2]) +proc arra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[3]) +proc argr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[0]) +proc argg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[1]) +proc argb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[2]) +proc arga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[3]) +proc arbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[0]) +proc arbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[1]) +proc arbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[2]) +proc arba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[3]) +proc arar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[0]) +proc arag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[1]) +proc arab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[2]) +proc araa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[3]) +proc agrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[0]) +proc agrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[1]) +proc agrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[2]) +proc agra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[3]) +proc aggr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[0]) +proc aggg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[1]) +proc aggb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[2]) +proc agga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[3]) +proc agbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[0]) +proc agbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[1]) +proc agbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[2]) +proc agba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[3]) +proc agar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[0]) +proc agag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[1]) +proc agab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[2]) +proc agaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[3]) +proc abrr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[0]) +proc abrg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[1]) +proc abrb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[2]) +proc abra*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[3]) +proc abgr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[0]) +proc abgg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[1]) +proc abgb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[2]) +proc abga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[3]) +proc abbr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[0]) +proc abbg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[1]) +proc abbb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[2]) +proc abba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[3]) +proc abar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[0]) +proc abag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[1]) +proc abab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[2]) +proc abaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[3]) +proc aarr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[0]) +proc aarg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[1]) +proc aarb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[2]) +proc aara*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[3]) +proc aagr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[0]) +proc aagg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[1]) +proc aagb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[2]) +proc aaga*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[3]) +proc aabr*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[0]) +proc aabg*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[1]) +proc aabb*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[2]) +proc aaba*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[3]) +proc aaar*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[0]) +proc aaag*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[1]) +proc aaab*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[2]) +proc aaaa*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[3]) +proc `rrrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `rrrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `rrrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `rrra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `rrgr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `rrgg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `rrgb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `rrga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `rrbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `rrbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `rrbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `rrba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `rrar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `rrag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `rrab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `rraa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `rgrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `rgrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `rgrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `rgra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `rggr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `rggg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `rggb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `rgga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `rgbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `rgbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `rgbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `rgba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `rgar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `rgag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `rgab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `rgaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `rbrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `rbrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `rbrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `rbra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `rbgr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `rbgg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `rbgb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `rbga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `rbbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `rbbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `rbbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `rbba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `rbar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `rbag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `rbab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `rbaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `rarr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `rarg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `rarb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `rara=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `ragr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `ragg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `ragb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `raga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `rabr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `rabg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `rabb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `raba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `raar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `raag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `raab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `raaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `grrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `grrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `grrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `grra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `grgr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `grgg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `grgb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `grga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `grbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `grbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `grbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `grba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `grar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `grag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `grab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `graa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `ggrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `ggrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `ggrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `ggra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `gggr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `gggg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `gggb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `ggga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `ggbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `ggbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `ggbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `ggba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `ggar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `ggag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `ggab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `ggaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `gbrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `gbrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `gbrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `gbra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `gbgr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `gbgg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `gbgb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `gbga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `gbbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `gbbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `gbbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `gbba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `gbar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `gbag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `gbab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `gbaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `garr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `garg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `garb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `gara=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `gagr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `gagg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `gagb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `gaga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `gabr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `gabg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `gabb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `gaba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `gaar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `gaag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `gaab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `gaaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `brrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `brrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `brrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `brra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `brgr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `brgg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `brgb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `brga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `brbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `brbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `brbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `brba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `brar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `brag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `brab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `braa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `bgrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `bgrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `bgrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `bgra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `bggr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `bggg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `bggb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `bgga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `bgbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `bgbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `bgbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `bgba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `bgar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `bgag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `bgab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `bgaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `bbrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `bbrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `bbrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `bbra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `bbgr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `bbgg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `bbgb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `bbga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `bbbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `bbbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `bbbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `bbba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `bbar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `bbag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `bbab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `bbaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `barr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `barg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `barb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `bara=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `bagr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `bagg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `bagb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `baga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `babr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `babg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `babb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `baba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `baar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `baag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `baab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `baaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `arrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `arrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `arrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `arra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `argr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `argg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `argb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `arga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `arbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `arbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `arbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `arba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `arar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `arag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `arab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `araa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `agrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `agrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `agrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `agra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `aggr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `aggg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `aggb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `agga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `agbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `agbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `agbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `agba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `agar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `agag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `agab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `agaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `abrr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `abrg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `abrb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `abra=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `abgr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `abgg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `abgb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `abga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `abbr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `abbg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `abbb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `abba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `abar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `abag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `abab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `abaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `aarr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `aarg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `aarb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `aara=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `aagr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `aagg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `aagb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `aaga=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `aabr=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `aabg=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `aabb=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `aaba=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `aaar=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `aaag=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `aaab=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `aaaa=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) # 4 x stpq -template ssss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[0]) -func `ssss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template ssst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[1]) -func `ssst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template sssp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[2]) -func `sssp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template sssq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[0], a2[3]) -func `sssq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template ssts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[0]) -func `ssts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template sstt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[1]) -func `sstt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template sstp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[2]) -func `sstp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template sstq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[1], a2[3]) -func `sstq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template ssps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[0]) -func `ssps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template sspt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[1]) -func `sspt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template sspp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[2]) -func `sspp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template sspq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[2], a2[3]) -func `sspq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template ssqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[0]) -func `ssqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template ssqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[1]) -func `ssqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template ssqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[2]) -func `ssqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template ssqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[0], a2[3], a2[3]) -func `ssqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template stss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[0]) -func `stss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template stst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[1]) -func `stst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template stsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[2]) -func `stsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template stsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[0], a2[3]) -func `stsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template stts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[0]) -func `stts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template sttt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[1]) -func `sttt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template sttp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[2]) -func `sttp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template sttq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[1], a2[3]) -func `sttq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template stps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[0]) -func `stps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template stpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[1]) -func `stpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template stpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[2]) -func `stpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template stpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[2], a2[3]) -func `stpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template stqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[0]) -func `stqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template stqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[1]) -func `stqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template stqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[2]) -func `stqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template stqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[1], a2[3], a2[3]) -func `stqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template spss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[0]) -func `spss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template spst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[1]) -func `spst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template spsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[2]) -func `spsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template spsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[0], a2[3]) -func `spsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template spts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[0]) -func `spts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template sptt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[1]) -func `sptt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template sptp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[2]) -func `sptp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template sptq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[1], a2[3]) -func `sptq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template spps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[0]) -func `spps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template sppt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[1]) -func `sppt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template sppp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[2]) -func `sppp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template sppq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[2], a2[3]) -func `sppq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template spqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[0]) -func `spqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template spqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[1]) -func `spqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template spqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[2]) -func `spqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template spqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[2], a2[3], a2[3]) -func `spqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template sqss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[0]) -func `sqss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template sqst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[1]) -func `sqst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template sqsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[2]) -func `sqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template sqsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[0], a2[3]) -func `sqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template sqts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[0]) -func `sqts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template sqtt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[1]) -func `sqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template sqtp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[2]) -func `sqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template sqtq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[1], a2[3]) -func `sqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template sqps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[0]) -func `sqps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template sqpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[1]) -func `sqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template sqpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[2]) -func `sqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template sqpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[2], a2[3]) -func `sqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template sqqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[0]) -func `sqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template sqqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[1]) -func `sqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template sqqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[2]) -func `sqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template sqqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[0], a2[3], a2[3], a2[3]) -func `sqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[0] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template tsss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[0]) -func `tsss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template tsst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[1]) -func `tsst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template tssp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[2]) -func `tssp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template tssq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[0], a2[3]) -func `tssq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template tsts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[0]) -func `tsts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template tstt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[1]) -func `tstt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template tstp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[2]) -func `tstp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template tstq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[1], a2[3]) -func `tstq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template tsps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[0]) -func `tsps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template tspt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[1]) -func `tspt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template tspp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[2]) -func `tspp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template tspq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[2], a2[3]) -func `tspq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template tsqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[0]) -func `tsqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template tsqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[1]) -func `tsqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template tsqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[2]) -func `tsqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template tsqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[0], a2[3], a2[3]) -func `tsqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template ttss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[0]) -func `ttss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template ttst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[1]) -func `ttst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template ttsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[2]) -func `ttsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template ttsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[0], a2[3]) -func `ttsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template ttts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[0]) -func `ttts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template tttt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[1]) -func `tttt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template tttp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[2]) -func `tttp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template tttq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[1], a2[3]) -func `tttq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template ttps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[0]) -func `ttps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template ttpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[1]) -func `ttpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template ttpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[2]) -func `ttpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template ttpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[2], a2[3]) -func `ttpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template ttqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[0]) -func `ttqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template ttqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[1]) -func `ttqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template ttqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[2]) -func `ttqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template ttqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[1], a2[3], a2[3]) -func `ttqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template tpss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[0]) -func `tpss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template tpst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[1]) -func `tpst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template tpsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[2]) -func `tpsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template tpsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[0], a2[3]) -func `tpsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template tpts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[0]) -func `tpts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template tptt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[1]) -func `tptt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template tptp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[2]) -func `tptp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template tptq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[1], a2[3]) -func `tptq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template tpps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[0]) -func `tpps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template tppt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[1]) -func `tppt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template tppp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[2]) -func `tppp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template tppq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[2], a2[3]) -func `tppq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template tpqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[0]) -func `tpqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template tpqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[1]) -func `tpqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template tpqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[2]) -func `tpqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template tpqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[2], a2[3], a2[3]) -func `tpqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template tqss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[0]) -func `tqss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template tqst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[1]) -func `tqst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template tqsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[2]) -func `tqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template tqsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[0], a2[3]) -func `tqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template tqts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[0]) -func `tqts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template tqtt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[1]) -func `tqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template tqtp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[2]) -func `tqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template tqtq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[1], a2[3]) -func `tqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template tqps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[0]) -func `tqps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template tqpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[1]) -func `tqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template tqpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[2]) -func `tqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template tqpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[2], a2[3]) -func `tqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template tqqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[0]) -func `tqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template tqqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[1]) -func `tqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template tqqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[2]) -func `tqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template tqqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[1], a2[3], a2[3], a2[3]) -func `tqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[1] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template psss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[0]) -func `psss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template psst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[1]) -func `psst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template pssp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[2]) -func `pssp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template pssq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[0], a2[3]) -func `pssq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template psts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[0]) -func `psts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template pstt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[1]) -func `pstt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template pstp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[2]) -func `pstp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template pstq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[1], a2[3]) -func `pstq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template psps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[0]) -func `psps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template pspt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[1]) -func `pspt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template pspp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[2]) -func `pspp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template pspq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[2], a2[3]) -func `pspq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template psqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[0]) -func `psqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template psqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[1]) -func `psqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template psqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[2]) -func `psqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template psqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[0], a2[3], a2[3]) -func `psqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template ptss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[0]) -func `ptss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template ptst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[1]) -func `ptst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template ptsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[2]) -func `ptsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template ptsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[0], a2[3]) -func `ptsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template ptts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[0]) -func `ptts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template pttt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[1]) -func `pttt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template pttp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[2]) -func `pttp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template pttq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[1], a2[3]) -func `pttq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template ptps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[0]) -func `ptps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template ptpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[1]) -func `ptpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template ptpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[2]) -func `ptpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template ptpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[2], a2[3]) -func `ptpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template ptqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[0]) -func `ptqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template ptqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[1]) -func `ptqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template ptqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[2]) -func `ptqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template ptqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[1], a2[3], a2[3]) -func `ptqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template ppss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[0]) -func `ppss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template ppst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[1]) -func `ppst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template ppsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[2]) -func `ppsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template ppsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[0], a2[3]) -func `ppsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template ppts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[0]) -func `ppts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template pptt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[1]) -func `pptt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template pptp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[2]) -func `pptp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template pptq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[1], a2[3]) -func `pptq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template ppps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[0]) -func `ppps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template pppt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[1]) -func `pppt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template pppp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[2]) -func `pppp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template pppq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[2], a2[3]) -func `pppq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template ppqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[0]) -func `ppqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template ppqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[1]) -func `ppqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template ppqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[2]) -func `ppqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template ppqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[2], a2[3], a2[3]) -func `ppqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template pqss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[0]) -func `pqss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template pqst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[1]) -func `pqst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template pqsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[2]) -func `pqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template pqsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[0], a2[3]) -func `pqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template pqts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[0]) -func `pqts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template pqtt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[1]) -func `pqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template pqtp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[2]) -func `pqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template pqtq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[1], a2[3]) -func `pqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template pqps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[0]) -func `pqps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template pqpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[1]) -func `pqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template pqpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[2]) -func `pqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template pqpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[2], a2[3]) -func `pqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template pqqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[0]) -func `pqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template pqqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[1]) -func `pqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template pqqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[2]) -func `pqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template pqqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[2], a2[3], a2[3], a2[3]) -func `pqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[2] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w -template qsss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[0]) -func `qsss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[0] = b2.w -template qsst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[1]) -func `qsst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[1] = b2.w -template qssp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[2]) -func `qssp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[2] = b2.w -template qssq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[0], a2[3]) -func `qssq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[0] = b2.z; a[3] = b2.w -template qsts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[0]) -func `qsts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[0] = b2.w -template qstt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[1]) -func `qstt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[1] = b2.w -template qstp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[2]) -func `qstp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[2] = b2.w -template qstq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[1], a2[3]) -func `qstq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[1] = b2.z; a[3] = b2.w -template qsps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[0]) -func `qsps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[0] = b2.w -template qspt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[1]) -func `qspt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[1] = b2.w -template qspp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[2]) -func `qspp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[2] = b2.w -template qspq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[2], a2[3]) -func `qspq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[2] = b2.z; a[3] = b2.w -template qsqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[0]) -func `qsqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[0] = b2.w -template qsqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[1]) -func `qsqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[1] = b2.w -template qsqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[2]) -func `qsqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[2] = b2.w -template qsqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[0], a2[3], a2[3]) -func `qsqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[0] = b2.y; a[3] = b2.z; a[3] = b2.w -template qtss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[0]) -func `qtss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[0] = b2.w -template qtst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[1]) -func `qtst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[1] = b2.w -template qtsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[2]) -func `qtsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[2] = b2.w -template qtsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[0], a2[3]) -func `qtsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[0] = b2.z; a[3] = b2.w -template qtts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[0]) -func `qtts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[0] = b2.w -template qttt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[1]) -func `qttt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[1] = b2.w -template qttp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[2]) -func `qttp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[2] = b2.w -template qttq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[1], a2[3]) -func `qttq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[1] = b2.z; a[3] = b2.w -template qtps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[0]) -func `qtps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[0] = b2.w -template qtpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[1]) -func `qtpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[1] = b2.w -template qtpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[2]) -func `qtpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[2] = b2.w -template qtpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[2], a2[3]) -func `qtpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[2] = b2.z; a[3] = b2.w -template qtqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[0]) -func `qtqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[0] = b2.w -template qtqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[1]) -func `qtqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[1] = b2.w -template qtqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[2]) -func `qtqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[2] = b2.w -template qtqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[1], a2[3], a2[3]) -func `qtqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[1] = b2.y; a[3] = b2.z; a[3] = b2.w -template qpss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[0]) -func `qpss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[0] = b2.w -template qpst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[1]) -func `qpst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[1] = b2.w -template qpsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[2]) -func `qpsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[2] = b2.w -template qpsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[0], a2[3]) -func `qpsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[0] = b2.z; a[3] = b2.w -template qpts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[0]) -func `qpts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[0] = b2.w -template qptt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[1]) -func `qptt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[1] = b2.w -template qptp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[2]) -func `qptp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[2] = b2.w -template qptq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[1], a2[3]) -func `qptq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[1] = b2.z; a[3] = b2.w -template qpps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[0]) -func `qpps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[0] = b2.w -template qppt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[1]) -func `qppt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[1] = b2.w -template qppp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[2]) -func `qppp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[2] = b2.w -template qppq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[2], a2[3]) -func `qppq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[2] = b2.z; a[3] = b2.w -template qpqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[0]) -func `qpqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[0] = b2.w -template qpqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[1]) -func `qpqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[1] = b2.w -template qpqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[2]) -func `qpqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[2] = b2.w -template qpqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[2], a2[3], a2[3]) -func `qpqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[2] = b2.y; a[3] = b2.z; a[3] = b2.w -template qqss*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[0]) -func `qqss=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[0] = b2.w -template qqst*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[1]) -func `qqst=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[1] = b2.w -template qqsp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[2]) -func `qqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[2] = b2.w -template qqsq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[0], a2[3]) -func `qqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[0] = b2.z; a[3] = b2.w -template qqts*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[0]) -func `qqts=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[0] = b2.w -template qqtt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[1]) -func `qqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[1] = b2.w -template qqtp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[2]) -func `qqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[2] = b2.w -template qqtq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[1], a2[3]) -func `qqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[1] = b2.z; a[3] = b2.w -template qqps*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[0]) -func `qqps=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[0] = b2.w -template qqpt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[1]) -func `qqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[1] = b2.w -template qqpp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[2]) -func `qqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[2] = b2.w -template qqpq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[2], a2[3]) -func `qqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[2] = b2.z; a[3] = b2.w -template qqqs*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[0]) -func `qqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[0] = b2.w -template qqqt*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[1]) -func `qqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[1] = b2.w -template qqqp*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[2]) -func `qqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[2] = b2.w -template qqqq*[T](a: GVec234[T]): GVec4[T] = - let a2 = a - gvec4(a2[3], a2[3], a2[3], a2[3]) -func `qqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = - let b2 = b - a[3] = b2.x; a[3] = b2.y; a[3] = b2.z; a[3] = b2.w \ No newline at end of file +proc ssss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[0]) +proc ssst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[1]) +proc sssp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[2]) +proc sssq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[0], a[3]) +proc ssts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[0]) +proc sstt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[1]) +proc sstp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[2]) +proc sstq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[1], a[3]) +proc ssps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[0]) +proc sspt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[1]) +proc sspp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[2]) +proc sspq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[2], a[3]) +proc ssqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[0]) +proc ssqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[1]) +proc ssqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[2]) +proc ssqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[0], a[3], a[3]) +proc stss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[0]) +proc stst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[1]) +proc stsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[2]) +proc stsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[0], a[3]) +proc stts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[0]) +proc sttt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[1]) +proc sttp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[2]) +proc sttq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[1], a[3]) +proc stps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[0]) +proc stpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[1]) +proc stpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[2]) +proc stpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[2], a[3]) +proc stqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[0]) +proc stqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[1]) +proc stqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[2]) +proc stqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[1], a[3], a[3]) +proc spss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[0]) +proc spst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[1]) +proc spsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[2]) +proc spsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[0], a[3]) +proc spts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[0]) +proc sptt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[1]) +proc sptp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[2]) +proc sptq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[1], a[3]) +proc spps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[0]) +proc sppt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[1]) +proc sppp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[2]) +proc sppq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[2], a[3]) +proc spqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[0]) +proc spqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[1]) +proc spqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[2]) +proc spqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[2], a[3], a[3]) +proc sqss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[0]) +proc sqst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[1]) +proc sqsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[2]) +proc sqsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[0], a[3]) +proc sqts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[0]) +proc sqtt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[1]) +proc sqtp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[2]) +proc sqtq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[1], a[3]) +proc sqps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[0]) +proc sqpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[1]) +proc sqpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[2]) +proc sqpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[2], a[3]) +proc sqqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[0]) +proc sqqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[1]) +proc sqqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[2]) +proc sqqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[0], a[3], a[3], a[3]) +proc tsss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[0]) +proc tsst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[1]) +proc tssp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[2]) +proc tssq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[0], a[3]) +proc tsts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[0]) +proc tstt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[1]) +proc tstp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[2]) +proc tstq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[1], a[3]) +proc tsps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[0]) +proc tspt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[1]) +proc tspp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[2]) +proc tspq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[2], a[3]) +proc tsqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[0]) +proc tsqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[1]) +proc tsqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[2]) +proc tsqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[0], a[3], a[3]) +proc ttss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[0]) +proc ttst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[1]) +proc ttsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[2]) +proc ttsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[0], a[3]) +proc ttts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[0]) +proc tttt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[1]) +proc tttp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[2]) +proc tttq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[1], a[3]) +proc ttps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[0]) +proc ttpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[1]) +proc ttpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[2]) +proc ttpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[2], a[3]) +proc ttqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[0]) +proc ttqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[1]) +proc ttqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[2]) +proc ttqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[1], a[3], a[3]) +proc tpss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[0]) +proc tpst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[1]) +proc tpsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[2]) +proc tpsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[0], a[3]) +proc tpts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[0]) +proc tptt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[1]) +proc tptp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[2]) +proc tptq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[1], a[3]) +proc tpps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[0]) +proc tppt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[1]) +proc tppp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[2]) +proc tppq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[2], a[3]) +proc tpqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[0]) +proc tpqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[1]) +proc tpqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[2]) +proc tpqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[2], a[3], a[3]) +proc tqss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[0]) +proc tqst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[1]) +proc tqsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[2]) +proc tqsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[0], a[3]) +proc tqts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[0]) +proc tqtt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[1]) +proc tqtp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[2]) +proc tqtq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[1], a[3]) +proc tqps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[0]) +proc tqpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[1]) +proc tqpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[2]) +proc tqpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[2], a[3]) +proc tqqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[0]) +proc tqqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[1]) +proc tqqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[2]) +proc tqqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[1], a[3], a[3], a[3]) +proc psss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[0]) +proc psst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[1]) +proc pssp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[2]) +proc pssq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[0], a[3]) +proc psts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[0]) +proc pstt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[1]) +proc pstp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[2]) +proc pstq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[1], a[3]) +proc psps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[0]) +proc pspt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[1]) +proc pspp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[2]) +proc pspq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[2], a[3]) +proc psqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[0]) +proc psqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[1]) +proc psqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[2]) +proc psqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[0], a[3], a[3]) +proc ptss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[0]) +proc ptst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[1]) +proc ptsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[2]) +proc ptsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[0], a[3]) +proc ptts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[0]) +proc pttt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[1]) +proc pttp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[2]) +proc pttq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[1], a[3]) +proc ptps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[0]) +proc ptpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[1]) +proc ptpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[2]) +proc ptpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[2], a[3]) +proc ptqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[0]) +proc ptqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[1]) +proc ptqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[2]) +proc ptqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[1], a[3], a[3]) +proc ppss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[0]) +proc ppst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[1]) +proc ppsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[2]) +proc ppsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[0], a[3]) +proc ppts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[0]) +proc pptt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[1]) +proc pptp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[2]) +proc pptq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[1], a[3]) +proc ppps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[0]) +proc pppt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[1]) +proc pppp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[2]) +proc pppq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[2], a[3]) +proc ppqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[0]) +proc ppqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[1]) +proc ppqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[2]) +proc ppqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[2], a[3], a[3]) +proc pqss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[0]) +proc pqst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[1]) +proc pqsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[2]) +proc pqsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[0], a[3]) +proc pqts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[0]) +proc pqtt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[1]) +proc pqtp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[2]) +proc pqtq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[1], a[3]) +proc pqps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[0]) +proc pqpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[1]) +proc pqpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[2]) +proc pqpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[2], a[3]) +proc pqqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[0]) +proc pqqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[1]) +proc pqqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[2]) +proc pqqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[2], a[3], a[3], a[3]) +proc qsss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[0]) +proc qsst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[1]) +proc qssp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[2]) +proc qssq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[0], a[3]) +proc qsts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[0]) +proc qstt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[1]) +proc qstp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[2]) +proc qstq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[1], a[3]) +proc qsps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[0]) +proc qspt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[1]) +proc qspp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[2]) +proc qspq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[2], a[3]) +proc qsqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[0]) +proc qsqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[1]) +proc qsqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[2]) +proc qsqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[0], a[3], a[3]) +proc qtss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[0]) +proc qtst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[1]) +proc qtsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[2]) +proc qtsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[0], a[3]) +proc qtts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[0]) +proc qttt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[1]) +proc qttp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[2]) +proc qttq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[1], a[3]) +proc qtps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[0]) +proc qtpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[1]) +proc qtpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[2]) +proc qtpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[2], a[3]) +proc qtqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[0]) +proc qtqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[1]) +proc qtqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[2]) +proc qtqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[1], a[3], a[3]) +proc qpss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[0]) +proc qpst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[1]) +proc qpsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[2]) +proc qpsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[0], a[3]) +proc qpts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[0]) +proc qptt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[1]) +proc qptp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[2]) +proc qptq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[1], a[3]) +proc qpps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[0]) +proc qppt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[1]) +proc qppp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[2]) +proc qppq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[2], a[3]) +proc qpqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[0]) +proc qpqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[1]) +proc qpqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[2]) +proc qpqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[2], a[3], a[3]) +proc qqss*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[0]) +proc qqst*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[1]) +proc qqsp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[2]) +proc qqsq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[0], a[3]) +proc qqts*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[0]) +proc qqtt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[1]) +proc qqtp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[2]) +proc qqtq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[1], a[3]) +proc qqps*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[0]) +proc qqpt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[1]) +proc qqpp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[2]) +proc qqpq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[2], a[3]) +proc qqqs*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[0]) +proc qqqt*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[1]) +proc qqqp*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[2]) +proc qqqq*[T](a: GVec234[T]): GVec4[T] = gvec4(a[3], a[3], a[3], a[3]) +proc `ssss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `ssst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `sssp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `sssq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `ssts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `sstt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `sstp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `sstq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `ssps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `sspt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `sspp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `sspq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `ssqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `ssqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `ssqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `ssqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `stss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `stst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `stsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `stsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `stts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `sttt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `sttp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `sttq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `stps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `stpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `stpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `stpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `stqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `stqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `stqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `stqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `spss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `spst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `spsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `spsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `spts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `sptt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `sptp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `sptq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `spps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `sppt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `sppp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `sppq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `spqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `spqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `spqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `spqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `sqss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `sqst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `sqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `sqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `sqts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `sqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `sqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `sqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `sqps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `sqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `sqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `sqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `sqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `sqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `sqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `sqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[0] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `tsss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `tsst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `tssp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `tssq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `tsts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `tstt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `tstp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `tstq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `tsps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `tspt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `tspp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `tspq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `tsqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `tsqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `tsqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `tsqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `ttss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `ttst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `ttsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `ttsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `ttts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `tttt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `tttp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `tttq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `ttps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `ttpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `ttpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `ttpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `ttqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `ttqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `ttqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `ttqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `tpss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `tpst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `tpsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `tpsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `tpts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `tptt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `tptp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `tptq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `tpps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `tppt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `tppp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `tppq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `tpqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `tpqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `tpqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `tpqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `tqss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `tqst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `tqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `tqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `tqts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `tqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `tqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `tqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `tqps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `tqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `tqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `tqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `tqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `tqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `tqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `tqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[1] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `psss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `psst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `pssp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `pssq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `psts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `pstt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `pstp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `pstq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `psps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `pspt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `pspp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `pspq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `psqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `psqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `psqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `psqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `ptss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `ptst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `ptsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `ptsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `ptts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `pttt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `pttp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `pttq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `ptps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `ptpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `ptpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `ptpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `ptqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `ptqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `ptqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `ptqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `ppss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `ppst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `ppsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `ppsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `ppts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `pptt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `pptp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `pptq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `ppps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `pppt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `pppp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `pppq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `ppqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `ppqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `ppqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `ppqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `pqss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `pqst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `pqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `pqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `pqts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `pqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `pqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `pqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `pqps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `pqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `pqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `pqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `pqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `pqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `pqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `pqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[2] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) +proc `qsss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[0] = b.w) +proc `qsst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[1] = b.w) +proc `qssp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[2] = b.w) +proc `qssq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[0] = b.z; a[3] = b.w) +proc `qsts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[0] = b.w) +proc `qstt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[1] = b.w) +proc `qstp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[2] = b.w) +proc `qstq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[1] = b.z; a[3] = b.w) +proc `qsps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[0] = b.w) +proc `qspt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[1] = b.w) +proc `qspp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[2] = b.w) +proc `qspq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[2] = b.z; a[3] = b.w) +proc `qsqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[0] = b.w) +proc `qsqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[1] = b.w) +proc `qsqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[2] = b.w) +proc `qsqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[0] = b.y; a[3] = b.z; a[3] = b.w) +proc `qtss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[0] = b.w) +proc `qtst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[1] = b.w) +proc `qtsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[2] = b.w) +proc `qtsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[0] = b.z; a[3] = b.w) +proc `qtts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[0] = b.w) +proc `qttt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[1] = b.w) +proc `qttp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[2] = b.w) +proc `qttq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[1] = b.z; a[3] = b.w) +proc `qtps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[0] = b.w) +proc `qtpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[1] = b.w) +proc `qtpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[2] = b.w) +proc `qtpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[2] = b.z; a[3] = b.w) +proc `qtqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[0] = b.w) +proc `qtqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[1] = b.w) +proc `qtqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[2] = b.w) +proc `qtqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[1] = b.y; a[3] = b.z; a[3] = b.w) +proc `qpss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[0] = b.w) +proc `qpst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[1] = b.w) +proc `qpsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[2] = b.w) +proc `qpsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[0] = b.z; a[3] = b.w) +proc `qpts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[0] = b.w) +proc `qptt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[1] = b.w) +proc `qptp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[2] = b.w) +proc `qptq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[1] = b.z; a[3] = b.w) +proc `qpps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[0] = b.w) +proc `qppt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[1] = b.w) +proc `qppp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[2] = b.w) +proc `qppq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[2] = b.z; a[3] = b.w) +proc `qpqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[0] = b.w) +proc `qpqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[1] = b.w) +proc `qpqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[2] = b.w) +proc `qpqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[2] = b.y; a[3] = b.z; a[3] = b.w) +proc `qqss=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[0] = b.w) +proc `qqst=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[1] = b.w) +proc `qqsp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[2] = b.w) +proc `qqsq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[0] = b.z; a[3] = b.w) +proc `qqts=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[0] = b.w) +proc `qqtt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[1] = b.w) +proc `qqtp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[2] = b.w) +proc `qqtq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[1] = b.z; a[3] = b.w) +proc `qqps=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[0] = b.w) +proc `qqpt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[1] = b.w) +proc `qqpp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[2] = b.w) +proc `qqpq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[2] = b.z; a[3] = b.w) +proc `qqqs=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[0] = b.w) +proc `qqqt=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[1] = b.w) +proc `qqqp=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[2] = b.w) +proc `qqqq=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[3] = b.x; a[3] = b.y; a[3] = b.z; a[3] = b.w) diff --git a/tests/bench_swizzle.nim b/tests/bench_swizzle.nim new file mode 100644 index 0000000..d7169ae --- /dev/null +++ b/tests/bench_swizzle.nim @@ -0,0 +1,31 @@ +import benchy, vmath + +block: + var + a = vec2(1, 10) + b = vec2(2, 20) + c = vec2(3, 30) + timeIt "xy": + for i in 0 ..< 1_000_000: + c.yx = a.xy + b.rg + c.xy + echo c.xy + +block: + var + a = vec3(1, 10, 100) + b = vec3(2, 20, 200) + c = vec3(3, 30, 300) + timeIt "xyz": + for i in 0 ..< 1_000_000: + c.zyx = a.xyz + b.rgb + c.xyz + echo c.xyz + +block: + var + a = vec4(1, 10, 100, -1) + b = vec4(2, 20, 200, -1) + c = vec4(3, 30, 300, -1) + timeIt "xyzw": + for i in 0 ..< 1_000_000: + c.wzyx = a.xyzw + b.rgba + c.xyzw + echo c.xyzw diff --git a/tests/test.nim b/tests/test.nim index b85f56b..d2a8bff 100644 --- a/tests/test.nim +++ b/tests/test.nim @@ -356,11 +356,45 @@ block: var b = dvec4(1, 2, 3, 4) doAssert b == dvec4(1, 2, 3, 4) - b.wzyx = b - doAssert b == dvec4(4, 3, 2, 1) b.g = 123 - doAssert b == dvec4(4.0, 123.0, 2.0, 1.0) + doAssert b == dvec4(1.0, 123.0, 3.0, 4.0) + +block: + # test swizzle self-assignment + var a = dvec2(1, 2) + a.yx = a + doAssert a == dvec2(2, 1) + + var b = dvec3(1, 2, 3) + b.zyx = b + doAssert b == dvec3(3, 2, 1) + + var c = dvec4(1, 2, 3, 4) + c.wzyx = c + doAssert c == dvec4(4, 3, 2, 1) + +block: + # Test swizzle calls only once + var callCount = 0 + proc countsCalls(): Vec2 = + inc callCount + + doAssert countsCalls().yx == vec2(0, 0) + doAssert callCount == 1 + + callCount = 0 + doAssert vec2(0, 0) == countsCalls().yx + doAssert callCount == 1 + + var tmp: Vec2 + proc countsCalls2(): var Vec2 = + inc callCount + return tmp + + callCount = 0 + countsCalls2().yx = vec2(0, 0) + doAssert callCount == 1 block: # Test swizzle with complex expressions @@ -375,7 +409,7 @@ block: # function with side effects result = a[i] inc i - + doAssert f().yx == vec2(2, 1) doAssert f().gr == vec2(4, 3) doAssert f().ts == vec2(6, 5) @@ -398,7 +432,7 @@ block: # function with side effects result = b[i] inc i - + doAssert g().yxz == vec3(2, 1, 3) doAssert g().bgr == vec3(6, 5, 4) doAssert g().tps == vec3(8, 9, 7) @@ -419,7 +453,7 @@ block: # function with side effects result = c[i] inc i - + doAssert h().yxzw == vec4(2, 1, 3, 4) doAssert h().tqsp == vec4(6, 8, 5, 7) doAssert i == 2 diff --git a/tools/genswizzle.nim b/tools/genswizzle.nim index 7db0785..2d15235 100644 --- a/tools/genswizzle.nim +++ b/tools/genswizzle.nim @@ -1,47 +1,49 @@ import strformat -var swizzles = @["xyzw", "rgba", "stpq"] +var + swizzles = @["xyzw", "rgba", "stpq"] + code = "" -echo "# Generated by tools/gensswizzle" +code.add "# Generated by tools/gensswizzle - don't edit manually.\n" for swizzle in swizzles[1 .. ^1]: - echo "\n# 1 x ", swizzle + code.add "\n# 1 x " & swizzle & "\n" for i1, s1 in swizzle: - echo &"template {s1}*[T](a: GVec234[T]): T = a[{i1}]" - echo &"template `{s1}=`*[T](a: var GVec234[T], b: T) = a[{i1}] = b" + code.add &"proc {s1}*[T](a: GVec234[T]): T = a[{i1}]\n" + for i1, s1 in swizzle: + code.add &"proc `{s1}=`*[T](a: var GVec234[T], b: T) = a[{i1}] = b\n" for swizzle in swizzles: - echo "\n# 2 x ", swizzle + code.add "\n# 2 x " & swizzle & "\n" for i1, s1 in swizzle: for i2, s2 in swizzle: - echo &"template {s1}{s2}*[T](a: GVec234[T]): GVec2[T] =" - echo &" let a2 = a" - echo &" gvec2(a2[{i1}], a2[{i2}])" - echo &"func `{s1}{s2}=`*[T](a: var GVec234[T], b: GVec2[T]) =" - echo &" let b2 = b" - echo &" a[{i1}] = b2.x; a[{i2}] = b2.y" + code.add &"proc {s1}{s2}*[T](a: GVec234[T]): GVec2[T] = gvec2(a[{i1}], a[{i2}])\n" + for i1, s1 in swizzle: + for i2, s2 in swizzle: + code.add &"proc `{s1}{s2}=`*[T](a: var GVec234[T], b: GVec2[T]) = (let b = b; a[{i1}] = b.x; a[{i2}] = b.y)\n" for swizzle in swizzles: - echo "\n# 3 x ", swizzle + code.add "\n# 3 x " & swizzle & "\n" for i1, s1 in swizzle: for i2, s2 in swizzle: for i3, s3 in swizzle: - echo &"template {s1}{s2}{s3}*[T](a: GVec234[T]): GVec3[T] =" - echo &" let a2 = a" - echo &" gvec3(a2[{i1}], a2[{i2}], a2[{i3}])" - echo &"func `{s1}{s2}{s3}=`*[T](a: var GVec234[T], b: GVec3[T]) =" - echo &" let b2 = b" - echo &" a[{i1}] = b2.x; a[{i2}] = b2.y; a[{i3}] = b2.z" + code.add &"proc {s1}{s2}{s3}*[T](a: GVec234[T]): GVec3[T] = gvec3(a[{i1}], a[{i2}], a[{i3}])\n" + for i1, s1 in swizzle: + for i2, s2 in swizzle: + for i3, s3 in swizzle: + code.add &"proc `{s1}{s2}{s3}=`*[T](a: var GVec234[T], b: GVec3[T]) = (let b = b; a[{i1}] = b.x; a[{i2}] = b.y; a[{i3}] = b.z)\n" for swizzle in swizzles: - echo "\n# 4 x ", swizzle + code.add "\n# 4 x " & swizzle & "\n" for i1, s1 in swizzle: for i2, s2 in swizzle: for i3, s3 in swizzle: for i4, s4 in swizzle: - echo &"template {s1}{s2}{s3}{s4}*[T](a: GVec234[T]): GVec4[T] =" - echo &" let a2 = a" - echo &" gvec4(a2[{i1}], a2[{i2}], a2[{i3}], a2[{i4}])" - echo &"func `{s1}{s2}{s3}{s4}=`*[T](a: var GVec234[T], b: GVec4[T]) =" - echo &" let b2 = b" - echo &" a[{i1}] = b2.x; a[{i2}] = b2.y; a[{i3}] = b2.z; a[{i4}] = b2.w" + code.add &"proc {s1}{s2}{s3}{s4}*[T](a: GVec234[T]): GVec4[T] = gvec4(a[{i1}], a[{i2}], a[{i3}], a[{i4}])\n" + for i1, s1 in swizzle: + for i2, s2 in swizzle: + for i3, s3 in swizzle: + for i4, s4 in swizzle: + code.add &"proc `{s1}{s2}{s3}{s4}=`*[T](a: var GVec234[T], b: GVec4[T]) = (let b = b; a[{i1}] = b.x; a[{i2}] = b.y; a[{i3}] = b.z; a[{i4}] = b.w)\n" + +writeFile("src/vmath/swizzle.nim", code)