12         template<
typename T, qualifier Q>
 
   13         struct mat<4, 4, T, Q>
 
   15                 typedef vec<4, T, Q> col_type;
 
   16                 typedef vec<4, T, Q> row_type;
 
   17                 typedef mat<4, 4, T, Q> type;
 
   18                 typedef mat<4, 4, T, Q> transpose_type;
 
   27                 typedef length_t length_type;
 
   28                 GLM_FUNC_DECL 
static GLM_CONSTEXPR length_type 
length(){
return 4;}
 
   30                 GLM_FUNC_DECL col_type & operator[](length_type i);
 
   31                 GLM_FUNC_DECL GLM_CONSTEXPR col_type 
const& operator[](length_type i) 
const;
 
   35                 GLM_FUNC_DECL GLM_CONSTEXPR mat() GLM_DEFAULT;
 
   37                 GLM_FUNC_DECL GLM_CONSTEXPR mat(mat<4, 4, T, P> const& m);
 
   39                 GLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T const& x);
 
   40                 GLM_FUNC_DECL GLM_CONSTEXPR mat(
 
   41                         T const& x0, T const& y0, T const& z0, T const& w0,
 
   42                         T const& x1, T const& y1, T const& z1, T const& w1,
 
   43                         T const& x2, T const& y2, T const& z2, T const& w2,
 
   44                         T const& x3, T const& y3, T const& z3, T const& w3);
 
   45                 GLM_FUNC_DECL GLM_CONSTEXPR mat(
 
   54                         typename X1, typename Y1, typename Z1, typename W1,
 
   55                         typename X2, typename Y2, typename Z2, typename W2,
 
   56                         typename X3, typename Y3, typename Z3, typename W3,
 
   57                         typename X4, typename Y4, typename Z4, typename W4>
 
   58                 GLM_FUNC_DECL GLM_CONSTEXPR mat(
 
   59                         X1 const& x1, Y1 const& y1, Z1 const& z1, W1 const& w1,
 
   60                         X2 const& x2, Y2 const& y2, Z2 const& z2, W2 const& w2,
 
   61                         X3 const& x3, Y3 const& y3, Z3 const& z3, W3 const& w3,
 
   62                         X4 const& x4, Y4 const& y4, Z4 const& z4, W4 const& w4);
 
   64                 template<typename V1, typename V2, typename V3, typename V4>
 
   65                 GLM_FUNC_DECL GLM_CONSTEXPR mat(
 
   66                         vec<4, V1, Q> const& v1,
 
   67                         vec<4, V2, Q> const& v2,
 
   68                         vec<4, V3, Q> const& v3,
 
   69                         vec<4, V4, Q> const& v4);
 
   73                 template<typename U, qualifier P>
 
   74                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, U, P> const& m);
 
   76                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);
 
   77                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, T, Q> const& x);
 
   78                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);
 
   79                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);
 
   80                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);
 
   81                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);
 
   82                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);
 
   83                 GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);
 
   88                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator=(mat<4, 4, U, Q> const& m);
 
   90                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(U s);
 
   92                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator+=(mat<4, 4, U, Q> const& m);
 
   94                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator-=(U s);
 
   96                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator-=(mat<4, 4, U, Q> const& m);
 
   98                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator*=(U s);
 
  100                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator*=(mat<4, 4, U, Q> const& m);
 
  102                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator/=(U s);
 
  104                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator/=(mat<4, 4, U, Q> const& m);
 
  108                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator++();
 
  109                 GLM_FUNC_DECL mat<4, 4, T, Q> & operator--();
 
  110                 GLM_FUNC_DECL mat<4, 4, T, Q> operator++(
int);
 
  111                 GLM_FUNC_DECL mat<4, 4, T, Q> operator--(
int);
 
  116         template<typename T, qualifier Q>
 
  117         GLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m);
 
  119         template<typename T, qualifier Q>
 
  120         GLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m);
 
  124         template<typename T, qualifier Q>
 
  125         GLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m, T const& s);
 
  127         template<typename T, qualifier Q>
 
  128         GLM_FUNC_DECL mat<4, 4, T, Q> operator+(T const& s, mat<4, 4, T, Q> const& m);
 
  130         template<typename T, qualifier Q>
 
  131         GLM_FUNC_DECL mat<4, 4, T, Q> operator+(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
 
  133         template<typename T, qualifier Q>
 
  134         GLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m, T const& s);
 
  136         template<typename T, qualifier Q>
 
  137         GLM_FUNC_DECL mat<4, 4, T, Q> operator-(T const& s, mat<4, 4, T, Q> const& m);
 
  139         template<typename T, qualifier Q>
 
  140         GLM_FUNC_DECL mat<4, 4, T, Q> operator-(mat<4, 4, T, Q> const& m1,      mat<4, 4, T, Q> const& m2);
 
  142         template<typename T, qualifier Q>
 
  143         GLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m, T const& s);
 
  145         template<typename T, qualifier Q>
 
  146         GLM_FUNC_DECL mat<4, 4, T, Q> operator*(T const& s, mat<4, 4, T, Q> const& m);
 
  148         template<typename T, qualifier Q>
 
  149         GLM_FUNC_DECL typename mat<4, 4, T, Q>::col_type operator*(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);
 
  151         template<typename T, qualifier Q>
 
  152         GLM_FUNC_DECL typename mat<4, 4, T, Q>::row_type operator*(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);
 
  154         template<typename T, qualifier Q>
 
  155         GLM_FUNC_DECL mat<2, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<2, 4, T, Q> const& m2);
 
  157         template<typename T, qualifier Q>
 
  158         GLM_FUNC_DECL mat<3, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<3, 4, T, Q> const& m2);
 
  160         template<typename T, qualifier Q>
 
  161         GLM_FUNC_DECL mat<4, 4, T, Q> operator*(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
 
  163         template<typename T, qualifier Q>
 
  164         GLM_FUNC_DECL mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m, T const& s);
 
  166         template<typename T, qualifier Q>
 
  167         GLM_FUNC_DECL mat<4, 4, T, Q> operator/(T const& s, mat<4, 4, T, Q> const& m);
 
  169         template<typename T, qualifier Q>
 
  170         GLM_FUNC_DECL typename mat<4, 4, T, Q>::col_type operator/(mat<4, 4, T, Q> const& m, typename mat<4, 4, T, Q>::row_type const& v);
 
  172         template<typename T, qualifier Q>
 
  173         GLM_FUNC_DECL typename mat<4, 4, T, Q>::row_type operator/(typename mat<4, 4, T, Q>::col_type const& v, mat<4, 4, T, Q> const& m);
 
  175         template<typename T, qualifier Q>
 
  176         GLM_FUNC_DECL mat<4, 4, T, Q> operator/(mat<4, 4, T, Q> const& m1,      mat<4, 4, T, Q> const& m2);
 
  180         template<typename T, qualifier Q>
 
  181         GLM_FUNC_DECL 
bool operator==(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
 
  183         template<typename T, qualifier Q>
 
  184         GLM_FUNC_DECL 
bool operator!=(mat<4, 4, T, Q> const& m1, mat<4, 4, T, Q> const& m2);
 
  187 #ifndef GLM_EXTERNAL_TEMPLATE 
  188 #include "type_mat4x4.inl" 
  189 #endif//GLM_EXTERNAL_TEMPLATE 
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.