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