17 #if GLM_MESSAGES == GLM_ENABLE && !defined(GLM_EXT_INCLUDED) 
   18 #       ifndef GLM_ENABLE_EXPERIMENTAL 
   19 #               pragma message("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.") 
   21 #               pragma message("GLM: GLM_GTX_vec_swizzle extension included") 
   27         template<
typename T, qualifier Q>
 
   28         GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<1, T, Q> &v) {
 
   29                 return glm::vec<2, T, Q>(v.x, v.x);
 
   32         template<
typename T, qualifier Q>
 
   33         GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<2, T, Q> &v) {
 
   34                 return glm::vec<2, T, Q>(v.x, v.x);
 
   37         template<
typename T, qualifier Q>
 
   38         GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<3, T, Q> &v) {
 
   39                 return glm::vec<2, T, Q>(v.x, v.x);
 
   42         template<
typename T, qualifier Q>
 
   43         GLM_INLINE glm::vec<2, T, Q> xx(
const glm::vec<4, T, Q> &v) {
 
   44                 return glm::vec<2, T, Q>(v.x, v.x);
 
   48         template<
typename T, qualifier Q>
 
   49         GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<2, T, Q> &v) {
 
   50                 return glm::vec<2, T, Q>(v.x, v.y);
 
   53         template<
typename T, qualifier Q>
 
   54         GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<3, T, Q> &v) {
 
   55                 return glm::vec<2, T, Q>(v.x, v.y);
 
   58         template<
typename T, qualifier Q>
 
   59         GLM_INLINE glm::vec<2, T, Q> xy(
const glm::vec<4, T, Q> &v) {
 
   60                 return glm::vec<2, T, Q>(v.x, v.y);
 
   64         template<
typename T, qualifier Q>
 
   65         GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<3, T, Q> &v) {
 
   66                 return glm::vec<2, T, Q>(v.x, v.z);
 
   69         template<
typename T, qualifier Q>
 
   70         GLM_INLINE glm::vec<2, T, Q> xz(
const glm::vec<4, T, Q> &v) {
 
   71                 return glm::vec<2, T, Q>(v.x, v.z);
 
   75         template<
typename T, qualifier Q>
 
   76         GLM_INLINE glm::vec<2, T, Q> xw(
const glm::vec<4, T, Q> &v) {
 
   77                 return glm::vec<2, T, Q>(v.x, v.w);
 
   81         template<
typename T, qualifier Q>
 
   82         GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<2, T, Q> &v) {
 
   83                 return glm::vec<2, T, Q>(v.y, v.x);
 
   86         template<
typename T, qualifier Q>
 
   87         GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<3, T, Q> &v) {
 
   88                 return glm::vec<2, T, Q>(v.y, v.x);
 
   91         template<
typename T, qualifier Q>
 
   92         GLM_INLINE glm::vec<2, T, Q> yx(
const glm::vec<4, T, Q> &v) {
 
   93                 return glm::vec<2, T, Q>(v.y, v.x);
 
   97         template<
typename T, qualifier Q>
 
   98         GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<2, T, Q> &v) {
 
   99                 return glm::vec<2, T, Q>(v.y, v.y);
 
  102         template<
typename T, qualifier Q>
 
  103         GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<3, T, Q> &v) {
 
  104                 return glm::vec<2, T, Q>(v.y, v.y);
 
  107         template<
typename T, qualifier Q>
 
  108         GLM_INLINE glm::vec<2, T, Q> yy(
const glm::vec<4, T, Q> &v) {
 
  109                 return glm::vec<2, T, Q>(v.y, v.y);
 
  113         template<
typename T, qualifier Q>
 
  114         GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<3, T, Q> &v) {
 
  115                 return glm::vec<2, T, Q>(v.y, v.z);
 
  118         template<
typename T, qualifier Q>
 
  119         GLM_INLINE glm::vec<2, T, Q> yz(
const glm::vec<4, T, Q> &v) {
 
  120                 return glm::vec<2, T, Q>(v.y, v.z);
 
  124         template<
typename T, qualifier Q>
 
  125         GLM_INLINE glm::vec<2, T, Q> yw(
const glm::vec<4, T, Q> &v) {
 
  126                 return glm::vec<2, T, Q>(v.y, v.w);
 
  130         template<
typename T, qualifier Q>
 
  131         GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<3, T, Q> &v) {
 
  132                 return glm::vec<2, T, Q>(v.z, v.x);
 
  135         template<
typename T, qualifier Q>
 
  136         GLM_INLINE glm::vec<2, T, Q> zx(
const glm::vec<4, T, Q> &v) {
 
  137                 return glm::vec<2, T, Q>(v.z, v.x);
 
  141         template<
typename T, qualifier Q>
 
  142         GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<3, T, Q> &v) {
 
  143                 return glm::vec<2, T, Q>(v.z, v.y);
 
  146         template<
typename T, qualifier Q>
 
  147         GLM_INLINE glm::vec<2, T, Q> zy(
const glm::vec<4, T, Q> &v) {
 
  148                 return glm::vec<2, T, Q>(v.z, v.y);
 
  152         template<
typename T, qualifier Q>
 
  153         GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<3, T, Q> &v) {
 
  154                 return glm::vec<2, T, Q>(v.z, v.z);
 
  157         template<
typename T, qualifier Q>
 
  158         GLM_INLINE glm::vec<2, T, Q> zz(
const glm::vec<4, T, Q> &v) {
 
  159                 return glm::vec<2, T, Q>(v.z, v.z);
 
  163         template<
typename T, qualifier Q>
 
  164         GLM_INLINE glm::vec<2, T, Q> zw(
const glm::vec<4, T, Q> &v) {
 
  165                 return glm::vec<2, T, Q>(v.z, v.w);
 
  169         template<
typename T, qualifier Q>
 
  170         GLM_INLINE glm::vec<2, T, Q> wx(
const glm::vec<4, T, Q> &v) {
 
  171                 return glm::vec<2, T, Q>(v.w, v.x);
 
  175         template<
typename T, qualifier Q>
 
  176         GLM_INLINE glm::vec<2, T, Q> wy(
const glm::vec<4, T, Q> &v) {
 
  177                 return glm::vec<2, T, Q>(v.w, v.y);
 
  181         template<
typename T, qualifier Q>
 
  182         GLM_INLINE glm::vec<2, T, Q> wz(
const glm::vec<4, T, Q> &v) {
 
  183                 return glm::vec<2, T, Q>(v.w, v.z);
 
  187         template<
typename T, qualifier Q>
 
  188         GLM_INLINE glm::vec<2, T, Q> ww(
const glm::vec<4, T, Q> &v) {
 
  189                 return glm::vec<2, T, Q>(v.w, v.w);
 
  193         template<
typename T, qualifier Q>
 
  194         GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<1, T, Q> &v) {
 
  195                 return glm::vec<3, T, Q>(v.x, v.x, v.x);
 
  198         template<
typename T, qualifier Q>
 
  199         GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<2, T, Q> &v) {
 
  200                 return glm::vec<3, T, Q>(v.x, v.x, v.x);
 
  203         template<
typename T, qualifier Q>
 
  204         GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<3, T, Q> &v) {
 
  205                 return glm::vec<3, T, Q>(v.x, v.x, v.x);
 
  208         template<
typename T, qualifier Q>
 
  209         GLM_INLINE glm::vec<3, T, Q> xxx(
const glm::vec<4, T, Q> &v) {
 
  210                 return glm::vec<3, T, Q>(v.x, v.x, v.x);
 
  214         template<
typename T, qualifier Q>
 
  215         GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<2, T, Q> &v) {
 
  216                 return glm::vec<3, T, Q>(v.x, v.x, v.y);
 
  219         template<
typename T, qualifier Q>
 
  220         GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<3, T, Q> &v) {
 
  221                 return glm::vec<3, T, Q>(v.x, v.x, v.y);
 
  224         template<
typename T, qualifier Q>
 
  225         GLM_INLINE glm::vec<3, T, Q> xxy(
const glm::vec<4, T, Q> &v) {
 
  226                 return glm::vec<3, T, Q>(v.x, v.x, v.y);
 
  230         template<
typename T, qualifier Q>
 
  231         GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<3, T, Q> &v) {
 
  232                 return glm::vec<3, T, Q>(v.x, v.x, v.z);
 
  235         template<
typename T, qualifier Q>
 
  236         GLM_INLINE glm::vec<3, T, Q> xxz(
const glm::vec<4, T, Q> &v) {
 
  237                 return glm::vec<3, T, Q>(v.x, v.x, v.z);
 
  241         template<
typename T, qualifier Q>
 
  242         GLM_INLINE glm::vec<3, T, Q> xxw(
const glm::vec<4, T, Q> &v) {
 
  243                 return glm::vec<3, T, Q>(v.x, v.x, v.w);
 
  247         template<
typename T, qualifier Q>
 
  248         GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<2, T, Q> &v) {
 
  249                 return glm::vec<3, T, Q>(v.x, v.y, v.x);
 
  252         template<
typename T, qualifier Q>
 
  253         GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<3, T, Q> &v) {
 
  254                 return glm::vec<3, T, Q>(v.x, v.y, v.x);
 
  257         template<
typename T, qualifier Q>
 
  258         GLM_INLINE glm::vec<3, T, Q> xyx(
const glm::vec<4, T, Q> &v) {
 
  259                 return glm::vec<3, T, Q>(v.x, v.y, v.x);
 
  263         template<
typename T, qualifier Q>
 
  264         GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<2, T, Q> &v) {
 
  265                 return glm::vec<3, T, Q>(v.x, v.y, v.y);
 
  268         template<
typename T, qualifier Q>
 
  269         GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<3, T, Q> &v) {
 
  270                 return glm::vec<3, T, Q>(v.x, v.y, v.y);
 
  273         template<
typename T, qualifier Q>
 
  274         GLM_INLINE glm::vec<3, T, Q> xyy(
const glm::vec<4, T, Q> &v) {
 
  275                 return glm::vec<3, T, Q>(v.x, v.y, v.y);
 
  279         template<
typename T, qualifier Q>
 
  280         GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<3, T, Q> &v) {
 
  281                 return glm::vec<3, T, Q>(v.x, v.y, v.z);
 
  284         template<
typename T, qualifier Q>
 
  285         GLM_INLINE glm::vec<3, T, Q> xyz(
const glm::vec<4, T, Q> &v) {
 
  286                 return glm::vec<3, T, Q>(v.x, v.y, v.z);
 
  290         template<
typename T, qualifier Q>
 
  291         GLM_INLINE glm::vec<3, T, Q> xyw(
const glm::vec<4, T, Q> &v) {
 
  292                 return glm::vec<3, T, Q>(v.x, v.y, v.w);
 
  296         template<
typename T, qualifier Q>
 
  297         GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<3, T, Q> &v) {
 
  298                 return glm::vec<3, T, Q>(v.x, v.z, v.x);
 
  301         template<
typename T, qualifier Q>
 
  302         GLM_INLINE glm::vec<3, T, Q> xzx(
const glm::vec<4, T, Q> &v) {
 
  303                 return glm::vec<3, T, Q>(v.x, v.z, v.x);
 
  307         template<
typename T, qualifier Q>
 
  308         GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<3, T, Q> &v) {
 
  309                 return glm::vec<3, T, Q>(v.x, v.z, v.y);
 
  312         template<
typename T, qualifier Q>
 
  313         GLM_INLINE glm::vec<3, T, Q> xzy(
const glm::vec<4, T, Q> &v) {
 
  314                 return glm::vec<3, T, Q>(v.x, v.z, v.y);
 
  318         template<
typename T, qualifier Q>
 
  319         GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<3, T, Q> &v) {
 
  320                 return glm::vec<3, T, Q>(v.x, v.z, v.z);
 
  323         template<
typename T, qualifier Q>
 
  324         GLM_INLINE glm::vec<3, T, Q> xzz(
const glm::vec<4, T, Q> &v) {
 
  325                 return glm::vec<3, T, Q>(v.x, v.z, v.z);
 
  329         template<
typename T, qualifier Q>
 
  330         GLM_INLINE glm::vec<3, T, Q> xzw(
const glm::vec<4, T, Q> &v) {
 
  331                 return glm::vec<3, T, Q>(v.x, v.z, v.w);
 
  335         template<
typename T, qualifier Q>
 
  336         GLM_INLINE glm::vec<3, T, Q> xwx(
const glm::vec<4, T, Q> &v) {
 
  337                 return glm::vec<3, T, Q>(v.x, v.w, v.x);
 
  341         template<
typename T, qualifier Q>
 
  342         GLM_INLINE glm::vec<3, T, Q> xwy(
const glm::vec<4, T, Q> &v) {
 
  343                 return glm::vec<3, T, Q>(v.x, v.w, v.y);
 
  347         template<
typename T, qualifier Q>
 
  348         GLM_INLINE glm::vec<3, T, Q> xwz(
const glm::vec<4, T, Q> &v) {
 
  349                 return glm::vec<3, T, Q>(v.x, v.w, v.z);
 
  353         template<
typename T, qualifier Q>
 
  354         GLM_INLINE glm::vec<3, T, Q> xww(
const glm::vec<4, T, Q> &v) {
 
  355                 return glm::vec<3, T, Q>(v.x, v.w, v.w);
 
  359         template<
typename T, qualifier Q>
 
  360         GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<2, T, Q> &v) {
 
  361                 return glm::vec<3, T, Q>(v.y, v.x, v.x);
 
  364         template<
typename T, qualifier Q>
 
  365         GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<3, T, Q> &v) {
 
  366                 return glm::vec<3, T, Q>(v.y, v.x, v.x);
 
  369         template<
typename T, qualifier Q>
 
  370         GLM_INLINE glm::vec<3, T, Q> yxx(
const glm::vec<4, T, Q> &v) {
 
  371                 return glm::vec<3, T, Q>(v.y, v.x, v.x);
 
  375         template<
typename T, qualifier Q>
 
  376         GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<2, T, Q> &v) {
 
  377                 return glm::vec<3, T, Q>(v.y, v.x, v.y);
 
  380         template<
typename T, qualifier Q>
 
  381         GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<3, T, Q> &v) {
 
  382                 return glm::vec<3, T, Q>(v.y, v.x, v.y);
 
  385         template<
typename T, qualifier Q>
 
  386         GLM_INLINE glm::vec<3, T, Q> yxy(
const glm::vec<4, T, Q> &v) {
 
  387                 return glm::vec<3, T, Q>(v.y, v.x, v.y);
 
  391         template<
typename T, qualifier Q>
 
  392         GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<3, T, Q> &v) {
 
  393                 return glm::vec<3, T, Q>(v.y, v.x, v.z);
 
  396         template<
typename T, qualifier Q>
 
  397         GLM_INLINE glm::vec<3, T, Q> yxz(
const glm::vec<4, T, Q> &v) {
 
  398                 return glm::vec<3, T, Q>(v.y, v.x, v.z);
 
  402         template<
typename T, qualifier Q>
 
  403         GLM_INLINE glm::vec<3, T, Q> yxw(
const glm::vec<4, T, Q> &v) {
 
  404                 return glm::vec<3, T, Q>(v.y, v.x, v.w);
 
  408         template<
typename T, qualifier Q>
 
  409         GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<2, T, Q> &v) {
 
  410                 return glm::vec<3, T, Q>(v.y, v.y, v.x);
 
  413         template<
typename T, qualifier Q>
 
  414         GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<3, T, Q> &v) {
 
  415                 return glm::vec<3, T, Q>(v.y, v.y, v.x);
 
  418         template<
typename T, qualifier Q>
 
  419         GLM_INLINE glm::vec<3, T, Q> yyx(
const glm::vec<4, T, Q> &v) {
 
  420                 return glm::vec<3, T, Q>(v.y, v.y, v.x);
 
  424         template<
typename T, qualifier Q>
 
  425         GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<2, T, Q> &v) {
 
  426                 return glm::vec<3, T, Q>(v.y, v.y, v.y);
 
  429         template<
typename T, qualifier Q>
 
  430         GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<3, T, Q> &v) {
 
  431                 return glm::vec<3, T, Q>(v.y, v.y, v.y);
 
  434         template<
typename T, qualifier Q>
 
  435         GLM_INLINE glm::vec<3, T, Q> yyy(
const glm::vec<4, T, Q> &v) {
 
  436                 return glm::vec<3, T, Q>(v.y, v.y, v.y);
 
  440         template<
typename T, qualifier Q>
 
  441         GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<3, T, Q> &v) {
 
  442                 return glm::vec<3, T, Q>(v.y, v.y, v.z);
 
  445         template<
typename T, qualifier Q>
 
  446         GLM_INLINE glm::vec<3, T, Q> yyz(
const glm::vec<4, T, Q> &v) {
 
  447                 return glm::vec<3, T, Q>(v.y, v.y, v.z);
 
  451         template<
typename T, qualifier Q>
 
  452         GLM_INLINE glm::vec<3, T, Q> yyw(
const glm::vec<4, T, Q> &v) {
 
  453                 return glm::vec<3, T, Q>(v.y, v.y, v.w);
 
  457         template<
typename T, qualifier Q>
 
  458         GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<3, T, Q> &v) {
 
  459                 return glm::vec<3, T, Q>(v.y, v.z, v.x);
 
  462         template<
typename T, qualifier Q>
 
  463         GLM_INLINE glm::vec<3, T, Q> yzx(
const glm::vec<4, T, Q> &v) {
 
  464                 return glm::vec<3, T, Q>(v.y, v.z, v.x);
 
  468         template<
typename T, qualifier Q>
 
  469         GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<3, T, Q> &v) {
 
  470                 return glm::vec<3, T, Q>(v.y, v.z, v.y);
 
  473         template<
typename T, qualifier Q>
 
  474         GLM_INLINE glm::vec<3, T, Q> yzy(
const glm::vec<4, T, Q> &v) {
 
  475                 return glm::vec<3, T, Q>(v.y, v.z, v.y);
 
  479         template<
typename T, qualifier Q>
 
  480         GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<3, T, Q> &v) {
 
  481                 return glm::vec<3, T, Q>(v.y, v.z, v.z);
 
  484         template<
typename T, qualifier Q>
 
  485         GLM_INLINE glm::vec<3, T, Q> yzz(
const glm::vec<4, T, Q> &v) {
 
  486                 return glm::vec<3, T, Q>(v.y, v.z, v.z);
 
  490         template<
typename T, qualifier Q>
 
  491         GLM_INLINE glm::vec<3, T, Q> yzw(
const glm::vec<4, T, Q> &v) {
 
  492                 return glm::vec<3, T, Q>(v.y, v.z, v.w);
 
  496         template<
typename T, qualifier Q>
 
  497         GLM_INLINE glm::vec<3, T, Q> ywx(
const glm::vec<4, T, Q> &v) {
 
  498                 return glm::vec<3, T, Q>(v.y, v.w, v.x);
 
  502         template<
typename T, qualifier Q>
 
  503         GLM_INLINE glm::vec<3, T, Q> ywy(
const glm::vec<4, T, Q> &v) {
 
  504                 return glm::vec<3, T, Q>(v.y, v.w, v.y);
 
  508         template<
typename T, qualifier Q>
 
  509         GLM_INLINE glm::vec<3, T, Q> ywz(
const glm::vec<4, T, Q> &v) {
 
  510                 return glm::vec<3, T, Q>(v.y, v.w, v.z);
 
  514         template<
typename T, qualifier Q>
 
  515         GLM_INLINE glm::vec<3, T, Q> yww(
const glm::vec<4, T, Q> &v) {
 
  516                 return glm::vec<3, T, Q>(v.y, v.w, v.w);
 
  520         template<
typename T, qualifier Q>
 
  521         GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<3, T, Q> &v) {
 
  522                 return glm::vec<3, T, Q>(v.z, v.x, v.x);
 
  525         template<
typename T, qualifier Q>
 
  526         GLM_INLINE glm::vec<3, T, Q> zxx(
const glm::vec<4, T, Q> &v) {
 
  527                 return glm::vec<3, T, Q>(v.z, v.x, v.x);
 
  531         template<
typename T, qualifier Q>
 
  532         GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<3, T, Q> &v) {
 
  533                 return glm::vec<3, T, Q>(v.z, v.x, v.y);
 
  536         template<
typename T, qualifier Q>
 
  537         GLM_INLINE glm::vec<3, T, Q> zxy(
const glm::vec<4, T, Q> &v) {
 
  538                 return glm::vec<3, T, Q>(v.z, v.x, v.y);
 
  542         template<
typename T, qualifier Q>
 
  543         GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<3, T, Q> &v) {
 
  544                 return glm::vec<3, T, Q>(v.z, v.x, v.z);
 
  547         template<
typename T, qualifier Q>
 
  548         GLM_INLINE glm::vec<3, T, Q> zxz(
const glm::vec<4, T, Q> &v) {
 
  549                 return glm::vec<3, T, Q>(v.z, v.x, v.z);
 
  553         template<
typename T, qualifier Q>
 
  554         GLM_INLINE glm::vec<3, T, Q> zxw(
const glm::vec<4, T, Q> &v) {
 
  555                 return glm::vec<3, T, Q>(v.z, v.x, v.w);
 
  559         template<
typename T, qualifier Q>
 
  560         GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<3, T, Q> &v) {
 
  561                 return glm::vec<3, T, Q>(v.z, v.y, v.x);
 
  564         template<
typename T, qualifier Q>
 
  565         GLM_INLINE glm::vec<3, T, Q> zyx(
const glm::vec<4, T, Q> &v) {
 
  566                 return glm::vec<3, T, Q>(v.z, v.y, v.x);
 
  570         template<
typename T, qualifier Q>
 
  571         GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<3, T, Q> &v) {
 
  572                 return glm::vec<3, T, Q>(v.z, v.y, v.y);
 
  575         template<
typename T, qualifier Q>
 
  576         GLM_INLINE glm::vec<3, T, Q> zyy(
const glm::vec<4, T, Q> &v) {
 
  577                 return glm::vec<3, T, Q>(v.z, v.y, v.y);
 
  581         template<
typename T, qualifier Q>
 
  582         GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<3, T, Q> &v) {
 
  583                 return glm::vec<3, T, Q>(v.z, v.y, v.z);
 
  586         template<
typename T, qualifier Q>
 
  587         GLM_INLINE glm::vec<3, T, Q> zyz(
const glm::vec<4, T, Q> &v) {
 
  588                 return glm::vec<3, T, Q>(v.z, v.y, v.z);
 
  592         template<
typename T, qualifier Q>
 
  593         GLM_INLINE glm::vec<3, T, Q> zyw(
const glm::vec<4, T, Q> &v) {
 
  594                 return glm::vec<3, T, Q>(v.z, v.y, v.w);
 
  598         template<
typename T, qualifier Q>
 
  599         GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<3, T, Q> &v) {
 
  600                 return glm::vec<3, T, Q>(v.z, v.z, v.x);
 
  603         template<
typename T, qualifier Q>
 
  604         GLM_INLINE glm::vec<3, T, Q> zzx(
const glm::vec<4, T, Q> &v) {
 
  605                 return glm::vec<3, T, Q>(v.z, v.z, v.x);
 
  609         template<
typename T, qualifier Q>
 
  610         GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<3, T, Q> &v) {
 
  611                 return glm::vec<3, T, Q>(v.z, v.z, v.y);
 
  614         template<
typename T, qualifier Q>
 
  615         GLM_INLINE glm::vec<3, T, Q> zzy(
const glm::vec<4, T, Q> &v) {
 
  616                 return glm::vec<3, T, Q>(v.z, v.z, v.y);
 
  620         template<
typename T, qualifier Q>
 
  621         GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<3, T, Q> &v) {
 
  622                 return glm::vec<3, T, Q>(v.z, v.z, v.z);
 
  625         template<
typename T, qualifier Q>
 
  626         GLM_INLINE glm::vec<3, T, Q> zzz(
const glm::vec<4, T, Q> &v) {
 
  627                 return glm::vec<3, T, Q>(v.z, v.z, v.z);
 
  631         template<
typename T, qualifier Q>
 
  632         GLM_INLINE glm::vec<3, T, Q> zzw(
const glm::vec<4, T, Q> &v) {
 
  633                 return glm::vec<3, T, Q>(v.z, v.z, v.w);
 
  637         template<
typename T, qualifier Q>
 
  638         GLM_INLINE glm::vec<3, T, Q> zwx(
const glm::vec<4, T, Q> &v) {
 
  639                 return glm::vec<3, T, Q>(v.z, v.w, v.x);
 
  643         template<
typename T, qualifier Q>
 
  644         GLM_INLINE glm::vec<3, T, Q> zwy(
const glm::vec<4, T, Q> &v) {
 
  645                 return glm::vec<3, T, Q>(v.z, v.w, v.y);
 
  649         template<
typename T, qualifier Q>
 
  650         GLM_INLINE glm::vec<3, T, Q> zwz(
const glm::vec<4, T, Q> &v) {
 
  651                 return glm::vec<3, T, Q>(v.z, v.w, v.z);
 
  655         template<
typename T, qualifier Q>
 
  656         GLM_INLINE glm::vec<3, T, Q> zww(
const glm::vec<4, T, Q> &v) {
 
  657                 return glm::vec<3, T, Q>(v.z, v.w, v.w);
 
  661         template<
typename T, qualifier Q>
 
  662         GLM_INLINE glm::vec<3, T, Q> wxx(
const glm::vec<4, T, Q> &v) {
 
  663                 return glm::vec<3, T, Q>(v.w, v.x, v.x);
 
  667         template<
typename T, qualifier Q>
 
  668         GLM_INLINE glm::vec<3, T, Q> wxy(
const glm::vec<4, T, Q> &v) {
 
  669                 return glm::vec<3, T, Q>(v.w, v.x, v.y);
 
  673         template<
typename T, qualifier Q>
 
  674         GLM_INLINE glm::vec<3, T, Q> wxz(
const glm::vec<4, T, Q> &v) {
 
  675                 return glm::vec<3, T, Q>(v.w, v.x, v.z);
 
  679         template<
typename T, qualifier Q>
 
  680         GLM_INLINE glm::vec<3, T, Q> wxw(
const glm::vec<4, T, Q> &v) {
 
  681                 return glm::vec<3, T, Q>(v.w, v.x, v.w);
 
  685         template<
typename T, qualifier Q>
 
  686         GLM_INLINE glm::vec<3, T, Q> wyx(
const glm::vec<4, T, Q> &v) {
 
  687                 return glm::vec<3, T, Q>(v.w, v.y, v.x);
 
  691         template<
typename T, qualifier Q>
 
  692         GLM_INLINE glm::vec<3, T, Q> wyy(
const glm::vec<4, T, Q> &v) {
 
  693                 return glm::vec<3, T, Q>(v.w, v.y, v.y);
 
  697         template<
typename T, qualifier Q>
 
  698         GLM_INLINE glm::vec<3, T, Q> wyz(
const glm::vec<4, T, Q> &v) {
 
  699                 return glm::vec<3, T, Q>(v.w, v.y, v.z);
 
  703         template<
typename T, qualifier Q>
 
  704         GLM_INLINE glm::vec<3, T, Q> wyw(
const glm::vec<4, T, Q> &v) {
 
  705                 return glm::vec<3, T, Q>(v.w, v.y, v.w);
 
  709         template<
typename T, qualifier Q>
 
  710         GLM_INLINE glm::vec<3, T, Q> wzx(
const glm::vec<4, T, Q> &v) {
 
  711                 return glm::vec<3, T, Q>(v.w, v.z, v.x);
 
  715         template<
typename T, qualifier Q>
 
  716         GLM_INLINE glm::vec<3, T, Q> wzy(
const glm::vec<4, T, Q> &v) {
 
  717                 return glm::vec<3, T, Q>(v.w, v.z, v.y);
 
  721         template<
typename T, qualifier Q>
 
  722         GLM_INLINE glm::vec<3, T, Q> wzz(
const glm::vec<4, T, Q> &v) {
 
  723                 return glm::vec<3, T, Q>(v.w, v.z, v.z);
 
  727         template<
typename T, qualifier Q>
 
  728         GLM_INLINE glm::vec<3, T, Q> wzw(
const glm::vec<4, T, Q> &v) {
 
  729                 return glm::vec<3, T, Q>(v.w, v.z, v.w);
 
  733         template<
typename T, qualifier Q>
 
  734         GLM_INLINE glm::vec<3, T, Q> wwx(
const glm::vec<4, T, Q> &v) {
 
  735                 return glm::vec<3, T, Q>(v.w, v.w, v.x);
 
  739         template<
typename T, qualifier Q>
 
  740         GLM_INLINE glm::vec<3, T, Q> wwy(
const glm::vec<4, T, Q> &v) {
 
  741                 return glm::vec<3, T, Q>(v.w, v.w, v.y);
 
  745         template<
typename T, qualifier Q>
 
  746         GLM_INLINE glm::vec<3, T, Q> wwz(
const glm::vec<4, T, Q> &v) {
 
  747                 return glm::vec<3, T, Q>(v.w, v.w, v.z);
 
  751         template<
typename T, qualifier Q>
 
  752         GLM_INLINE glm::vec<3, T, Q> www(
const glm::vec<4, T, Q> &v) {
 
  753                 return glm::vec<3, T, Q>(v.w, v.w, v.w);
 
  757         template<
typename T, qualifier Q>
 
  758         GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<1, T, Q> &v) {
 
  759                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
 
  762         template<
typename T, qualifier Q>
 
  763         GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<2, T, Q> &v) {
 
  764                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
 
  767         template<
typename T, qualifier Q>
 
  768         GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<3, T, Q> &v) {
 
  769                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
 
  772         template<
typename T, qualifier Q>
 
  773         GLM_INLINE glm::vec<4, T, Q> xxxx(
const glm::vec<4, T, Q> &v) {
 
  774                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.x);
 
  778         template<
typename T, qualifier Q>
 
  779         GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<2, T, Q> &v) {
 
  780                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
 
  783         template<
typename T, qualifier Q>
 
  784         GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<3, T, Q> &v) {
 
  785                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
 
  788         template<
typename T, qualifier Q>
 
  789         GLM_INLINE glm::vec<4, T, Q> xxxy(
const glm::vec<4, T, Q> &v) {
 
  790                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.y);
 
  794         template<
typename T, qualifier Q>
 
  795         GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<3, T, Q> &v) {
 
  796                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
 
  799         template<
typename T, qualifier Q>
 
  800         GLM_INLINE glm::vec<4, T, Q> xxxz(
const glm::vec<4, T, Q> &v) {
 
  801                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.z);
 
  805         template<
typename T, qualifier Q>
 
  806         GLM_INLINE glm::vec<4, T, Q> xxxw(
const glm::vec<4, T, Q> &v) {
 
  807                 return glm::vec<4, T, Q>(v.x, v.x, v.x, v.w);
 
  811         template<
typename T, qualifier Q>
 
  812         GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<2, T, Q> &v) {
 
  813                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
 
  816         template<
typename T, qualifier Q>
 
  817         GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<3, T, Q> &v) {
 
  818                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
 
  821         template<
typename T, qualifier Q>
 
  822         GLM_INLINE glm::vec<4, T, Q> xxyx(
const glm::vec<4, T, Q> &v) {
 
  823                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.x);
 
  827         template<
typename T, qualifier Q>
 
  828         GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<2, T, Q> &v) {
 
  829                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
 
  832         template<
typename T, qualifier Q>
 
  833         GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<3, T, Q> &v) {
 
  834                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
 
  837         template<
typename T, qualifier Q>
 
  838         GLM_INLINE glm::vec<4, T, Q> xxyy(
const glm::vec<4, T, Q> &v) {
 
  839                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.y);
 
  843         template<
typename T, qualifier Q>
 
  844         GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<3, T, Q> &v) {
 
  845                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
 
  848         template<
typename T, qualifier Q>
 
  849         GLM_INLINE glm::vec<4, T, Q> xxyz(
const glm::vec<4, T, Q> &v) {
 
  850                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.z);
 
  854         template<
typename T, qualifier Q>
 
  855         GLM_INLINE glm::vec<4, T, Q> xxyw(
const glm::vec<4, T, Q> &v) {
 
  856                 return glm::vec<4, T, Q>(v.x, v.x, v.y, v.w);
 
  860         template<
typename T, qualifier Q>
 
  861         GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<3, T, Q> &v) {
 
  862                 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
 
  865         template<
typename T, qualifier Q>
 
  866         GLM_INLINE glm::vec<4, T, Q> xxzx(
const glm::vec<4, T, Q> &v) {
 
  867                 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.x);
 
  871         template<
typename T, qualifier Q>
 
  872         GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<3, T, Q> &v) {
 
  873                 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
 
  876         template<
typename T, qualifier Q>
 
  877         GLM_INLINE glm::vec<4, T, Q> xxzy(
const glm::vec<4, T, Q> &v) {
 
  878                 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.y);
 
  882         template<
typename T, qualifier Q>
 
  883         GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<3, T, Q> &v) {
 
  884                 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
 
  887         template<
typename T, qualifier Q>
 
  888         GLM_INLINE glm::vec<4, T, Q> xxzz(
const glm::vec<4, T, Q> &v) {
 
  889                 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.z);
 
  893         template<
typename T, qualifier Q>
 
  894         GLM_INLINE glm::vec<4, T, Q> xxzw(
const glm::vec<4, T, Q> &v) {
 
  895                 return glm::vec<4, T, Q>(v.x, v.x, v.z, v.w);
 
  899         template<
typename T, qualifier Q>
 
  900         GLM_INLINE glm::vec<4, T, Q> xxwx(
const glm::vec<4, T, Q> &v) {
 
  901                 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.x);
 
  905         template<
typename T, qualifier Q>
 
  906         GLM_INLINE glm::vec<4, T, Q> xxwy(
const glm::vec<4, T, Q> &v) {
 
  907                 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.y);
 
  911         template<
typename T, qualifier Q>
 
  912         GLM_INLINE glm::vec<4, T, Q> xxwz(
const glm::vec<4, T, Q> &v) {
 
  913                 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.z);
 
  917         template<
typename T, qualifier Q>
 
  918         GLM_INLINE glm::vec<4, T, Q> xxww(
const glm::vec<4, T, Q> &v) {
 
  919                 return glm::vec<4, T, Q>(v.x, v.x, v.w, v.w);
 
  923         template<
typename T, qualifier Q>
 
  924         GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<2, T, Q> &v) {
 
  925                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
 
  928         template<
typename T, qualifier Q>
 
  929         GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<3, T, Q> &v) {
 
  930                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
 
  933         template<
typename T, qualifier Q>
 
  934         GLM_INLINE glm::vec<4, T, Q> xyxx(
const glm::vec<4, T, Q> &v) {
 
  935                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.x);
 
  939         template<
typename T, qualifier Q>
 
  940         GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<2, T, Q> &v) {
 
  941                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
 
  944         template<
typename T, qualifier Q>
 
  945         GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<3, T, Q> &v) {
 
  946                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
 
  949         template<
typename T, qualifier Q>
 
  950         GLM_INLINE glm::vec<4, T, Q> xyxy(
const glm::vec<4, T, Q> &v) {
 
  951                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.y);
 
  955         template<
typename T, qualifier Q>
 
  956         GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<3, T, Q> &v) {
 
  957                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
 
  960         template<
typename T, qualifier Q>
 
  961         GLM_INLINE glm::vec<4, T, Q> xyxz(
const glm::vec<4, T, Q> &v) {
 
  962                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.z);
 
  966         template<
typename T, qualifier Q>
 
  967         GLM_INLINE glm::vec<4, T, Q> xyxw(
const glm::vec<4, T, Q> &v) {
 
  968                 return glm::vec<4, T, Q>(v.x, v.y, v.x, v.w);
 
  972         template<
typename T, qualifier Q>
 
  973         GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<2, T, Q> &v) {
 
  974                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
 
  977         template<
typename T, qualifier Q>
 
  978         GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<3, T, Q> &v) {
 
  979                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
 
  982         template<
typename T, qualifier Q>
 
  983         GLM_INLINE glm::vec<4, T, Q> xyyx(
const glm::vec<4, T, Q> &v) {
 
  984                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.x);
 
  988         template<
typename T, qualifier Q>
 
  989         GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<2, T, Q> &v) {
 
  990                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
 
  993         template<
typename T, qualifier Q>
 
  994         GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<3, T, Q> &v) {
 
  995                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
 
  998         template<
typename T, qualifier Q>
 
  999         GLM_INLINE glm::vec<4, T, Q> xyyy(
const glm::vec<4, T, Q> &v) {
 
 1000                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.y);
 
 1004         template<
typename T, qualifier Q>
 
 1005         GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<3, T, Q> &v) {
 
 1006                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
 
 1009         template<
typename T, qualifier Q>
 
 1010         GLM_INLINE glm::vec<4, T, Q> xyyz(
const glm::vec<4, T, Q> &v) {
 
 1011                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.z);
 
 1015         template<
typename T, qualifier Q>
 
 1016         GLM_INLINE glm::vec<4, T, Q> xyyw(
const glm::vec<4, T, Q> &v) {
 
 1017                 return glm::vec<4, T, Q>(v.x, v.y, v.y, v.w);
 
 1021         template<
typename T, qualifier Q>
 
 1022         GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<3, T, Q> &v) {
 
 1023                 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
 
 1026         template<
typename T, qualifier Q>
 
 1027         GLM_INLINE glm::vec<4, T, Q> xyzx(
const glm::vec<4, T, Q> &v) {
 
 1028                 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.x);
 
 1032         template<
typename T, qualifier Q>
 
 1033         GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<3, T, Q> &v) {
 
 1034                 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
 
 1037         template<
typename T, qualifier Q>
 
 1038         GLM_INLINE glm::vec<4, T, Q> xyzy(
const glm::vec<4, T, Q> &v) {
 
 1039                 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.y);
 
 1043         template<
typename T, qualifier Q>
 
 1044         GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<3, T, Q> &v) {
 
 1045                 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
 
 1048         template<
typename T, qualifier Q>
 
 1049         GLM_INLINE glm::vec<4, T, Q> xyzz(
const glm::vec<4, T, Q> &v) {
 
 1050                 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.z);
 
 1054         template<
typename T, qualifier Q>
 
 1055         GLM_INLINE glm::vec<4, T, Q> xyzw(
const glm::vec<4, T, Q> &v) {
 
 1056                 return glm::vec<4, T, Q>(v.x, v.y, v.z, v.w);
 
 1060         template<
typename T, qualifier Q>
 
 1061         GLM_INLINE glm::vec<4, T, Q> xywx(
const glm::vec<4, T, Q> &v) {
 
 1062                 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.x);
 
 1066         template<
typename T, qualifier Q>
 
 1067         GLM_INLINE glm::vec<4, T, Q> xywy(
const glm::vec<4, T, Q> &v) {
 
 1068                 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.y);
 
 1072         template<
typename T, qualifier Q>
 
 1073         GLM_INLINE glm::vec<4, T, Q> xywz(
const glm::vec<4, T, Q> &v) {
 
 1074                 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.z);
 
 1078         template<
typename T, qualifier Q>
 
 1079         GLM_INLINE glm::vec<4, T, Q> xyww(
const glm::vec<4, T, Q> &v) {
 
 1080                 return glm::vec<4, T, Q>(v.x, v.y, v.w, v.w);
 
 1084         template<
typename T, qualifier Q>
 
 1085         GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<3, T, Q> &v) {
 
 1086                 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
 
 1089         template<
typename T, qualifier Q>
 
 1090         GLM_INLINE glm::vec<4, T, Q> xzxx(
const glm::vec<4, T, Q> &v) {
 
 1091                 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.x);
 
 1095         template<
typename T, qualifier Q>
 
 1096         GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<3, T, Q> &v) {
 
 1097                 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
 
 1100         template<
typename T, qualifier Q>
 
 1101         GLM_INLINE glm::vec<4, T, Q> xzxy(
const glm::vec<4, T, Q> &v) {
 
 1102                 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.y);
 
 1106         template<
typename T, qualifier Q>
 
 1107         GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<3, T, Q> &v) {
 
 1108                 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
 
 1111         template<
typename T, qualifier Q>
 
 1112         GLM_INLINE glm::vec<4, T, Q> xzxz(
const glm::vec<4, T, Q> &v) {
 
 1113                 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.z);
 
 1117         template<
typename T, qualifier Q>
 
 1118         GLM_INLINE glm::vec<4, T, Q> xzxw(
const glm::vec<4, T, Q> &v) {
 
 1119                 return glm::vec<4, T, Q>(v.x, v.z, v.x, v.w);
 
 1123         template<
typename T, qualifier Q>
 
 1124         GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<3, T, Q> &v) {
 
 1125                 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
 
 1128         template<
typename T, qualifier Q>
 
 1129         GLM_INLINE glm::vec<4, T, Q> xzyx(
const glm::vec<4, T, Q> &v) {
 
 1130                 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.x);
 
 1134         template<
typename T, qualifier Q>
 
 1135         GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<3, T, Q> &v) {
 
 1136                 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
 
 1139         template<
typename T, qualifier Q>
 
 1140         GLM_INLINE glm::vec<4, T, Q> xzyy(
const glm::vec<4, T, Q> &v) {
 
 1141                 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.y);
 
 1145         template<
typename T, qualifier Q>
 
 1146         GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<3, T, Q> &v) {
 
 1147                 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
 
 1150         template<
typename T, qualifier Q>
 
 1151         GLM_INLINE glm::vec<4, T, Q> xzyz(
const glm::vec<4, T, Q> &v) {
 
 1152                 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.z);
 
 1156         template<
typename T, qualifier Q>
 
 1157         GLM_INLINE glm::vec<4, T, Q> xzyw(
const glm::vec<4, T, Q> &v) {
 
 1158                 return glm::vec<4, T, Q>(v.x, v.z, v.y, v.w);
 
 1162         template<
typename T, qualifier Q>
 
 1163         GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<3, T, Q> &v) {
 
 1164                 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
 
 1167         template<
typename T, qualifier Q>
 
 1168         GLM_INLINE glm::vec<4, T, Q> xzzx(
const glm::vec<4, T, Q> &v) {
 
 1169                 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.x);
 
 1173         template<
typename T, qualifier Q>
 
 1174         GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<3, T, Q> &v) {
 
 1175                 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
 
 1178         template<
typename T, qualifier Q>
 
 1179         GLM_INLINE glm::vec<4, T, Q> xzzy(
const glm::vec<4, T, Q> &v) {
 
 1180                 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.y);
 
 1184         template<
typename T, qualifier Q>
 
 1185         GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<3, T, Q> &v) {
 
 1186                 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
 
 1189         template<
typename T, qualifier Q>
 
 1190         GLM_INLINE glm::vec<4, T, Q> xzzz(
const glm::vec<4, T, Q> &v) {
 
 1191                 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.z);
 
 1195         template<
typename T, qualifier Q>
 
 1196         GLM_INLINE glm::vec<4, T, Q> xzzw(
const glm::vec<4, T, Q> &v) {
 
 1197                 return glm::vec<4, T, Q>(v.x, v.z, v.z, v.w);
 
 1201         template<
typename T, qualifier Q>
 
 1202         GLM_INLINE glm::vec<4, T, Q> xzwx(
const glm::vec<4, T, Q> &v) {
 
 1203                 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.x);
 
 1207         template<
typename T, qualifier Q>
 
 1208         GLM_INLINE glm::vec<4, T, Q> xzwy(
const glm::vec<4, T, Q> &v) {
 
 1209                 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.y);
 
 1213         template<
typename T, qualifier Q>
 
 1214         GLM_INLINE glm::vec<4, T, Q> xzwz(
const glm::vec<4, T, Q> &v) {
 
 1215                 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.z);
 
 1219         template<
typename T, qualifier Q>
 
 1220         GLM_INLINE glm::vec<4, T, Q> xzww(
const glm::vec<4, T, Q> &v) {
 
 1221                 return glm::vec<4, T, Q>(v.x, v.z, v.w, v.w);
 
 1225         template<
typename T, qualifier Q>
 
 1226         GLM_INLINE glm::vec<4, T, Q> xwxx(
const glm::vec<4, T, Q> &v) {
 
 1227                 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.x);
 
 1231         template<
typename T, qualifier Q>
 
 1232         GLM_INLINE glm::vec<4, T, Q> xwxy(
const glm::vec<4, T, Q> &v) {
 
 1233                 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.y);
 
 1237         template<
typename T, qualifier Q>
 
 1238         GLM_INLINE glm::vec<4, T, Q> xwxz(
const glm::vec<4, T, Q> &v) {
 
 1239                 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.z);
 
 1243         template<
typename T, qualifier Q>
 
 1244         GLM_INLINE glm::vec<4, T, Q> xwxw(
const glm::vec<4, T, Q> &v) {
 
 1245                 return glm::vec<4, T, Q>(v.x, v.w, v.x, v.w);
 
 1249         template<
typename T, qualifier Q>
 
 1250         GLM_INLINE glm::vec<4, T, Q> xwyx(
const glm::vec<4, T, Q> &v) {
 
 1251                 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.x);
 
 1255         template<
typename T, qualifier Q>
 
 1256         GLM_INLINE glm::vec<4, T, Q> xwyy(
const glm::vec<4, T, Q> &v) {
 
 1257                 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.y);
 
 1261         template<
typename T, qualifier Q>
 
 1262         GLM_INLINE glm::vec<4, T, Q> xwyz(
const glm::vec<4, T, Q> &v) {
 
 1263                 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.z);
 
 1267         template<
typename T, qualifier Q>
 
 1268         GLM_INLINE glm::vec<4, T, Q> xwyw(
const glm::vec<4, T, Q> &v) {
 
 1269                 return glm::vec<4, T, Q>(v.x, v.w, v.y, v.w);
 
 1273         template<
typename T, qualifier Q>
 
 1274         GLM_INLINE glm::vec<4, T, Q> xwzx(
const glm::vec<4, T, Q> &v) {
 
 1275                 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.x);
 
 1279         template<
typename T, qualifier Q>
 
 1280         GLM_INLINE glm::vec<4, T, Q> xwzy(
const glm::vec<4, T, Q> &v) {
 
 1281                 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.y);
 
 1285         template<
typename T, qualifier Q>
 
 1286         GLM_INLINE glm::vec<4, T, Q> xwzz(
const glm::vec<4, T, Q> &v) {
 
 1287                 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.z);
 
 1291         template<
typename T, qualifier Q>
 
 1292         GLM_INLINE glm::vec<4, T, Q> xwzw(
const glm::vec<4, T, Q> &v) {
 
 1293                 return glm::vec<4, T, Q>(v.x, v.w, v.z, v.w);
 
 1297         template<
typename T, qualifier Q>
 
 1298         GLM_INLINE glm::vec<4, T, Q> xwwx(
const glm::vec<4, T, Q> &v) {
 
 1299                 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.x);
 
 1303         template<
typename T, qualifier Q>
 
 1304         GLM_INLINE glm::vec<4, T, Q> xwwy(
const glm::vec<4, T, Q> &v) {
 
 1305                 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.y);
 
 1309         template<
typename T, qualifier Q>
 
 1310         GLM_INLINE glm::vec<4, T, Q> xwwz(
const glm::vec<4, T, Q> &v) {
 
 1311                 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.z);
 
 1315         template<
typename T, qualifier Q>
 
 1316         GLM_INLINE glm::vec<4, T, Q> xwww(
const glm::vec<4, T, Q> &v) {
 
 1317                 return glm::vec<4, T, Q>(v.x, v.w, v.w, v.w);
 
 1321         template<
typename T, qualifier Q>
 
 1322         GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<2, T, Q> &v) {
 
 1323                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
 
 1326         template<
typename T, qualifier Q>
 
 1327         GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<3, T, Q> &v) {
 
 1328                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
 
 1331         template<
typename T, qualifier Q>
 
 1332         GLM_INLINE glm::vec<4, T, Q> yxxx(
const glm::vec<4, T, Q> &v) {
 
 1333                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.x);
 
 1337         template<
typename T, qualifier Q>
 
 1338         GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<2, T, Q> &v) {
 
 1339                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
 
 1342         template<
typename T, qualifier Q>
 
 1343         GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<3, T, Q> &v) {
 
 1344                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
 
 1347         template<
typename T, qualifier Q>
 
 1348         GLM_INLINE glm::vec<4, T, Q> yxxy(
const glm::vec<4, T, Q> &v) {
 
 1349                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.y);
 
 1353         template<
typename T, qualifier Q>
 
 1354         GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<3, T, Q> &v) {
 
 1355                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
 
 1358         template<
typename T, qualifier Q>
 
 1359         GLM_INLINE glm::vec<4, T, Q> yxxz(
const glm::vec<4, T, Q> &v) {
 
 1360                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.z);
 
 1364         template<
typename T, qualifier Q>
 
 1365         GLM_INLINE glm::vec<4, T, Q> yxxw(
const glm::vec<4, T, Q> &v) {
 
 1366                 return glm::vec<4, T, Q>(v.y, v.x, v.x, v.w);
 
 1370         template<
typename T, qualifier Q>
 
 1371         GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<2, T, Q> &v) {
 
 1372                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
 
 1375         template<
typename T, qualifier Q>
 
 1376         GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<3, T, Q> &v) {
 
 1377                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
 
 1380         template<
typename T, qualifier Q>
 
 1381         GLM_INLINE glm::vec<4, T, Q> yxyx(
const glm::vec<4, T, Q> &v) {
 
 1382                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.x);
 
 1386         template<
typename T, qualifier Q>
 
 1387         GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<2, T, Q> &v) {
 
 1388                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
 
 1391         template<
typename T, qualifier Q>
 
 1392         GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<3, T, Q> &v) {
 
 1393                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
 
 1396         template<
typename T, qualifier Q>
 
 1397         GLM_INLINE glm::vec<4, T, Q> yxyy(
const glm::vec<4, T, Q> &v) {
 
 1398                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.y);
 
 1402         template<
typename T, qualifier Q>
 
 1403         GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<3, T, Q> &v) {
 
 1404                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
 
 1407         template<
typename T, qualifier Q>
 
 1408         GLM_INLINE glm::vec<4, T, Q> yxyz(
const glm::vec<4, T, Q> &v) {
 
 1409                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.z);
 
 1413         template<
typename T, qualifier Q>
 
 1414         GLM_INLINE glm::vec<4, T, Q> yxyw(
const glm::vec<4, T, Q> &v) {
 
 1415                 return glm::vec<4, T, Q>(v.y, v.x, v.y, v.w);
 
 1419         template<
typename T, qualifier Q>
 
 1420         GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<3, T, Q> &v) {
 
 1421                 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
 
 1424         template<
typename T, qualifier Q>
 
 1425         GLM_INLINE glm::vec<4, T, Q> yxzx(
const glm::vec<4, T, Q> &v) {
 
 1426                 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.x);
 
 1430         template<
typename T, qualifier Q>
 
 1431         GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<3, T, Q> &v) {
 
 1432                 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
 
 1435         template<
typename T, qualifier Q>
 
 1436         GLM_INLINE glm::vec<4, T, Q> yxzy(
const glm::vec<4, T, Q> &v) {
 
 1437                 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.y);
 
 1441         template<
typename T, qualifier Q>
 
 1442         GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<3, T, Q> &v) {
 
 1443                 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
 
 1446         template<
typename T, qualifier Q>
 
 1447         GLM_INLINE glm::vec<4, T, Q> yxzz(
const glm::vec<4, T, Q> &v) {
 
 1448                 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.z);
 
 1452         template<
typename T, qualifier Q>
 
 1453         GLM_INLINE glm::vec<4, T, Q> yxzw(
const glm::vec<4, T, Q> &v) {
 
 1454                 return glm::vec<4, T, Q>(v.y, v.x, v.z, v.w);
 
 1458         template<
typename T, qualifier Q>
 
 1459         GLM_INLINE glm::vec<4, T, Q> yxwx(
const glm::vec<4, T, Q> &v) {
 
 1460                 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.x);
 
 1464         template<
typename T, qualifier Q>
 
 1465         GLM_INLINE glm::vec<4, T, Q> yxwy(
const glm::vec<4, T, Q> &v) {
 
 1466                 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.y);
 
 1470         template<
typename T, qualifier Q>
 
 1471         GLM_INLINE glm::vec<4, T, Q> yxwz(
const glm::vec<4, T, Q> &v) {
 
 1472                 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.z);
 
 1476         template<
typename T, qualifier Q>
 
 1477         GLM_INLINE glm::vec<4, T, Q> yxww(
const glm::vec<4, T, Q> &v) {
 
 1478                 return glm::vec<4, T, Q>(v.y, v.x, v.w, v.w);
 
 1482         template<
typename T, qualifier Q>
 
 1483         GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<2, T, Q> &v) {
 
 1484                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
 
 1487         template<
typename T, qualifier Q>
 
 1488         GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<3, T, Q> &v) {
 
 1489                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
 
 1492         template<
typename T, qualifier Q>
 
 1493         GLM_INLINE glm::vec<4, T, Q> yyxx(
const glm::vec<4, T, Q> &v) {
 
 1494                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.x);
 
 1498         template<
typename T, qualifier Q>
 
 1499         GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<2, T, Q> &v) {
 
 1500                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
 
 1503         template<
typename T, qualifier Q>
 
 1504         GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<3, T, Q> &v) {
 
 1505                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
 
 1508         template<
typename T, qualifier Q>
 
 1509         GLM_INLINE glm::vec<4, T, Q> yyxy(
const glm::vec<4, T, Q> &v) {
 
 1510                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.y);
 
 1514         template<
typename T, qualifier Q>
 
 1515         GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<3, T, Q> &v) {
 
 1516                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
 
 1519         template<
typename T, qualifier Q>
 
 1520         GLM_INLINE glm::vec<4, T, Q> yyxz(
const glm::vec<4, T, Q> &v) {
 
 1521                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.z);
 
 1525         template<
typename T, qualifier Q>
 
 1526         GLM_INLINE glm::vec<4, T, Q> yyxw(
const glm::vec<4, T, Q> &v) {
 
 1527                 return glm::vec<4, T, Q>(v.y, v.y, v.x, v.w);
 
 1531         template<
typename T, qualifier Q>
 
 1532         GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<2, T, Q> &v) {
 
 1533                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
 
 1536         template<
typename T, qualifier Q>
 
 1537         GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<3, T, Q> &v) {
 
 1538                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
 
 1541         template<
typename T, qualifier Q>
 
 1542         GLM_INLINE glm::vec<4, T, Q> yyyx(
const glm::vec<4, T, Q> &v) {
 
 1543                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.x);
 
 1547         template<
typename T, qualifier Q>
 
 1548         GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<2, T, Q> &v) {
 
 1549                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
 
 1552         template<
typename T, qualifier Q>
 
 1553         GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<3, T, Q> &v) {
 
 1554                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
 
 1557         template<
typename T, qualifier Q>
 
 1558         GLM_INLINE glm::vec<4, T, Q> yyyy(
const glm::vec<4, T, Q> &v) {
 
 1559                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.y);
 
 1563         template<
typename T, qualifier Q>
 
 1564         GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<3, T, Q> &v) {
 
 1565                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
 
 1568         template<
typename T, qualifier Q>
 
 1569         GLM_INLINE glm::vec<4, T, Q> yyyz(
const glm::vec<4, T, Q> &v) {
 
 1570                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.z);
 
 1574         template<
typename T, qualifier Q>
 
 1575         GLM_INLINE glm::vec<4, T, Q> yyyw(
const glm::vec<4, T, Q> &v) {
 
 1576                 return glm::vec<4, T, Q>(v.y, v.y, v.y, v.w);
 
 1580         template<
typename T, qualifier Q>
 
 1581         GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<3, T, Q> &v) {
 
 1582                 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
 
 1585         template<
typename T, qualifier Q>
 
 1586         GLM_INLINE glm::vec<4, T, Q> yyzx(
const glm::vec<4, T, Q> &v) {
 
 1587                 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.x);
 
 1591         template<
typename T, qualifier Q>
 
 1592         GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<3, T, Q> &v) {
 
 1593                 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
 
 1596         template<
typename T, qualifier Q>
 
 1597         GLM_INLINE glm::vec<4, T, Q> yyzy(
const glm::vec<4, T, Q> &v) {
 
 1598                 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.y);
 
 1602         template<
typename T, qualifier Q>
 
 1603         GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<3, T, Q> &v) {
 
 1604                 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
 
 1607         template<
typename T, qualifier Q>
 
 1608         GLM_INLINE glm::vec<4, T, Q> yyzz(
const glm::vec<4, T, Q> &v) {
 
 1609                 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.z);
 
 1613         template<
typename T, qualifier Q>
 
 1614         GLM_INLINE glm::vec<4, T, Q> yyzw(
const glm::vec<4, T, Q> &v) {
 
 1615                 return glm::vec<4, T, Q>(v.y, v.y, v.z, v.w);
 
 1619         template<
typename T, qualifier Q>
 
 1620         GLM_INLINE glm::vec<4, T, Q> yywx(
const glm::vec<4, T, Q> &v) {
 
 1621                 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.x);
 
 1625         template<
typename T, qualifier Q>
 
 1626         GLM_INLINE glm::vec<4, T, Q> yywy(
const glm::vec<4, T, Q> &v) {
 
 1627                 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.y);
 
 1631         template<
typename T, qualifier Q>
 
 1632         GLM_INLINE glm::vec<4, T, Q> yywz(
const glm::vec<4, T, Q> &v) {
 
 1633                 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.z);
 
 1637         template<
typename T, qualifier Q>
 
 1638         GLM_INLINE glm::vec<4, T, Q> yyww(
const glm::vec<4, T, Q> &v) {
 
 1639                 return glm::vec<4, T, Q>(v.y, v.y, v.w, v.w);
 
 1643         template<
typename T, qualifier Q>
 
 1644         GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<3, T, Q> &v) {
 
 1645                 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
 
 1648         template<
typename T, qualifier Q>
 
 1649         GLM_INLINE glm::vec<4, T, Q> yzxx(
const glm::vec<4, T, Q> &v) {
 
 1650                 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.x);
 
 1654         template<
typename T, qualifier Q>
 
 1655         GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<3, T, Q> &v) {
 
 1656                 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
 
 1659         template<
typename T, qualifier Q>
 
 1660         GLM_INLINE glm::vec<4, T, Q> yzxy(
const glm::vec<4, T, Q> &v) {
 
 1661                 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.y);
 
 1665         template<
typename T, qualifier Q>
 
 1666         GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<3, T, Q> &v) {
 
 1667                 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
 
 1670         template<
typename T, qualifier Q>
 
 1671         GLM_INLINE glm::vec<4, T, Q> yzxz(
const glm::vec<4, T, Q> &v) {
 
 1672                 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.z);
 
 1676         template<
typename T, qualifier Q>
 
 1677         GLM_INLINE glm::vec<4, T, Q> yzxw(
const glm::vec<4, T, Q> &v) {
 
 1678                 return glm::vec<4, T, Q>(v.y, v.z, v.x, v.w);
 
 1682         template<
typename T, qualifier Q>
 
 1683         GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<3, T, Q> &v) {
 
 1684                 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
 
 1687         template<
typename T, qualifier Q>
 
 1688         GLM_INLINE glm::vec<4, T, Q> yzyx(
const glm::vec<4, T, Q> &v) {
 
 1689                 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.x);
 
 1693         template<
typename T, qualifier Q>
 
 1694         GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<3, T, Q> &v) {
 
 1695                 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
 
 1698         template<
typename T, qualifier Q>
 
 1699         GLM_INLINE glm::vec<4, T, Q> yzyy(
const glm::vec<4, T, Q> &v) {
 
 1700                 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.y);
 
 1704         template<
typename T, qualifier Q>
 
 1705         GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<3, T, Q> &v) {
 
 1706                 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
 
 1709         template<
typename T, qualifier Q>
 
 1710         GLM_INLINE glm::vec<4, T, Q> yzyz(
const glm::vec<4, T, Q> &v) {
 
 1711                 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.z);
 
 1715         template<
typename T, qualifier Q>
 
 1716         GLM_INLINE glm::vec<4, T, Q> yzyw(
const glm::vec<4, T, Q> &v) {
 
 1717                 return glm::vec<4, T, Q>(v.y, v.z, v.y, v.w);
 
 1721         template<
typename T, qualifier Q>
 
 1722         GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<3, T, Q> &v) {
 
 1723                 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
 
 1726         template<
typename T, qualifier Q>
 
 1727         GLM_INLINE glm::vec<4, T, Q> yzzx(
const glm::vec<4, T, Q> &v) {
 
 1728                 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.x);
 
 1732         template<
typename T, qualifier Q>
 
 1733         GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<3, T, Q> &v) {
 
 1734                 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
 
 1737         template<
typename T, qualifier Q>
 
 1738         GLM_INLINE glm::vec<4, T, Q> yzzy(
const glm::vec<4, T, Q> &v) {
 
 1739                 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.y);
 
 1743         template<
typename T, qualifier Q>
 
 1744         GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<3, T, Q> &v) {
 
 1745                 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
 
 1748         template<
typename T, qualifier Q>
 
 1749         GLM_INLINE glm::vec<4, T, Q> yzzz(
const glm::vec<4, T, Q> &v) {
 
 1750                 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.z);
 
 1754         template<
typename T, qualifier Q>
 
 1755         GLM_INLINE glm::vec<4, T, Q> yzzw(
const glm::vec<4, T, Q> &v) {
 
 1756                 return glm::vec<4, T, Q>(v.y, v.z, v.z, v.w);
 
 1760         template<
typename T, qualifier Q>
 
 1761         GLM_INLINE glm::vec<4, T, Q> yzwx(
const glm::vec<4, T, Q> &v) {
 
 1762                 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.x);
 
 1766         template<
typename T, qualifier Q>
 
 1767         GLM_INLINE glm::vec<4, T, Q> yzwy(
const glm::vec<4, T, Q> &v) {
 
 1768                 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.y);
 
 1772         template<
typename T, qualifier Q>
 
 1773         GLM_INLINE glm::vec<4, T, Q> yzwz(
const glm::vec<4, T, Q> &v) {
 
 1774                 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.z);
 
 1778         template<
typename T, qualifier Q>
 
 1779         GLM_INLINE glm::vec<4, T, Q> yzww(
const glm::vec<4, T, Q> &v) {
 
 1780                 return glm::vec<4, T, Q>(v.y, v.z, v.w, v.w);
 
 1784         template<
typename T, qualifier Q>
 
 1785         GLM_INLINE glm::vec<4, T, Q> ywxx(
const glm::vec<4, T, Q> &v) {
 
 1786                 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.x);
 
 1790         template<
typename T, qualifier Q>
 
 1791         GLM_INLINE glm::vec<4, T, Q> ywxy(
const glm::vec<4, T, Q> &v) {
 
 1792                 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.y);
 
 1796         template<
typename T, qualifier Q>
 
 1797         GLM_INLINE glm::vec<4, T, Q> ywxz(
const glm::vec<4, T, Q> &v) {
 
 1798                 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.z);
 
 1802         template<
typename T, qualifier Q>
 
 1803         GLM_INLINE glm::vec<4, T, Q> ywxw(
const glm::vec<4, T, Q> &v) {
 
 1804                 return glm::vec<4, T, Q>(v.y, v.w, v.x, v.w);
 
 1808         template<
typename T, qualifier Q>
 
 1809         GLM_INLINE glm::vec<4, T, Q> ywyx(
const glm::vec<4, T, Q> &v) {
 
 1810                 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.x);
 
 1814         template<
typename T, qualifier Q>
 
 1815         GLM_INLINE glm::vec<4, T, Q> ywyy(
const glm::vec<4, T, Q> &v) {
 
 1816                 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.y);
 
 1820         template<
typename T, qualifier Q>
 
 1821         GLM_INLINE glm::vec<4, T, Q> ywyz(
const glm::vec<4, T, Q> &v) {
 
 1822                 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.z);
 
 1826         template<
typename T, qualifier Q>
 
 1827         GLM_INLINE glm::vec<4, T, Q> ywyw(
const glm::vec<4, T, Q> &v) {
 
 1828                 return glm::vec<4, T, Q>(v.y, v.w, v.y, v.w);
 
 1832         template<
typename T, qualifier Q>
 
 1833         GLM_INLINE glm::vec<4, T, Q> ywzx(
const glm::vec<4, T, Q> &v) {
 
 1834                 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.x);
 
 1838         template<
typename T, qualifier Q>
 
 1839         GLM_INLINE glm::vec<4, T, Q> ywzy(
const glm::vec<4, T, Q> &v) {
 
 1840                 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.y);
 
 1844         template<
typename T, qualifier Q>
 
 1845         GLM_INLINE glm::vec<4, T, Q> ywzz(
const glm::vec<4, T, Q> &v) {
 
 1846                 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.z);
 
 1850         template<
typename T, qualifier Q>
 
 1851         GLM_INLINE glm::vec<4, T, Q> ywzw(
const glm::vec<4, T, Q> &v) {
 
 1852                 return glm::vec<4, T, Q>(v.y, v.w, v.z, v.w);
 
 1856         template<
typename T, qualifier Q>
 
 1857         GLM_INLINE glm::vec<4, T, Q> ywwx(
const glm::vec<4, T, Q> &v) {
 
 1858                 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.x);
 
 1862         template<
typename T, qualifier Q>
 
 1863         GLM_INLINE glm::vec<4, T, Q> ywwy(
const glm::vec<4, T, Q> &v) {
 
 1864                 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.y);
 
 1868         template<
typename T, qualifier Q>
 
 1869         GLM_INLINE glm::vec<4, T, Q> ywwz(
const glm::vec<4, T, Q> &v) {
 
 1870                 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.z);
 
 1874         template<
typename T, qualifier Q>
 
 1875         GLM_INLINE glm::vec<4, T, Q> ywww(
const glm::vec<4, T, Q> &v) {
 
 1876                 return glm::vec<4, T, Q>(v.y, v.w, v.w, v.w);
 
 1880         template<
typename T, qualifier Q>
 
 1881         GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<3, T, Q> &v) {
 
 1882                 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
 
 1885         template<
typename T, qualifier Q>
 
 1886         GLM_INLINE glm::vec<4, T, Q> zxxx(
const glm::vec<4, T, Q> &v) {
 
 1887                 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.x);
 
 1891         template<
typename T, qualifier Q>
 
 1892         GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<3, T, Q> &v) {
 
 1893                 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
 
 1896         template<
typename T, qualifier Q>
 
 1897         GLM_INLINE glm::vec<4, T, Q> zxxy(
const glm::vec<4, T, Q> &v) {
 
 1898                 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.y);
 
 1902         template<
typename T, qualifier Q>
 
 1903         GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<3, T, Q> &v) {
 
 1904                 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
 
 1907         template<
typename T, qualifier Q>
 
 1908         GLM_INLINE glm::vec<4, T, Q> zxxz(
const glm::vec<4, T, Q> &v) {
 
 1909                 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.z);
 
 1913         template<
typename T, qualifier Q>
 
 1914         GLM_INLINE glm::vec<4, T, Q> zxxw(
const glm::vec<4, T, Q> &v) {
 
 1915                 return glm::vec<4, T, Q>(v.z, v.x, v.x, v.w);
 
 1919         template<
typename T, qualifier Q>
 
 1920         GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<3, T, Q> &v) {
 
 1921                 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
 
 1924         template<
typename T, qualifier Q>
 
 1925         GLM_INLINE glm::vec<4, T, Q> zxyx(
const glm::vec<4, T, Q> &v) {
 
 1926                 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.x);
 
 1930         template<
typename T, qualifier Q>
 
 1931         GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<3, T, Q> &v) {
 
 1932                 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
 
 1935         template<
typename T, qualifier Q>
 
 1936         GLM_INLINE glm::vec<4, T, Q> zxyy(
const glm::vec<4, T, Q> &v) {
 
 1937                 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.y);
 
 1941         template<
typename T, qualifier Q>
 
 1942         GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<3, T, Q> &v) {
 
 1943                 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
 
 1946         template<
typename T, qualifier Q>
 
 1947         GLM_INLINE glm::vec<4, T, Q> zxyz(
const glm::vec<4, T, Q> &v) {
 
 1948                 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.z);
 
 1952         template<
typename T, qualifier Q>
 
 1953         GLM_INLINE glm::vec<4, T, Q> zxyw(
const glm::vec<4, T, Q> &v) {
 
 1954                 return glm::vec<4, T, Q>(v.z, v.x, v.y, v.w);
 
 1958         template<
typename T, qualifier Q>
 
 1959         GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<3, T, Q> &v) {
 
 1960                 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
 
 1963         template<
typename T, qualifier Q>
 
 1964         GLM_INLINE glm::vec<4, T, Q> zxzx(
const glm::vec<4, T, Q> &v) {
 
 1965                 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.x);
 
 1969         template<
typename T, qualifier Q>
 
 1970         GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<3, T, Q> &v) {
 
 1971                 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
 
 1974         template<
typename T, qualifier Q>
 
 1975         GLM_INLINE glm::vec<4, T, Q> zxzy(
const glm::vec<4, T, Q> &v) {
 
 1976                 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.y);
 
 1980         template<
typename T, qualifier Q>
 
 1981         GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<3, T, Q> &v) {
 
 1982                 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
 
 1985         template<
typename T, qualifier Q>
 
 1986         GLM_INLINE glm::vec<4, T, Q> zxzz(
const glm::vec<4, T, Q> &v) {
 
 1987                 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.z);
 
 1991         template<
typename T, qualifier Q>
 
 1992         GLM_INLINE glm::vec<4, T, Q> zxzw(
const glm::vec<4, T, Q> &v) {
 
 1993                 return glm::vec<4, T, Q>(v.z, v.x, v.z, v.w);
 
 1997         template<
typename T, qualifier Q>
 
 1998         GLM_INLINE glm::vec<4, T, Q> zxwx(
const glm::vec<4, T, Q> &v) {
 
 1999                 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.x);
 
 2003         template<
typename T, qualifier Q>
 
 2004         GLM_INLINE glm::vec<4, T, Q> zxwy(
const glm::vec<4, T, Q> &v) {
 
 2005                 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.y);
 
 2009         template<
typename T, qualifier Q>
 
 2010         GLM_INLINE glm::vec<4, T, Q> zxwz(
const glm::vec<4, T, Q> &v) {
 
 2011                 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.z);
 
 2015         template<
typename T, qualifier Q>
 
 2016         GLM_INLINE glm::vec<4, T, Q> zxww(
const glm::vec<4, T, Q> &v) {
 
 2017                 return glm::vec<4, T, Q>(v.z, v.x, v.w, v.w);
 
 2021         template<
typename T, qualifier Q>
 
 2022         GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<3, T, Q> &v) {
 
 2023                 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
 
 2026         template<
typename T, qualifier Q>
 
 2027         GLM_INLINE glm::vec<4, T, Q> zyxx(
const glm::vec<4, T, Q> &v) {
 
 2028                 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.x);
 
 2032         template<
typename T, qualifier Q>
 
 2033         GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<3, T, Q> &v) {
 
 2034                 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
 
 2037         template<
typename T, qualifier Q>
 
 2038         GLM_INLINE glm::vec<4, T, Q> zyxy(
const glm::vec<4, T, Q> &v) {
 
 2039                 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.y);
 
 2043         template<
typename T, qualifier Q>
 
 2044         GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<3, T, Q> &v) {
 
 2045                 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
 
 2048         template<
typename T, qualifier Q>
 
 2049         GLM_INLINE glm::vec<4, T, Q> zyxz(
const glm::vec<4, T, Q> &v) {
 
 2050                 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.z);
 
 2054         template<
typename T, qualifier Q>
 
 2055         GLM_INLINE glm::vec<4, T, Q> zyxw(
const glm::vec<4, T, Q> &v) {
 
 2056                 return glm::vec<4, T, Q>(v.z, v.y, v.x, v.w);
 
 2060         template<
typename T, qualifier Q>
 
 2061         GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<3, T, Q> &v) {
 
 2062                 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
 
 2065         template<
typename T, qualifier Q>
 
 2066         GLM_INLINE glm::vec<4, T, Q> zyyx(
const glm::vec<4, T, Q> &v) {
 
 2067                 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.x);
 
 2071         template<
typename T, qualifier Q>
 
 2072         GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<3, T, Q> &v) {
 
 2073                 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
 
 2076         template<
typename T, qualifier Q>
 
 2077         GLM_INLINE glm::vec<4, T, Q> zyyy(
const glm::vec<4, T, Q> &v) {
 
 2078                 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.y);
 
 2082         template<
typename T, qualifier Q>
 
 2083         GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<3, T, Q> &v) {
 
 2084                 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
 
 2087         template<
typename T, qualifier Q>
 
 2088         GLM_INLINE glm::vec<4, T, Q> zyyz(
const glm::vec<4, T, Q> &v) {
 
 2089                 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.z);
 
 2093         template<
typename T, qualifier Q>
 
 2094         GLM_INLINE glm::vec<4, T, Q> zyyw(
const glm::vec<4, T, Q> &v) {
 
 2095                 return glm::vec<4, T, Q>(v.z, v.y, v.y, v.w);
 
 2099         template<
typename T, qualifier Q>
 
 2100         GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<3, T, Q> &v) {
 
 2101                 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
 
 2104         template<
typename T, qualifier Q>
 
 2105         GLM_INLINE glm::vec<4, T, Q> zyzx(
const glm::vec<4, T, Q> &v) {
 
 2106                 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.x);
 
 2110         template<
typename T, qualifier Q>
 
 2111         GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<3, T, Q> &v) {
 
 2112                 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
 
 2115         template<
typename T, qualifier Q>
 
 2116         GLM_INLINE glm::vec<4, T, Q> zyzy(
const glm::vec<4, T, Q> &v) {
 
 2117                 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.y);
 
 2121         template<
typename T, qualifier Q>
 
 2122         GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<3, T, Q> &v) {
 
 2123                 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
 
 2126         template<
typename T, qualifier Q>
 
 2127         GLM_INLINE glm::vec<4, T, Q> zyzz(
const glm::vec<4, T, Q> &v) {
 
 2128                 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.z);
 
 2132         template<
typename T, qualifier Q>
 
 2133         GLM_INLINE glm::vec<4, T, Q> zyzw(
const glm::vec<4, T, Q> &v) {
 
 2134                 return glm::vec<4, T, Q>(v.z, v.y, v.z, v.w);
 
 2138         template<
typename T, qualifier Q>
 
 2139         GLM_INLINE glm::vec<4, T, Q> zywx(
const glm::vec<4, T, Q> &v) {
 
 2140                 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.x);
 
 2144         template<
typename T, qualifier Q>
 
 2145         GLM_INLINE glm::vec<4, T, Q> zywy(
const glm::vec<4, T, Q> &v) {
 
 2146                 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.y);
 
 2150         template<
typename T, qualifier Q>
 
 2151         GLM_INLINE glm::vec<4, T, Q> zywz(
const glm::vec<4, T, Q> &v) {
 
 2152                 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.z);
 
 2156         template<
typename T, qualifier Q>
 
 2157         GLM_INLINE glm::vec<4, T, Q> zyww(
const glm::vec<4, T, Q> &v) {
 
 2158                 return glm::vec<4, T, Q>(v.z, v.y, v.w, v.w);
 
 2162         template<
typename T, qualifier Q>
 
 2163         GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<3, T, Q> &v) {
 
 2164                 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
 
 2167         template<
typename T, qualifier Q>
 
 2168         GLM_INLINE glm::vec<4, T, Q> zzxx(
const glm::vec<4, T, Q> &v) {
 
 2169                 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.x);
 
 2173         template<
typename T, qualifier Q>
 
 2174         GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<3, T, Q> &v) {
 
 2175                 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
 
 2178         template<
typename T, qualifier Q>
 
 2179         GLM_INLINE glm::vec<4, T, Q> zzxy(
const glm::vec<4, T, Q> &v) {
 
 2180                 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.y);
 
 2184         template<
typename T, qualifier Q>
 
 2185         GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<3, T, Q> &v) {
 
 2186                 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
 
 2189         template<
typename T, qualifier Q>
 
 2190         GLM_INLINE glm::vec<4, T, Q> zzxz(
const glm::vec<4, T, Q> &v) {
 
 2191                 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.z);
 
 2195         template<
typename T, qualifier Q>
 
 2196         GLM_INLINE glm::vec<4, T, Q> zzxw(
const glm::vec<4, T, Q> &v) {
 
 2197                 return glm::vec<4, T, Q>(v.z, v.z, v.x, v.w);
 
 2201         template<
typename T, qualifier Q>
 
 2202         GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<3, T, Q> &v) {
 
 2203                 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
 
 2206         template<
typename T, qualifier Q>
 
 2207         GLM_INLINE glm::vec<4, T, Q> zzyx(
const glm::vec<4, T, Q> &v) {
 
 2208                 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.x);
 
 2212         template<
typename T, qualifier Q>
 
 2213         GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<3, T, Q> &v) {
 
 2214                 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
 
 2217         template<
typename T, qualifier Q>
 
 2218         GLM_INLINE glm::vec<4, T, Q> zzyy(
const glm::vec<4, T, Q> &v) {
 
 2219                 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.y);
 
 2223         template<
typename T, qualifier Q>
 
 2224         GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<3, T, Q> &v) {
 
 2225                 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
 
 2228         template<
typename T, qualifier Q>
 
 2229         GLM_INLINE glm::vec<4, T, Q> zzyz(
const glm::vec<4, T, Q> &v) {
 
 2230                 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.z);
 
 2234         template<
typename T, qualifier Q>
 
 2235         GLM_INLINE glm::vec<4, T, Q> zzyw(
const glm::vec<4, T, Q> &v) {
 
 2236                 return glm::vec<4, T, Q>(v.z, v.z, v.y, v.w);
 
 2240         template<
typename T, qualifier Q>
 
 2241         GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<3, T, Q> &v) {
 
 2242                 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
 
 2245         template<
typename T, qualifier Q>
 
 2246         GLM_INLINE glm::vec<4, T, Q> zzzx(
const glm::vec<4, T, Q> &v) {
 
 2247                 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.x);
 
 2251         template<
typename T, qualifier Q>
 
 2252         GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<3, T, Q> &v) {
 
 2253                 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
 
 2256         template<
typename T, qualifier Q>
 
 2257         GLM_INLINE glm::vec<4, T, Q> zzzy(
const glm::vec<4, T, Q> &v) {
 
 2258                 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.y);
 
 2262         template<
typename T, qualifier Q>
 
 2263         GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<3, T, Q> &v) {
 
 2264                 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
 
 2267         template<
typename T, qualifier Q>
 
 2268         GLM_INLINE glm::vec<4, T, Q> zzzz(
const glm::vec<4, T, Q> &v) {
 
 2269                 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.z);
 
 2273         template<
typename T, qualifier Q>
 
 2274         GLM_INLINE glm::vec<4, T, Q> zzzw(
const glm::vec<4, T, Q> &v) {
 
 2275                 return glm::vec<4, T, Q>(v.z, v.z, v.z, v.w);
 
 2279         template<
typename T, qualifier Q>
 
 2280         GLM_INLINE glm::vec<4, T, Q> zzwx(
const glm::vec<4, T, Q> &v) {
 
 2281                 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.x);
 
 2285         template<
typename T, qualifier Q>
 
 2286         GLM_INLINE glm::vec<4, T, Q> zzwy(
const glm::vec<4, T, Q> &v) {
 
 2287                 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.y);
 
 2291         template<
typename T, qualifier Q>
 
 2292         GLM_INLINE glm::vec<4, T, Q> zzwz(
const glm::vec<4, T, Q> &v) {
 
 2293                 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.z);
 
 2297         template<
typename T, qualifier Q>
 
 2298         GLM_INLINE glm::vec<4, T, Q> zzww(
const glm::vec<4, T, Q> &v) {
 
 2299                 return glm::vec<4, T, Q>(v.z, v.z, v.w, v.w);
 
 2303         template<
typename T, qualifier Q>
 
 2304         GLM_INLINE glm::vec<4, T, Q> zwxx(
const glm::vec<4, T, Q> &v) {
 
 2305                 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.x);
 
 2309         template<
typename T, qualifier Q>
 
 2310         GLM_INLINE glm::vec<4, T, Q> zwxy(
const glm::vec<4, T, Q> &v) {
 
 2311                 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.y);
 
 2315         template<
typename T, qualifier Q>
 
 2316         GLM_INLINE glm::vec<4, T, Q> zwxz(
const glm::vec<4, T, Q> &v) {
 
 2317                 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.z);
 
 2321         template<
typename T, qualifier Q>
 
 2322         GLM_INLINE glm::vec<4, T, Q> zwxw(
const glm::vec<4, T, Q> &v) {
 
 2323                 return glm::vec<4, T, Q>(v.z, v.w, v.x, v.w);
 
 2327         template<
typename T, qualifier Q>
 
 2328         GLM_INLINE glm::vec<4, T, Q> zwyx(
const glm::vec<4, T, Q> &v) {
 
 2329                 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.x);
 
 2333         template<
typename T, qualifier Q>
 
 2334         GLM_INLINE glm::vec<4, T, Q> zwyy(
const glm::vec<4, T, Q> &v) {
 
 2335                 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.y);
 
 2339         template<
typename T, qualifier Q>
 
 2340         GLM_INLINE glm::vec<4, T, Q> zwyz(
const glm::vec<4, T, Q> &v) {
 
 2341                 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.z);
 
 2345         template<
typename T, qualifier Q>
 
 2346         GLM_INLINE glm::vec<4, T, Q> zwyw(
const glm::vec<4, T, Q> &v) {
 
 2347                 return glm::vec<4, T, Q>(v.z, v.w, v.y, v.w);
 
 2351         template<
typename T, qualifier Q>
 
 2352         GLM_INLINE glm::vec<4, T, Q> zwzx(
const glm::vec<4, T, Q> &v) {
 
 2353                 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.x);
 
 2357         template<
typename T, qualifier Q>
 
 2358         GLM_INLINE glm::vec<4, T, Q> zwzy(
const glm::vec<4, T, Q> &v) {
 
 2359                 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.y);
 
 2363         template<
typename T, qualifier Q>
 
 2364         GLM_INLINE glm::vec<4, T, Q> zwzz(
const glm::vec<4, T, Q> &v) {
 
 2365                 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.z);
 
 2369         template<
typename T, qualifier Q>
 
 2370         GLM_INLINE glm::vec<4, T, Q> zwzw(
const glm::vec<4, T, Q> &v) {
 
 2371                 return glm::vec<4, T, Q>(v.z, v.w, v.z, v.w);
 
 2375         template<
typename T, qualifier Q>
 
 2376         GLM_INLINE glm::vec<4, T, Q> zwwx(
const glm::vec<4, T, Q> &v) {
 
 2377                 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.x);
 
 2381         template<
typename T, qualifier Q>
 
 2382         GLM_INLINE glm::vec<4, T, Q> zwwy(
const glm::vec<4, T, Q> &v) {
 
 2383                 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.y);
 
 2387         template<
typename T, qualifier Q>
 
 2388         GLM_INLINE glm::vec<4, T, Q> zwwz(
const glm::vec<4, T, Q> &v) {
 
 2389                 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.z);
 
 2393         template<
typename T, qualifier Q>
 
 2394         GLM_INLINE glm::vec<4, T, Q> zwww(
const glm::vec<4, T, Q> &v) {
 
 2395                 return glm::vec<4, T, Q>(v.z, v.w, v.w, v.w);
 
 2399         template<
typename T, qualifier Q>
 
 2400         GLM_INLINE glm::vec<4, T, Q> wxxx(
const glm::vec<4, T, Q> &v) {
 
 2401                 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.x);
 
 2405         template<
typename T, qualifier Q>
 
 2406         GLM_INLINE glm::vec<4, T, Q> wxxy(
const glm::vec<4, T, Q> &v) {
 
 2407                 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.y);
 
 2411         template<
typename T, qualifier Q>
 
 2412         GLM_INLINE glm::vec<4, T, Q> wxxz(
const glm::vec<4, T, Q> &v) {
 
 2413                 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.z);
 
 2417         template<
typename T, qualifier Q>
 
 2418         GLM_INLINE glm::vec<4, T, Q> wxxw(
const glm::vec<4, T, Q> &v) {
 
 2419                 return glm::vec<4, T, Q>(v.w, v.x, v.x, v.w);
 
 2423         template<
typename T, qualifier Q>
 
 2424         GLM_INLINE glm::vec<4, T, Q> wxyx(
const glm::vec<4, T, Q> &v) {
 
 2425                 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.x);
 
 2429         template<
typename T, qualifier Q>
 
 2430         GLM_INLINE glm::vec<4, T, Q> wxyy(
const glm::vec<4, T, Q> &v) {
 
 2431                 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.y);
 
 2435         template<
typename T, qualifier Q>
 
 2436         GLM_INLINE glm::vec<4, T, Q> wxyz(
const glm::vec<4, T, Q> &v) {
 
 2437                 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.z);
 
 2441         template<
typename T, qualifier Q>
 
 2442         GLM_INLINE glm::vec<4, T, Q> wxyw(
const glm::vec<4, T, Q> &v) {
 
 2443                 return glm::vec<4, T, Q>(v.w, v.x, v.y, v.w);
 
 2447         template<
typename T, qualifier Q>
 
 2448         GLM_INLINE glm::vec<4, T, Q> wxzx(
const glm::vec<4, T, Q> &v) {
 
 2449                 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.x);
 
 2453         template<
typename T, qualifier Q>
 
 2454         GLM_INLINE glm::vec<4, T, Q> wxzy(
const glm::vec<4, T, Q> &v) {
 
 2455                 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.y);
 
 2459         template<
typename T, qualifier Q>
 
 2460         GLM_INLINE glm::vec<4, T, Q> wxzz(
const glm::vec<4, T, Q> &v) {
 
 2461                 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.z);
 
 2465         template<
typename T, qualifier Q>
 
 2466         GLM_INLINE glm::vec<4, T, Q> wxzw(
const glm::vec<4, T, Q> &v) {
 
 2467                 return glm::vec<4, T, Q>(v.w, v.x, v.z, v.w);
 
 2471         template<
typename T, qualifier Q>
 
 2472         GLM_INLINE glm::vec<4, T, Q> wxwx(
const glm::vec<4, T, Q> &v) {
 
 2473                 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.x);
 
 2477         template<
typename T, qualifier Q>
 
 2478         GLM_INLINE glm::vec<4, T, Q> wxwy(
const glm::vec<4, T, Q> &v) {
 
 2479                 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.y);
 
 2483         template<
typename T, qualifier Q>
 
 2484         GLM_INLINE glm::vec<4, T, Q> wxwz(
const glm::vec<4, T, Q> &v) {
 
 2485                 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.z);
 
 2489         template<
typename T, qualifier Q>
 
 2490         GLM_INLINE glm::vec<4, T, Q> wxww(
const glm::vec<4, T, Q> &v) {
 
 2491                 return glm::vec<4, T, Q>(v.w, v.x, v.w, v.w);
 
 2495         template<
typename T, qualifier Q>
 
 2496         GLM_INLINE glm::vec<4, T, Q> wyxx(
const glm::vec<4, T, Q> &v) {
 
 2497                 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.x);
 
 2501         template<
typename T, qualifier Q>
 
 2502         GLM_INLINE glm::vec<4, T, Q> wyxy(
const glm::vec<4, T, Q> &v) {
 
 2503                 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.y);
 
 2507         template<
typename T, qualifier Q>
 
 2508         GLM_INLINE glm::vec<4, T, Q> wyxz(
const glm::vec<4, T, Q> &v) {
 
 2509                 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.z);
 
 2513         template<
typename T, qualifier Q>
 
 2514         GLM_INLINE glm::vec<4, T, Q> wyxw(
const glm::vec<4, T, Q> &v) {
 
 2515                 return glm::vec<4, T, Q>(v.w, v.y, v.x, v.w);
 
 2519         template<
typename T, qualifier Q>
 
 2520         GLM_INLINE glm::vec<4, T, Q> wyyx(
const glm::vec<4, T, Q> &v) {
 
 2521                 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.x);
 
 2525         template<
typename T, qualifier Q>
 
 2526         GLM_INLINE glm::vec<4, T, Q> wyyy(
const glm::vec<4, T, Q> &v) {
 
 2527                 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.y);
 
 2531         template<
typename T, qualifier Q>
 
 2532         GLM_INLINE glm::vec<4, T, Q> wyyz(
const glm::vec<4, T, Q> &v) {
 
 2533                 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.z);
 
 2537         template<
typename T, qualifier Q>
 
 2538         GLM_INLINE glm::vec<4, T, Q> wyyw(
const glm::vec<4, T, Q> &v) {
 
 2539                 return glm::vec<4, T, Q>(v.w, v.y, v.y, v.w);
 
 2543         template<
typename T, qualifier Q>
 
 2544         GLM_INLINE glm::vec<4, T, Q> wyzx(
const glm::vec<4, T, Q> &v) {
 
 2545                 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.x);
 
 2549         template<
typename T, qualifier Q>
 
 2550         GLM_INLINE glm::vec<4, T, Q> wyzy(
const glm::vec<4, T, Q> &v) {
 
 2551                 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.y);
 
 2555         template<
typename T, qualifier Q>
 
 2556         GLM_INLINE glm::vec<4, T, Q> wyzz(
const glm::vec<4, T, Q> &v) {
 
 2557                 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.z);
 
 2561         template<
typename T, qualifier Q>
 
 2562         GLM_INLINE glm::vec<4, T, Q> wyzw(
const glm::vec<4, T, Q> &v) {
 
 2563                 return glm::vec<4, T, Q>(v.w, v.y, v.z, v.w);
 
 2567         template<
typename T, qualifier Q>
 
 2568         GLM_INLINE glm::vec<4, T, Q> wywx(
const glm::vec<4, T, Q> &v) {
 
 2569                 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.x);
 
 2573         template<
typename T, qualifier Q>
 
 2574         GLM_INLINE glm::vec<4, T, Q> wywy(
const glm::vec<4, T, Q> &v) {
 
 2575                 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.y);
 
 2579         template<
typename T, qualifier Q>
 
 2580         GLM_INLINE glm::vec<4, T, Q> wywz(
const glm::vec<4, T, Q> &v) {
 
 2581                 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.z);
 
 2585         template<
typename T, qualifier Q>
 
 2586         GLM_INLINE glm::vec<4, T, Q> wyww(
const glm::vec<4, T, Q> &v) {
 
 2587                 return glm::vec<4, T, Q>(v.w, v.y, v.w, v.w);
 
 2591         template<
typename T, qualifier Q>
 
 2592         GLM_INLINE glm::vec<4, T, Q> wzxx(
const glm::vec<4, T, Q> &v) {
 
 2593                 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.x);
 
 2597         template<
typename T, qualifier Q>
 
 2598         GLM_INLINE glm::vec<4, T, Q> wzxy(
const glm::vec<4, T, Q> &v) {
 
 2599                 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.y);
 
 2603         template<
typename T, qualifier Q>
 
 2604         GLM_INLINE glm::vec<4, T, Q> wzxz(
const glm::vec<4, T, Q> &v) {
 
 2605                 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.z);
 
 2609         template<
typename T, qualifier Q>
 
 2610         GLM_INLINE glm::vec<4, T, Q> wzxw(
const glm::vec<4, T, Q> &v) {
 
 2611                 return glm::vec<4, T, Q>(v.w, v.z, v.x, v.w);
 
 2615         template<
typename T, qualifier Q>
 
 2616         GLM_INLINE glm::vec<4, T, Q> wzyx(
const glm::vec<4, T, Q> &v) {
 
 2617                 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.x);
 
 2621         template<
typename T, qualifier Q>
 
 2622         GLM_INLINE glm::vec<4, T, Q> wzyy(
const glm::vec<4, T, Q> &v) {
 
 2623                 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.y);
 
 2627         template<
typename T, qualifier Q>
 
 2628         GLM_INLINE glm::vec<4, T, Q> wzyz(
const glm::vec<4, T, Q> &v) {
 
 2629                 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.z);
 
 2633         template<
typename T, qualifier Q>
 
 2634         GLM_INLINE glm::vec<4, T, Q> wzyw(
const glm::vec<4, T, Q> &v) {
 
 2635                 return glm::vec<4, T, Q>(v.w, v.z, v.y, v.w);
 
 2639         template<
typename T, qualifier Q>
 
 2640         GLM_INLINE glm::vec<4, T, Q> wzzx(
const glm::vec<4, T, Q> &v) {
 
 2641                 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.x);
 
 2645         template<
typename T, qualifier Q>
 
 2646         GLM_INLINE glm::vec<4, T, Q> wzzy(
const glm::vec<4, T, Q> &v) {
 
 2647                 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.y);
 
 2651         template<
typename T, qualifier Q>
 
 2652         GLM_INLINE glm::vec<4, T, Q> wzzz(
const glm::vec<4, T, Q> &v) {
 
 2653                 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.z);
 
 2657         template<
typename T, qualifier Q>
 
 2658         GLM_INLINE glm::vec<4, T, Q> wzzw(
const glm::vec<4, T, Q> &v) {
 
 2659                 return glm::vec<4, T, Q>(v.w, v.z, v.z, v.w);
 
 2663         template<
typename T, qualifier Q>
 
 2664         GLM_INLINE glm::vec<4, T, Q> wzwx(
const glm::vec<4, T, Q> &v) {
 
 2665                 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.x);
 
 2669         template<
typename T, qualifier Q>
 
 2670         GLM_INLINE glm::vec<4, T, Q> wzwy(
const glm::vec<4, T, Q> &v) {
 
 2671                 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.y);
 
 2675         template<
typename T, qualifier Q>
 
 2676         GLM_INLINE glm::vec<4, T, Q> wzwz(
const glm::vec<4, T, Q> &v) {
 
 2677                 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.z);
 
 2681         template<
typename T, qualifier Q>
 
 2682         GLM_INLINE glm::vec<4, T, Q> wzww(
const glm::vec<4, T, Q> &v) {
 
 2683                 return glm::vec<4, T, Q>(v.w, v.z, v.w, v.w);
 
 2687         template<
typename T, qualifier Q>
 
 2688         GLM_INLINE glm::vec<4, T, Q> wwxx(
const glm::vec<4, T, Q> &v) {
 
 2689                 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.x);
 
 2693         template<
typename T, qualifier Q>
 
 2694         GLM_INLINE glm::vec<4, T, Q> wwxy(
const glm::vec<4, T, Q> &v) {
 
 2695                 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.y);
 
 2699         template<
typename T, qualifier Q>
 
 2700         GLM_INLINE glm::vec<4, T, Q> wwxz(
const glm::vec<4, T, Q> &v) {
 
 2701                 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.z);
 
 2705         template<
typename T, qualifier Q>
 
 2706         GLM_INLINE glm::vec<4, T, Q> wwxw(
const glm::vec<4, T, Q> &v) {
 
 2707                 return glm::vec<4, T, Q>(v.w, v.w, v.x, v.w);
 
 2711         template<
typename T, qualifier Q>
 
 2712         GLM_INLINE glm::vec<4, T, Q> wwyx(
const glm::vec<4, T, Q> &v) {
 
 2713                 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.x);
 
 2717         template<
typename T, qualifier Q>
 
 2718         GLM_INLINE glm::vec<4, T, Q> wwyy(
const glm::vec<4, T, Q> &v) {
 
 2719                 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.y);
 
 2723         template<
typename T, qualifier Q>
 
 2724         GLM_INLINE glm::vec<4, T, Q> wwyz(
const glm::vec<4, T, Q> &v) {
 
 2725                 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.z);
 
 2729         template<
typename T, qualifier Q>
 
 2730         GLM_INLINE glm::vec<4, T, Q> wwyw(
const glm::vec<4, T, Q> &v) {
 
 2731                 return glm::vec<4, T, Q>(v.w, v.w, v.y, v.w);
 
 2735         template<
typename T, qualifier Q>
 
 2736         GLM_INLINE glm::vec<4, T, Q> wwzx(
const glm::vec<4, T, Q> &v) {
 
 2737                 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.x);
 
 2741         template<
typename T, qualifier Q>
 
 2742         GLM_INLINE glm::vec<4, T, Q> wwzy(
const glm::vec<4, T, Q> &v) {
 
 2743                 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.y);
 
 2747         template<
typename T, qualifier Q>
 
 2748         GLM_INLINE glm::vec<4, T, Q> wwzz(
const glm::vec<4, T, Q> &v) {
 
 2749                 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.z);
 
 2753         template<
typename T, qualifier Q>
 
 2754         GLM_INLINE glm::vec<4, T, Q> wwzw(
const glm::vec<4, T, Q> &v) {
 
 2755                 return glm::vec<4, T, Q>(v.w, v.w, v.z, v.w);
 
 2759         template<
typename T, qualifier Q>
 
 2760         GLM_INLINE glm::vec<4, T, Q> wwwx(
const glm::vec<4, T, Q> &v) {
 
 2761                 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.x);
 
 2765         template<
typename T, qualifier Q>
 
 2766         GLM_INLINE glm::vec<4, T, Q> wwwy(
const glm::vec<4, T, Q> &v) {
 
 2767                 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.y);
 
 2771         template<
typename T, qualifier Q>
 
 2772         GLM_INLINE glm::vec<4, T, Q> wwwz(
const glm::vec<4, T, Q> &v) {
 
 2773                 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.z);
 
 2777         template<
typename T, qualifier Q>
 
 2778         GLM_INLINE glm::vec<4, T, Q> wwww(
const glm::vec<4, T, Q> &v) {
 
 2779                 return glm::vec<4, T, Q>(v.w, v.w, v.w, v.w);