1 /// @ref gtc_type_precision
2 /// @file glm/gtc/type_precision.hpp
3 ///
4 /// @see core (dependence)
5 /// @see gtc_half_float (dependence)
6 /// @see gtc_quaternion (dependence)
7 ///
8 /// @defgroup gtc_type_precision GLM_GTC_type_precision
9 /// @ingroup gtc
10 ///
11 /// @brief Defines specific C++-based precision types.
12 ///
13 /// @ref core_precision defines types based on GLSL's precision qualifiers. This
14 /// extension defines types based on explicitly-sized C++ data types.
15 ///
16 /// <glm/gtc/type_precision.hpp> need to be included to use these functionalities.
17 
18 #pragma once
19 
20 // Dependency:
21 #include "../gtc/quaternion.hpp"
22 #include "../gtc/vec1.hpp"
23 #include "../vec2.hpp"
24 #include "../vec3.hpp"
25 #include "../vec4.hpp"
26 #include "../mat2x2.hpp"
27 #include "../mat2x3.hpp"
28 #include "../mat2x4.hpp"
29 #include "../mat3x2.hpp"
30 #include "../mat3x3.hpp"
31 #include "../mat3x4.hpp"
32 #include "../mat4x2.hpp"
33 #include "../mat4x3.hpp"
34 #include "../mat4x4.hpp"
35 
36 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED)
37 #	pragma message("GLM: GLM_GTC_type_precision extension included")
38 #endif
39 
40 namespace glm
41 {
42 	///////////////////////////
43 	// Signed int vector types
44 
45 	/// @addtogroup gtc_type_precision
46 	/// @{
47 
48 	/// Low precision 8 bit signed integer type.
49 	/// @see gtc_type_precision
50 	typedef detail::int8 lowp_int8;
51 
52 	/// Low precision 16 bit signed integer type.
53 	/// @see gtc_type_precision
54 	typedef detail::int16 lowp_int16;
55 
56 	/// Low precision 32 bit signed integer type.
57 	/// @see gtc_type_precision
58 	typedef detail::int32 lowp_int32;
59 
60 	/// Low precision 64 bit signed integer type.
61 	/// @see gtc_type_precision
62 	typedef detail::int64 lowp_int64;
63 
64 	/// Low precision 8 bit signed integer type.
65 	/// @see gtc_type_precision
66 	typedef detail::int8 lowp_int8_t;
67 
68 	/// Low precision 16 bit signed integer type.
69 	/// @see gtc_type_precision
70 	typedef detail::int16 lowp_int16_t;
71 
72 	/// Low precision 32 bit signed integer type.
73 	/// @see gtc_type_precision
74 	typedef detail::int32 lowp_int32_t;
75 
76 	/// Low precision 64 bit signed integer type.
77 	/// @see gtc_type_precision
78 	typedef detail::int64 lowp_int64_t;
79 
80 	/// Low precision 8 bit signed integer type.
81 	/// @see gtc_type_precision
82 	typedef detail::int8 lowp_i8;
83 
84 	/// Low precision 16 bit signed integer type.
85 	/// @see gtc_type_precision
86 	typedef detail::int16 lowp_i16;
87 
88 	/// Low precision 32 bit signed integer type.
89 	/// @see gtc_type_precision
90 	typedef detail::int32 lowp_i32;
91 
92 	/// Low precision 64 bit signed integer type.
93 	/// @see gtc_type_precision
94 	typedef detail::int64 lowp_i64;
95 
96 	/// Medium precision 8 bit signed integer type.
97 	/// @see gtc_type_precision
98 	typedef detail::int8 mediump_int8;
99 
100 	/// Medium precision 16 bit signed integer type.
101 	/// @see gtc_type_precision
102 	typedef detail::int16 mediump_int16;
103 
104 	/// Medium precision 32 bit signed integer type.
105 	/// @see gtc_type_precision
106 	typedef detail::int32 mediump_int32;
107 
108 	/// Medium precision 64 bit signed integer type.
109 	/// @see gtc_type_precision
110 	typedef detail::int64 mediump_int64;
111 
112 	/// Medium precision 8 bit signed integer type.
113 	/// @see gtc_type_precision
114 	typedef detail::int8 mediump_int8_t;
115 
116 	/// Medium precision 16 bit signed integer type.
117 	/// @see gtc_type_precision
118 	typedef detail::int16 mediump_int16_t;
119 
120 	/// Medium precision 32 bit signed integer type.
121 	/// @see gtc_type_precision
122 	typedef detail::int32 mediump_int32_t;
123 
124 	/// Medium precision 64 bit signed integer type.
125 	/// @see gtc_type_precision
126 	typedef detail::int64 mediump_int64_t;
127 
128 	/// Medium precision 8 bit signed integer type.
129 	/// @see gtc_type_precision
130 	typedef detail::int8 mediump_i8;
131 
132 	/// Medium precision 16 bit signed integer type.
133 	/// @see gtc_type_precision
134 	typedef detail::int16 mediump_i16;
135 
136 	/// Medium precision 32 bit signed integer type.
137 	/// @see gtc_type_precision
138 	typedef detail::int32 mediump_i32;
139 
140 	/// Medium precision 64 bit signed integer type.
141 	/// @see gtc_type_precision
142 	typedef detail::int64 mediump_i64;
143 
144 	/// High precision 8 bit signed integer type.
145 	/// @see gtc_type_precision
146 	typedef detail::int8 highp_int8;
147 
148 	/// High precision 16 bit signed integer type.
149 	/// @see gtc_type_precision
150 	typedef detail::int16 highp_int16;
151 
152 	/// High precision 32 bit signed integer type.
153 	/// @see gtc_type_precision
154 	typedef detail::int32 highp_int32;
155 
156 	/// High precision 64 bit signed integer type.
157 	/// @see gtc_type_precision
158 	typedef detail::int64 highp_int64;
159 
160 	/// High precision 8 bit signed integer type.
161 	/// @see gtc_type_precision
162 	typedef detail::int8 highp_int8_t;
163 
164 	/// High precision 16 bit signed integer type.
165 	/// @see gtc_type_precision
166 	typedef detail::int16 highp_int16_t;
167 
168 	/// 32 bit signed integer type.
169 	/// @see gtc_type_precision
170 	typedef detail::int32 highp_int32_t;
171 
172 	/// High precision 64 bit signed integer type.
173 	/// @see gtc_type_precision
174 	typedef detail::int64 highp_int64_t;
175 
176 	/// High precision 8 bit signed integer type.
177 	/// @see gtc_type_precision
178 	typedef detail::int8 highp_i8;
179 
180 	/// High precision 16 bit signed integer type.
181 	/// @see gtc_type_precision
182 	typedef detail::int16 highp_i16;
183 
184 	/// High precision 32 bit signed integer type.
185 	/// @see gtc_type_precision
186 	typedef detail::int32 highp_i32;
187 
188 	/// High precision 64 bit signed integer type.
189 	/// @see gtc_type_precision
190 	typedef detail::int64 highp_i64;
191 
192 
193 	/// 8 bit signed integer type.
194 	/// @see gtc_type_precision
195 	typedef detail::int8 int8;
196 
197 	/// 16 bit signed integer type.
198 	/// @see gtc_type_precision
199 	typedef detail::int16 int16;
200 
201 	/// 32 bit signed integer type.
202 	/// @see gtc_type_precision
203 	typedef detail::int32 int32;
204 
205 	/// 64 bit signed integer type.
206 	/// @see gtc_type_precision
207 	typedef detail::int64 int64;
208 
209 #if GLM_HAS_EXTENDED_INTEGER_TYPE
210 	using std::int8_t;
211 	using std::int16_t;
212 	using std::int32_t;
213 	using std::int64_t;
214 #else
215 	/// 8 bit signed integer type.
216 	/// @see gtc_type_precision
217 	typedef detail::int8 int8_t;
218 
219 	/// 16 bit signed integer type.
220 	/// @see gtc_type_precision
221 	typedef detail::int16 int16_t;
222 
223 	/// 32 bit signed integer type.
224 	/// @see gtc_type_precision
225 	typedef detail::int32 int32_t;
226 
227 	/// 64 bit signed integer type.
228 	/// @see gtc_type_precision
229 	typedef detail::int64 int64_t;
230 #endif
231 
232 	/// 8 bit signed integer type.
233 	/// @see gtc_type_precision
234 	typedef detail::int8 i8;
235 
236 	/// 16 bit signed integer type.
237 	/// @see gtc_type_precision
238 	typedef detail::int16 i16;
239 
240 	/// 32 bit signed integer type.
241 	/// @see gtc_type_precision
242 	typedef detail::int32 i32;
243 
244 	/// 64 bit signed integer type.
245 	/// @see gtc_type_precision
246 	typedef detail::int64 i64;
247 
248 
249 	/// 8 bit signed integer scalar type.
250 	/// @see gtc_type_precision
251 	typedef tvec1<i8, defaultp> i8vec1;
252 
253 	/// 8 bit signed integer vector of 2 components type.
254 	/// @see gtc_type_precision
255 	typedef tvec2<i8, defaultp> i8vec2;
256 
257 	/// 8 bit signed integer vector of 3 components type.
258 	/// @see gtc_type_precision
259 	typedef tvec3<i8, defaultp> i8vec3;
260 
261 	/// 8 bit signed integer vector of 4 components type.
262 	/// @see gtc_type_precision
263 	typedef tvec4<i8, defaultp> i8vec4;
264 
265 
266 	/// 16 bit signed integer scalar type.
267 	/// @see gtc_type_precision
268 	typedef tvec1<i16, defaultp> i16vec1;
269 
270 	/// 16 bit signed integer vector of 2 components type.
271 	/// @see gtc_type_precision
272 	typedef tvec2<i16, defaultp> i16vec2;
273 
274 	/// 16 bit signed integer vector of 3 components type.
275 	/// @see gtc_type_precision
276 	typedef tvec3<i16, defaultp> i16vec3;
277 
278 	/// 16 bit signed integer vector of 4 components type.
279 	/// @see gtc_type_precision
280 	typedef tvec4<i16, defaultp> i16vec4;
281 
282 
283 	/// 32 bit signed integer scalar type.
284 	/// @see gtc_type_precision
285 	typedef tvec1<i32, defaultp> i32vec1;
286 
287 	/// 32 bit signed integer vector of 2 components type.
288 	/// @see gtc_type_precision
289 	typedef tvec2<i32, defaultp> i32vec2;
290 
291 	/// 32 bit signed integer vector of 3 components type.
292 	/// @see gtc_type_precision
293 	typedef tvec3<i32, defaultp> i32vec3;
294 
295 	/// 32 bit signed integer vector of 4 components type.
296 	/// @see gtc_type_precision
297 	typedef tvec4<i32, defaultp> i32vec4;
298 
299 
300 	/// 64 bit signed integer scalar type.
301 	/// @see gtc_type_precision
302 	typedef tvec1<i64, defaultp> i64vec1;
303 
304 	/// 64 bit signed integer vector of 2 components type.
305 	/// @see gtc_type_precision
306 	typedef tvec2<i64, defaultp> i64vec2;
307 
308 	/// 64 bit signed integer vector of 3 components type.
309 	/// @see gtc_type_precision
310 	typedef tvec3<i64, defaultp> i64vec3;
311 
312 	/// 64 bit signed integer vector of 4 components type.
313 	/// @see gtc_type_precision
314 	typedef tvec4<i64, defaultp> i64vec4;
315 
316 
317 	/////////////////////////////
318 	// Unsigned int vector types
319 
320 	/// Low precision 8 bit unsigned integer type.
321 	/// @see gtc_type_precision
322 	typedef detail::uint8 lowp_uint8;
323 
324 	/// Low precision 16 bit unsigned integer type.
325 	/// @see gtc_type_precision
326 	typedef detail::uint16 lowp_uint16;
327 
328 	/// Low precision 32 bit unsigned integer type.
329 	/// @see gtc_type_precision
330 	typedef detail::uint32 lowp_uint32;
331 
332 	/// Low precision 64 bit unsigned integer type.
333 	/// @see gtc_type_precision
334 	typedef detail::uint64 lowp_uint64;
335 
336 	/// Low precision 8 bit unsigned integer type.
337 	/// @see gtc_type_precision
338 	typedef detail::uint8 lowp_uint8_t;
339 
340 	/// Low precision 16 bit unsigned integer type.
341 	/// @see gtc_type_precision
342 	typedef detail::uint16 lowp_uint16_t;
343 
344 	/// Low precision 32 bit unsigned integer type.
345 	/// @see gtc_type_precision
346 	typedef detail::uint32 lowp_uint32_t;
347 
348 	/// Low precision 64 bit unsigned integer type.
349 	/// @see gtc_type_precision
350 	typedef detail::uint64 lowp_uint64_t;
351 
352 	/// Low precision 8 bit unsigned integer type.
353 	/// @see gtc_type_precision
354 	typedef detail::uint8 lowp_u8;
355 
356 	/// Low precision 16 bit unsigned integer type.
357 	/// @see gtc_type_precision
358 	typedef detail::uint16 lowp_u16;
359 
360 	/// Low precision 32 bit unsigned integer type.
361 	/// @see gtc_type_precision
362 	typedef detail::uint32 lowp_u32;
363 
364 	/// Low precision 64 bit unsigned integer type.
365 	/// @see gtc_type_precision
366 	typedef detail::uint64 lowp_u64;
367 
368 	/// Medium precision 8 bit unsigned integer type.
369 	/// @see gtc_type_precision
370 	typedef detail::uint8 mediump_uint8;
371 
372 	/// Medium precision 16 bit unsigned integer type.
373 	/// @see gtc_type_precision
374 	typedef detail::uint16 mediump_uint16;
375 
376 	/// Medium precision 32 bit unsigned integer type.
377 	/// @see gtc_type_precision
378 	typedef detail::uint32 mediump_uint32;
379 
380 	/// Medium precision 64 bit unsigned integer type.
381 	/// @see gtc_type_precision
382 	typedef detail::uint64 mediump_uint64;
383 
384 	/// Medium precision 8 bit unsigned integer type.
385 	/// @see gtc_type_precision
386 	typedef detail::uint8 mediump_uint8_t;
387 
388 	/// Medium precision 16 bit unsigned integer type.
389 	/// @see gtc_type_precision
390 	typedef detail::uint16 mediump_uint16_t;
391 
392 	/// Medium precision 32 bit unsigned integer type.
393 	/// @see gtc_type_precision
394 	typedef detail::uint32 mediump_uint32_t;
395 
396 	/// Medium precision 64 bit unsigned integer type.
397 	/// @see gtc_type_precision
398 	typedef detail::uint64 mediump_uint64_t;
399 
400 	/// Medium precision 8 bit unsigned integer type.
401 	/// @see gtc_type_precision
402 	typedef detail::uint8 mediump_u8;
403 
404 	/// Medium precision 16 bit unsigned integer type.
405 	/// @see gtc_type_precision
406 	typedef detail::uint16 mediump_u16;
407 
408 	/// Medium precision 32 bit unsigned integer type.
409 	/// @see gtc_type_precision
410 	typedef detail::uint32 mediump_u32;
411 
412 	/// Medium precision 64 bit unsigned integer type.
413 	/// @see gtc_type_precision
414 	typedef detail::uint64 mediump_u64;
415 
416 	/// High precision 8 bit unsigned integer type.
417 	/// @see gtc_type_precision
418 	typedef detail::uint8 highp_uint8;
419 
420 	/// High precision 16 bit unsigned integer type.
421 	/// @see gtc_type_precision
422 	typedef detail::uint16 highp_uint16;
423 
424 	/// High precision 32 bit unsigned integer type.
425 	/// @see gtc_type_precision
426 	typedef detail::uint32 highp_uint32;
427 
428 	/// High precision 64 bit unsigned integer type.
429 	/// @see gtc_type_precision
430 	typedef detail::uint64 highp_uint64;
431 
432 	/// High precision 8 bit unsigned integer type.
433 	/// @see gtc_type_precision
434 	typedef detail::uint8 highp_uint8_t;
435 
436 	/// High precision 16 bit unsigned integer type.
437 	/// @see gtc_type_precision
438 	typedef detail::uint16 highp_uint16_t;
439 
440 	/// High precision 32 bit unsigned integer type.
441 	/// @see gtc_type_precision
442 	typedef detail::uint32 highp_uint32_t;
443 
444 	/// High precision 64 bit unsigned integer type.
445 	/// @see gtc_type_precision
446 	typedef detail::uint64 highp_uint64_t;
447 
448 	/// High precision 8 bit unsigned integer type.
449 	/// @see gtc_type_precision
450 	typedef detail::uint8 highp_u8;
451 
452 	/// High precision 16 bit unsigned integer type.
453 	/// @see gtc_type_precision
454 	typedef detail::uint16 highp_u16;
455 
456 	/// High precision 32 bit unsigned integer type.
457 	/// @see gtc_type_precision
458 	typedef detail::uint32 highp_u32;
459 
460 	/// High precision 64 bit unsigned integer type.
461 	/// @see gtc_type_precision
462 	typedef detail::uint64 highp_u64;
463 
464 	/// Default precision 8 bit unsigned integer type.
465 	/// @see gtc_type_precision
466 	typedef detail::uint8 uint8;
467 
468 	/// Default precision 16 bit unsigned integer type.
469 	/// @see gtc_type_precision
470 	typedef detail::uint16 uint16;
471 
472 	/// Default precision 32 bit unsigned integer type.
473 	/// @see gtc_type_precision
474 	typedef detail::uint32 uint32;
475 
476 	/// Default precision 64 bit unsigned integer type.
477 	/// @see gtc_type_precision
478 	typedef detail::uint64 uint64;
479 
480 #if GLM_HAS_EXTENDED_INTEGER_TYPE
481 	using std::uint8_t;
482 	using std::uint16_t;
483 	using std::uint32_t;
484 	using std::uint64_t;
485 #else
486 	/// Default precision 8 bit unsigned integer type.
487 	/// @see gtc_type_precision
488 	typedef detail::uint8 uint8_t;
489 
490 	/// Default precision 16 bit unsigned integer type.
491 	/// @see gtc_type_precision
492 	typedef detail::uint16 uint16_t;
493 
494 	/// Default precision 32 bit unsigned integer type.
495 	/// @see gtc_type_precision
496 	typedef detail::uint32 uint32_t;
497 
498 	/// Default precision 64 bit unsigned integer type.
499 	/// @see gtc_type_precision
500 	typedef detail::uint64 uint64_t;
501 #endif
502 
503 	/// Default precision 8 bit unsigned integer type.
504 	/// @see gtc_type_precision
505 	typedef detail::uint8 u8;
506 
507 	/// Default precision 16 bit unsigned integer type.
508 	/// @see gtc_type_precision
509 	typedef detail::uint16 u16;
510 
511 	/// Default precision 32 bit unsigned integer type.
512 	/// @see gtc_type_precision
513 	typedef detail::uint32 u32;
514 
515 	/// Default precision 64 bit unsigned integer type.
516 	/// @see gtc_type_precision
517 	typedef detail::uint64 u64;
518 
519 
520 
521 	/// Default precision 8 bit unsigned integer scalar type.
522 	/// @see gtc_type_precision
523 	typedef tvec1<u8, defaultp> u8vec1;
524 
525 	/// Default precision 8 bit unsigned integer vector of 2 components type.
526 	/// @see gtc_type_precision
527 	typedef tvec2<u8, defaultp> u8vec2;
528 
529 	/// Default precision 8 bit unsigned integer vector of 3 components type.
530 	/// @see gtc_type_precision
531 	typedef tvec3<u8, defaultp> u8vec3;
532 
533 	/// Default precision 8 bit unsigned integer vector of 4 components type.
534 	/// @see gtc_type_precision
535 	typedef tvec4<u8, defaultp> u8vec4;
536 
537 
538 	/// Default precision 16 bit unsigned integer scalar type.
539 	/// @see gtc_type_precision
540 	typedef tvec1<u16, defaultp> u16vec1;
541 
542 	/// Default precision 16 bit unsigned integer vector of 2 components type.
543 	/// @see gtc_type_precision
544 	typedef tvec2<u16, defaultp> u16vec2;
545 
546 	/// Default precision 16 bit unsigned integer vector of 3 components type.
547 	/// @see gtc_type_precision
548 	typedef tvec3<u16, defaultp> u16vec3;
549 
550 	/// Default precision 16 bit unsigned integer vector of 4 components type.
551 	/// @see gtc_type_precision
552 	typedef tvec4<u16, defaultp> u16vec4;
553 
554 
555 	/// Default precision 32 bit unsigned integer scalar type.
556 	/// @see gtc_type_precision
557 	typedef tvec1<u32, defaultp> u32vec1;
558 
559 	/// Default precision 32 bit unsigned integer vector of 2 components type.
560 	/// @see gtc_type_precision
561 	typedef tvec2<u32, defaultp> u32vec2;
562 
563 	/// Default precision 32 bit unsigned integer vector of 3 components type.
564 	/// @see gtc_type_precision
565 	typedef tvec3<u32, defaultp> u32vec3;
566 
567 	/// Default precision 32 bit unsigned integer vector of 4 components type.
568 	/// @see gtc_type_precision
569 	typedef tvec4<u32, defaultp> u32vec4;
570 
571 
572 	/// Default precision 64 bit unsigned integer scalar type.
573 	/// @see gtc_type_precision
574 	typedef tvec1<u64, defaultp> u64vec1;
575 
576 	/// Default precision 64 bit unsigned integer vector of 2 components type.
577 	/// @see gtc_type_precision
578 	typedef tvec2<u64, defaultp> u64vec2;
579 
580 	/// Default precision 64 bit unsigned integer vector of 3 components type.
581 	/// @see gtc_type_precision
582 	typedef tvec3<u64, defaultp> u64vec3;
583 
584 	/// Default precision 64 bit unsigned integer vector of 4 components type.
585 	/// @see gtc_type_precision
586 	typedef tvec4<u64, defaultp> u64vec4;
587 
588 
589 	//////////////////////
590 	// Float vector types
591 
592 	/// 32 bit single-precision floating-point scalar.
593 	/// @see gtc_type_precision
594 	typedef detail::float32 float32;
595 
596 	/// 64 bit double-precision floating-point scalar.
597 	/// @see gtc_type_precision
598 	typedef detail::float64 float64;
599 
600 
601 	/// 32 bit single-precision floating-point scalar.
602 	/// @see gtc_type_precision
603 	typedef detail::float32 float32_t;
604 
605 	/// 64 bit double-precision floating-point scalar.
606 	/// @see gtc_type_precision
607 	typedef detail::float64 float64_t;
608 
609 
610 	/// 32 bit single-precision floating-point scalar.
611 	/// @see gtc_type_precision
612 	typedef float32 f32;
613 
614 	/// 64 bit double-precision floating-point scalar.
615 	/// @see gtc_type_precision
616 	typedef float64 f64;
617 
618 
619 	/// Single-precision floating-point vector of 1 component.
620 	/// @see gtc_type_precision
621 	typedef tvec1<float, defaultp> fvec1;
622 
623 	/// Single-precision floating-point vector of 2 components.
624 	/// @see gtc_type_precision
625 	typedef tvec2<float, defaultp> fvec2;
626 
627 	/// Single-precision floating-point vector of 3 components.
628 	/// @see gtc_type_precision
629 	typedef tvec3<float, defaultp> fvec3;
630 
631 	/// Single-precision floating-point vector of 4 components.
632 	/// @see gtc_type_precision
633 	typedef tvec4<float, defaultp> fvec4;
634 
635 
636 	/// Single-precision floating-point vector of 1 component.
637 	/// @see gtc_type_precision
638 	typedef tvec1<f32, defaultp> f32vec1;
639 
640 	/// Single-precision floating-point vector of 2 components.
641 	/// @see gtc_type_precision
642 	typedef tvec2<f32, defaultp> f32vec2;
643 
644 	/// Single-precision floating-point vector of 3 components.
645 	/// @see gtc_type_precision
646 	typedef tvec3<f32, defaultp> f32vec3;
647 
648 	/// Single-precision floating-point vector of 4 components.
649 	/// @see gtc_type_precision
650 	typedef tvec4<f32, defaultp> f32vec4;
651 
652 
653 	/// Double-precision floating-point vector of 1 component.
654 	/// @see gtc_type_precision
655 	typedef tvec1<f64, defaultp> f64vec1;
656 
657 	/// Double-precision floating-point vector of 2 components.
658 	/// @see gtc_type_precision
659 	typedef tvec2<f64, defaultp> f64vec2;
660 
661 	/// Double-precision floating-point vector of 3 components.
662 	/// @see gtc_type_precision
663 	typedef tvec3<f64, defaultp> f64vec3;
664 
665 	/// Double-precision floating-point vector of 4 components.
666 	/// @see gtc_type_precision
667 	typedef tvec4<f64, defaultp> f64vec4;
668 
669 
670 	//////////////////////
671 	// Float matrix types
672 
673 	/// Single-precision floating-point 1x1 matrix.
674 	/// @see gtc_type_precision
675 	//typedef detail::tmat1x1<f32> fmat1;
676 
677 	/// Single-precision floating-point 2x2 matrix.
678 	/// @see gtc_type_precision
679 	typedef tmat2x2<f32, defaultp> fmat2;
680 
681 	/// Single-precision floating-point 3x3 matrix.
682 	/// @see gtc_type_precision
683 	typedef tmat3x3<f32, defaultp> fmat3;
684 
685 	/// Single-precision floating-point 4x4 matrix.
686 	/// @see gtc_type_precision
687 	typedef tmat4x4<f32, defaultp> fmat4;
688 
689 
690 	/// Single-precision floating-point 1x1 matrix.
691 	/// @see gtc_type_precision
692 	//typedef f32 fmat1x1;
693 
694 	/// Single-precision floating-point 2x2 matrix.
695 	/// @see gtc_type_precision
696 	typedef tmat2x2<f32, defaultp> fmat2x2;
697 
698 	/// Single-precision floating-point 2x3 matrix.
699 	/// @see gtc_type_precision
700 	typedef tmat2x3<f32, defaultp> fmat2x3;
701 
702 	/// Single-precision floating-point 2x4 matrix.
703 	/// @see gtc_type_precision
704 	typedef tmat2x4<f32, defaultp> fmat2x4;
705 
706 	/// Single-precision floating-point 3x2 matrix.
707 	/// @see gtc_type_precision
708 	typedef tmat3x2<f32, defaultp> fmat3x2;
709 
710 	/// Single-precision floating-point 3x3 matrix.
711 	/// @see gtc_type_precision
712 	typedef tmat3x3<f32, defaultp> fmat3x3;
713 
714 	/// Single-precision floating-point 3x4 matrix.
715 	/// @see gtc_type_precision
716 	typedef tmat3x4<f32, defaultp> fmat3x4;
717 
718 	/// Single-precision floating-point 4x2 matrix.
719 	/// @see gtc_type_precision
720 	typedef tmat4x2<f32, defaultp> fmat4x2;
721 
722 	/// Single-precision floating-point 4x3 matrix.
723 	/// @see gtc_type_precision
724 	typedef tmat4x3<f32, defaultp> fmat4x3;
725 
726 	/// Single-precision floating-point 4x4 matrix.
727 	/// @see gtc_type_precision
728 	typedef tmat4x4<f32, defaultp> fmat4x4;
729 
730 
731 	/// Single-precision floating-point 1x1 matrix.
732 	/// @see gtc_type_precision
733 	//typedef detail::tmat1x1<f32, defaultp> f32mat1;
734 
735 	/// Single-precision floating-point 2x2 matrix.
736 	/// @see gtc_type_precision
737 	typedef tmat2x2<f32, defaultp> f32mat2;
738 
739 	/// Single-precision floating-point 3x3 matrix.
740 	/// @see gtc_type_precision
741 	typedef tmat3x3<f32, defaultp> f32mat3;
742 
743 	/// Single-precision floating-point 4x4 matrix.
744 	/// @see gtc_type_precision
745 	typedef tmat4x4<f32, defaultp> f32mat4;
746 
747 
748 	/// Single-precision floating-point 1x1 matrix.
749 	/// @see gtc_type_precision
750 	//typedef f32 f32mat1x1;
751 
752 	/// Single-precision floating-point 2x2 matrix.
753 	/// @see gtc_type_precision
754 	typedef tmat2x2<f32, defaultp> f32mat2x2;
755 
756 	/// Single-precision floating-point 2x3 matrix.
757 	/// @see gtc_type_precision
758 	typedef tmat2x3<f32, defaultp> f32mat2x3;
759 
760 	/// Single-precision floating-point 2x4 matrix.
761 	/// @see gtc_type_precision
762 	typedef tmat2x4<f32, defaultp> f32mat2x4;
763 
764 	/// Single-precision floating-point 3x2 matrix.
765 	/// @see gtc_type_precision
766 	typedef tmat3x2<f32, defaultp> f32mat3x2;
767 
768 	/// Single-precision floating-point 3x3 matrix.
769 	/// @see gtc_type_precision
770 	typedef tmat3x3<f32, defaultp> f32mat3x3;
771 
772 	/// Single-precision floating-point 3x4 matrix.
773 	/// @see gtc_type_precision
774 	typedef tmat3x4<f32, defaultp> f32mat3x4;
775 
776 	/// Single-precision floating-point 4x2 matrix.
777 	/// @see gtc_type_precision
778 	typedef tmat4x2<f32, defaultp> f32mat4x2;
779 
780 	/// Single-precision floating-point 4x3 matrix.
781 	/// @see gtc_type_precision
782 	typedef tmat4x3<f32, defaultp> f32mat4x3;
783 
784 	/// Single-precision floating-point 4x4 matrix.
785 	/// @see gtc_type_precision
786 	typedef tmat4x4<f32, defaultp> f32mat4x4;
787 
788 
789 	/// Double-precision floating-point 1x1 matrix.
790 	/// @see gtc_type_precision
791 	//typedef detail::tmat1x1<f64, defaultp> f64mat1;
792 
793 	/// Double-precision floating-point 2x2 matrix.
794 	/// @see gtc_type_precision
795 	typedef tmat2x2<f64, defaultp> f64mat2;
796 
797 	/// Double-precision floating-point 3x3 matrix.
798 	/// @see gtc_type_precision
799 	typedef tmat3x3<f64, defaultp> f64mat3;
800 
801 	/// Double-precision floating-point 4x4 matrix.
802 	/// @see gtc_type_precision
803 	typedef tmat4x4<f64, defaultp> f64mat4;
804 
805 
806 	/// Double-precision floating-point 1x1 matrix.
807 	/// @see gtc_type_precision
808 	//typedef f64 f64mat1x1;
809 
810 	/// Double-precision floating-point 2x2 matrix.
811 	/// @see gtc_type_precision
812 	typedef tmat2x2<f64, defaultp> f64mat2x2;
813 
814 	/// Double-precision floating-point 2x3 matrix.
815 	/// @see gtc_type_precision
816 	typedef tmat2x3<f64, defaultp> f64mat2x3;
817 
818 	/// Double-precision floating-point 2x4 matrix.
819 	/// @see gtc_type_precision
820 	typedef tmat2x4<f64, defaultp> f64mat2x4;
821 
822 	/// Double-precision floating-point 3x2 matrix.
823 	/// @see gtc_type_precision
824 	typedef tmat3x2<f64, defaultp> f64mat3x2;
825 
826 	/// Double-precision floating-point 3x3 matrix.
827 	/// @see gtc_type_precision
828 	typedef tmat3x3<f64, defaultp> f64mat3x3;
829 
830 	/// Double-precision floating-point 3x4 matrix.
831 	/// @see gtc_type_precision
832 	typedef tmat3x4<f64, defaultp> f64mat3x4;
833 
834 	/// Double-precision floating-point 4x2 matrix.
835 	/// @see gtc_type_precision
836 	typedef tmat4x2<f64, defaultp> f64mat4x2;
837 
838 	/// Double-precision floating-point 4x3 matrix.
839 	/// @see gtc_type_precision
840 	typedef tmat4x3<f64, defaultp> f64mat4x3;
841 
842 	/// Double-precision floating-point 4x4 matrix.
843 	/// @see gtc_type_precision
844 	typedef tmat4x4<f64, defaultp> f64mat4x4;
845 
846 
847 	//////////////////////////
848 	// Quaternion types
849 
850 	/// Single-precision floating-point quaternion.
851 	/// @see gtc_type_precision
852 	typedef tquat<f32, defaultp> f32quat;
853 
854 	/// Double-precision floating-point quaternion.
855 	/// @see gtc_type_precision
856 	typedef tquat<f64, defaultp> f64quat;
857 
858 	/// @}
859 }//namespace glm
860 
861 #include "type_precision.inl"
862