12     template<
typename T, qualifier Q>
    13     struct mat<3, 3, T, Q>
    15         typedef vec<3, T, Q> col_type;
    16         typedef vec<3, T, Q> row_type;
    17         typedef mat<3, 3, T, Q> type;
    18         typedef mat<3, 3, T, Q> transpose_type;
    27         typedef length_t length_type;
    28         GLM_FUNC_DECL 
static GLM_CONSTEXPR length_type 
length() { 
return 3; }
    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<3, 3, T, P> const& m);
    39         GLM_FUNC_DECL explicit GLM_CONSTEXPR mat(T scalar);
    40         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    44         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    52             typename X1, typename Y1, typename Z1,
    53             typename X2, typename Y2, typename Z2,
    54             typename X3, typename Y3, typename Z3>
    55         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    60         template<typename V1, typename V2, typename V3>
    61         GLM_FUNC_DECL GLM_CONSTEXPR mat(
    62             vec<3, V1, Q> const& v1,
    63             vec<3, V2, Q> const& v2,
    64             vec<3, V3, Q> const& v3);
    68         template<typename U, qualifier P>
    69         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 3, U, P> const& m);
    71         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 2, T, Q> const& x);
    72         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 4, T, Q> const& x);
    73         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 3, T, Q> const& x);
    74         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 2, T, Q> const& x);
    75         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<2, 4, T, Q> const& x);
    76         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 2, T, Q> const& x);
    77         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<3, 4, T, Q> const& x);
    78         GLM_FUNC_DECL GLM_EXPLICIT GLM_CONSTEXPR mat(mat<4, 3, T, Q> const& x);
    83         GLM_FUNC_DECL mat<3, 3, T, Q> & operator=(mat<3, 3, U, Q> const& m);
    85         GLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(U s);
    87         GLM_FUNC_DECL mat<3, 3, T, Q> & operator+=(mat<3, 3, U, Q> const& m);
    89         GLM_FUNC_DECL mat<3, 3, T, Q> & operator-=(U s);
    91         GLM_FUNC_DECL mat<3, 3, T, Q> & operator-=(mat<3, 3, U, Q> const& m);
    93         GLM_FUNC_DECL mat<3, 3, T, Q> & operator*=(U s);
    95         GLM_FUNC_DECL mat<3, 3, T, Q> & operator*=(mat<3, 3, U, Q> const& m);
    97         GLM_FUNC_DECL mat<3, 3, T, Q> & operator/=(U s);
    99         GLM_FUNC_DECL mat<3, 3, T, Q> & operator/=(mat<3, 3, U, Q> const& m);
   103         GLM_FUNC_DECL mat<3, 3, T, Q> & operator++();
   104         GLM_FUNC_DECL mat<3, 3, T, Q> & operator--();
   105         GLM_FUNC_DECL mat<3, 3, T, Q> operator++(
int);
   106         GLM_FUNC_DECL mat<3, 3, T, Q> operator--(
int);
   111     template<typename T, qualifier Q>
   112     GLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m);
   114     template<typename T, qualifier Q>
   115     GLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m);
   119     template<typename T, qualifier Q>
   120     GLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m, T scalar);
   122     template<typename T, qualifier Q>
   123     GLM_FUNC_DECL mat<3, 3, T, Q> operator+(T scalar, mat<3, 3, T, Q> const& m);
   125     template<typename T, qualifier Q>
   126     GLM_FUNC_DECL mat<3, 3, T, Q> operator+(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
   128     template<typename T, qualifier Q>
   129     GLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m, T scalar);
   131     template<typename T, qualifier Q>
   132     GLM_FUNC_DECL mat<3, 3, T, Q> operator-(T scalar, mat<3, 3, T, Q> const& m);
   134     template<typename T, qualifier Q>
   135     GLM_FUNC_DECL mat<3, 3, T, Q> operator-(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
   137     template<typename T, qualifier Q>
   138     GLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m, T scalar);
   140     template<typename T, qualifier Q>
   141     GLM_FUNC_DECL mat<3, 3, T, Q> operator*(T scalar, mat<3, 3, T, Q> const& m);
   143     template<typename T, qualifier Q>
   144     GLM_FUNC_DECL typename mat<3, 3, T, Q>::col_type operator*(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);
   146     template<typename T, qualifier Q>
   147     GLM_FUNC_DECL typename mat<3, 3, T, Q>::row_type operator*(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);
   149     template<typename T, qualifier Q>
   150     GLM_FUNC_DECL mat<3, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
   152     template<typename T, qualifier Q>
   153     GLM_FUNC_DECL mat<2, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<2, 3, T, Q> const& m2);
   155     template<typename T, qualifier Q>
   156     GLM_FUNC_DECL mat<4, 3, T, Q> operator*(mat<3, 3, T, Q> const& m1, mat<4, 3, T, Q> const& m2);
   158     template<typename T, qualifier Q>
   159     GLM_FUNC_DECL mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m, T scalar);
   161     template<typename T, qualifier Q>
   162     GLM_FUNC_DECL mat<3, 3, T, Q> operator/(T scalar, mat<3, 3, T, Q> const& m);
   164     template<typename T, qualifier Q>
   165     GLM_FUNC_DECL typename mat<3, 3, T, Q>::col_type operator/(mat<3, 3, T, Q> const& m, typename mat<3, 3, T, Q>::row_type const& v);
   167     template<typename T, qualifier Q>
   168     GLM_FUNC_DECL typename mat<3, 3, T, Q>::row_type operator/(typename mat<3, 3, T, Q>::col_type const& v, mat<3, 3, T, Q> const& m);
   170     template<typename T, qualifier Q>
   171     GLM_FUNC_DECL mat<3, 3, T, Q> operator/(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
   175     template<typename T, qualifier Q>
   176     GLM_FUNC_DECL GLM_CONSTEXPR 
bool operator==(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
   178     template<typename T, qualifier Q>
   179     GLM_FUNC_DECL 
bool operator!=(mat<3, 3, T, Q> const& m1, mat<3, 3, T, Q> const& m2);
   182 #ifndef GLM_EXTERNAL_TEMPLATE   183 #include "type_mat3x3.inl" 
GLM_FUNC_DECL T length(qua< T, Q > const &q)
Returns the norm of a quaternions.