17 #ifndef GLM_ENABLE_EXPERIMENTAL    18 #   error "GLM: GLM_GTX_vec_swizzle is an experimental extension and may change in the future. Use #define GLM_ENABLE_EXPERIMENTAL before including it, if you really want to use it."    23     template<
typename T, qualifier Q>
    24     GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<1, T, Q> &v) {
    25         return glm::vec<2, T, Q>(v.x, v.x);
    28     template<
typename T, qualifier Q>
    29     GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<2, T, Q> &v) {
    30         return glm::vec<2, T, Q>(v.x, v.x);
    33     template<
typename T, qualifier Q>
    34     GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<3, T, Q> &v) {
    35         return glm::vec<2, T, Q>(v.x, v.x);
    38     template<
typename T, qualifier Q>
    39     GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<4, T, Q> &v) {
    40         return glm::vec<2, T, Q>(v.x, v.x);
    44     template<
typename T, qualifier Q>
    45     GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<2, T, Q> &v) {
    46         return glm::vec<2, T, Q>(v.x, v.y);
    49     template<
typename T, qualifier Q>
    50     GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<3, T, Q> &v) {
    51         return glm::vec<2, T, Q>(v.x, v.y);
    54     template<
typename T, qualifier Q>
    55     GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<4, T, Q> &v) {
    56         return glm::vec<2, T, Q>(v.x, v.y);
    60     template<
typename T, qualifier Q>
    61     GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<3, T, Q> &v) {
    62         return glm::vec<2, T, Q>(v.x, v.z);
    65     template<
typename T, qualifier Q>
    66     GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<4, T, Q> &v) {
    67         return glm::vec<2, T, Q>(v.x, v.z);
    71     template<
typename T, qualifier Q>
    72     GLM_INLINE glm::vec<2, T, Q> xw(
const glm::vec<4, T, Q> &v) {
    73         return glm::vec<2, T, Q>(v.x, v.w);
    77     template<
typename T, qualifier Q>
    78     GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<2, T, Q> &v) {
    79         return glm::vec<2, T, Q>(v.y, v.x);
    82     template<
typename T, qualifier Q>
    83     GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<3, T, Q> &v) {
    84         return glm::vec<2, T, Q>(v.y, v.x);
    87     template<
typename T, qualifier Q>
    88     GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<4, T, Q> &v) {
    89         return glm::vec<2, T, Q>(v.y, v.x);
    93     template<
typename T, qualifier Q>
    94     GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<2, T, Q> &v) {
    95         return glm::vec<2, T, Q>(v.y, v.y);
    98     template<
typename T, qualifier Q>
    99     GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<3, T, Q> &v) {
   100         return glm::vec<2, T, Q>(v.y, v.y);
   103     template<
typename T, qualifier Q>
   104     GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<4, T, Q> &v) {
   105         return glm::vec<2, T, Q>(v.y, v.y);
   109     template<
typename T, qualifier Q>
   110     GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<3, T, Q> &v) {
   111         return glm::vec<2, T, Q>(v.y, v.z);
   114     template<
typename T, qualifier Q>
   115     GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<4, T, Q> &v) {
   116         return glm::vec<2, T, Q>(v.y, v.z);
   120     template<
typename T, qualifier Q>
   121     GLM_INLINE glm::vec<2, T, Q> yw(
const glm::vec<4, T, Q> &v) {
   122         return glm::vec<2, T, Q>(v.y, v.w);
   126     template<
typename T, qualifier Q>
   127     GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<3, T, Q> &v) {
   128         return glm::vec<2, T, Q>(v.z, v.x);
   131     template<
typename T, qualifier Q>
   132     GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<4, T, Q> &v) {
   133         return glm::vec<2, T, Q>(v.z, v.x);
   137     template<
typename T, qualifier Q>
   138     GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<3, T, Q> &v) {
   139         return glm::vec<2, T, Q>(v.z, v.y);
   142     template<
typename T, qualifier Q>
   143     GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<4, T, Q> &v) {
   144         return glm::vec<2, T, Q>(v.z, v.y);
   148     template<
typename T, qualifier Q>
   149     GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<3, T, Q> &v) {
   150         return glm::vec<2, T, Q>(v.z, v.z);
   153     template<
typename T, qualifier Q>
   154     GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<4, T, Q> &v) {
   155         return glm::vec<2, T, Q>(v.z, v.z);
   159     template<
typename T, qualifier Q>
   160     GLM_INLINE glm::vec<2, T, Q> zw(
const glm::vec<4, T, Q> &v) {
   161         return glm::vec<2, T, Q>(v.z, v.w);
   165     template<
typename T, qualifier Q>
   166     GLM_INLINE glm::vec<2, T, Q> wx(
const glm::vec<4, T, Q> &v) {
   167         return glm::vec<2, T, Q>(v.w, v.x);
   171     template<
typename T, qualifier Q>
   172     GLM_INLINE glm::vec<2, T, Q> wy(
const glm::vec<4, T, Q> &v) {
   173         return glm::vec<2, T, Q>(v.w, v.y);
   177     template<
typename T, qualifier Q>
   178     GLM_INLINE glm::vec<2, T, Q> wz(
const glm::vec<4, T, Q> &v) {
   179         return glm::vec<2, T, Q>(v.w, v.z);
   183     template<
typename T, qualifier Q>
   184     GLM_INLINE glm::vec<2, T, Q> ww(
const glm::vec<4, T, Q> &v) {
   185         return glm::vec<2, T, Q>(v.w, v.w);
   189     template<
typename T, qualifier Q>
   190     GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<1, T, Q> &v) {
   191         return glm::vec<3, T, Q>(v.x, v.x, v.x);
   194     template<
typename T, qualifier Q>
   195     GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<2, T, Q> &v) {
   196         return glm::vec<3, T, Q>(v.x, v.x, v.x);
   199     template<
typename T, qualifier Q>
   200     GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<3, T, Q> &v) {
   201         return glm::vec<3, T, Q>(v.x, v.x, v.x);
   204     template<
typename T, qualifier Q>
   205     GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<4, T, Q> &v) {
   206         return glm::vec<3, T, Q>(v.x, v.x, v.x);
   210     template<
typename T, qualifier Q>
   211     GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<2, T, Q> &v) {
   212         return glm::vec<3, T, Q>(v.x, v.x, v.y);
   215     template<
typename T, qualifier Q>
   216     GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<3, T, Q> &v) {
   217         return glm::vec<3, T, Q>(v.x, v.x, v.y);
   220     template<
typename T, qualifier Q>
   221     GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<4, T, Q> &v) {
   222         return glm::vec<3, T, Q>(v.x, v.x, v.y);
   226     template<
typename T, qualifier Q>
   227     GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<3, T, Q> &v) {
   228         return glm::vec<3, T, Q>(v.x, v.x, v.z);
   231     template<
typename T, qualifier Q>
   232     GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<4, T, Q> &v) {
   233         return glm::vec<3, T, Q>(v.x, v.x, v.z);
   237     template<
typename T, qualifier Q>
   238     GLM_INLINE glm::vec<3, T, Q> xxw(
const glm::vec<4, T, Q> &v) {
   239         return glm::vec<3, T, Q>(v.x, v.x, v.w);
   243     template<
typename T, qualifier Q>
   244     GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<2, T, Q> &v) {
   245         return glm::vec<3, T, Q>(v.x, v.y, v.x);
   248     template<
typename T, qualifier Q>
   249     GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<3, T, Q> &v) {
   250         return glm::vec<3, T, Q>(v.x, v.y, v.x);
   253     template<
typename T, qualifier Q>
   254     GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<4, T, Q> &v) {
   255         return glm::vec<3, T, Q>(v.x, v.y, v.x);
   259     template<
typename T, qualifier Q>
   260     GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<2, T, Q> &v) {
   261         return glm::vec<3, T, Q>(v.x, v.y, v.y);
   264     template<
typename T, qualifier Q>
   265     GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<3, T, Q> &v) {
   266         return glm::vec<3, T, Q>(v.x, v.y, v.y);
   269     template<
typename T, qualifier Q>
   270     GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<4, T, Q> &v) {
   271         return glm::vec<3, T, Q>(v.x, v.y, v.y);
   275     template<
typename T, qualifier Q>
   276     GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<3, T, Q> &v) {
   277         return glm::vec<3, T, Q>(v.x, v.y, v.z);
   280     template<
typename T, qualifier Q>
   281     GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<4, T, Q> &v) {
   282         return glm::vec<3, T, Q>(v.x, v.y, v.z);
   286     template<
typename T, qualifier Q>
   287     GLM_INLINE glm::vec<3, T, Q> xyw(
const glm::vec<4, T, Q> &v) {
   288         return glm::vec<3, T, Q>(v.x, v.y, v.w);
   292     template<
typename T, qualifier Q>
   293     GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<3, T, Q> &v) {
   294         return glm::vec<3, T, Q>(v.x, v.z, v.x);
   297     template<
typename T, qualifier Q>
   298     GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<4, T, Q> &v) {
   299         return glm::vec<3, T, Q>(v.x, v.z, v.x);
   303     template<
typename T, qualifier Q>
   304     GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<3, T, Q> &v) {
   305         return glm::vec<3, T, Q>(v.x, v.z, v.y);
   308     template<
typename T, qualifier Q>
   309     GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<4, T, Q> &v) {
   310         return glm::vec<3, T, Q>(v.x, v.z, v.y);
   314     template<
typename T, qualifier Q>
   315     GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<3, T, Q> &v) {
   316         return glm::vec<3, T, Q>(v.x, v.z, v.z);
   319     template<
typename T, qualifier Q>
   320     GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<4, T, Q> &v) {
   321         return glm::vec<3, T, Q>(v.x, v.z, v.z);
   325     template<
typename T, qualifier Q>
   326     GLM_INLINE glm::vec<3, T, Q> xzw(
const glm::vec<4, T, Q> &v) {
   327         return glm::vec<3, T, Q>(v.x, v.z, v.w);
   331     template<
typename T, qualifier Q>
   332     GLM_INLINE glm::vec<3, T, Q> xwx(
const glm::vec<4, T, Q> &v) {
   333         return glm::vec<3, T, Q>(v.x, v.w, v.x);
   337     template<
typename T, qualifier Q>
   338     GLM_INLINE glm::vec<3, T, Q> xwy(
const glm::vec<4, T, Q> &v) {
   339         return glm::vec<3, T, Q>(v.x, v.w, v.y);
   343     template<
typename T, qualifier Q>
   344     GLM_INLINE glm::vec<3, T, Q> xwz(
const glm::vec<4, T, Q> &v) {
   345         return glm::vec<3, T, Q>(v.x, v.w, v.z);
   349     template<
typename T, qualifier Q>
   350     GLM_INLINE glm::vec<3, T, Q> xww(
const glm::vec<4, T, Q> &v) {
   351         return glm::vec<3, T, Q>(v.x, v.w, v.w);
   355     template<
typename T, qualifier Q>
   356     GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<2, T, Q> &v) {
   357         return glm::vec<3, T, Q>(v.y, v.x, v.x);
   360     template<
typename T, qualifier Q>
   361     GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<3, T, Q> &v) {
   362         return glm::vec<3, T, Q>(v.y, v.x, v.x);
   365     template<
typename T, qualifier Q>
   366     GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<4, T, Q> &v) {
   367         return glm::vec<3, T, Q>(v.y, v.x, v.x);
   371     template<
typename T, qualifier Q>
   372     GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<2, T, Q> &v) {
   373         return glm::vec<3, T, Q>(v.y, v.x, v.y);
   376     template<
typename T, qualifier Q>
   377     GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<3, T, Q> &v) {
   378         return glm::vec<3, T, Q>(v.y, v.x, v.y);
   381     template<
typename T, qualifier Q>
   382     GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<4, T, Q> &v) {
   383         return glm::vec<3, T, Q>(v.y, v.x, v.y);
   387     template<
typename T, qualifier Q>
   388     GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<3, T, Q> &v) {
   389         return glm::vec<3, T, Q>(v.y, v.x, v.z);
   392     template<
typename T, qualifier Q>
   393     GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<4, T, Q> &v) {
   394         return glm::vec<3, T, Q>(v.y, v.x, v.z);
   398     template<
typename T, qualifier Q>
   399     GLM_INLINE glm::vec<3, T, Q> yxw(
const glm::vec<4, T, Q> &v) {
   400         return glm::vec<3, T, Q>(v.y, v.x, v.w);
   404     template<
typename T, qualifier Q>
   405     GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<2, T, Q> &v) {
   406         return glm::vec<3, T, Q>(v.y, v.y, v.x);
   409     template<
typename T, qualifier Q>
   410     GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<3, T, Q> &v) {
   411         return glm::vec<3, T, Q>(v.y, v.y, v.x);
   414     template<
typename T, qualifier Q>
   415     GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<4, T, Q> &v) {
   416         return glm::vec<3, T, Q>(v.y, v.y, v.x);
   420     template<
typename T, qualifier Q>
   421     GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<2, T, Q> &v) {
   422         return glm::vec<3, T, Q>(v.y, v.y, v.y);
   425     template<
typename T, qualifier Q>
   426     GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<3, T, Q> &v) {
   427         return glm::vec<3, T, Q>(v.y, v.y, v.y);
   430     template<
typename T, qualifier Q>
   431     GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<4, T, Q> &v) {
   432         return glm::vec<3, T, Q>(v.y, v.y, v.y);
   436     template<
typename T, qualifier Q>
   437     GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<3, T, Q> &v) {
   438         return glm::vec<3, T, Q>(v.y, v.y, v.z);
   441     template<
typename T, qualifier Q>
   442     GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<4, T, Q> &v) {
   443         return glm::vec<3, T, Q>(v.y, v.y, v.z);
   447     template<
typename T, qualifier Q>
   448     GLM_INLINE glm::vec<3, T, Q> yyw(
const glm::vec<4, T, Q> &v) {
   449         return glm::vec<3, T, Q>(v.y, v.y, v.w);
   453     template<
typename T, qualifier Q>
   454     GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<3, T, Q> &v) {
   455         return glm::vec<3, T, Q>(v.y, v.z, v.x);
   458     template<
typename T, qualifier Q>
   459     GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<4, T, Q> &v) {
   460         return glm::vec<3, T, Q>(v.y, v.z, v.x);
   464     template<
typename T, qualifier Q>
   465     GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<3, T, Q> &v) {
   466         return glm::vec<3, T, Q>(v.y, v.z, v.y);
   469     template<
typename T, qualifier Q>
   470     GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<4, T, Q> &v) {
   471         return glm::vec<3, T, Q>(v.y, v.z, v.y);
   475     template<
typename T, qualifier Q>
   476     GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<3, T, Q> &v) {
   477         return glm::vec<3, T, Q>(v.y, v.z, v.z);
   480     template<
typename T, qualifier Q>
   481     GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<4, T, Q> &v) {
   482         return glm::vec<3, T, Q>(v.y, v.z, v.z);
   486     template<
typename T, qualifier Q>
   487     GLM_INLINE glm::vec<3, T, Q> yzw(
const glm::vec<4, T, Q> &v) {
   488         return glm::vec<3, T, Q>(v.y, v.z, v.w);
   492     template<
typename T, qualifier Q>
   493     GLM_INLINE glm::vec<3, T, Q> ywx(
const glm::vec<4, T, Q> &v) {
   494         return glm::vec<3, T, Q>(v.y, v.w, v.x);
   498     template<
typename T, qualifier Q>
   499     GLM_INLINE glm::vec<3, T, Q> ywy(
const glm::vec<4, T, Q> &v) {
   500         return glm::vec<3, T, Q>(v.y, v.w, v.y);
   504     template<
typename T, qualifier Q>
   505     GLM_INLINE glm::vec<3, T, Q> ywz(
const glm::vec<4, T, Q> &v) {
   506         return glm::vec<3, T, Q>(v.y, v.w, v.z);
   510     template<
typename T, qualifier Q>
   511     GLM_INLINE glm::vec<3, T, Q> yww(
const glm::vec<4, T, Q> &v) {
   512         return glm::vec<3, T, Q>(v.y, v.w, v.w);
   516     template<
typename T, qualifier Q>
   517     GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<3, T, Q> &v) {
   518         return glm::vec<3, T, Q>(v.z, v.x, v.x);
   521     template<
typename T, qualifier Q>
   522     GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<4, T, Q> &v) {
   523         return glm::vec<3, T, Q>(v.z, v.x, v.x);
   527     template<
typename T, qualifier Q>
   528     GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<3, T, Q> &v) {
   529         return glm::vec<3, T, Q>(v.z, v.x, v.y);
   532     template<
typename T, qualifier Q>
   533     GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<4, T, Q> &v) {
   534         return glm::vec<3, T, Q>(v.z, v.x, v.y);
   538     template<
typename T, qualifier Q>
   539     GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<3, T, Q> &v) {
   540         return glm::vec<3, T, Q>(v.z, v.x, v.z);
   543     template<
typename T, qualifier Q>
   544     GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<4, T, Q> &v) {
   545         return glm::vec<3, T, Q>(v.z, v.x, v.z);
   549     template<
typename T, qualifier Q>
   550     GLM_INLINE glm::vec<3, T, Q> zxw(
const glm::vec<4, T, Q> &v) {
   551         return glm::vec<3, T, Q>(v.z, v.x, v.w);
   555     template<
typename T, qualifier Q>
   556     GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<3, T, Q> &v) {
   557         return glm::vec<3, T, Q>(v.z, v.y, v.x);
   560     template<
typename T, qualifier Q>
   561     GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<4, T, Q> &v) {
   562         return glm::vec<3, T, Q>(v.z, v.y, v.x);
   566     template<
typename T, qualifier Q>
   567     GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<3, T, Q> &v) {
   568         return glm::vec<3, T, Q>(v.z, v.y, v.y);
   571     template<
typename T, qualifier Q>
   572     GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<4, T, Q> &v) {
   573         return glm::vec<3, T, Q>(v.z, v.y, v.y);
   577     template<
typename T, qualifier Q>
   578     GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<3, T, Q> &v) {
   579         return glm::vec<3, T, Q>(v.z, v.y, v.z);
   582     template<
typename T, qualifier Q>
   583     GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<4, T, Q> &v) {
   584         return glm::vec<3, T, Q>(v.z, v.y, v.z);
   588     template<
typename T, qualifier Q>
   589     GLM_INLINE glm::vec<3, T, Q> zyw(
const glm::vec<4, T, Q> &v) {
   590         return glm::vec<3, T, Q>(v.z, v.y, v.w);
   594     template<
typename T, qualifier Q>
   595     GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<3, T, Q> &v) {
   596         return glm::vec<3, T, Q>(v.z, v.z, v.x);
   599     template<
typename T, qualifier Q>
   600     GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<4, T, Q> &v) {
   601         return glm::vec<3, T, Q>(v.z, v.z, v.x);
   605     template<
typename T, qualifier Q>
   606     GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<3, T, Q> &v) {
   607         return glm::vec<3, T, Q>(v.z, v.z, v.y);
   610     template<
typename T, qualifier Q>
   611     GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<4, T, Q> &v) {
   612         return glm::vec<3, T, Q>(v.z, v.z, v.y);
   616     template<
typename T, qualifier Q>
   617     GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<3, T, Q> &v) {
   618         return glm::vec<3, T, Q>(v.z, v.z, v.z);
   621     template<
typename T, qualifier Q>
   622     GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<4, T, Q> &v) {
   623         return glm::vec<3, T, Q>(v.z, v.z, v.z);
   627     template<
typename T, qualifier Q>
   628     GLM_INLINE glm::vec<3, T, Q> zzw(
const glm::vec<4, T, Q> &v) {
   629         return glm::vec<3, T, Q>(v.z, v.z, v.w);
   633     template<
typename T, qualifier Q>
   634     GLM_INLINE glm::vec<3, T, Q> zwx(
const glm::vec<4, T, Q> &v) {
   635         return glm::vec<3, T, Q>(v.z, v.w, v.x);
   639     template<
typename T, qualifier Q>
   640     GLM_INLINE glm::vec<3, T, Q> zwy(
const glm::vec<4, T, Q> &v) {
   641         return glm::vec<3, T, Q>(v.z, v.w, v.y);
   645     template<
typename T, qualifier Q>
   646     GLM_INLINE glm::vec<3, T, Q> zwz(
const glm::vec<4, T, Q> &v) {
   647         return glm::vec<3, T, Q>(v.z, v.w, v.z);
   651     template<
typename T, qualifier Q>
   652     GLM_INLINE glm::vec<3, T, Q> zww(
const glm::vec<4, T, Q> &v) {
   653         return glm::vec<3, T, Q>(v.z, v.w, v.w);
   657     template<
typename T, qualifier Q>
   658     GLM_INLINE glm::vec<3, T, Q> wxx(
const glm::vec<4, T, Q> &v) {
   659         return glm::vec<3, T, Q>(v.w, v.x, v.x);
   663     template<
typename T, qualifier Q>
   664     GLM_INLINE glm::vec<3, T, Q> wxy(
const glm::vec<4, T, Q> &v) {
   665         return glm::vec<3, T, Q>(v.w, v.x, v.y);
   669     template<
typename T, qualifier Q>
   670     GLM_INLINE glm::vec<3, T, Q> wxz(
const glm::vec<4, T, Q> &v) {
   671         return glm::vec<3, T, Q>(v.w, v.x, v.z);
   675     template<
typename T, qualifier Q>
   676     GLM_INLINE glm::vec<3, T, Q> wxw(
const glm::vec<4, T, Q> &v) {
   677         return glm::vec<3, T, Q>(v.w, v.x, v.w);
   681     template<
typename T, qualifier Q>
   682     GLM_INLINE glm::vec<3, T, Q> wyx(
const glm::vec<4, T, Q> &v) {
   683         return glm::vec<3, T, Q>(v.w, v.y, v.x);
   687     template<
typename T, qualifier Q>
   688     GLM_INLINE glm::vec<3, T, Q> wyy(
const glm::vec<4, T, Q> &v) {
   689         return glm::vec<3, T, Q>(v.w, v.y, v.y);
   693     template<
typename T, qualifier Q>
   694     GLM_INLINE glm::vec<3, T, Q> wyz(
const glm::vec<4, T, Q> &v) {
   695         return glm::vec<3, T, Q>(v.w, v.y, v.z);
   699     template<
typename T, qualifier Q>
   700     GLM_INLINE glm::vec<3, T, Q> wyw(
const glm::vec<4, T, Q> &v) {
   701         return glm::vec<3, T, Q>(v.w, v.y, v.w);
   705     template<
typename T, qualifier Q>
   706     GLM_INLINE glm::vec<3, T, Q> wzx(
const glm::vec<4, T, Q> &v) {
   707         return glm::vec<3, T, Q>(v.w, v.z, v.x);
   711     template<
typename T, qualifier Q>
   712     GLM_INLINE glm::vec<3, T, Q> wzy(
const glm::vec<4, T, Q> &v) {
   713         return glm::vec<3, T, Q>(v.w, v.z, v.y);
   717     template<
typename T, qualifier Q>
   718     GLM_INLINE glm::vec<3, T, Q> wzz(
const glm::vec<4, T, Q> &v) {
   719         return glm::vec<3, T, Q>(v.w, v.z, v.z);
   723     template<
typename T, qualifier Q>
   724     GLM_INLINE glm::vec<3, T, Q> wzw(
const glm::vec<4, T, Q> &v) {
   725         return glm::vec<3, T, Q>(v.w, v.z, v.w);
   729     template<
typename T, qualifier Q>
   730     GLM_INLINE glm::vec<3, T, Q> wwx(
const glm::vec<4, T, Q> &v) {
   731         return glm::vec<3, T, Q>(v.w, v.w, v.x);
   735     template<
typename T, qualifier Q>
   736     GLM_INLINE glm::vec<3, T, Q> wwy(
const glm::vec<4, T, Q> &v) {
   737         return glm::vec<3, T, Q>(v.w, v.w, v.y);
   741     template<
typename T, qualifier Q>
   742     GLM_INLINE glm::vec<3, T, Q> wwz(
const glm::vec<4, T, Q> &v) {
   743         return glm::vec<3, T, Q>(v.w, v.w, v.z);
   747     template<
typename T, qualifier Q>
   748     GLM_INLINE glm::vec<3, T, Q> www(
const glm::vec<4, T, Q> &v) {
   749         return glm::vec<3, T, Q>(v.w, v.w, v.w);
   753     template<
typename T, qualifier Q>
   754     GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<1, T, Q> &v) {
   755         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
   758     template<
typename T, qualifier Q>
   759     GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<2, T, Q> &v) {
   760         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
   763     template<
typename T, qualifier Q>
   764     GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<3, T, Q> &v) {
   765         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
   768     template<
typename T, qualifier Q>
   769     GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<4, T, Q> &v) {
   770         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
   774     template<
typename T, qualifier Q>
   775     GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<2, T, Q> &v) {
   776         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
   779     template<
typename T, qualifier Q>
   780     GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<3, T, Q> &v) {
   781         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
   784     template<
typename T, qualifier Q>
   785     GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<4, T, Q> &v) {
   786         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
   790     template<
typename T, qualifier Q>
   791     GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<3, T, Q> &v) {
   792         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
   795     template<
typename T, qualifier Q>
   796     GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<4, T, Q> &v) {
   797         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
   801     template<
typename T, qualifier Q>
   802     GLM_INLINE glm::vec<4, T, Q> xxxw(
const glm::vec<4, T, Q> &v) {
   803         return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
   807     template<
typename T, qualifier Q>
   808     GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<2, T, Q> &v) {
   809         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
   812     template<
typename T, qualifier Q>
   813     GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<3, T, Q> &v) {
   814         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
   817     template<
typename T, qualifier Q>
   818     GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<4, T, Q> &v) {
   819         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
   823     template<
typename T, qualifier Q>
   824     GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<2, T, Q> &v) {
   825         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
   828     template<
typename T, qualifier Q>
   829     GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<3, T, Q> &v) {
   830         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
   833     template<
typename T, qualifier Q>
   834     GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<4, T, Q> &v) {
   835         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
   839     template<
typename T, qualifier Q>
   840     GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<3, T, Q> &v) {
   841         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
   844     template<
typename T, qualifier Q>
   845     GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<4, T, Q> &v) {
   846         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
   850     template<
typename T, qualifier Q>
   851     GLM_INLINE glm::vec<4, T, Q> xxyw(
const glm::vec<4, T, Q> &v) {
   852         return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
   856     template<
typename T, qualifier Q>
   857     GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<3, T, Q> &v) {
   858         return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
   861     template<
typename T, qualifier Q>
   862     GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<4, T, Q> &v) {
   863         return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
   867     template<
typename T, qualifier Q>
   868     GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<3, T, Q> &v) {
   869         return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
   872     template<
typename T, qualifier Q>
   873     GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<4, T, Q> &v) {
   874         return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
   878     template<
typename T, qualifier Q>
   879     GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<3, T, Q> &v) {
   880         return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
   883     template<
typename T, qualifier Q>
   884     GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<4, T, Q> &v) {
   885         return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
   889     template<
typename T, qualifier Q>
   890     GLM_INLINE glm::vec<4, T, Q> xxzw(
const glm::vec<4, T, Q> &v) {
   891         return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
   895     template<
typename T, qualifier Q>
   896     GLM_INLINE glm::vec<4, T, Q> xxwx(
const glm::vec<4, T, Q> &v) {
   897         return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
   901     template<
typename T, qualifier Q>
   902     GLM_INLINE glm::vec<4, T, Q> xxwy(
const glm::vec<4, T, Q> &v) {
   903         return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
   907     template<
typename T, qualifier Q>
   908     GLM_INLINE glm::vec<4, T, Q> xxwz(
const glm::vec<4, T, Q> &v) {
   909         return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
   913     template<
typename T, qualifier Q>
   914     GLM_INLINE glm::vec<4, T, Q> xxww(
const glm::vec<4, T, Q> &v) {
   915         return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
   919     template<
typename T, qualifier Q>
   920     GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<2, T, Q> &v) {
   921         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
   924     template<
typename T, qualifier Q>
   925     GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<3, T, Q> &v) {
   926         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
   929     template<
typename T, qualifier Q>
   930     GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<4, T, Q> &v) {
   931         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
   935     template<
typename T, qualifier Q>
   936     GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<2, T, Q> &v) {
   937         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
   940     template<
typename T, qualifier Q>
   941     GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<3, T, Q> &v) {
   942         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
   945     template<
typename T, qualifier Q>
   946     GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<4, T, Q> &v) {
   947         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
   951     template<
typename T, qualifier Q>
   952     GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<3, T, Q> &v) {
   953         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
   956     template<
typename T, qualifier Q>
   957     GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<4, T, Q> &v) {
   958         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
   962     template<
typename T, qualifier Q>
   963     GLM_INLINE glm::vec<4, T, Q> xyxw(
const glm::vec<4, T, Q> &v) {
   964         return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
   968     template<
typename T, qualifier Q>
   969     GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<2, T, Q> &v) {
   970         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
   973     template<
typename T, qualifier Q>
   974     GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<3, T, Q> &v) {
   975         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
   978     template<
typename T, qualifier Q>
   979     GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<4, T, Q> &v) {
   980         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
   984     template<
typename T, qualifier Q>
   985     GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<2, T, Q> &v) {
   986         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
   989     template<
typename T, qualifier Q>
   990     GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<3, T, Q> &v) {
   991         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
   994     template<
typename T, qualifier Q>
   995     GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<4, T, Q> &v) {
   996         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
  1000     template<
typename T, qualifier Q>
  1001     GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<3, T, Q> &v) {
  1002         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
  1005     template<
typename T, qualifier Q>
  1006     GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<4, T, Q> &v) {
  1007         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
  1011     template<
typename T, qualifier Q>
  1012     GLM_INLINE glm::vec<4, T, Q> xyyw(
const glm::vec<4, T, Q> &v) {
  1013         return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
  1017     template<
typename T, qualifier Q>
  1018     GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<3, T, Q> &v) {
  1019         return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
  1022     template<
typename T, qualifier Q>
  1023     GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<4, T, Q> &v) {
  1024         return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
  1028     template<
typename T, qualifier Q>
  1029     GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<3, T, Q> &v) {
  1030         return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
  1033     template<
typename T, qualifier Q>
  1034     GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<4, T, Q> &v) {
  1035         return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
  1039     template<
typename T, qualifier Q>
  1040     GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<3, T, Q> &v) {
  1041         return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
  1044     template<
typename T, qualifier Q>
  1045     GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<4, T, Q> &v) {
  1046         return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
  1050     template<
typename T, qualifier Q>
  1051     GLM_INLINE glm::vec<4, T, Q> xyzw(
const glm::vec<4, T, Q> &v) {
  1052         return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
  1056     template<
typename T, qualifier Q>
  1057     GLM_INLINE glm::vec<4, T, Q> xywx(
const glm::vec<4, T, Q> &v) {
  1058         return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
  1062     template<
typename T, qualifier Q>
  1063     GLM_INLINE glm::vec<4, T, Q> xywy(
const glm::vec<4, T, Q> &v) {
  1064         return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
  1068     template<
typename T, qualifier Q>
  1069     GLM_INLINE glm::vec<4, T, Q> xywz(
const glm::vec<4, T, Q> &v) {
  1070         return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
  1074     template<
typename T, qualifier Q>
  1075     GLM_INLINE glm::vec<4, T, Q> xyww(
const glm::vec<4, T, Q> &v) {
  1076         return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
  1080     template<
typename T, qualifier Q>
  1081     GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<3, T, Q> &v) {
  1082         return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
  1085     template<
typename T, qualifier Q>
  1086     GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<4, T, Q> &v) {
  1087         return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
  1091     template<
typename T, qualifier Q>
  1092     GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<3, T, Q> &v) {
  1093         return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
  1096     template<
typename T, qualifier Q>
  1097     GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<4, T, Q> &v) {
  1098         return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
  1102     template<
typename T, qualifier Q>
  1103     GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<3, T, Q> &v) {
  1104         return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
  1107     template<
typename T, qualifier Q>
  1108     GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<4, T, Q> &v) {
  1109         return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
  1113     template<
typename T, qualifier Q>
  1114     GLM_INLINE glm::vec<4, T, Q> xzxw(
const glm::vec<4, T, Q> &v) {
  1115         return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
  1119     template<
typename T, qualifier Q>
  1120     GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<3, T, Q> &v) {
  1121         return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
  1124     template<
typename T, qualifier Q>
  1125     GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<4, T, Q> &v) {
  1126         return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
  1130     template<
typename T, qualifier Q>
  1131     GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<3, T, Q> &v) {
  1132         return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
  1135     template<
typename T, qualifier Q>
  1136     GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<4, T, Q> &v) {
  1137         return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
  1141     template<
typename T, qualifier Q>
  1142     GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<3, T, Q> &v) {
  1143         return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
  1146     template<
typename T, qualifier Q>
  1147     GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<4, T, Q> &v) {
  1148         return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
  1152     template<
typename T, qualifier Q>
  1153     GLM_INLINE glm::vec<4, T, Q> xzyw(
const glm::vec<4, T, Q> &v) {
  1154         return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
  1158     template<
typename T, qualifier Q>
  1159     GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<3, T, Q> &v) {
  1160         return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
  1163     template<
typename T, qualifier Q>
  1164     GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<4, T, Q> &v) {
  1165         return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
  1169     template<
typename T, qualifier Q>
  1170     GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<3, T, Q> &v) {
  1171         return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
  1174     template<
typename T, qualifier Q>
  1175     GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<4, T, Q> &v) {
  1176         return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
  1180     template<
typename T, qualifier Q>
  1181     GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<3, T, Q> &v) {
  1182         return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
  1185     template<
typename T, qualifier Q>
  1186     GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<4, T, Q> &v) {
  1187         return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
  1191     template<
typename T, qualifier Q>
  1192     GLM_INLINE glm::vec<4, T, Q> xzzw(
const glm::vec<4, T, Q> &v) {
  1193         return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
  1197     template<
typename T, qualifier Q>
  1198     GLM_INLINE glm::vec<4, T, Q> xzwx(
const glm::vec<4, T, Q> &v) {
  1199         return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
  1203     template<
typename T, qualifier Q>
  1204     GLM_INLINE glm::vec<4, T, Q> xzwy(
const glm::vec<4, T, Q> &v) {
  1205         return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
  1209     template<
typename T, qualifier Q>
  1210     GLM_INLINE glm::vec<4, T, Q> xzwz(
const glm::vec<4, T, Q> &v) {
  1211         return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
  1215     template<
typename T, qualifier Q>
  1216     GLM_INLINE glm::vec<4, T, Q> xzww(
const glm::vec<4, T, Q> &v) {
  1217         return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
  1221     template<
typename T, qualifier Q>
  1222     GLM_INLINE glm::vec<4, T, Q> xwxx(
const glm::vec<4, T, Q> &v) {
  1223         return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
  1227     template<
typename T, qualifier Q>
  1228     GLM_INLINE glm::vec<4, T, Q> xwxy(
const glm::vec<4, T, Q> &v) {
  1229         return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
  1233     template<
typename T, qualifier Q>
  1234     GLM_INLINE glm::vec<4, T, Q> xwxz(
const glm::vec<4, T, Q> &v) {
  1235         return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
  1239     template<
typename T, qualifier Q>
  1240     GLM_INLINE glm::vec<4, T, Q> xwxw(
const glm::vec<4, T, Q> &v) {
  1241         return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
  1245     template<
typename T, qualifier Q>
  1246     GLM_INLINE glm::vec<4, T, Q> xwyx(
const glm::vec<4, T, Q> &v) {
  1247         return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
  1251     template<
typename T, qualifier Q>
  1252     GLM_INLINE glm::vec<4, T, Q> xwyy(
const glm::vec<4, T, Q> &v) {
  1253         return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
  1257     template<
typename T, qualifier Q>
  1258     GLM_INLINE glm::vec<4, T, Q> xwyz(
const glm::vec<4, T, Q> &v) {
  1259         return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
  1263     template<
typename T, qualifier Q>
  1264     GLM_INLINE glm::vec<4, T, Q> xwyw(
const glm::vec<4, T, Q> &v) {
  1265         return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
  1269     template<
typename T, qualifier Q>
  1270     GLM_INLINE glm::vec<4, T, Q> xwzx(
const glm::vec<4, T, Q> &v) {
  1271         return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
  1275     template<
typename T, qualifier Q>
  1276     GLM_INLINE glm::vec<4, T, Q> xwzy(
const glm::vec<4, T, Q> &v) {
  1277         return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
  1281     template<
typename T, qualifier Q>
  1282     GLM_INLINE glm::vec<4, T, Q> xwzz(
const glm::vec<4, T, Q> &v) {
  1283         return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
  1287     template<
typename T, qualifier Q>
  1288     GLM_INLINE glm::vec<4, T, Q> xwzw(
const glm::vec<4, T, Q> &v) {
  1289         return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
  1293     template<
typename T, qualifier Q>
  1294     GLM_INLINE glm::vec<4, T, Q> xwwx(
const glm::vec<4, T, Q> &v) {
  1295         return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
  1299     template<
typename T, qualifier Q>
  1300     GLM_INLINE glm::vec<4, T, Q> xwwy(
const glm::vec<4, T, Q> &v) {
  1301         return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
  1305     template<
typename T, qualifier Q>
  1306     GLM_INLINE glm::vec<4, T, Q> xwwz(
const glm::vec<4, T, Q> &v) {
  1307         return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
  1311     template<
typename T, qualifier Q>
  1312     GLM_INLINE glm::vec<4, T, Q> xwww(
const glm::vec<4, T, Q> &v) {
  1313         return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
  1317     template<
typename T, qualifier Q>
  1318     GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<2, T, Q> &v) {
  1319         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
  1322     template<
typename T, qualifier Q>
  1323     GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<3, T, Q> &v) {
  1324         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
  1327     template<
typename T, qualifier Q>
  1328     GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<4, T, Q> &v) {
  1329         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
  1333     template<
typename T, qualifier Q>
  1334     GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<2, T, Q> &v) {
  1335         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
  1338     template<
typename T, qualifier Q>
  1339     GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<3, T, Q> &v) {
  1340         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
  1343     template<
typename T, qualifier Q>
  1344     GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<4, T, Q> &v) {
  1345         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
  1349     template<
typename T, qualifier Q>
  1350     GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<3, T, Q> &v) {
  1351         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
  1354     template<
typename T, qualifier Q>
  1355     GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<4, T, Q> &v) {
  1356         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
  1360     template<
typename T, qualifier Q>
  1361     GLM_INLINE glm::vec<4, T, Q> yxxw(
const glm::vec<4, T, Q> &v) {
  1362         return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
  1366     template<
typename T, qualifier Q>
  1367     GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<2, T, Q> &v) {
  1368         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
  1371     template<
typename T, qualifier Q>
  1372     GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<3, T, Q> &v) {
  1373         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
  1376     template<
typename T, qualifier Q>
  1377     GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<4, T, Q> &v) {
  1378         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
  1382     template<
typename T, qualifier Q>
  1383     GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<2, T, Q> &v) {
  1384         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
  1387     template<
typename T, qualifier Q>
  1388     GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<3, T, Q> &v) {
  1389         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
  1392     template<
typename T, qualifier Q>
  1393     GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<4, T, Q> &v) {
  1394         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
  1398     template<
typename T, qualifier Q>
  1399     GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<3, T, Q> &v) {
  1400         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
  1403     template<
typename T, qualifier Q>
  1404     GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<4, T, Q> &v) {
  1405         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
  1409     template<
typename T, qualifier Q>
  1410     GLM_INLINE glm::vec<4, T, Q> yxyw(
const glm::vec<4, T, Q> &v) {
  1411         return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
  1415     template<
typename T, qualifier Q>
  1416     GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<3, T, Q> &v) {
  1417         return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
  1420     template<
typename T, qualifier Q>
  1421     GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<4, T, Q> &v) {
  1422         return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
  1426     template<
typename T, qualifier Q>
  1427     GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<3, T, Q> &v) {
  1428         return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
  1431     template<
typename T, qualifier Q>
  1432     GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<4, T, Q> &v) {
  1433         return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
  1437     template<
typename T, qualifier Q>
  1438     GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<3, T, Q> &v) {
  1439         return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
  1442     template<
typename T, qualifier Q>
  1443     GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<4, T, Q> &v) {
  1444         return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
  1448     template<
typename T, qualifier Q>
  1449     GLM_INLINE glm::vec<4, T, Q> yxzw(
const glm::vec<4, T, Q> &v) {
  1450         return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
  1454     template<
typename T, qualifier Q>
  1455     GLM_INLINE glm::vec<4, T, Q> yxwx(
const glm::vec<4, T, Q> &v) {
  1456         return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
  1460     template<
typename T, qualifier Q>
  1461     GLM_INLINE glm::vec<4, T, Q> yxwy(
const glm::vec<4, T, Q> &v) {
  1462         return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
  1466     template<
typename T, qualifier Q>
  1467     GLM_INLINE glm::vec<4, T, Q> yxwz(
const glm::vec<4, T, Q> &v) {
  1468         return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
  1472     template<
typename T, qualifier Q>
  1473     GLM_INLINE glm::vec<4, T, Q> yxww(
const glm::vec<4, T, Q> &v) {
  1474         return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
  1478     template<
typename T, qualifier Q>
  1479     GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<2, T, Q> &v) {
  1480         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
  1483     template<
typename T, qualifier Q>
  1484     GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<3, T, Q> &v) {
  1485         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
  1488     template<
typename T, qualifier Q>
  1489     GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<4, T, Q> &v) {
  1490         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
  1494     template<
typename T, qualifier Q>
  1495     GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<2, T, Q> &v) {
  1496         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
  1499     template<
typename T, qualifier Q>
  1500     GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<3, T, Q> &v) {
  1501         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
  1504     template<
typename T, qualifier Q>
  1505     GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<4, T, Q> &v) {
  1506         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
  1510     template<
typename T, qualifier Q>
  1511     GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<3, T, Q> &v) {
  1512         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
  1515     template<
typename T, qualifier Q>
  1516     GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<4, T, Q> &v) {
  1517         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
  1521     template<
typename T, qualifier Q>
  1522     GLM_INLINE glm::vec<4, T, Q> yyxw(
const glm::vec<4, T, Q> &v) {
  1523         return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
  1527     template<
typename T, qualifier Q>
  1528     GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<2, T, Q> &v) {
  1529         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
  1532     template<
typename T, qualifier Q>
  1533     GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<3, T, Q> &v) {
  1534         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
  1537     template<
typename T, qualifier Q>
  1538     GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<4, T, Q> &v) {
  1539         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
  1543     template<
typename T, qualifier Q>
  1544     GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<2, T, Q> &v) {
  1545         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
  1548     template<
typename T, qualifier Q>
  1549     GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<3, T, Q> &v) {
  1550         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
  1553     template<
typename T, qualifier Q>
  1554     GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<4, T, Q> &v) {
  1555         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
  1559     template<
typename T, qualifier Q>
  1560     GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<3, T, Q> &v) {
  1561         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
  1564     template<
typename T, qualifier Q>
  1565     GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<4, T, Q> &v) {
  1566         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
  1570     template<
typename T, qualifier Q>
  1571     GLM_INLINE glm::vec<4, T, Q> yyyw(
const glm::vec<4, T, Q> &v) {
  1572         return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
  1576     template<
typename T, qualifier Q>
  1577     GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<3, T, Q> &v) {
  1578         return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
  1581     template<
typename T, qualifier Q>
  1582     GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<4, T, Q> &v) {
  1583         return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
  1587     template<
typename T, qualifier Q>
  1588     GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<3, T, Q> &v) {
  1589         return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
  1592     template<
typename T, qualifier Q>
  1593     GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<4, T, Q> &v) {
  1594         return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
  1598     template<
typename T, qualifier Q>
  1599     GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<3, T, Q> &v) {
  1600         return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
  1603     template<
typename T, qualifier Q>
  1604     GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<4, T, Q> &v) {
  1605         return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
  1609     template<
typename T, qualifier Q>
  1610     GLM_INLINE glm::vec<4, T, Q> yyzw(
const glm::vec<4, T, Q> &v) {
  1611         return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
  1615     template<
typename T, qualifier Q>
  1616     GLM_INLINE glm::vec<4, T, Q> yywx(
const glm::vec<4, T, Q> &v) {
  1617         return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
  1621     template<
typename T, qualifier Q>
  1622     GLM_INLINE glm::vec<4, T, Q> yywy(
const glm::vec<4, T, Q> &v) {
  1623         return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
  1627     template<
typename T, qualifier Q>
  1628     GLM_INLINE glm::vec<4, T, Q> yywz(
const glm::vec<4, T, Q> &v) {
  1629         return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
  1633     template<
typename T, qualifier Q>
  1634     GLM_INLINE glm::vec<4, T, Q> yyww(
const glm::vec<4, T, Q> &v) {
  1635         return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
  1639     template<
typename T, qualifier Q>
  1640     GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<3, T, Q> &v) {
  1641         return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
  1644     template<
typename T, qualifier Q>
  1645     GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<4, T, Q> &v) {
  1646         return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
  1650     template<
typename T, qualifier Q>
  1651     GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<3, T, Q> &v) {
  1652         return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
  1655     template<
typename T, qualifier Q>
  1656     GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<4, T, Q> &v) {
  1657         return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
  1661     template<
typename T, qualifier Q>
  1662     GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<3, T, Q> &v) {
  1663         return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
  1666     template<
typename T, qualifier Q>
  1667     GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<4, T, Q> &v) {
  1668         return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
  1672     template<
typename T, qualifier Q>
  1673     GLM_INLINE glm::vec<4, T, Q> yzxw(
const glm::vec<4, T, Q> &v) {
  1674         return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
  1678     template<
typename T, qualifier Q>
  1679     GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<3, T, Q> &v) {
  1680         return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
  1683     template<
typename T, qualifier Q>
  1684     GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<4, T, Q> &v) {
  1685         return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
  1689     template<
typename T, qualifier Q>
  1690     GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<3, T, Q> &v) {
  1691         return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
  1694     template<
typename T, qualifier Q>
  1695     GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<4, T, Q> &v) {
  1696         return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
  1700     template<
typename T, qualifier Q>
  1701     GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<3, T, Q> &v) {
  1702         return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
  1705     template<
typename T, qualifier Q>
  1706     GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<4, T, Q> &v) {
  1707         return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
  1711     template<
typename T, qualifier Q>
  1712     GLM_INLINE glm::vec<4, T, Q> yzyw(
const glm::vec<4, T, Q> &v) {
  1713         return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
  1717     template<
typename T, qualifier Q>
  1718     GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<3, T, Q> &v) {
  1719         return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
  1722     template<
typename T, qualifier Q>
  1723     GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<4, T, Q> &v) {
  1724         return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
  1728     template<
typename T, qualifier Q>
  1729     GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<3, T, Q> &v) {
  1730         return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
  1733     template<
typename T, qualifier Q>
  1734     GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<4, T, Q> &v) {
  1735         return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
  1739     template<
typename T, qualifier Q>
  1740     GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<3, T, Q> &v) {
  1741         return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
  1744     template<
typename T, qualifier Q>
  1745     GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<4, T, Q> &v) {
  1746         return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
  1750     template<
typename T, qualifier Q>
  1751     GLM_INLINE glm::vec<4, T, Q> yzzw(
const glm::vec<4, T, Q> &v) {
  1752         return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
  1756     template<
typename T, qualifier Q>
  1757     GLM_INLINE glm::vec<4, T, Q> yzwx(
const glm::vec<4, T, Q> &v) {
  1758         return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
  1762     template<
typename T, qualifier Q>
  1763     GLM_INLINE glm::vec<4, T, Q> yzwy(
const glm::vec<4, T, Q> &v) {
  1764         return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
  1768     template<
typename T, qualifier Q>
  1769     GLM_INLINE glm::vec<4, T, Q> yzwz(
const glm::vec<4, T, Q> &v) {
  1770         return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
  1774     template<
typename T, qualifier Q>
  1775     GLM_INLINE glm::vec<4, T, Q> yzww(
const glm::vec<4, T, Q> &v) {
  1776         return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
  1780     template<
typename T, qualifier Q>
  1781     GLM_INLINE glm::vec<4, T, Q> ywxx(
const glm::vec<4, T, Q> &v) {
  1782         return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
  1786     template<
typename T, qualifier Q>
  1787     GLM_INLINE glm::vec<4, T, Q> ywxy(
const glm::vec<4, T, Q> &v) {
  1788         return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
  1792     template<
typename T, qualifier Q>
  1793     GLM_INLINE glm::vec<4, T, Q> ywxz(
const glm::vec<4, T, Q> &v) {
  1794         return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
  1798     template<
typename T, qualifier Q>
  1799     GLM_INLINE glm::vec<4, T, Q> ywxw(
const glm::vec<4, T, Q> &v) {
  1800         return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
  1804     template<
typename T, qualifier Q>
  1805     GLM_INLINE glm::vec<4, T, Q> ywyx(
const glm::vec<4, T, Q> &v) {
  1806         return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
  1810     template<
typename T, qualifier Q>
  1811     GLM_INLINE glm::vec<4, T, Q> ywyy(
const glm::vec<4, T, Q> &v) {
  1812         return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
  1816     template<
typename T, qualifier Q>
  1817     GLM_INLINE glm::vec<4, T, Q> ywyz(
const glm::vec<4, T, Q> &v) {
  1818         return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
  1822     template<
typename T, qualifier Q>
  1823     GLM_INLINE glm::vec<4, T, Q> ywyw(
const glm::vec<4, T, Q> &v) {
  1824         return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
  1828     template<
typename T, qualifier Q>
  1829     GLM_INLINE glm::vec<4, T, Q> ywzx(
const glm::vec<4, T, Q> &v) {
  1830         return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
  1834     template<
typename T, qualifier Q>
  1835     GLM_INLINE glm::vec<4, T, Q> ywzy(
const glm::vec<4, T, Q> &v) {
  1836         return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
  1840     template<
typename T, qualifier Q>
  1841     GLM_INLINE glm::vec<4, T, Q> ywzz(
const glm::vec<4, T, Q> &v) {
  1842         return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
  1846     template<
typename T, qualifier Q>
  1847     GLM_INLINE glm::vec<4, T, Q> ywzw(
const glm::vec<4, T, Q> &v) {
  1848         return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
  1852     template<
typename T, qualifier Q>
  1853     GLM_INLINE glm::vec<4, T, Q> ywwx(
const glm::vec<4, T, Q> &v) {
  1854         return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
  1858     template<
typename T, qualifier Q>
  1859     GLM_INLINE glm::vec<4, T, Q> ywwy(
const glm::vec<4, T, Q> &v) {
  1860         return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
  1864     template<
typename T, qualifier Q>
  1865     GLM_INLINE glm::vec<4, T, Q> ywwz(
const glm::vec<4, T, Q> &v) {
  1866         return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
  1870     template<
typename T, qualifier Q>
  1871     GLM_INLINE glm::vec<4, T, Q> ywww(
const glm::vec<4, T, Q> &v) {
  1872         return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
  1876     template<
typename T, qualifier Q>
  1877     GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<3, T, Q> &v) {
  1878         return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
  1881     template<
typename T, qualifier Q>
  1882     GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<4, T, Q> &v) {
  1883         return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
  1887     template<
typename T, qualifier Q>
  1888     GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<3, T, Q> &v) {
  1889         return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
  1892     template<
typename T, qualifier Q>
  1893     GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<4, T, Q> &v) {
  1894         return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
  1898     template<
typename T, qualifier Q>
  1899     GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<3, T, Q> &v) {
  1900         return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
  1903     template<
typename T, qualifier Q>
  1904     GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<4, T, Q> &v) {
  1905         return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
  1909     template<
typename T, qualifier Q>
  1910     GLM_INLINE glm::vec<4, T, Q> zxxw(
const glm::vec<4, T, Q> &v) {
  1911         return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
  1915     template<
typename T, qualifier Q>
  1916     GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<3, T, Q> &v) {
  1917         return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
  1920     template<
typename T, qualifier Q>
  1921     GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<4, T, Q> &v) {
  1922         return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
  1926     template<
typename T, qualifier Q>
  1927     GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<3, T, Q> &v) {
  1928         return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
  1931     template<
typename T, qualifier Q>
  1932     GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<4, T, Q> &v) {
  1933         return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
  1937     template<
typename T, qualifier Q>
  1938     GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<3, T, Q> &v) {
  1939         return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
  1942     template<
typename T, qualifier Q>
  1943     GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<4, T, Q> &v) {
  1944         return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
  1948     template<
typename T, qualifier Q>
  1949     GLM_INLINE glm::vec<4, T, Q> zxyw(
const glm::vec<4, T, Q> &v) {
  1950         return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
  1954     template<
typename T, qualifier Q>
  1955     GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<3, T, Q> &v) {
  1956         return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
  1959     template<
typename T, qualifier Q>
  1960     GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<4, T, Q> &v) {
  1961         return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
  1965     template<
typename T, qualifier Q>
  1966     GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<3, T, Q> &v) {
  1967         return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
  1970     template<
typename T, qualifier Q>
  1971     GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<4, T, Q> &v) {
  1972         return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
  1976     template<
typename T, qualifier Q>
  1977     GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<3, T, Q> &v) {
  1978         return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
  1981     template<
typename T, qualifier Q>
  1982     GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<4, T, Q> &v) {
  1983         return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
  1987     template<
typename T, qualifier Q>
  1988     GLM_INLINE glm::vec<4, T, Q> zxzw(
const glm::vec<4, T, Q> &v) {
  1989         return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
  1993     template<
typename T, qualifier Q>
  1994     GLM_INLINE glm::vec<4, T, Q> zxwx(
const glm::vec<4, T, Q> &v) {
  1995         return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
  1999     template<
typename T, qualifier Q>
  2000     GLM_INLINE glm::vec<4, T, Q> zxwy(
const glm::vec<4, T, Q> &v) {
  2001         return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
  2005     template<
typename T, qualifier Q>
  2006     GLM_INLINE glm::vec<4, T, Q> zxwz(
const glm::vec<4, T, Q> &v) {
  2007         return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
  2011     template<
typename T, qualifier Q>
  2012     GLM_INLINE glm::vec<4, T, Q> zxww(
const glm::vec<4, T, Q> &v) {
  2013         return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
  2017     template<
typename T, qualifier Q>
  2018     GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<3, T, Q> &v) {
  2019         return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
  2022     template<
typename T, qualifier Q>
  2023     GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<4, T, Q> &v) {
  2024         return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
  2028     template<
typename T, qualifier Q>
  2029     GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<3, T, Q> &v) {
  2030         return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
  2033     template<
typename T, qualifier Q>
  2034     GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<4, T, Q> &v) {
  2035         return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
  2039     template<
typename T, qualifier Q>
  2040     GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<3, T, Q> &v) {
  2041         return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
  2044     template<
typename T, qualifier Q>
  2045     GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<4, T, Q> &v) {
  2046         return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
  2050     template<
typename T, qualifier Q>
  2051     GLM_INLINE glm::vec<4, T, Q> zyxw(
const glm::vec<4, T, Q> &v) {
  2052         return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
  2056     template<
typename T, qualifier Q>
  2057     GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<3, T, Q> &v) {
  2058         return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
  2061     template<
typename T, qualifier Q>
  2062     GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<4, T, Q> &v) {
  2063         return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
  2067     template<
typename T, qualifier Q>
  2068     GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<3, T, Q> &v) {
  2069         return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
  2072     template<
typename T, qualifier Q>
  2073     GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<4, T, Q> &v) {
  2074         return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
  2078     template<
typename T, qualifier Q>
  2079     GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<3, T, Q> &v) {
  2080         return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
  2083     template<
typename T, qualifier Q>
  2084     GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<4, T, Q> &v) {
  2085         return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
  2089     template<
typename T, qualifier Q>
  2090     GLM_INLINE glm::vec<4, T, Q> zyyw(
const glm::vec<4, T, Q> &v) {
  2091         return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
  2095     template<
typename T, qualifier Q>
  2096     GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<3, T, Q> &v) {
  2097         return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
  2100     template<
typename T, qualifier Q>
  2101     GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<4, T, Q> &v) {
  2102         return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
  2106     template<
typename T, qualifier Q>
  2107     GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<3, T, Q> &v) {
  2108         return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
  2111     template<
typename T, qualifier Q>
  2112     GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<4, T, Q> &v) {
  2113         return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
  2117     template<
typename T, qualifier Q>
  2118     GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<3, T, Q> &v) {
  2119         return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
  2122     template<
typename T, qualifier Q>
  2123     GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<4, T, Q> &v) {
  2124         return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
  2128     template<
typename T, qualifier Q>
  2129     GLM_INLINE glm::vec<4, T, Q> zyzw(
const glm::vec<4, T, Q> &v) {
  2130         return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
  2134     template<
typename T, qualifier Q>
  2135     GLM_INLINE glm::vec<4, T, Q> zywx(
const glm::vec<4, T, Q> &v) {
  2136         return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
  2140     template<
typename T, qualifier Q>
  2141     GLM_INLINE glm::vec<4, T, Q> zywy(
const glm::vec<4, T, Q> &v) {
  2142         return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
  2146     template<
typename T, qualifier Q>
  2147     GLM_INLINE glm::vec<4, T, Q> zywz(
const glm::vec<4, T, Q> &v) {
  2148         return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
  2152     template<
typename T, qualifier Q>
  2153     GLM_INLINE glm::vec<4, T, Q> zyww(
const glm::vec<4, T, Q> &v) {
  2154         return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
  2158     template<
typename T, qualifier Q>
  2159     GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<3, T, Q> &v) {
  2160         return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
  2163     template<
typename T, qualifier Q>
  2164     GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<4, T, Q> &v) {
  2165         return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
  2169     template<
typename T, qualifier Q>
  2170     GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<3, T, Q> &v) {
  2171         return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
  2174     template<
typename T, qualifier Q>
  2175     GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<4, T, Q> &v) {
  2176         return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
  2180     template<
typename T, qualifier Q>
  2181     GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<3, T, Q> &v) {
  2182         return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
  2185     template<
typename T, qualifier Q>
  2186     GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<4, T, Q> &v) {
  2187         return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
  2191     template<
typename T, qualifier Q>
  2192     GLM_INLINE glm::vec<4, T, Q> zzxw(
const glm::vec<4, T, Q> &v) {
  2193         return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
  2197     template<
typename T, qualifier Q>
  2198     GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<3, T, Q> &v) {
  2199         return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
  2202     template<
typename T, qualifier Q>
  2203     GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<4, T, Q> &v) {
  2204         return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
  2208     template<
typename T, qualifier Q>
  2209     GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<3, T, Q> &v) {
  2210         return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
  2213     template<
typename T, qualifier Q>
  2214     GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<4, T, Q> &v) {
  2215         return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
  2219     template<
typename T, qualifier Q>
  2220     GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<3, T, Q> &v) {
  2221         return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
  2224     template<
typename T, qualifier Q>
  2225     GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<4, T, Q> &v) {
  2226         return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
  2230     template<
typename T, qualifier Q>
  2231     GLM_INLINE glm::vec<4, T, Q> zzyw(
const glm::vec<4, T, Q> &v) {
  2232         return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
  2236     template<
typename T, qualifier Q>
  2237     GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<3, T, Q> &v) {
  2238         return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
  2241     template<
typename T, qualifier Q>
  2242     GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<4, T, Q> &v) {
  2243         return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
  2247     template<
typename T, qualifier Q>
  2248     GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<3, T, Q> &v) {
  2249         return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
  2252     template<
typename T, qualifier Q>
  2253     GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<4, T, Q> &v) {
  2254         return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
  2258     template<
typename T, qualifier Q>
  2259     GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<3, T, Q> &v) {
  2260         return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
  2263     template<
typename T, qualifier Q>
  2264     GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<4, T, Q> &v) {
  2265         return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
  2269     template<
typename T, qualifier Q>
  2270     GLM_INLINE glm::vec<4, T, Q> zzzw(
const glm::vec<4, T, Q> &v) {
  2271         return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
  2275     template<
typename T, qualifier Q>
  2276     GLM_INLINE glm::vec<4, T, Q> zzwx(
const glm::vec<4, T, Q> &v) {
  2277         return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
  2281     template<
typename T, qualifier Q>
  2282     GLM_INLINE glm::vec<4, T, Q> zzwy(
const glm::vec<4, T, Q> &v) {
  2283         return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
  2287     template<
typename T, qualifier Q>
  2288     GLM_INLINE glm::vec<4, T, Q> zzwz(
const glm::vec<4, T, Q> &v) {
  2289         return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
  2293     template<
typename T, qualifier Q>
  2294     GLM_INLINE glm::vec<4, T, Q> zzww(
const glm::vec<4, T, Q> &v) {
  2295         return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
  2299     template<
typename T, qualifier Q>
  2300     GLM_INLINE glm::vec<4, T, Q> zwxx(
const glm::vec<4, T, Q> &v) {
  2301         return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
  2305     template<
typename T, qualifier Q>
  2306     GLM_INLINE glm::vec<4, T, Q> zwxy(
const glm::vec<4, T, Q> &v) {
  2307         return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
  2311     template<
typename T, qualifier Q>
  2312     GLM_INLINE glm::vec<4, T, Q> zwxz(
const glm::vec<4, T, Q> &v) {
  2313         return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
  2317     template<
typename T, qualifier Q>
  2318     GLM_INLINE glm::vec<4, T, Q> zwxw(
const glm::vec<4, T, Q> &v) {
  2319         return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
  2323     template<
typename T, qualifier Q>
  2324     GLM_INLINE glm::vec<4, T, Q> zwyx(
const glm::vec<4, T, Q> &v) {
  2325         return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
  2329     template<
typename T, qualifier Q>
  2330     GLM_INLINE glm::vec<4, T, Q> zwyy(
const glm::vec<4, T, Q> &v) {
  2331         return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
  2335     template<
typename T, qualifier Q>
  2336     GLM_INLINE glm::vec<4, T, Q> zwyz(
const glm::vec<4, T, Q> &v) {
  2337         return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
  2341     template<
typename T, qualifier Q>
  2342     GLM_INLINE glm::vec<4, T, Q> zwyw(
const glm::vec<4, T, Q> &v) {
  2343         return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
  2347     template<
typename T, qualifier Q>
  2348     GLM_INLINE glm::vec<4, T, Q> zwzx(
const glm::vec<4, T, Q> &v) {
  2349         return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
  2353     template<
typename T, qualifier Q>
  2354     GLM_INLINE glm::vec<4, T, Q> zwzy(
const glm::vec<4, T, Q> &v) {
  2355         return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
  2359     template<
typename T, qualifier Q>
  2360     GLM_INLINE glm::vec<4, T, Q> zwzz(
const glm::vec<4, T, Q> &v) {
  2361         return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
  2365     template<
typename T, qualifier Q>
  2366     GLM_INLINE glm::vec<4, T, Q> zwzw(
const glm::vec<4, T, Q> &v) {
  2367         return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
  2371     template<
typename T, qualifier Q>
  2372     GLM_INLINE glm::vec<4, T, Q> zwwx(
const glm::vec<4, T, Q> &v) {
  2373         return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
  2377     template<
typename T, qualifier Q>
  2378     GLM_INLINE glm::vec<4, T, Q> zwwy(
const glm::vec<4, T, Q> &v) {
  2379         return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
  2383     template<
typename T, qualifier Q>
  2384     GLM_INLINE glm::vec<4, T, Q> zwwz(
const glm::vec<4, T, Q> &v) {
  2385         return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
  2389     template<
typename T, qualifier Q>
  2390     GLM_INLINE glm::vec<4, T, Q> zwww(
const glm::vec<4, T, Q> &v) {
  2391         return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
  2395     template<
typename T, qualifier Q>
  2396     GLM_INLINE glm::vec<4, T, Q> wxxx(
const glm::vec<4, T, Q> &v) {
  2397         return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
  2401     template<
typename T, qualifier Q>
  2402     GLM_INLINE glm::vec<4, T, Q> wxxy(
const glm::vec<4, T, Q> &v) {
  2403         return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
  2407     template<
typename T, qualifier Q>
  2408     GLM_INLINE glm::vec<4, T, Q> wxxz(
const glm::vec<4, T, Q> &v) {
  2409         return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
  2413     template<
typename T, qualifier Q>
  2414     GLM_INLINE glm::vec<4, T, Q> wxxw(
const glm::vec<4, T, Q> &v) {
  2415         return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
  2419     template<
typename T, qualifier Q>
  2420     GLM_INLINE glm::vec<4, T, Q> wxyx(
const glm::vec<4, T, Q> &v) {
  2421         return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
  2425     template<
typename T, qualifier Q>
  2426     GLM_INLINE glm::vec<4, T, Q> wxyy(
const glm::vec<4, T, Q> &v) {
  2427         return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
  2431     template<
typename T, qualifier Q>
  2432     GLM_INLINE glm::vec<4, T, Q> wxyz(
const glm::vec<4, T, Q> &v) {
  2433         return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
  2437     template<
typename T, qualifier Q>
  2438     GLM_INLINE glm::vec<4, T, Q> wxyw(
const glm::vec<4, T, Q> &v) {
  2439         return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
  2443     template<
typename T, qualifier Q>
  2444     GLM_INLINE glm::vec<4, T, Q> wxzx(
const glm::vec<4, T, Q> &v) {
  2445         return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
  2449     template<
typename T, qualifier Q>
  2450     GLM_INLINE glm::vec<4, T, Q> wxzy(
const glm::vec<4, T, Q> &v) {
  2451         return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
  2455     template<
typename T, qualifier Q>
  2456     GLM_INLINE glm::vec<4, T, Q> wxzz(
const glm::vec<4, T, Q> &v) {
  2457         return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
  2461     template<
typename T, qualifier Q>
  2462     GLM_INLINE glm::vec<4, T, Q> wxzw(
const glm::vec<4, T, Q> &v) {
  2463         return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
  2467     template<
typename T, qualifier Q>
  2468     GLM_INLINE glm::vec<4, T, Q> wxwx(
const glm::vec<4, T, Q> &v) {
  2469         return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
  2473     template<
typename T, qualifier Q>
  2474     GLM_INLINE glm::vec<4, T, Q> wxwy(
const glm::vec<4, T, Q> &v) {
  2475         return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
  2479     template<
typename T, qualifier Q>
  2480     GLM_INLINE glm::vec<4, T, Q> wxwz(
const glm::vec<4, T, Q> &v) {
  2481         return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
  2485     template<
typename T, qualifier Q>
  2486     GLM_INLINE glm::vec<4, T, Q> wxww(
const glm::vec<4, T, Q> &v) {
  2487         return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
  2491     template<
typename T, qualifier Q>
  2492     GLM_INLINE glm::vec<4, T, Q> wyxx(
const glm::vec<4, T, Q> &v) {
  2493         return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
  2497     template<
typename T, qualifier Q>
  2498     GLM_INLINE glm::vec<4, T, Q> wyxy(
const glm::vec<4, T, Q> &v) {
  2499         return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
  2503     template<
typename T, qualifier Q>
  2504     GLM_INLINE glm::vec<4, T, Q> wyxz(
const glm::vec<4, T, Q> &v) {
  2505         return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
  2509     template<
typename T, qualifier Q>
  2510     GLM_INLINE glm::vec<4, T, Q> wyxw(
const glm::vec<4, T, Q> &v) {
  2511         return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
  2515     template<
typename T, qualifier Q>
  2516     GLM_INLINE glm::vec<4, T, Q> wyyx(
const glm::vec<4, T, Q> &v) {
  2517         return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
  2521     template<
typename T, qualifier Q>
  2522     GLM_INLINE glm::vec<4, T, Q> wyyy(
const glm::vec<4, T, Q> &v) {
  2523         return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
  2527     template<
typename T, qualifier Q>
  2528     GLM_INLINE glm::vec<4, T, Q> wyyz(
const glm::vec<4, T, Q> &v) {
  2529         return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
  2533     template<
typename T, qualifier Q>
  2534     GLM_INLINE glm::vec<4, T, Q> wyyw(
const glm::vec<4, T, Q> &v) {
  2535         return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
  2539     template<
typename T, qualifier Q>
  2540     GLM_INLINE glm::vec<4, T, Q> wyzx(
const glm::vec<4, T, Q> &v) {
  2541         return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
  2545     template<
typename T, qualifier Q>
  2546     GLM_INLINE glm::vec<4, T, Q> wyzy(
const glm::vec<4, T, Q> &v) {
  2547         return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
  2551     template<
typename T, qualifier Q>
  2552     GLM_INLINE glm::vec<4, T, Q> wyzz(
const glm::vec<4, T, Q> &v) {
  2553         return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
  2557     template<
typename T, qualifier Q>
  2558     GLM_INLINE glm::vec<4, T, Q> wyzw(
const glm::vec<4, T, Q> &v) {
  2559         return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
  2563     template<
typename T, qualifier Q>
  2564     GLM_INLINE glm::vec<4, T, Q> wywx(
const glm::vec<4, T, Q> &v) {
  2565         return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
  2569     template<
typename T, qualifier Q>
  2570     GLM_INLINE glm::vec<4, T, Q> wywy(
const glm::vec<4, T, Q> &v) {
  2571         return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
  2575     template<
typename T, qualifier Q>
  2576     GLM_INLINE glm::vec<4, T, Q> wywz(
const glm::vec<4, T, Q> &v) {
  2577         return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
  2581     template<
typename T, qualifier Q>
  2582     GLM_INLINE glm::vec<4, T, Q> wyww(
const glm::vec<4, T, Q> &v) {
  2583         return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
  2587     template<
typename T, qualifier Q>
  2588     GLM_INLINE glm::vec<4, T, Q> wzxx(
const glm::vec<4, T, Q> &v) {
  2589         return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
  2593     template<
typename T, qualifier Q>
  2594     GLM_INLINE glm::vec<4, T, Q> wzxy(
const glm::vec<4, T, Q> &v) {
  2595         return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
  2599     template<
typename T, qualifier Q>
  2600     GLM_INLINE glm::vec<4, T, Q> wzxz(
const glm::vec<4, T, Q> &v) {
  2601         return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
  2605     template<
typename T, qualifier Q>
  2606     GLM_INLINE glm::vec<4, T, Q> wzxw(
const glm::vec<4, T, Q> &v) {
  2607         return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
  2611     template<
typename T, qualifier Q>
  2612     GLM_INLINE glm::vec<4, T, Q> wzyx(
const glm::vec<4, T, Q> &v) {
  2613         return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
  2617     template<
typename T, qualifier Q>
  2618     GLM_INLINE glm::vec<4, T, Q> wzyy(
const glm::vec<4, T, Q> &v) {
  2619         return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
  2623     template<
typename T, qualifier Q>
  2624     GLM_INLINE glm::vec<4, T, Q> wzyz(
const glm::vec<4, T, Q> &v) {
  2625         return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
  2629     template<
typename T, qualifier Q>
  2630     GLM_INLINE glm::vec<4, T, Q> wzyw(
const glm::vec<4, T, Q> &v) {
  2631         return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
  2635     template<
typename T, qualifier Q>
  2636     GLM_INLINE glm::vec<4, T, Q> wzzx(
const glm::vec<4, T, Q> &v) {
  2637         return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
  2641     template<
typename T, qualifier Q>
  2642     GLM_INLINE glm::vec<4, T, Q> wzzy(
const glm::vec<4, T, Q> &v) {
  2643         return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
  2647     template<
typename T, qualifier Q>
  2648     GLM_INLINE glm::vec<4, T, Q> wzzz(
const glm::vec<4, T, Q> &v) {
  2649         return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
  2653     template<
typename T, qualifier Q>
  2654     GLM_INLINE glm::vec<4, T, Q> wzzw(
const glm::vec<4, T, Q> &v) {
  2655         return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
  2659     template<
typename T, qualifier Q>
  2660     GLM_INLINE glm::vec<4, T, Q> wzwx(
const glm::vec<4, T, Q> &v) {
  2661         return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
  2665     template<
typename T, qualifier Q>
  2666     GLM_INLINE glm::vec<4, T, Q> wzwy(
const glm::vec<4, T, Q> &v) {
  2667         return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
  2671     template<
typename T, qualifier Q>
  2672     GLM_INLINE glm::vec<4, T, Q> wzwz(
const glm::vec<4, T, Q> &v) {
  2673         return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
  2677     template<
typename T, qualifier Q>
  2678     GLM_INLINE glm::vec<4, T, Q> wzww(
const glm::vec<4, T, Q> &v) {
  2679         return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
  2683     template<
typename T, qualifier Q>
  2684     GLM_INLINE glm::vec<4, T, Q> wwxx(
const glm::vec<4, T, Q> &v) {
  2685         return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
  2689     template<
typename T, qualifier Q>
  2690     GLM_INLINE glm::vec<4, T, Q> wwxy(
const glm::vec<4, T, Q> &v) {
  2691         return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
  2695     template<
typename T, qualifier Q>
  2696     GLM_INLINE glm::vec<4, T, Q> wwxz(
const glm::vec<4, T, Q> &v) {
  2697         return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
  2701     template<
typename T, qualifier Q>
  2702     GLM_INLINE glm::vec<4, T, Q> wwxw(
const glm::vec<4, T, Q> &v) {
  2703         return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
  2707     template<
typename T, qualifier Q>
  2708     GLM_INLINE glm::vec<4, T, Q> wwyx(
const glm::vec<4, T, Q> &v) {
  2709         return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
  2713     template<
typename T, qualifier Q>
  2714     GLM_INLINE glm::vec<4, T, Q> wwyy(
const glm::vec<4, T, Q> &v) {
  2715         return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
  2719     template<
typename T, qualifier Q>
  2720     GLM_INLINE glm::vec<4, T, Q> wwyz(
const glm::vec<4, T, Q> &v) {
  2721         return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
  2725     template<
typename T, qualifier Q>
  2726     GLM_INLINE glm::vec<4, T, Q> wwyw(
const glm::vec<4, T, Q> &v) {
  2727         return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
  2731     template<
typename T, qualifier Q>
  2732     GLM_INLINE glm::vec<4, T, Q> wwzx(
const glm::vec<4, T, Q> &v) {
  2733         return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
  2737     template<
typename T, qualifier Q>
  2738     GLM_INLINE glm::vec<4, T, Q> wwzy(
const glm::vec<4, T, Q> &v) {
  2739         return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
  2743     template<
typename T, qualifier Q>
  2744     GLM_INLINE glm::vec<4, T, Q> wwzz(
const glm::vec<4, T, Q> &v) {
  2745         return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
  2749     template<
typename T, qualifier Q>
  2750     GLM_INLINE glm::vec<4, T, Q> wwzw(
const glm::vec<4, T, Q> &v) {
  2751         return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
  2755     template<
typename T, qualifier Q>
  2756     GLM_INLINE glm::vec<4, T, Q> wwwx(
const glm::vec<4, T, Q> &v) {
  2757         return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
  2761     template<
typename T, qualifier Q>
  2762     GLM_INLINE glm::vec<4, T, Q> wwwy(
const glm::vec<4, T, Q> &v) {
  2763         return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
  2767     template<
typename T, qualifier Q>
  2768     GLM_INLINE glm::vec<4, T, Q> wwwz(
const glm::vec<4, T, Q> &v) {
  2769         return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
  2773     template<
typename T, qualifier Q>
  2774     GLM_INLINE glm::vec<4, T, Q> wwww(
const glm::vec<4, T, Q> &v) {
  2775         return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);