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