14         template<
typename T, qualifier P>
 
   15         struct mat<4, 4, T, P>
 
   17                 typedef vec<4, T, P> col_type;
 
   18                 typedef vec<4, T, P> row_type;
 
   19                 typedef mat<4, 4, T, P> type;
 
   20                 typedef mat<4, 4, T, P> transpose_type;
 
   29                 typedef length_t length_type;
 
   30                 GLM_FUNC_DECL 
static GLM_CONSTEXPR length_type 
length(){
return 4;}
 
   32                 GLM_FUNC_DECL col_type & operator[](length_type i);
 
   33                 GLM_FUNC_DECL col_type 
const & operator[](length_type i) 
const;
 
   37                 GLM_FUNC_DECL mat() GLM_DEFAULT;
 
   38                 GLM_FUNC_DECL mat(mat<4, 4, T, P> const& m) GLM_DEFAULT;
 
   40                 GLM_FUNC_DECL mat(mat<4, 4, T, Q> const& m);
 
   42                 GLM_FUNC_DECL explicit mat(T const & x);
 
   44                         T const & x0, T const & y0, T const & z0, T const & w0,
 
   45                         T const & x1, T const & y1, T const & z1, T const & w1,
 
   46                         T const & x2, T const & y2, T const & z2, T const & w2,
 
   47                         T const & x3, T const & y3, T const & z3, T const & w3);
 
   57                         typename X1, typename Y1, typename Z1, typename W1,
 
   58                         typename X2, typename Y2, typename Z2, typename W2,
 
   59                         typename X3, typename Y3, typename Z3, typename W3,
 
   60                         typename X4, typename Y4, typename Z4, typename W4>
 
   62                         X1 const & x1, Y1 const & y1, Z1 const & z1, W1 const & w1,
 
   63                         X2 const & x2, Y2 const & y2, Z2 const & z2, W2 const & w2,
 
   64                         X3 const & x3, Y3 const & y3, Z3 const & z3, W3 const & w3,
 
   65                         X4 const & x4, Y4 const & y4, Z4 const & z4, W4 const & w4);
 
   67                 template<typename V1, typename V2, typename V3, typename V4>
 
   69                         vec<4, V1, P> const & v1,
 
   70                         vec<4, V2, P> const & v2,
 
   71                         vec<4, V3, P> const & v3,
 
   72                         vec<4, V4, P> const & v4);
 
   76                 template<typename U, qualifier Q>
 
   77                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<4, 4, U, Q> const & m);
 
   79                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<2, 2, T, P> const & x);
 
   80                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<3, 3, T, P> const & x);
 
   81                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<2, 3, T, P> const & x);
 
   82                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<3, 2, T, P> const & x);
 
   83                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<2, 4, T, P> const & x);
 
   84                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<4, 2, T, P> const & x);
 
   85                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<3, 4, T, P> const & x);
 
   86                 GLM_FUNC_DECL GLM_EXPLICIT mat(mat<4, 3, T, P> const & x);
 
   90                 GLM_FUNC_DECL mat<4, 4, T, P> & operator=(mat<4, 4, T, P> const & m) GLM_DEFAULT;
 
   93                 GLM_FUNC_DECL mat<4, 4, T, P> & operator=(mat<4, 4, U, P> const & m);
 
   95                 GLM_FUNC_DECL mat<4, 4, T, P> & operator+=(U s);
 
   97                 GLM_FUNC_DECL mat<4, 4, T, P> & operator+=(mat<4, 4, U, P> const & m);
 
   99                 GLM_FUNC_DECL mat<4, 4, T, P> & operator-=(U s);
 
  101                 GLM_FUNC_DECL mat<4, 4, T, P> & operator-=(mat<4, 4, U, P> const & m);
 
  103                 GLM_FUNC_DECL mat<4, 4, T, P> & operator*=(U s);
 
  105                 GLM_FUNC_DECL mat<4, 4, T, P> & operator*=(mat<4, 4, U, P> const & m);
 
  107                 GLM_FUNC_DECL mat<4, 4, T, P> & operator/=(U s);
 
  109                 GLM_FUNC_DECL mat<4, 4, T, P> & operator/=(mat<4, 4, U, P> const & m);
 
  113                 GLM_FUNC_DECL mat<4, 4, T, P> & operator++();
 
  114                 GLM_FUNC_DECL mat<4, 4, T, P> & operator--();
 
  115                 GLM_FUNC_DECL mat<4, 4, T, P> operator++(
int);
 
  116                 GLM_FUNC_DECL mat<4, 4, T, P> operator--(
int);
 
  121         template<typename T, qualifier P>
 
  122         GLM_FUNC_DECL mat<4, 4, T, P> operator+(mat<4, 4, T, P> const & m);
 
  124         template<typename T, qualifier P>
 
  125         GLM_FUNC_DECL mat<4, 4, T, P> operator-(mat<4, 4, T, P> const & m);
 
  129         template<typename T, qualifier P>
 
  130         GLM_FUNC_DECL mat<4, 4, T, P> operator+(mat<4, 4, T, P> const & m, T const & s);
 
  132         template<typename T, qualifier P>
 
  133         GLM_FUNC_DECL mat<4, 4, T, P> operator+(T const & s, mat<4, 4, T, P> const & m);
 
  135         template<typename T, qualifier P>
 
  136         GLM_FUNC_DECL mat<4, 4, T, P> operator+(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
 
  138         template<typename T, qualifier P>
 
  139         GLM_FUNC_DECL mat<4, 4, T, P> operator-(mat<4, 4, T, P> const & m, T const & s);
 
  141         template<typename T, qualifier P>
 
  142         GLM_FUNC_DECL mat<4, 4, T, P> operator-(T const & s, mat<4, 4, T, P> const & m);
 
  144         template<typename T, qualifier P>
 
  145         GLM_FUNC_DECL mat<4, 4, T, P> operator-(mat<4, 4, T, P> const & m1,     mat<4, 4, T, P> const& m2);
 
  147         template<typename T, qualifier P>
 
  148         GLM_FUNC_DECL mat<4, 4, T, P> operator*(mat<4, 4, T, P> const & m, T const & s);
 
  150         template<typename T, qualifier P>
 
  151         GLM_FUNC_DECL mat<4, 4, T, P> operator*(T const & s, mat<4, 4, T, P> const & m);
 
  153         template<typename T, qualifier P>
 
  154         GLM_FUNC_DECL typename mat<4, 4, T, P>::col_type operator*(mat<4, 4, T, P> const & m, typename mat<4, 4, T, P>::row_type const & v);
 
  156         template<typename T, qualifier P>
 
  157         GLM_FUNC_DECL typename mat<4, 4, T, P>::row_type operator*(typename mat<4, 4, T, P>::col_type const & v, mat<4, 4, T, P> const & m);
 
  159         template<typename T, qualifier P>
 
  160         GLM_FUNC_DECL mat<2, 4, T, P> operator*(mat<4, 4, T, P> const & m1, mat<2, 4, T, P> const & m2);
 
  162         template<typename T, qualifier P>
 
  163         GLM_FUNC_DECL mat<3, 4, T, P> operator*(mat<4, 4, T, P> const & m1, mat<3, 4, T, P> const & m2);
 
  165         template<typename T, qualifier P>
 
  166         GLM_FUNC_DECL mat<4, 4, T, P> operator*(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
 
  168         template<typename T, qualifier P>
 
  169         GLM_FUNC_DECL mat<4, 4, T, P> operator/(mat<4, 4, T, P> const & m, T const & s);
 
  171         template<typename T, qualifier P>
 
  172         GLM_FUNC_DECL mat<4, 4, T, P> operator/(T const & s, mat<4, 4, T, P> const & m);
 
  174         template<typename T, qualifier P>
 
  175         GLM_FUNC_DECL typename mat<4, 4, T, P>::col_type operator/(mat<4, 4, T, P> const & m, typename mat<4, 4, T, P>::row_type const & v);
 
  177         template<typename T, qualifier P>
 
  178         GLM_FUNC_DECL typename mat<4, 4, T, P>::row_type operator/(typename mat<4, 4, T, P>::col_type const & v, mat<4, 4, T, P> const & m);
 
  180         template<typename T, qualifier P>
 
  181         GLM_FUNC_DECL mat<4, 4, T, P> operator/(mat<4, 4, T, P> const & m1,     mat<4, 4, T, P> const& m2);
 
  185         template<typename T, qualifier P>
 
  186         GLM_FUNC_DECL 
bool operator==(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
 
  188         template<typename T, qualifier P>
 
  189         GLM_FUNC_DECL 
bool operator!=(mat<4, 4, T, P> const & m1, mat<4, 4, T, P> const & m2);
 
  192 #ifndef GLM_EXTERNAL_TEMPLATE 
  193 #include "type_mat4x4.inl" 
  194 #endif//GLM_EXTERNAL_TEMPLATE 
GLM_FUNC_DECL T length(vec< L, T, P > const &x)
Returns the length of x, i.e., sqrt(x * x).