text: ![glm](doc/logo.png)
  
  [OpenGL Mathematics](http://glm.g-truc.net/) (*GLM*) is a header only C++ mathematics library for graphics software based on the [OpenGL Shading Language (GLSL) specifications](https://www.opengl.org/registry/doc/GLSLangSpec.4.50.diff.pdf).
  
  *GLM* provides classes and functions designed and implemented with the same naming conventions and functionalities than *GLSL* so that anyone who knows *GLSL*, can use *GLM* as well in C++.
  
  This project isn't limited to *GLSL* features. An extension system, based on the *GLSL* extension conventions, provides extended capabilities: matrix transformations, quaternions, data packing, random numbers, noise, etc...
  
  This library works perfectly with *[OpenGL](https://www.opengl.org)* but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (raytracing / rasterisation), image processing, physic simulations and any development context that requires a simple and convenient mathematics library.
  
  *GLM* is written in C++98 but can take advantage of C++11 when supported by the compiler. It is a platform independent library with no dependence and it officially supports the following compilers:
  - [Apple Clang 4.0](https://developer.apple.com/library/mac/documentation/CompilerTools/Conceptual/LLVMCompilerOverview/index.html) and higher
  - [GCC](http://gcc.gnu.org/) 4.2 and higher
  - [Intel C++ Composer](https://software.intel.com/en-us/intel-compilers) XE 2013 and higher
  - [LLVM](http://llvm.org/) 3.0 and higher
  - [Visual C++](http://www.visualstudio.com/) 2010 and higher
  - [CUDA](https://developer.nvidia.com/about-cuda) 4.0 and higher (experimental)
  - Any conform C++98 or C++11 compiler
  
  For more information about *GLM*, please have a look at the [manual](http://glm.g-truc.net/0.9.7/glm-0.9.7.pdf) and the [API reference documentation](http://glm.g-truc.net/0.9.7/api/index.html).
  The source code and the documentation are licensed under the [Happy Bunny License (Modified MIT) or the MIT License](./copying.txt).
  
  Thanks for contributing to the project by [submitting issues](https://github.com/g-truc/glm/issues) for bug reports and feature requests. Any feedback is welcome at [glm@g-truc.net](mailto://glm@g-truc.net).
  
  
  ```c++
  #include <glm/vec3.hpp> // glm::vec3
  #include <glm/vec4.hpp> // glm::vec4
  #include <glm/mat4x4.hpp> // glm::mat4
  #include <glm/gtc/matrix_transform.hpp> // glm::translate, glm::rotate, glm::scale, glm::perspective
  #include <glm/gtc/constant.hpp> // glm::pi
  
  glm::mat4 camera(float Translate, glm::vec2 const & Rotate)
  {
  	glm::mat4 Projection = glm::perspective(glm::pi<float>() * 0.25f, 4.0f / 3.0f, 0.1f, 100.f);
  	glm::mat4 View = glm::translate(glm::mat4(1.0f), glm::vec3(0.0f, 0.0f, -Translate));
  	View = glm::rotate(View, Rotate.y, glm::vec3(-1.0f, 0.0f, 0.0f));
  	View = glm::rotate(View, Rotate.x, glm::vec3(0.0f, 1.0f, 0.0f));
  	glm::mat4 Model = glm::scale(glm::mat4(1.0f), glm::vec3(0.5f));
  	return Projection * View * Model;
  }
  ```
  
  ## Project Health
  
  | Service | System | Compiler | Status |
  | ------- | ------ | -------- | ------ |
  | [Drone](https://drone.io/github.com/g-truc/glm) | Linux 64 bits | GCC 4.6.3 | [![Build Status](https://drone.io/github.com/g-truc/glm/status.png)](https://drone.io/github.com/g-truc/glm/latest) |
  
  ## [Lastest release](https://github.com/g-truc/glm/releases/latest)
  
  ## Release notes
  
  #### [GLM 0.9.7.1](https://github.com/g-truc/glm/releases/tag/0.9.7.1) - 2015-09-07
  ##### Improvements:
  - Improved constexpr for constant functions coverage #198
  - Added to_string for quat and dual_quat in GTX_string_cast #375
  - Improved overall execution time of unit tests #396
  
  ##### Fixes:
  - Fixed strict alignment warnings #235 #370
  - Fixed link errors on compilers not supported default function #377
  - Fixed compilation warnings in vec4
  - Fixed non-identity quaternions for equal vectors #234
  - Fixed excessive GTX_fast_trigonometry execution time #396
  - Fixed Visual Studio 2015 'hides class member' warnings #394
  - Fixed builtin bitscan never being used #392
  - Removed unused func_noise.* files #398
  
  #### [GLM 0.9.7.0](https://github.com/g-truc/glm/releases/tag/0.9.7.0) - 2015-08-02
  ##### Features:
  - Added GTC_color_space: convertLinearToSRGB and convertSRGBToLinear functions
  - Added 'fmod' overload to GTX_common with tests #308
  - Left handed perspective and lookAt functions #314
  - Added functions eulerAngleXYZ and extractEulerAngleXYZ #311
  - Added <glm/gtx/hash.hpp> to perform std::hash on GLM types #320 #367
  - Added <glm/gtx/wrap.hpp> for texcoord wrapping
  - Added static components and precision members to all vector and quat types #350
  - Added .gitignore #349
  - Added support of defaulted functions to GLM types, to use them in unions #366
  
  ##### Improvements:
  - Changed usage of __has_include to support Intel compiler #307
  - Specialized integer implementation of YCoCg-R #310
  - Don't show status message in 'FindGLM' if 'QUIET' option is set. #317
  - Added master branch continuous integration service on Linux 64 #332
  - Clarified manual regarding angle unit in GLM, added FAQ 11 #326
  - Updated list of compiler versions
  
  ##### Fixes:
  - Fixed default precision for quat and dual_quat type #312
  - Fixed (u)int64 MSB/LSB handling on BE archs #306
  - Fixed multi-line comment warning in g++. #315
  - Fixed specifier removal by 'std::make_pair<>' #333
  - Fixed perspective fovy argument documentation #327
  - Removed -m64 causing build issues on Linux 32 #331
  - Fixed isfinite with C++98 compilers #343
  - Fixed Intel compiler build error on Linux #354
  - Fixed use of libstdc++ with Clang #351
  - Fixed quaternion pow #346
  - Fixed decompose warnings #373
  - Fixed matrix conversions #371
  
  ##### Deprecation:
  - Removed integer specification for 'mod' in GTC_integer #308
  - Removed GTX_multiple, replaced by GTC_round
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.6.3](https://github.com/g-truc/glm/releases/tag/0.9.6.3) - 2015-02-15
  - Fixed Android doesn't have C++ 11 STL #284
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.6.2](https://github.com/g-truc/glm/releases/tag/0.9.6.2) - 2015-02-15
  ##### Features:
  - Added display of GLM version with other GLM_MESSAGES
  - Added ARM instruction set detection
  
  --------------------------------------------------------------------------------
  ##### Improvements:
  - Removed assert for perspective with zFar < zNear #298
  - Added Visual Studio natvis support for vec1, quat and dualqual types
  - Cleaned up C++11 feature detections
  - Clarify GLM licensing
  
  ##### Fixes:
  - Fixed faceforward build #289
  - Fixed conflict with Xlib #define True 1 #293
  - Fixed decompose function VS2010 templating issues #294
  - Fixed mat4x3 = mat2x3 * mat4x2 operator #297
  - Fixed warnings in F2x11_1x10 packing function in GTC_packing #295
  - Fixed Visual Studio natvis support for vec4 #288
  - Fixed GTC_packing *pack*norm*x* build and added tests #292
  - Disabled GTX_scalar_multiplication for GCC, failing to build tests #242
  - Fixed Visual C++ 2015 constexpr errors: Disabled only partial support
  - Fixed functions not inlined with Clang #302
  - Fixed memory corruption (undefined behaviour) #303
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.6.1](https://github.com/g-truc/glm/releases/tag/0.9.6.1) - 2014-12-10
  ##### Features:
  - Added GLM_LANG_CXX14_FLAG and GLM_LANG_CXX1Z_FLAG language feature flags
  - Added C++14 detection
  
  ##### Improvements:
  - Clean up GLM_MESSAGES compilation log to report only detected capabilities
  
  ##### Fixes:
  - Fixed scalar uaddCarry build error with Cuda #276
  - Fixed C++11 explicit conversion operators detection #282
  - Fixed missing explicit convertion when using integer log2 with *vec1 types
  - Fixed 64 bits integer GTX_string_cast to_string on VC 32 bit compiler
  - Fixed Android build issue, STL C++11 is not supported by the NDK #284
  - Fixed unsupported _BitScanForward64 and _BitScanReverse64 in VC10
  - Fixed Visual C++ 32 bit build #283
  - Fixed GLM_FORCE_SIZE_FUNC pragma message
  - Fixed C++98 only build
  - Fixed conflict between GTX_compatibility and GTC_quaternion #286
  - Fixed C++ language restriction using GLM_FORCE_CXX**
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.6.0](https://github.com/g-truc/glm/releases/tag/0.9.6.0) - 2014-11-30
  ##### Features:
  - Exposed template vector and matrix types in 'glm' namespace #239, #244
  - Added GTX_scalar_multiplication for C++ 11 compiler only #242
  - Added GTX_range for C++ 11 compiler only #240
  - Added closestPointOnLine function for tvec2 to GTX_closest_point #238
  - Added GTC_vec1 extension, *vec1 support to *vec* types
  - Updated GTX_associated_min_max with vec1 support
  - Added support of precision and integers to linearRand #230
  - Added Integer types support to GTX_string_cast #249
  - Added vec3 slerp #237
  - Added GTX_common with isdenomal #223
  - Added GLM_FORCE_SIZE_FUNC to replace .length() by .size() #245
  - Added GLM_FORCE_NO_CTOR_INIT
  - Added 'uninitialize' to explicitly not initialize a GLM type
  - Added GTC_bitfield extension, promoted GTX_bit
  - Added GTC_integer extension, promoted GTX_bit and GTX_integer
  - Added GTC_round extension, promoted GTX_bit
  - Added GLM_FORCE_EXPLICIT_CTOR to require explicit type conversions #269
  - Added GTX_type_aligned for aligned vector, matrix and quaternion types
  
  ##### Improvements:
  - Rely on C++11 to implement isinf and isnan
  - Removed GLM_FORCE_CUDA, Cuda is implicitly detected
  - Separated Apple Clang and LLVM compiler detection
  - Used pragma once
  - Undetected C++ compiler automatically compile with GLM_FORCE_CXX98 and 
    GLM_FORCE_PURE
  - Added not function (from GLSL specification) on VC12
  - Optimized bitfieldReverse and bitCount functions
  - Optimized findLSB and findMSB functions.
  - Optimized matrix-vector multiple performance with Cuda #257, #258
  - Reduced integer type redifinitions #233
  - Rewrited of GTX_fast_trigonometry #264 #265
  - Made types trivially copyable #263
  - Removed <iostream> in GLM tests
  - Used std features within GLM without redeclaring
  - Optimized cot function #272
  - Optimized sign function #272
  - Added explicit cast from quat to mat3 and mat4 #275
  
  ##### Fixes:
  - Fixed std::nextafter not supported with C++11 on Android #217
  - Fixed missing value_type for dual quaternion
  - Fixed return type of dual quaternion length
  - Fixed infinite loop in isfinite function with GCC #221
  - Fixed Visual Studio 14 compiler warnings
  - Fixed implicit conversion from another tvec2 type to another tvec2 #241
  - Fixed lack of consistency of quat and dualquat constructors
  - Fixed uaddCarray #253
  - Fixed float comparison warnings #270
  
  ##### Deprecation:
  - Removed degrees for function parameters
  - Removed GLM_FORCE_RADIANS, active by default
  - Removed VC 2005 / 8 and 2008 / 9 support
  - Removed GCC 3.4 to 4.3 support
  - Removed LLVM GCC support
  - Removed LLVM 2.6 to 3.1 support
  - Removed CUDA 3.0 to 3.2 support
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.5.4 - 2014-06-21](https://github.com/g-truc/glm/releases/tag/0.9.5.4)
  - Fixed non-utf8 character #196
  - Added FindGLM install for CMake #189
  - Fixed GTX_color_space - saturation #195
  - Fixed glm::isinf and glm::isnan for with Android NDK 9d #191
  - Fixed builtin GLM_ARCH_SSE4 #204
  - Optimized Quaternion vector rotation #205
  - Fixed missing doxygen @endcond tag #211
  - Fixed instruction set detection with Clang #158
  - Fixed orientate3 function #207
  - Fixed lerp when cosTheta is close to 1 in quaternion slerp #210
  - Added GTX_io for io with <iostream> #144
  - Fixed fastDistance ambiguity #215
  - Fixed tweakedInfinitePerspective #208 and added user-defined epsilon to
    tweakedInfinitePerspective
  - Fixed std::copy and std::vector with GLM types #214
  - Fixed strict aliasing issues #212, #152
  - Fixed std::nextafter not supported with C++11 on Android #213
  - Fixed corner cases in exp and log functions for quaternions #199
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.5.3 - 2014-04-02
  - Added instruction set auto detection with Visual C++ using _M_IX86_FP - /arch
    compiler argument
  - Fixed GTX_raw_data code dependency
  - Fixed GCC instruction set detection
  - Added GLM_GTX_matrix_transform_2d extension (#178, #176)
  - Fixed CUDA issues (#169, #168, #183, #182)
  - Added support for all extensions but GTX_string_cast to CUDA
  - Fixed strict aliasing warnings in GCC 4.8.1 / Android NDK 9c (#152)
  - Fixed missing bitfieldInterleave definisions
  - Fixed usubBorrow (#171)
  - Fixed eulerAngle*** not consistent for right-handed coordinate system (#173)
  - Added full tests for eulerAngle*** functions (#173)
  - Added workaround for a CUDA compiler bug (#186, #185)
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.5.2 - 2014-02-08
  - Fixed initializer list ambiguity (#159, #160)
  - Fixed warnings with the Android NDK 9c
  - Fixed non power of two matrix products
  - Fixed mix function link error
  - Fixed SSE code included in GLM tests on "pure" platforms
  - Fixed undefined reference to fastInverseSqrt (#161)
  - Fixed GLM_FORCE_RADIANS with <glm/ext.hpp> build error (#165)
  - Fix dot product clamp range for vector angle functions. (#163)
  - Tentative fix for strict aliasing warning in GCC 4.8.1 / Android NDK 9c (#152)
  - Fixed GLM_GTC_constants description brief (#162)
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.5.1 - 2014-01-11
  - Fixed angle and orientedAngle that sometimes return NaN values (#145)
  - Deprecated degrees for function parameters and display a message
  - Added possible static_cast conversion of GLM types (#72)
  - Fixed error 'inverse' is not a member of 'glm' from glm::unProject (#146)
  - Fixed mismatch between some declarations and definitions
  - Fixed inverse link error when using namespace glm; (#147)
  - Optimized matrix inverse and division code (#149)
  - Added intersectRayPlane function (#153)
  - Fixed outerProduct return type (#155)
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.5.0 - 2013-12-25
  - Added forward declarations (glm/fwd.hpp) for faster compilations
  - Added per feature headers
  - Minimized GLM internal dependencies
  - Improved Intel Compiler detection
  - Added bitfieldInterleave and _mm_bit_interleave_si128 functions
  - Added GTX_scalar_relational
  - Added GTX_dual_quaternion
  - Added rotation function to GTX_quaternion (#22)
  - Added precision variation of each type
  - Added quaternion comparison functions
  - Fixed GTX_multiple for negative value
  - Removed GTX_ocl_type extension
  - Fixed post increment and decrement operators
  - Fixed perspective with zNear == 0 (#71)
  - Removed l-value swizzle operators
  - Cleaned up compiler detection code for unsupported compilers
  - Replaced C cast by C++ casts
  - Fixed .length() that should return a int and not a size_t
  - Added GLM_FORCE_SIZE_T_LENGTH and glm::length_t
  - Removed unnecessary conversions
  - Optimized packing and unpacking functions
  - Removed the normalization of the up argument of lookAt function (#114)
  - Added low precision specializations of inversesqrt
  - Fixed ldexp and frexp implementations
  - Increased assert coverage
  - Increased static_assert coverage
  - Replaced GLM traits by STL traits when possible
  - Allowed including individual core feature
  - Increased unit tests completness
  - Added creating of a quaternion from two vectors
  - Added C++11 initializer lists
  - Fixed umulExtended and imulExtended implementations for vector types (#76)
  - Fixed CUDA coverage for GTC extensions
  - Added GTX_io extension
  - Improved GLM messages enabled when defining GLM_MESSAGES
  - Hidden matrix _inverse function implementation detail into private section
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.4.6](https://github.com/g-truc/glm/releases/tag/0.9.4.6) - 2013-09-20
  - Fixed detection to select the last known compiler if newer version #106
  - Fixed is_int and is_uint code duplication with GCC and C++11 #107 
  - Fixed test suite build while using Clang in C++11 mode
  - Added c++1y mode support in CMake test suite
  - Removed ms extension mode to CMake when no using Visual C++
  - Added pedantic mode to CMake test suite for Clang and GCC
  - Added use of GCC frontend on Unix for ICC and Visual C++ fronted on Windows
    for ICC
  - Added compilation errors for unsupported compiler versions
  - Fixed glm::orientation with GLM_FORCE_RADIANS defined #112
  - Fixed const ref issue on assignment operator taking a scalar parameter #116
  - Fixed glm::eulerAngleY implementation #117
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.4.5 - 2013-08-12
  - Fixed CUDA support
  - Fixed inclusion of intrinsics in "pure" mode #92
  - Fixed language detection on GCC when the C++0x mode isn't enabled #95
  - Fixed issue #97: register is deprecated in C++11
  - Fixed issue #96: CUDA issues
  - Added Windows CE detection #92
  - Added missing value_ptr for quaternions #99
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.4.4 - 2013-05-29
  - Fixed slerp when costheta is close to 1 #65
  - Fixed mat4x2 value_type constructor #70
  - Fixed glm.natvis for Visual C++ 12 #82
  - Added assert in inversesqrt to detect division by zero #61
  - Fixed missing swizzle operators #86
  - Fixed CUDA warnings #86
  - Fixed GLM natvis for VC11 #82
  - Fixed GLM_GTX_multiple with negative values #79
  - Fixed glm::perspective when zNear is zero #71
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.4.3 - 2013-03-20
  - Detected qualifier for Clang
  - Fixed C++11 mode for GCC, couldn't be enabled without MS extensions
  - Fixed squad, intermediate and exp quaternion functions
  - Fixed GTX_polar_coordinates euclidean function, takes a vec2 instead of a vec3
  - Clarify the license applying on the manual
  - Added a docx copy of the manual
  - Fixed GLM_GTX_matrix_interpolation
  - Fixed isnan and isinf on Android with Clang
  - Autodetected C++ version using __cplusplus value
  - Fixed mix for bool and bvec* third parameter
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.4.2 - 2013-02-14
  - Fixed compAdd from GTX_component_wise
  - Fixed SIMD support for Intel compiler on Windows
  - Fixed isnan and isinf for CUDA compiler
  - Fixed GLM_FORCE_RADIANS on glm::perspective
  - Fixed GCC warnings
  - Fixed packDouble2x32 on XCode
  - Fixed mix for vec4 SSE implementation
  - Fixed 0x2013 dash character in comments that cause issue in Windows 
    Japanese mode
  - Fixed documentation warnings
  - Fixed CUDA warnings
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.4.1 - 2012-12-22
  - Improved half support: -0.0 case and implicit conversions
  - Fixed Intel Composer Compiler support on Linux
  - Fixed interaction between quaternion and euler angles
  - Fixed GTC_constants build
  - Fixed GTX_multiple
  - Fixed quat slerp using mix function when cosTheta close to 1
  - Improved fvec4SIMD and fmat4x4SIMD implementations
  - Fixed assert messages
  - Added slerp and lerp quaternion functions and tests
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.4.0 - 2012-11-18
  - Added Intel Composer Compiler support
  - Promoted GTC_espilon extension
  - Promoted GTC_ulp extension
  - Removed GLM website from the source repository
  - Added GLM_FORCE_RADIANS so that all functions takes radians for arguments
  - Fixed detection of Clang and LLVM GCC on MacOS X
  - Added debugger visualizers for Visual C++ 2012
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.3.4](https://github.com/g-truc/glm/releases/tag/0.9.3.4) - 2012-06-30
  - Added SSE4 and AVX2 detection.
  - Removed VIRTREV_xstream and the incompatibility generated with GCC
  - Fixed C++11 compiler option for GCC
  - Removed MS language extension option for GCC (not fonctionnal)
  - Fixed bitfieldExtract for vector types
  - Fixed warnings
  - Fixed SSE includes
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.3.3 - 2012-05-10
  - Fixed isinf and isnan
  - Improved compatibility with Intel compiler
  - Added CMake test build options: SIMD, C++11, fast math and MS land ext
  - Fixed SIMD mat4 test on GCC
  - Fixed perspectiveFov implementation
  - Fixed matrixCompMult for none-square matrices
  - Fixed namespace issue on stream operators
  - Fixed various warnings
  - Added VC11 support
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.3.2 - 2012-03-15
  - Fixed doxygen documentation
  - Fixed Clang version detection
  - Fixed simd mat4 /= operator
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.3.1 - 2012-01-25
  - Fixed platform detection
  - Fixed warnings
  - Removed detail code from Doxygen doc
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.3.0 - 2012-01-09
  - Added CPP Check project
  - Fixed conflict with Windows headers
  - Fixed isinf implementation
  - Fixed Boost conflict
  - Fixed warnings
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.3.B - 2011-12-12
  - Added support for Chrone Native Client
  - Added epsilon constant
  - Removed value_size function from vector types
  - Fixed roundEven on GCC
  - Improved API documentation
  - Fixed modf implementation
  - Fixed step function accuracy
  - Fixed outerProduct
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.3.A - 2011-11-11
  - Improved doxygen documentation
  - Added new swizzle operators for C++11 compilers
  - Added new swizzle operators declared as functions
  - Added GLSL 4.20 length for vector and matrix types
  - Promoted GLM_GTC_noise extension: simplex, perlin, periodic noise functions
  - Promoted GLM_GTC_random extension: linear, gaussian and various random number 
  generation distribution
  - Added GLM_GTX_constants: provides usefull constants
  - Added extension versioning
  - Removed many unused namespaces
  - Fixed half based type contructors
  - Added GLSL core noise functions
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.2.7](https://github.com/g-truc/glm/releases/tag/0.9.2.7) - 2011-10-24
  - Added more swizzling constructors
  - Added missing none-squared matrix products
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.2.6](https://github.com/g-truc/glm/releases/tag/0.9.2.6) - 2011-10-01
  - Fixed half based type build on old GCC
  - Fixed /W4 warnings on Visual C++
  - Fixed some missing l-value swizzle operators
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.2.5 - 2011-09-20
  - Fixed floatBitToXint functions
  - Fixed pack and unpack functions
  - Fixed round functions
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.2.4 - 2011-09-03
  - Fixed extensions bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.2.3 - 2011-06-08
  - Fixed build issues
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.2.2 - 2011-06-02
  - Expend matrix constructors flexibility
  - Improved quaternion implementation
  - Fixed many warnings across platforms and compilers
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.2.1 - 2011-05-24
  - Automatically detect CUDA support
  - Improved compiler detection
  - Fixed errors and warnings in VC with C++ extensions disabled
  - Fixed and tested GLM_GTX_vector_angle
  - Fixed and tested GLM_GTX_rotate_vector
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.2.0 - 2011-05-09
  - Added CUDA support
  - Added CTest test suite
  - Added GLM_GTX_ulp extension
  - Added GLM_GTX_noise extension
  - Added GLM_GTX_matrix_interpolation extension
  - Updated quaternion slerp interpolation
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.1.3](https://github.com/g-truc/glm/releases/tag/0.9.1.3) - 2011-05-07
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.1.2 - 2011-04-15
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.1.1 - 2011-03-17
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.1.0 - 2011-03-03
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.1.B - 2011-02-13
  - Updated API documentation
  - Improved SIMD implementation
  - Fixed Linux build
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.0.8](https://github.com/g-truc/glm/releases/tag/0.9.0.8) - 2011-02-13
  - Added quaternion product operator.
  - Clarify that GLM is a header only library.
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.1.A - 2011-01-31
  - Added SIMD support
  - Added new swizzle functions
  - Improved static assert error message with C++0x static_assert
  - New setup system
  - Reduced branching
  - Fixed trunc implementation
  
  --------------------------------------------------------------------------------
  #### [GLM 0.9.0.7](https://github.com/g-truc/glm/releases/tag/0.9.0.7) - 2011-01-30
  - Added GLSL 4.10 packing functions
  - Added == and != operators for every types.
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.0.6 - 2010-12-21
  - Many matrices bugs fixed
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.0.5 - 2010-11-01
  - Improved Clang support
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.0.4 - 2010-10-04
  - Added autoexp for GLM
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.0.3 - 2010-08-26
  - Fixed non-squared matrix operators
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.0.2 - 2010-07-08
  - Added GLM_GTX_int_10_10_10_2
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.0.1 - 2010-06-21
  - Fixed extensions errors
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.0.0 - 2010-05-25
  - Objective-C support
  - Fixed warnings
  - Updated documentation
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.B.2 - 2010-04-30
  - Git transition
  - Removed experimental code from releases
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.B.1 - 2010-04-03
  - Based on GLSL 4.00 specification
  - Added the new core functions
  - Added some implicit conversion support
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.A.2 - 2010-02-20
  - Improved some possible errors messages
  - Improved declarations and definitions match
  
  --------------------------------------------------------------------------------
  #### GLM 0.9.A.1 - 2010-02-09
  - Removed deprecated features
  - Internal redesign
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.4.4 final - 2010-01-25
  - Fixed warnings
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.4.3 final - 2009-11-16
  - Fixed Half float arithmetic
  - Fixed setup defines
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.4.2 final - 2009-10-19
  - Fixed Half float adds
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.4.1 final - 2009-10-05
  - Updated documentation
  - Fixed MacOS X build
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.4.0 final - 2009-09-16
  - Added GCC 4.4 and VC2010 support
  - Added matrix optimizations
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.3.5 final - 2009-08-11
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.3.4 final - 2009-08-10
  - Updated GLM according GLSL 1.5 spec
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.3.3 final - 2009-06-25
  - Fixed bugs
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.3.2 final - 2009-06-04
  - Added GLM_GTC_quaternion
  - Added GLM_GTC_type_precision
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.3.1 final - 2009-05-21
  - Fixed old extension system.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.3.0 final - 2009-05-06
  - Added stable extensions.
  - Added new extension system.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.2.3 final - 2009-04-01
  - Fixed bugs.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.2.2 final - 2009-02-24
  - Fixed bugs.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.2.1 final - 2009-02-13
  - Fixed bugs.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.2 final - 2009-01-21
  - Fixed bugs.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.1 final - 2008-10-30
  - Fixed bugs.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.0 final - 2008-10-23
  - New method to use extension.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.0 beta3 - 2008-10-10
  - Added CMake support for GLM tests.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.0 beta2 - 2008-10-04
  - Improved half scalars and vectors support.
  
  --------------------------------------------------------------------------------
  #### GLM 0.8.0 beta1 - 2008-09-26
  - Improved GLSL conformance
  - Added GLSL 1.30 support
  - Improved API documentation
  
  --------------------------------------------------------------------------------
  #### GLM 0.7.6 final - 2008-08-08
  - Improved C++ standard comformance
  - Added Static assert for types checking
  
  --------------------------------------------------------------------------------
  #### GLM 0.7.5 final - 2008-07-05
  - Added build message system with Visual Studio
  - Pedantic build with GCC
  
  --------------------------------------------------------------------------------
  #### GLM 0.7.4 final - 2008-06-01
  - Added external dependencies system.
  
  --------------------------------------------------------------------------------
  #### GLM 0.7.3 final - 2008-05-24
  - Fixed bugs
  - Added new extension group
  
  --------------------------------------------------------------------------------
  #### GLM 0.7.2 final - 2008-04-27
  - Updated documentation
  - Added preprocessor options
  
  --------------------------------------------------------------------------------
  #### GLM 0.7.1 final - 2008-03-24
  - Disabled half on GCC
  - Fixed extensions
  
  --------------------------------------------------------------------------------
  #### GLM 0.7.0 final - 2008-03-22
  - Changed to MIT license
  - Added new documentation
  
  --------------------------------------------------------------------------------
  #### GLM 0.6.4 - 2007-12-10
  - Fixed swizzle operators
  
  --------------------------------------------------------------------------------
  #### GLM 0.6.3 - 2007-11-05
  - Fixed type data accesses
  - Fixed 3DSMax sdk conflict
  
  --------------------------------------------------------------------------------
  #### GLM 0.6.2 - 2007-10-08
  - Fixed extension
  
  --------------------------------------------------------------------------------
  #### GLM 0.6.1 - 2007-10-07
  - Fixed a namespace error
  - Added extensions
  
  --------------------------------------------------------------------------------
  #### GLM 0.6.0 : 2007-09-16
  - Added new extension namespace mecanium
  - Added Automatic compiler detection
  
  --------------------------------------------------------------------------------
  #### GLM 0.5.1 - 2007-02-19
  - Fixed swizzle operators
  
  --------------------------------------------------------------------------------
  #### GLM 0.5.0 - 2007-01-06
  - Upgrated to GLSL 1.2
  - Added swizzle operators
  - Added setup settings
  
  --------------------------------------------------------------------------------
  #### GLM 0.4.1 - 2006-05-22
  - Added OpenGL examples
  
  --------------------------------------------------------------------------------
  #### GLM 0.4.0 - 2006-05-17
  - Added missing operators to vec* and mat*
  - Added first GLSL 1.2 features
  - Fixed windows.h before glm.h when windows.h required
  
  --------------------------------------------------------------------------------
  #### GLM 0.3.2 - 2006-04-21
  - Fixed texcoord components access.
  - Fixed mat4 and imat4 division operators.
  
  --------------------------------------------------------------------------------
  #### GLM 0.3.1 - 2006-03-28
  - Added GCC 4.0 support under MacOS X.
  - Added GCC 4.0 and 4.1 support under Linux.
  - Added code optimisations.
  
  --------------------------------------------------------------------------------
  #### GLM 0.3 - 2006-02-19
  - Improved GLSL type conversion and construction compliance.
  - Added experimental extensions.
  - Added Doxygen Documentation.
  - Added code optimisations.
  - Fixed bugs.
  
  --------------------------------------------------------------------------------
  #### GLM 0.2 - 2005-05-05
  - Improve adaptative from GLSL.
  - Add experimental extensions based on OpenGL extension process.
  - Fixe bugs.
  
  --------------------------------------------------------------------------------
  #### GLM 0.1 - 2005-02-21
  - Add vec2, vec3, vec4 GLSL types
  - Add ivec2, ivec3, ivec4 GLSL types
  - Add bvec2, bvec3, bvec4 GLSL types
  - Add mat2, mat3, mat4 GLSL types
  - Add almost all functions
  
  