1 /// @ref core
2 /// @file glm/detail/type_mat.hpp
3 
4 #pragma once
5 
6 #include "precision.hpp"
7 
8 namespace glm{
9 namespace detail
10 {
11 	template <typename T, precision P, template <class, precision> class colType, template <class, precision> class rowType>
12 	struct outerProduct_trait{};
13 }//namespace detail
14 
15 	template <typename T, precision P> struct tvec2;
16 	template <typename T, precision P> struct tvec3;
17 	template <typename T, precision P> struct tvec4;
18 	template <typename T, precision P> struct tmat2x2;
19 	template <typename T, precision P> struct tmat2x3;
20 	template <typename T, precision P> struct tmat2x4;
21 	template <typename T, precision P> struct tmat3x2;
22 	template <typename T, precision P> struct tmat3x3;
23 	template <typename T, precision P> struct tmat3x4;
24 	template <typename T, precision P> struct tmat4x2;
25 	template <typename T, precision P> struct tmat4x3;
26 	template <typename T, precision P> struct tmat4x4;
27 
28 	template <typename T, precision P, template <typename, precision> class matType>
29 	GLM_FUNC_DECL matType<T, P> inverse(matType<T, P> const & m);
30 
31 	/// @addtogroup core_precision
32 	/// @{
33 
34 	/// 2 columns of 2 components matrix of low precision floating-point numbers.
35 	/// There is no guarantee on the actual precision.
36 	///
37 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
38 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
39 	typedef tmat2x2<float, lowp>		lowp_mat2;
40 
41 	/// 2 columns of 2 components matrix of medium precision floating-point numbers.
42 	/// There is no guarantee on the actual precision.
43 	///
44 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
45 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
46 	typedef tmat2x2<float, mediump>		mediump_mat2;
47 
48 	/// 2 columns of 2 components matrix of high precision floating-point numbers.
49 	/// There is no guarantee on the actual precision.
50 	///
51 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
52 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
53 	typedef tmat2x2<float, highp>		highp_mat2;
54 
55 	/// 2 columns of 2 components matrix of low precision floating-point numbers.
56 	/// There is no guarantee on the actual precision.
57 	///
58 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
59 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
60 	typedef tmat2x2<float, lowp>		lowp_mat2x2;
61 
62 	/// 2 columns of 2 components matrix of medium precision floating-point numbers.
63 	/// There is no guarantee on the actual precision.
64 	///
65 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
66 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
67 	typedef tmat2x2<float, mediump>		mediump_mat2x2;
68 
69 	/// 2 columns of 2 components matrix of high precision floating-point numbers.
70 	/// There is no guarantee on the actual precision.
71 	///
72 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
73 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
74 	typedef tmat2x2<float, highp>		highp_mat2x2;
75 
76 	/// @}
77 
78 	/// @addtogroup core_precision
79 	/// @{
80 
81 	/// 2 columns of 3 components matrix of low precision floating-point numbers.
82 	/// There is no guarantee on the actual precision.
83 	///
84 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
85 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
86 	typedef tmat2x3<float, lowp>		lowp_mat2x3;
87 
88 	/// 2 columns of 3 components matrix of medium precision floating-point numbers.
89 	/// There is no guarantee on the actual precision.
90 	///
91 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
92 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
93 	typedef tmat2x3<float, mediump>		mediump_mat2x3;
94 
95 	/// 2 columns of 3 components matrix of high precision floating-point numbers.
96 	/// There is no guarantee on the actual precision.
97 	///
98 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
99 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
100 	typedef tmat2x3<float, highp>		highp_mat2x3;
101 
102 	/// @}
103 
104 	/// @addtogroup core_precision
105 	/// @{
106 
107 	/// 2 columns of 4 components matrix of low precision floating-point numbers.
108 	/// There is no guarantee on the actual precision.
109 	///
110 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
111 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
112 	typedef tmat2x4<float, lowp>		lowp_mat2x4;
113 
114 	/// 2 columns of 4 components matrix of medium precision floating-point numbers.
115 	/// There is no guarantee on the actual precision.
116 	///
117 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
118 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
119 	typedef tmat2x4<float, mediump>		mediump_mat2x4;
120 
121 	/// 2 columns of 4 components matrix of high precision floating-point numbers.
122 	/// There is no guarantee on the actual precision.
123 	///
124 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
125 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
126 	typedef tmat2x4<float, highp>		highp_mat2x4;
127 
128 	/// @}
129 
130 	/// @addtogroup core_precision
131 	/// @{
132 
133 	/// 3 columns of 2 components matrix of low precision floating-point numbers.
134 	/// There is no guarantee on the actual precision.
135 	///
136 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
137 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
138 	typedef tmat3x2<float, lowp>		lowp_mat3x2;
139 
140 	/// 3 columns of 2 components matrix of medium precision floating-point numbers.
141 	/// There is no guarantee on the actual precision.
142 	///
143 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
144 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
145 	typedef tmat3x2<float, mediump>		mediump_mat3x2;
146 
147 	/// 3 columns of 2 components matrix of high precision floating-point numbers.
148 	/// There is no guarantee on the actual precision.
149 	///
150 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
151 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
152 	typedef tmat3x2<float, highp>		highp_mat3x2;
153 
154 	/// @}
155 
156 	/// @addtogroup core_precision
157 	/// @{
158 
159 	/// 3 columns of 3 components matrix of low precision floating-point numbers.
160 	/// There is no guarantee on the actual precision.
161 	///
162 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
163 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
164 	typedef tmat3x3<float, lowp>		lowp_mat3;
165 
166 	/// 3 columns of 3 components matrix of medium precision floating-point numbers.
167 	/// There is no guarantee on the actual precision.
168 	///
169 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
170 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
171 	typedef tmat3x3<float, mediump>		mediump_mat3;
172 
173 	/// 3 columns of 3 components matrix of high precision floating-point numbers.
174 	/// There is no guarantee on the actual precision.
175 	///
176 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
177 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
178 	typedef tmat3x3<float, highp>		highp_mat3;
179 
180 	/// 3 columns of 3 components matrix of low precision floating-point numbers.
181 	/// There is no guarantee on the actual precision.
182 	///
183 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
184 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
185 	typedef tmat3x3<float, lowp>		lowp_mat3x3;
186 
187 	/// 3 columns of 3 components matrix of medium precision floating-point numbers.
188 	/// There is no guarantee on the actual precision.
189 	///
190 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
191 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
192 	typedef tmat3x3<float, mediump>		mediump_mat3x3;
193 
194 	/// 3 columns of 3 components matrix of high precision floating-point numbers.
195 	/// There is no guarantee on the actual precision.
196 	///
197 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
198 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
199 	typedef tmat3x3<float, highp>		highp_mat3x3;
200 
201 	/// @}
202 
203 	/// @addtogroup core_precision
204 	/// @{
205 
206 	/// 3 columns of 4 components matrix of low precision floating-point numbers.
207 	/// There is no guarantee on the actual precision.
208 	///
209 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
210 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
211 	typedef tmat3x4<float, lowp>		lowp_mat3x4;
212 
213 	/// 3 columns of 4 components matrix of medium precision floating-point numbers.
214 	/// There is no guarantee on the actual precision.
215 	///
216 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
217 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
218 	typedef tmat3x4<float, mediump>		mediump_mat3x4;
219 
220 	/// 3 columns of 4 components matrix of high precision floating-point numbers.
221 	/// There is no guarantee on the actual precision.
222 	///
223 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
224 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
225 	typedef tmat3x4<float, highp>		highp_mat3x4;
226 
227 	/// @}
228 
229 	/// @addtogroup core_precision
230 	/// @{
231 
232 	/// 4 columns of 2 components matrix of low precision floating-point numbers.
233 	/// There is no guarantee on the actual precision.
234 	///
235 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
236 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
237 	typedef tmat4x2<float, lowp>		lowp_mat4x2;
238 
239 	/// 4 columns of 2 components matrix of medium precision floating-point numbers.
240 	/// There is no guarantee on the actual precision.
241 	///
242 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
243 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
244 	typedef tmat4x2<float, mediump>		mediump_mat4x2;
245 
246 	/// 4 columns of 2 components matrix of high precision floating-point numbers.
247 	/// There is no guarantee on the actual precision.
248 	///
249 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
250 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
251 	typedef tmat4x2<float, highp>		highp_mat4x2;
252 
253 	/// @}
254 
255 	/// @addtogroup core_precision
256 	/// @{
257 
258 	/// 4 columns of 3 components matrix of low precision floating-point numbers.
259 	/// There is no guarantee on the actual precision.
260 	///
261 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
262 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
263 	typedef tmat4x3<float, lowp>		lowp_mat4x3;
264 
265 	/// 4 columns of 3 components matrix of medium precision floating-point numbers.
266 	/// There is no guarantee on the actual precision.
267 	///
268 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
269 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
270 	typedef tmat4x3<float, mediump>		mediump_mat4x3;
271 
272 	/// 4 columns of 3 components matrix of high precision floating-point numbers.
273 	/// There is no guarantee on the actual precision.
274 	///
275 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
276 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
277 	typedef tmat4x3<float, highp>		highp_mat4x3;
278 
279 	/// @}
280 
281 
282 	/// @addtogroup core_precision
283 	/// @{
284 
285 	/// 4 columns of 4 components matrix of low precision floating-point numbers.
286 	/// There is no guarantee on the actual precision.
287 	///
288 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
289 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
290 	typedef tmat4x4<float, lowp>		lowp_mat4;
291 
292 	/// 4 columns of 4 components matrix of medium precision floating-point numbers.
293 	/// There is no guarantee on the actual precision.
294 	///
295 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
296 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
297 	typedef tmat4x4<float, mediump>		mediump_mat4;
298 
299 	/// 4 columns of 4 components matrix of high precision floating-point numbers.
300 	/// There is no guarantee on the actual precision.
301 	///
302 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
303 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
304 	typedef tmat4x4<float, highp>		highp_mat4;
305 
306 	/// 4 columns of 4 components matrix of low precision floating-point numbers.
307 	/// There is no guarantee on the actual precision.
308 	///
309 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
310 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
311 	typedef tmat4x4<float, lowp>		lowp_mat4x4;
312 
313 	/// 4 columns of 4 components matrix of medium precision floating-point numbers.
314 	/// There is no guarantee on the actual precision.
315 	///
316 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
317 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
318 	typedef tmat4x4<float, mediump>		mediump_mat4x4;
319 
320 	/// 4 columns of 4 components matrix of high precision floating-point numbers.
321 	/// There is no guarantee on the actual precision.
322 	///
323 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
324 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
325 	typedef tmat4x4<float, highp>		highp_mat4x4;
326 
327 	/// @}
328 
329 	/// @addtogroup core_types
330 	/// @{
331 
332 	//////////////////////////
333 	// Float definition
334 
335 #if(defined(GLM_PRECISION_LOWP_FLOAT))
336 	typedef lowp_mat2x2			mat2x2;
337 	typedef lowp_mat2x3			mat2x3;
338 	typedef lowp_mat2x4			mat2x4;
339 	typedef lowp_mat3x2			mat3x2;
340 	typedef lowp_mat3x3			mat3x3;
341 	typedef lowp_mat3x4			mat3x4;
342 	typedef lowp_mat4x2			mat4x2;
343 	typedef lowp_mat4x3			mat4x3;
344 	typedef lowp_mat4x4			mat4x4;
345 #elif(defined(GLM_PRECISION_MEDIUMP_FLOAT))
346 	typedef mediump_mat2x2		mat2x2;
347 	typedef mediump_mat2x3		mat2x3;
348 	typedef mediump_mat2x4		mat2x4;
349 	typedef mediump_mat3x2		mat3x2;
350 	typedef mediump_mat3x3		mat3x3;
351 	typedef mediump_mat3x4		mat3x4;
352 	typedef mediump_mat4x2		mat4x2;
353 	typedef mediump_mat4x3		mat4x3;
354 	typedef mediump_mat4x4		mat4x4;
355 #else
356 	//! 2 columns of 2 components matrix of floating-point numbers.
357 	///
358 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
359 	typedef highp_mat2x2			mat2x2;
360 
361 	//! 2 columns of 3 components matrix of floating-point numbers.
362 	///
363 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
364 	typedef highp_mat2x3			mat2x3;
365 
366 	//! 2 columns of 4 components matrix of floating-point numbers.
367 	///
368 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
369 	typedef highp_mat2x4			mat2x4;
370 
371 	//! 3 columns of 2 components matrix of floating-point numbers.
372 	///
373 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
374 	typedef highp_mat3x2			mat3x2;
375 
376 	//! 3 columns of 3 components matrix of floating-point numbers.
377 	///
378 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
379 	typedef highp_mat3x3			mat3x3;
380 
381 	//! 3 columns of 4 components matrix of floating-point numbers.
382 	///
383 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
384 	typedef highp_mat3x4			mat3x4;
385 
386 	//! 4 columns of 2 components matrix of floating-point numbers.
387 	///
388 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
389 	typedef highp_mat4x2			mat4x2;
390 
391 	//! 4 columns of 3 components matrix of floating-point numbers.
392 	///
393 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
394 	typedef highp_mat4x3			mat4x3;
395 
396 	//! 4 columns of 4 components matrix of floating-point numbers.
397 	///
398 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
399 	typedef highp_mat4x4			mat4x4;
400 
401 #endif//GLM_PRECISION
402 
403 	//! 2 columns of 2 components matrix of floating-point numbers.
404 	///
405 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
406 	typedef mat2x2					mat2;
407 
408 	//! 3 columns of 3 components matrix of floating-point numbers.
409 	///
410 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
411 	typedef mat3x3					mat3;
412 
413 	//! 4 columns of 4 components matrix of floating-point numbers.
414 	///
415 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
416 	typedef mat4x4					mat4;
417 
418 	//////////////////////////
419 	// Double definition
420 
421 	/// @addtogroup core_precision
422 	/// @{
423 
424 	/// 2 columns of 2 components matrix of low precision floating-point numbers.
425 	///
426 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
427 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
428 	typedef tmat2x2<double, lowp>		lowp_dmat2;
429 
430 	/// 2 columns of 2 components matrix of medium precision floating-point numbers.
431 	///
432 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
433 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
434 	typedef tmat2x2<double, mediump>	mediump_dmat2;
435 
436 	/// 2 columns of 2 components matrix of high precision floating-point numbers.
437 	///
438 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
439 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
440 	typedef tmat2x2<double, highp>		highp_dmat2;
441 
442 	/// 2 columns of 2 components matrix of low precision floating-point numbers.
443 	///
444 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
445 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
446 	typedef tmat2x2<double, lowp>		lowp_dmat2x2;
447 
448 	/// 2 columns of 2 components matrix of medium precision floating-point numbers.
449 	///
450 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
451 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
452 	typedef tmat2x2<double, mediump>	mediump_dmat2x2;
453 
454 	/// 2 columns of 2 components matrix of high precision floating-point numbers.
455 	///
456 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
457 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
458 	typedef tmat2x2<double, highp>		highp_dmat2x2;
459 
460 	/// @}
461 
462 	/// @addtogroup core_precision
463 	/// @{
464 
465 	/// 2 columns of 3 components matrix of low precision floating-point numbers.
466 	///
467 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
468 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
469 	typedef tmat2x3<double, lowp>		lowp_dmat2x3;
470 
471 	/// 2 columns of 3 components matrix of medium precision floating-point numbers.
472 	///
473 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
474 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
475 	typedef tmat2x3<double, mediump>	mediump_dmat2x3;
476 
477 	/// 2 columns of 3 components matrix of high precision floating-point numbers.
478 	///
479 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
480 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
481 	typedef tmat2x3<double, highp>		highp_dmat2x3;
482 
483 	/// @}
484 
485 	/// @addtogroup core_precision
486 	/// @{
487 
488 	/// 2 columns of 4 components matrix of low precision floating-point numbers.
489 	///
490 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
491 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
492 	typedef tmat2x4<double, lowp>		lowp_dmat2x4;
493 
494 	/// 2 columns of 4 components matrix of medium precision floating-point numbers.
495 	///
496 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
497 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
498 	typedef tmat2x4<double, mediump>	mediump_dmat2x4;
499 
500 	/// 2 columns of 4 components matrix of high precision floating-point numbers.
501 	///
502 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
503 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
504 	typedef tmat2x4<double, highp>		highp_dmat2x4;
505 
506 	/// @}
507 
508 	/// @addtogroup core_precision
509 	/// @{
510 
511 	/// 3 columns of 2 components matrix of low precision floating-point numbers.
512 	///
513 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
514 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
515 	typedef tmat3x2<double, lowp>		lowp_dmat3x2;
516 
517 	/// 3 columns of 2 components matrix of medium precision floating-point numbers.
518 	///
519 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
520 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
521 	typedef tmat3x2<double, mediump>	mediump_dmat3x2;
522 
523 	/// 3 columns of 2 components matrix of high precision floating-point numbers.
524 	///
525 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
526 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
527 	typedef tmat3x2<double, highp>		highp_dmat3x2;
528 
529 	/// @}
530 
531 	/// @addtogroup core_precision
532 	/// @{
533 
534 	/// 3 columns of 3 components matrix of low precision floating-point numbers.
535 	///
536 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
537 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
538 	typedef tmat3x3<float, lowp>		lowp_dmat3;
539 
540 	/// 3 columns of 3 components matrix of medium precision floating-point numbers.
541 	///
542 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
543 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
544 	typedef tmat3x3<double, mediump>	mediump_dmat3;
545 
546 	/// 3 columns of 3 components matrix of high precision floating-point numbers.
547 	///
548 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
549 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
550 	typedef tmat3x3<double, highp>		highp_dmat3;
551 
552 	/// 3 columns of 3 components matrix of low precision floating-point numbers.
553 	///
554 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
555 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
556 	typedef tmat3x3<double, lowp>		lowp_dmat3x3;
557 
558 	/// 3 columns of 3 components matrix of medium precision floating-point numbers.
559 	///
560 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
561 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
562 	typedef tmat3x3<double, mediump>	mediump_dmat3x3;
563 
564 	/// 3 columns of 3 components matrix of high precision floating-point numbers.
565 	///
566 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
567 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
568 	typedef tmat3x3<double, highp>		highp_dmat3x3;
569 
570 	/// @}
571 
572 	/// @addtogroup core_precision
573 	/// @{
574 
575 	/// 3 columns of 4 components matrix of low precision floating-point numbers.
576 	///
577 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
578 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
579 	typedef tmat3x4<double, lowp>		lowp_dmat3x4;
580 
581 	/// 3 columns of 4 components matrix of medium precision floating-point numbers.
582 	///
583 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
584 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
585 	typedef tmat3x4<double, mediump>	mediump_dmat3x4;
586 
587 	/// 3 columns of 4 components matrix of high precision floating-point numbers.
588 	///
589 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
590 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
591 	typedef tmat3x4<double, highp>		highp_dmat3x4;
592 
593 	/// @}
594 
595 	/// @addtogroup core_precision
596 	/// @{
597 
598 	/// 4 columns of 2 components matrix of low precision floating-point numbers.
599 	///
600 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
601 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
602 	typedef tmat4x2<double, lowp>		lowp_dmat4x2;
603 
604 	/// 4 columns of 2 components matrix of medium precision floating-point numbers.
605 	///
606 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
607 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
608 	typedef tmat4x2<double, mediump>	mediump_dmat4x2;
609 
610 	/// 4 columns of 2 components matrix of high precision floating-point numbers.
611 	///
612 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
613 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
614 	typedef tmat4x2<double, highp>		highp_dmat4x2;
615 
616 	/// @}
617 
618 	/// @addtogroup core_precision
619 	/// @{
620 
621 	/// 4 columns of 3 components matrix of low precision floating-point numbers.
622 	///
623 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
624 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
625 	typedef tmat4x3<double, lowp>		lowp_dmat4x3;
626 
627 	/// 4 columns of 3 components matrix of medium precision floating-point numbers.
628 	///
629 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
630 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
631 	typedef tmat4x3<double, mediump>	mediump_dmat4x3;
632 
633 	/// 4 columns of 3 components matrix of high precision floating-point numbers.
634 	///
635 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
636 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
637 	typedef tmat4x3<double, highp>		highp_dmat4x3;
638 
639 	/// @}
640 
641 	/// @addtogroup core_precision
642 	/// @{
643 
644 	/// 4 columns of 4 components matrix of low precision floating-point numbers.
645 	///
646 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
647 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
648 	typedef tmat4x4<double, lowp>		lowp_dmat4;
649 
650 	/// 4 columns of 4 components matrix of medium precision floating-point numbers.
651 	///
652 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
653 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
654 	typedef tmat4x4<double, mediump>	mediump_dmat4;
655 
656 	/// 4 columns of 4 components matrix of high precision floating-point numbers.
657 	///
658 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
659 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
660 	typedef tmat4x4<double, highp>		highp_dmat4;
661 
662 	/// 4 columns of 4 components matrix of low precision floating-point numbers.
663 	///
664 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
665 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
666 	typedef tmat4x4<double, lowp>		lowp_dmat4x4;
667 
668 	/// 4 columns of 4 components matrix of medium precision floating-point numbers.
669 	///
670 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
671 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
672 	typedef tmat4x4<double, mediump>	mediump_dmat4x4;
673 
674 	/// 4 columns of 4 components matrix of high precision floating-point numbers.
675 	///
676 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
677 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.7.2 Precision Qualifier</a>
678 	typedef tmat4x4<double, highp>		highp_dmat4x4;
679 
680 	/// @}
681 
682 #if(defined(GLM_PRECISION_LOWP_DOUBLE))
683 	typedef lowp_dmat2x2		dmat2x2;
684 	typedef lowp_dmat2x3		dmat2x3;
685 	typedef lowp_dmat2x4		dmat2x4;
686 	typedef lowp_dmat3x2		dmat3x2;
687 	typedef lowp_dmat3x3		dmat3x3;
688 	typedef lowp_dmat3x4		dmat3x4;
689 	typedef lowp_dmat4x2		dmat4x2;
690 	typedef lowp_dmat4x3		dmat4x3;
691 	typedef lowp_dmat4x4		dmat4x4;
692 #elif(defined(GLM_PRECISION_MEDIUMP_DOUBLE))
693 	typedef mediump_dmat2x2		dmat2x2;
694 	typedef mediump_dmat2x3		dmat2x3;
695 	typedef mediump_dmat2x4		dmat2x4;
696 	typedef mediump_dmat3x2		dmat3x2;
697 	typedef mediump_dmat3x3		dmat3x3;
698 	typedef mediump_dmat3x4		dmat3x4;
699 	typedef mediump_dmat4x2		dmat4x2;
700 	typedef mediump_dmat4x3		dmat4x3;
701 	typedef mediump_dmat4x4		dmat4x4;
702 #else //defined(GLM_PRECISION_HIGHP_DOUBLE)
703 
704 	//! 2 * 2 matrix of double-precision floating-point numbers.
705 	///
706 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
707 	typedef highp_dmat2x2		dmat2;
708 
709 	//! 3 * 3 matrix of double-precision floating-point numbers.
710 	///
711 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
712 	typedef highp_dmat3x3		dmat3;
713 
714 	//! 4 * 4 matrix of double-precision floating-point numbers.
715 	///
716 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
717 	typedef highp_dmat4x4		dmat4;
718 
719 	//! 2 * 2 matrix of double-precision floating-point numbers.
720 	///
721 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
722 	typedef highp_dmat2x2		dmat2x2;
723 
724 	//! 2 * 3 matrix of double-precision floating-point numbers.
725 	///
726 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
727 	typedef highp_dmat2x3		dmat2x3;
728 
729 	//! 2 * 4 matrix of double-precision floating-point numbers.
730 	///
731 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
732 	typedef highp_dmat2x4		dmat2x4;
733 
734 	//! 3 * 2 matrix of double-precision floating-point numbers.
735 	///
736 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
737 	typedef highp_dmat3x2		dmat3x2;
738 
739 	/// 3 * 3 matrix of double-precision floating-point numbers.
740 	///
741 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
742 	typedef highp_dmat3x3		dmat3x3;
743 
744 	/// 3 * 4 matrix of double-precision floating-point numbers.
745 	///
746 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
747 	typedef highp_dmat3x4		dmat3x4;
748 
749 	/// 4 * 2 matrix of double-precision floating-point numbers.
750 	///
751 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
752 	typedef highp_dmat4x2		dmat4x2;
753 
754 	/// 4 * 3 matrix of double-precision floating-point numbers.
755 	///
756 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
757 	typedef highp_dmat4x3		dmat4x3;
758 
759 	/// 4 * 4 matrix of double-precision floating-point numbers.
760 	///
761 	/// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 4.1.6 Matrices</a>
762 	typedef highp_dmat4x4		dmat4x4;
763 
764 #endif//GLM_PRECISION
765 
766 	/// @}
767 }//namespace glm
768