module Hylogen.Types.Vec where
import GHC.TypeLits
import Data.VectorSpace
import Hylogen.Expr
data FloatVec (n :: Nat) where
FloatVec :: (Veccable n) => FloatVec n
type Vec n = Expr (FloatVec n)
type Vec1 = Vec 1
type Vec2 = Vec 2
type Vec3 = Vec 3
type Vec4 = Vec 4
instance ToGLSLType (FloatVec 1) where
toGLSLType _ = GLSLFloat
tag = FloatVec
instance ToGLSLType (FloatVec 2) where
toGLSLType _ = GLSLVec2
tag = FloatVec
instance ToGLSLType (FloatVec 3) where
toGLSLType _ = GLSLVec3
tag = FloatVec
instance ToGLSLType (FloatVec 4) where
toGLSLType _ = GLSLVec4
tag = FloatVec
class (ToGLSLType (FloatVec n), KnownNat n) => Veccable n where
copy :: Vec1 -> Vec n
toList :: Vec n -> [Vec1]
instance Veccable 1 where
copy = id
toList v = [v]
instance Veccable 2 where
copy v = op2pre' "vec2" v v
toList v = [x_ v, y_ v]
instance Veccable 3 where
copy v = op3pre' "vec3" v v v
toList v = [x_ v, y_ v, z_ v]
instance Veccable 4 where
copy v = op4pre' "vec4" v v v v
toList v = [x_ v, y_ v, z_ v]
instance (Veccable n) => Num (Vec n) where
(+) = op2' "+"
() = op2' "-"
(*) = op2' "*"
abs = op1pre "abs"
signum = op1pre "sign"
negate = op1 "-"
fromInteger x = copy . uniform . show $ (fromInteger x :: Float)
instance (Veccable n) => Fractional (Vec n) where
(/) = op2' "/"
fromRational x = copy . uniform . show $ (fromRational x :: Float)
instance (Veccable n) => Floating (Vec n) where
pi = copy $ uniform "3.141592653589793238462643383"
exp = op1pre "exp"
log = op1pre "log"
sqrt = op1pre "sqrt"
(**) = op2pre' "pow"
sin = op1pre "sin"
cos = op1pre "cos"
tan = op1pre "tan"
asin = op1pre "asin"
acos = op1pre "acos"
atan = op1pre "atan"
sinh x = (exp x exp (negate x)) / 2
cosh x = (exp x + exp (negate x))/2
tanh x = sinh x / cosh x
asinh x = log $ x + sqrt(x**2 + 1)
acosh x = log $ x + sqrt(x**2 1)
atanh x = 0.5 * log ((1 + x)/(1 x))
instance Veccable n => AdditiveGroup (Vec n) where
zeroV = 0
(^+^) = (+)
negateV = negate
(^-^) = ()
instance Veccable n => VectorSpace (Vec n) where
type Scalar (Vec n) = Vec 1
a *^ b = copy a * b
instance Veccable n => InnerSpace (Vec n) where
a <.> b = Expr fv (Tree (Op2Pre, GLSLFloat, "dot") (fmap toMono [a, b]))
where fv = FloatVec :: FloatVec 1
vec2 :: (Vec1, Vec1) -> Vec2
vec2 (x, y) = op2pre' "vec2" x y
class ToVec3 tuple where
vec3 :: tuple -> Vec3
instance (a ~ Vec m, b ~ Vec (3 m)) => ToVec3 (a, b) where
vec3 (x, y) = Expr fv (Tree (Op2Pre, toGLSLType fv, "vec3") [toMono x, toMono y])
where fv = FloatVec :: FloatVec 3
instance (a ~ Vec1, b ~ Vec1, c ~ Vec1) => ToVec3 (a, b, c) where
vec3 (x, y, z) = Expr fv (Tree (Op3Pre, toGLSLType fv, "vec3") (fmap toMono [x, y, z]))
where fv = FloatVec :: FloatVec 3
class ToVec4 tuple where
vec4 :: tuple -> Vec4
instance (a ~ Vec m, b ~ Vec (4 m)) => ToVec4 (a, b) where
vec4 (x, y) = Expr fv (Tree (Op2Pre, toGLSLType fv, "vec4") [toMono x,toMono y])
where fv = FloatVec :: FloatVec 4
instance (b ~ Vec1, c ~ Vec1) => ToVec4 (Vec2, b, c) where
vec4 (x, y, z) = Expr fv (Tree (Op3Pre, toGLSLType fv, "vec4") [toMono x,toMono y,toMono z])
where fv = FloatVec :: FloatVec 4
instance (a ~ Vec1, c ~ Vec1) => ToVec4 (a, Vec2, c) where
vec4 (x, y, z) = Expr fv (Tree (Op3Pre, toGLSLType fv, "vec4") [toMono x,toMono y,toMono z])
where fv = FloatVec :: FloatVec 4
instance (a ~ Vec1, b ~ Vec1) => ToVec4 (a, b, Vec2) where
vec4 (x, y, z) = Expr fv (Tree (Op3Pre, toGLSLType fv, "vec4") [toMono x,toMono y,toMono z])
where fv = FloatVec :: FloatVec 4
instance (a ~ Vec1, b ~ Vec1, c ~ Vec1, d ~ Vec1) => ToVec4 (a, b, c, d) where
vec4 (x, y, z, w) = Expr fv (Tree (Op4Pre, toGLSLType fv, "vec4") (fmap toMono [x, y, z, w]))
where fv = FloatVec :: FloatVec 4
type (>=) x y = (x + 1 <=? y) ~ 'False
mkSwizz :: forall n m. (Veccable n, Veccable m) => String -> Vec n -> Vec m
mkSwizz str v = Expr fv (Tree (Access, toGLSLType fv, str) [toMono v])
where
fv = FloatVec :: FloatVec m
xxxx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xxxx_ = mkSwizz "xxxx"
yxxx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yxxx_ = mkSwizz "yxxx"
zxxx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxxx_ = mkSwizz "zxxx"
wxxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxxx_ = mkSwizz "wxxx"
xxx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
xxx_ = mkSwizz "xxx"
xyxx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xyxx_ = mkSwizz "xyxx"
yyxx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yyxx_ = mkSwizz "yyxx"
zyxx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyxx_ = mkSwizz "zyxx"
wyxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyxx_ = mkSwizz "wyxx"
yxx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
yxx_ = mkSwizz "yxx"
xzxx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzxx_ = mkSwizz "xzxx"
yzxx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzxx_ = mkSwizz "yzxx"
zzxx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzxx_ = mkSwizz "zzxx"
wzxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzxx_ = mkSwizz "wzxx"
zxx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zxx_ = mkSwizz "zxx"
xwxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwxx_ = mkSwizz "xwxx"
ywxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywxx_ = mkSwizz "ywxx"
zwxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwxx_ = mkSwizz "zwxx"
wwxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwxx_ = mkSwizz "wwxx"
wxx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wxx_ = mkSwizz "wxx"
xx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 2
xx_ = mkSwizz "xx"
xxyx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xxyx_ = mkSwizz "xxyx"
yxyx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yxyx_ = mkSwizz "yxyx"
zxyx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxyx_ = mkSwizz "zxyx"
wxyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxyx_ = mkSwizz "wxyx"
xyx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
xyx_ = mkSwizz "xyx"
xyyx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xyyx_ = mkSwizz "xyyx"
yyyx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yyyx_ = mkSwizz "yyyx"
zyyx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyyx_ = mkSwizz "zyyx"
wyyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyyx_ = mkSwizz "wyyx"
yyx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
yyx_ = mkSwizz "yyx"
xzyx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzyx_ = mkSwizz "xzyx"
yzyx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzyx_ = mkSwizz "yzyx"
zzyx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzyx_ = mkSwizz "zzyx"
wzyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzyx_ = mkSwizz "wzyx"
zyx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zyx_ = mkSwizz "zyx"
xwyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwyx_ = mkSwizz "xwyx"
ywyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywyx_ = mkSwizz "ywyx"
zwyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwyx_ = mkSwizz "zwyx"
wwyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwyx_ = mkSwizz "wwyx"
wyx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wyx_ = mkSwizz "wyx"
yx_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 2
yx_ = mkSwizz "yx"
xxzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xxzx_ = mkSwizz "xxzx"
yxzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yxzx_ = mkSwizz "yxzx"
zxzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxzx_ = mkSwizz "zxzx"
wxzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxzx_ = mkSwizz "wxzx"
xzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
xzx_ = mkSwizz "xzx"
xyzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xyzx_ = mkSwizz "xyzx"
yyzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yyzx_ = mkSwizz "yyzx"
zyzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyzx_ = mkSwizz "zyzx"
wyzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyzx_ = mkSwizz "wyzx"
yzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
yzx_ = mkSwizz "yzx"
xzzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzzx_ = mkSwizz "xzzx"
yzzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzzx_ = mkSwizz "yzzx"
zzzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzzx_ = mkSwizz "zzzx"
wzzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzzx_ = mkSwizz "wzzx"
zzx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zzx_ = mkSwizz "zzx"
xwzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwzx_ = mkSwizz "xwzx"
ywzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywzx_ = mkSwizz "ywzx"
zwzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwzx_ = mkSwizz "zwzx"
wwzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwzx_ = mkSwizz "wwzx"
wzx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wzx_ = mkSwizz "wzx"
zx_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 2
zx_ = mkSwizz "zx"
xxwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xxwx_ = mkSwizz "xxwx"
yxwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yxwx_ = mkSwizz "yxwx"
zxwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zxwx_ = mkSwizz "zxwx"
wxwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxwx_ = mkSwizz "wxwx"
xwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
xwx_ = mkSwizz "xwx"
xywx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xywx_ = mkSwizz "xywx"
yywx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yywx_ = mkSwizz "yywx"
zywx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zywx_ = mkSwizz "zywx"
wywx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wywx_ = mkSwizz "wywx"
ywx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
ywx_ = mkSwizz "ywx"
xzwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xzwx_ = mkSwizz "xzwx"
yzwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yzwx_ = mkSwizz "yzwx"
zzwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zzwx_ = mkSwizz "zzwx"
wzwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzwx_ = mkSwizz "wzwx"
zwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
zwx_ = mkSwizz "zwx"
xwwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwwx_ = mkSwizz "xwwx"
ywwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywwx_ = mkSwizz "ywwx"
zwwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwwx_ = mkSwizz "zwwx"
wwwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwwx_ = mkSwizz "wwwx"
wwx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wwx_ = mkSwizz "wwx"
wx_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 2
wx_ = mkSwizz "wx"
x_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 1
x_ = mkSwizz "x"
xxxy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xxxy_ = mkSwizz "xxxy"
yxxy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yxxy_ = mkSwizz "yxxy"
zxxy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxxy_ = mkSwizz "zxxy"
wxxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxxy_ = mkSwizz "wxxy"
xxy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
xxy_ = mkSwizz "xxy"
xyxy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xyxy_ = mkSwizz "xyxy"
yyxy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yyxy_ = mkSwizz "yyxy"
zyxy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyxy_ = mkSwizz "zyxy"
wyxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyxy_ = mkSwizz "wyxy"
yxy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
yxy_ = mkSwizz "yxy"
xzxy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzxy_ = mkSwizz "xzxy"
yzxy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzxy_ = mkSwizz "yzxy"
zzxy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzxy_ = mkSwizz "zzxy"
wzxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzxy_ = mkSwizz "wzxy"
zxy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zxy_ = mkSwizz "zxy"
xwxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwxy_ = mkSwizz "xwxy"
ywxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywxy_ = mkSwizz "ywxy"
zwxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwxy_ = mkSwizz "zwxy"
wwxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwxy_ = mkSwizz "wwxy"
wxy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wxy_ = mkSwizz "wxy"
xy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 2
xy_ = mkSwizz "xy"
xxyy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xxyy_ = mkSwizz "xxyy"
yxyy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yxyy_ = mkSwizz "yxyy"
zxyy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxyy_ = mkSwizz "zxyy"
wxyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxyy_ = mkSwizz "wxyy"
xyy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
xyy_ = mkSwizz "xyy"
xyyy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
xyyy_ = mkSwizz "xyyy"
yyyy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 4
yyyy_ = mkSwizz "yyyy"
zyyy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyyy_ = mkSwizz "zyyy"
wyyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyyy_ = mkSwizz "wyyy"
yyy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 3
yyy_ = mkSwizz "yyy"
xzyy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzyy_ = mkSwizz "xzyy"
yzyy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzyy_ = mkSwizz "yzyy"
zzyy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzyy_ = mkSwizz "zzyy"
wzyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzyy_ = mkSwizz "wzyy"
zyy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zyy_ = mkSwizz "zyy"
xwyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwyy_ = mkSwizz "xwyy"
ywyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywyy_ = mkSwizz "ywyy"
zwyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwyy_ = mkSwizz "zwyy"
wwyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwyy_ = mkSwizz "wwyy"
wyy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wyy_ = mkSwizz "wyy"
yy_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 2
yy_ = mkSwizz "yy"
xxzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xxzy_ = mkSwizz "xxzy"
yxzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yxzy_ = mkSwizz "yxzy"
zxzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxzy_ = mkSwizz "zxzy"
wxzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxzy_ = mkSwizz "wxzy"
xzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
xzy_ = mkSwizz "xzy"
xyzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xyzy_ = mkSwizz "xyzy"
yyzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yyzy_ = mkSwizz "yyzy"
zyzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyzy_ = mkSwizz "zyzy"
wyzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyzy_ = mkSwizz "wyzy"
yzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
yzy_ = mkSwizz "yzy"
xzzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzzy_ = mkSwizz "xzzy"
yzzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzzy_ = mkSwizz "yzzy"
zzzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzzy_ = mkSwizz "zzzy"
wzzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzzy_ = mkSwizz "wzzy"
zzy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zzy_ = mkSwizz "zzy"
xwzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwzy_ = mkSwizz "xwzy"
ywzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywzy_ = mkSwizz "ywzy"
zwzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwzy_ = mkSwizz "zwzy"
wwzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwzy_ = mkSwizz "wwzy"
wzy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wzy_ = mkSwizz "wzy"
zy_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 2
zy_ = mkSwizz "zy"
xxwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xxwy_ = mkSwizz "xxwy"
yxwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yxwy_ = mkSwizz "yxwy"
zxwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zxwy_ = mkSwizz "zxwy"
wxwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxwy_ = mkSwizz "wxwy"
xwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
xwy_ = mkSwizz "xwy"
xywy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xywy_ = mkSwizz "xywy"
yywy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yywy_ = mkSwizz "yywy"
zywy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zywy_ = mkSwizz "zywy"
wywy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wywy_ = mkSwizz "wywy"
ywy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
ywy_ = mkSwizz "ywy"
xzwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xzwy_ = mkSwizz "xzwy"
yzwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yzwy_ = mkSwizz "yzwy"
zzwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zzwy_ = mkSwizz "zzwy"
wzwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzwy_ = mkSwizz "wzwy"
zwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
zwy_ = mkSwizz "zwy"
xwwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwwy_ = mkSwizz "xwwy"
ywwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywwy_ = mkSwizz "ywwy"
zwwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwwy_ = mkSwizz "zwwy"
wwwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwwy_ = mkSwizz "wwwy"
wwy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wwy_ = mkSwizz "wwy"
wy_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 2
wy_ = mkSwizz "wy"
y_ :: forall n. (Veccable n, n >= 2) => Vec n -> Vec 1
y_ = mkSwizz "y"
xxxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xxxz_ = mkSwizz "xxxz"
yxxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yxxz_ = mkSwizz "yxxz"
zxxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxxz_ = mkSwizz "zxxz"
wxxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxxz_ = mkSwizz "wxxz"
xxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
xxz_ = mkSwizz "xxz"
xyxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xyxz_ = mkSwizz "xyxz"
yyxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yyxz_ = mkSwizz "yyxz"
zyxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyxz_ = mkSwizz "zyxz"
wyxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyxz_ = mkSwizz "wyxz"
yxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
yxz_ = mkSwizz "yxz"
xzxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzxz_ = mkSwizz "xzxz"
yzxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzxz_ = mkSwizz "yzxz"
zzxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzxz_ = mkSwizz "zzxz"
wzxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzxz_ = mkSwizz "wzxz"
zxz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zxz_ = mkSwizz "zxz"
xwxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwxz_ = mkSwizz "xwxz"
ywxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywxz_ = mkSwizz "ywxz"
zwxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwxz_ = mkSwizz "zwxz"
wwxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwxz_ = mkSwizz "wwxz"
wxz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wxz_ = mkSwizz "wxz"
xz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 2
xz_ = mkSwizz "xz"
xxyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xxyz_ = mkSwizz "xxyz"
yxyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yxyz_ = mkSwizz "yxyz"
zxyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxyz_ = mkSwizz "zxyz"
wxyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxyz_ = mkSwizz "wxyz"
xyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
xyz_ = mkSwizz "xyz"
xyyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xyyz_ = mkSwizz "xyyz"
yyyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yyyz_ = mkSwizz "yyyz"
zyyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyyz_ = mkSwizz "zyyz"
wyyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyyz_ = mkSwizz "wyyz"
yyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
yyz_ = mkSwizz "yyz"
xzyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzyz_ = mkSwizz "xzyz"
yzyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzyz_ = mkSwizz "yzyz"
zzyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzyz_ = mkSwizz "zzyz"
wzyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzyz_ = mkSwizz "wzyz"
zyz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zyz_ = mkSwizz "zyz"
xwyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwyz_ = mkSwizz "xwyz"
ywyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywyz_ = mkSwizz "ywyz"
zwyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwyz_ = mkSwizz "zwyz"
wwyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwyz_ = mkSwizz "wwyz"
wyz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wyz_ = mkSwizz "wyz"
yz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 2
yz_ = mkSwizz "yz"
xxzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xxzz_ = mkSwizz "xxzz"
yxzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yxzz_ = mkSwizz "yxzz"
zxzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zxzz_ = mkSwizz "zxzz"
wxzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxzz_ = mkSwizz "wxzz"
xzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
xzz_ = mkSwizz "xzz"
xyzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xyzz_ = mkSwizz "xyzz"
yyzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yyzz_ = mkSwizz "yyzz"
zyzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zyzz_ = mkSwizz "zyzz"
wyzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyzz_ = mkSwizz "wyzz"
yzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
yzz_ = mkSwizz "yzz"
xzzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
xzzz_ = mkSwizz "xzzz"
yzzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
yzzz_ = mkSwizz "yzzz"
zzzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 4
zzzz_ = mkSwizz "zzzz"
wzzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzzz_ = mkSwizz "wzzz"
zzz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 3
zzz_ = mkSwizz "zzz"
xwzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwzz_ = mkSwizz "xwzz"
ywzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywzz_ = mkSwizz "ywzz"
zwzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwzz_ = mkSwizz "zwzz"
wwzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwzz_ = mkSwizz "wwzz"
wzz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wzz_ = mkSwizz "wzz"
zz_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 2
zz_ = mkSwizz "zz"
xxwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xxwz_ = mkSwizz "xxwz"
yxwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yxwz_ = mkSwizz "yxwz"
zxwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zxwz_ = mkSwizz "zxwz"
wxwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxwz_ = mkSwizz "wxwz"
xwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
xwz_ = mkSwizz "xwz"
xywz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xywz_ = mkSwizz "xywz"
yywz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yywz_ = mkSwizz "yywz"
zywz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zywz_ = mkSwizz "zywz"
wywz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wywz_ = mkSwizz "wywz"
ywz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
ywz_ = mkSwizz "ywz"
xzwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xzwz_ = mkSwizz "xzwz"
yzwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yzwz_ = mkSwizz "yzwz"
zzwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zzwz_ = mkSwizz "zzwz"
wzwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzwz_ = mkSwizz "wzwz"
zwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
zwz_ = mkSwizz "zwz"
xwwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwwz_ = mkSwizz "xwwz"
ywwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywwz_ = mkSwizz "ywwz"
zwwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwwz_ = mkSwizz "zwwz"
wwwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwwz_ = mkSwizz "wwwz"
wwz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wwz_ = mkSwizz "wwz"
wz_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 2
wz_ = mkSwizz "wz"
z_ :: forall n. (Veccable n, n >= 3) => Vec n -> Vec 1
z_ = mkSwizz "z"
xxxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xxxw_ = mkSwizz "xxxw"
yxxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yxxw_ = mkSwizz "yxxw"
zxxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zxxw_ = mkSwizz "zxxw"
wxxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxxw_ = mkSwizz "wxxw"
xxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
xxw_ = mkSwizz "xxw"
xyxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xyxw_ = mkSwizz "xyxw"
yyxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yyxw_ = mkSwizz "yyxw"
zyxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zyxw_ = mkSwizz "zyxw"
wyxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyxw_ = mkSwizz "wyxw"
yxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
yxw_ = mkSwizz "yxw"
xzxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xzxw_ = mkSwizz "xzxw"
yzxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yzxw_ = mkSwizz "yzxw"
zzxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zzxw_ = mkSwizz "zzxw"
wzxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzxw_ = mkSwizz "wzxw"
zxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
zxw_ = mkSwizz "zxw"
xwxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwxw_ = mkSwizz "xwxw"
ywxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywxw_ = mkSwizz "ywxw"
zwxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwxw_ = mkSwizz "zwxw"
wwxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwxw_ = mkSwizz "wwxw"
wxw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wxw_ = mkSwizz "wxw"
xw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 2
xw_ = mkSwizz "xw"
xxyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xxyw_ = mkSwizz "xxyw"
yxyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yxyw_ = mkSwizz "yxyw"
zxyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zxyw_ = mkSwizz "zxyw"
wxyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxyw_ = mkSwizz "wxyw"
xyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
xyw_ = mkSwizz "xyw"
xyyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xyyw_ = mkSwizz "xyyw"
yyyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yyyw_ = mkSwizz "yyyw"
zyyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zyyw_ = mkSwizz "zyyw"
wyyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyyw_ = mkSwizz "wyyw"
yyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
yyw_ = mkSwizz "yyw"
xzyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xzyw_ = mkSwizz "xzyw"
yzyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yzyw_ = mkSwizz "yzyw"
zzyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zzyw_ = mkSwizz "zzyw"
wzyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzyw_ = mkSwizz "wzyw"
zyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
zyw_ = mkSwizz "zyw"
xwyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwyw_ = mkSwizz "xwyw"
ywyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywyw_ = mkSwizz "ywyw"
zwyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwyw_ = mkSwizz "zwyw"
wwyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwyw_ = mkSwizz "wwyw"
wyw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wyw_ = mkSwizz "wyw"
yw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 2
yw_ = mkSwizz "yw"
xxzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xxzw_ = mkSwizz "xxzw"
yxzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yxzw_ = mkSwizz "yxzw"
zxzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zxzw_ = mkSwizz "zxzw"
wxzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxzw_ = mkSwizz "wxzw"
xzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
xzw_ = mkSwizz "xzw"
xyzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xyzw_ = mkSwizz "xyzw"
yyzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yyzw_ = mkSwizz "yyzw"
zyzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zyzw_ = mkSwizz "zyzw"
wyzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyzw_ = mkSwizz "wyzw"
yzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
yzw_ = mkSwizz "yzw"
xzzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xzzw_ = mkSwizz "xzzw"
yzzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yzzw_ = mkSwizz "yzzw"
zzzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zzzw_ = mkSwizz "zzzw"
wzzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzzw_ = mkSwizz "wzzw"
zzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
zzw_ = mkSwizz "zzw"
xwzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwzw_ = mkSwizz "xwzw"
ywzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywzw_ = mkSwizz "ywzw"
zwzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwzw_ = mkSwizz "zwzw"
wwzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwzw_ = mkSwizz "wwzw"
wzw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
wzw_ = mkSwizz "wzw"
zw_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 2
zw_ = mkSwizz "zw"
xxww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xxww_ = mkSwizz "xxww"
yxww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yxww_ = mkSwizz "yxww"
zxww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zxww_ = mkSwizz "zxww"
wxww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wxww_ = mkSwizz "wxww"
xww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
xww_ = mkSwizz "xww"
xyww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xyww_ = mkSwizz "xyww"
yyww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yyww_ = mkSwizz "yyww"
zyww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zyww_ = mkSwizz "zyww"
wyww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wyww_ = mkSwizz "wyww"
yww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
yww_ = mkSwizz "yww"
xzww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xzww_ = mkSwizz "xzww"
yzww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
yzww_ = mkSwizz "yzww"
zzww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zzww_ = mkSwizz "zzww"
wzww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wzww_ = mkSwizz "wzww"
zww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
zww_ = mkSwizz "zww"
xwww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
xwww_ = mkSwizz "xwww"
ywww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
ywww_ = mkSwizz "ywww"
zwww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
zwww_ = mkSwizz "zwww"
wwww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 4
wwww_ = mkSwizz "wwww"
www_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 3
www_ = mkSwizz "www"
ww_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 2
ww_ = mkSwizz "ww"
w_ :: forall n. (Veccable n, n >= 4) => Vec n -> Vec 1
w_ = mkSwizz "w"