GLM alternatives and similar libraries
Based on the "Math" category.
Alternatively, view GLM alternatives based on common mentions on social networks and blogs.

OpenBLAS
OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version. 
Eigen
A highlevel C++ library of template headers for linear algebra, matrix and vector operations, numerical solvers and related algorithms. [MPL2] 
TinyExpr
tiny recursive descent expression parser, compiler, and evaluation engine for math expressions 
MIRACL
MIRACL Cryptographic SDK: Multiprecision Integer and Rational Arithmetic Cryptographic Library is a C software library that is widely regarded by developers as the gold standard open source SDK for elliptic curve cryptography (ECC). 
linmath.h
a lean linear math library, aimed at graphics programming. Supports vec3, vec4, mat4x4 and quaternions 
NT2
A SIMDoptimized numerical template library that provides an interface with MATLABlike syntax. [Boost] 
ExprTK
C++ Mathematical Expression Parsing And Evaluation Library https://www.partow.net/programming/exprtk/index.html 
LibTomMath
LibTomMath is a free open source portable number theoretic multipleprecision integer library written entirely in C. 
muparser
muparser is a fast math parser library for C/C++ with (optional) OpenMP support. 
safe_numerics
Replacements to standard numeric types which throw exceptions on errors 
Versor
[older version] Versor 1.0 C++ library for conformal geometric algebra draw routines 
Xerus
A general purpose library for numerical calculations with higher order tensors, TensorTrain Decompositions / Matrix Product States and other Tensor Networks 
SLIMCPP
Simple Long Integer Math for C++. Lightweight crossplatform headeronly library what implements big integer arithmetic in С++17. 
Mission : Impossible (AutoDiff)
A concise C++17 implementation of automatic differentiation (operator overloading) 
Armadillo
A high quality C++ linear algebra library, aiming towards a good balance between speed and ease of use. The syntax (API) is deliberately similar to Matlab. [MPL2] 
GMP
A C/C++ library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floatingpoint numbers. [LGPL3 & GPL2]
JetBrains Dev Survey  What’s up with the C++ ecosystem in 2023?
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of GLM or a related project?
Popular Comparisons
README
OpenGL Mathematics (GLM) is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications.
GLM provides classes and functions designed and implemented with the same naming conventions and functionality 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 but it also ensures interoperability with other third party libraries and SDK. It is a good candidate for software rendering (raytracing / rasterisation), image processing, physics 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:
 GCC 4.7 and higher
 Intel C++ Compose XE 2013 and higher
 Clang 3.4 and higher
 Apple Clang 6.0 and higher
 Visual C++ 2013 and higher
 CUDA 9.0 and higher (experimental)
 SYCL (experimental: only ComputeCpp implementation has been tested).
 Any C++11 compiler
For more information about GLM, please have a look at the [manual](manual.md) and the API reference documentation. The source code and the documentation are licensed under either the [Happy Bunny License (Modified MIT) or the MIT License](manual.md#section0).
Thanks for contributing to the project by submitting pull requests.
#include <glm/vec3.hpp> // glm::vec3
#include <glm/vec4.hpp> // glm::vec4
#include <glm/mat4x4.hpp> // glm::mat4
#include <glm/ext/matrix_transform.hpp> // glm::translate, glm::rotate, glm::scale
#include <glm/ext/matrix_clip_space.hpp> // glm::perspective
#include <glm/ext/scalar_constants.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;
}
Lastest release
Project Health
Service  System  Compiler  Status 

Travis CI  MacOSX, Linux 64 bits  Clang 3.6, Clang 5.0, GCC 4.9, GCC 7.3  
AppVeyor  Windows 32 and 64  Visual Studio 2013, Visual Studio 2015, Visual Studio 2017 
Release notes
GLM 0.9.9.9  2020XXXX
Features:
 Added GLM_EXT_scalar_reciprocal with tests
 Added GLM_EXT_vector_reciprocal with tests
 Added
glm::iround
andglm::uround
to GLM_EXT_scalar_common and GLM_EXT_vector_common  Added GLM_EXT_matrix_integer with tests
Improvements:
 Added
constexpr
qualifier forcross
product #1040  Added
constexpr
qualifier fordot
product #1040
Fixes:
 Fixed incorrect assertion for
glm::min
andglm::max
#1009  Fixed quaternion orientation in
glm::decompose
#1012  Fixed singularity in quaternion to euler angle roll conversion #1019
 Fixed
quat
glm::pow
handling of small magnitude quaternions #1022  Fixed
glm::fastNormalize
build error #1033  Fixed
glm::isMultiple
build error #1034  Fixed
glm::adjugate
calculation #1035  Fixed
glm::angle
discards the sign of result for angles in range (2*pi1, 2*pi) #1038  Removed ban on using
glm::string_cast
with CUDA host code #1041
GLM 0.9.9.8  20200413
Features:
 Added GLM_EXT_vector_intX and GLM_EXT_vector_uintX extensions
 Added GLM_EXT_matrix_intX and GLM_EXT_matrix_uintX extensions
Improvements:
 Added
glm::clamp
,glm::repeat
,glm::mirrorClamp
andglm::mirrorRepeat
function toGLM_EXT_scalar_commond
andGLM_EXT_vector_commond
extensions with tests
Fixes:
 Fixed unnecessary warnings from
matrix_projection.inl
#995  Fixed quaternion
glm::slerp
overload which interpolates with extra spins #996  Fixed for
glm::length
using arch64 #992  Fixed singularity check for
glm::quatLookAt
#770
GLM 0.9.9.7  20200105
Improvements:
 Improved Neon support with more functions optimized #950
 Added CMake GLM interface #963
 Added
glm::fma
implementation based onstd::fma
#969  Added missing quat constexpr #955
 Added
GLM_FORCE_QUAT_DATA_WXYZ
to store quat data as w,x,y,z instead of x,y,z,w #983
Fixes:
 Fixed equal ULP variation when using negative sign #965
 Fixed for intersection ray/plane and added related tests #953
 Fixed ARM 64bit detection #949
 Fixed GLM_EXT_matrix_clip_space warnings #980
 Fixed Wimplicitintfloatconversion warnings with clang 10+ #986
 Fixed GLM_EXT_matrix_clip_space
perspectiveFov
GLM 0.9.9.6  20190908
Features:
 Added Neon support #945
 Added SYCL support #914
 Added GLM_EXT_scalar_integer extension with power of two and multiple scalar functions
 Added GLM_EXT_vector_integer extension with power of two and multiple vector functions
Improvements:
 Added Visual C++ 2019 detection
 Added Visual C++ 2017 15.8 and 15.9 detection
 Added missing genType check for
glm::bitCount
andglm::bitfieldReverse
#893
Fixes:
 Fixed for g++6 where std=c++1z sets __cplusplus to 201500 instead of 201402 #921
 Fixed hash hashes qua instead of tquat #919
 Fixed
.natvis
as structs renamed #915  Fixed
glm::ldexp
andglm::frexp
declaration #895  Fixed missing const to quaternion conversion operators #890
 Fixed GLM_EXT_scalar_ulp and GLM_EXT_vector_ulp API coding style
 Fixed quaternion componant order:
w, {x, y, z}
#916  Fixed
GLM_HAS_CXX11_STL
broken on Clang with Linux #926  Fixed Clang or GCC build due to wrong
GLM_HAS_IF_CONSTEXPR
definition #907  Fixed CUDA 9 build #910
Deprecation:
 Removed CMake install and uninstall scripts
GLM 0.9.9.5  20190401
Fixes:
 Fixed build errors when defining
GLM_ENABLE_EXPERIMENTAL
#884 #883  Fixed
if constexpr
warning #887  Fixed missing declarations for
glm::frexp
andglm::ldexp
#886
GLM 0.9.9.4  20190319
Features:
 Added
glm::mix
implementation for matrices in *GLM_EXT_matrix_common/ #842  Added CMake
BUILD_SHARED_LIBS
andBUILD_STATIC_LIBS
build options #871
Improvements:
 Added GLM_FORCE_INTRINSICS to enable SIMD instruction code path. By default, it's disabled allowing constexpr support by default. #865
 Optimized inverseTransform #867
Fixes:
 Fixed in
glm::mat4x3
conversion #829  Fixed
constexpr
issue on GCC #832 #865  Fixed
glm::mix
implementation to improve GLSL conformance #866  Fixed
glm::int8
being defined as unsigned char with some compiler #839  Fixed
glm::vec1
include #856  Ignore
.vscode
#848
GLM 0.9.9.3  20181031
Features:
 Added
glm::equal
andglm::notEqual
overload with max ULPs parameters for scalar numbers #121  Added
GLM_FORCE_SILENT_WARNINGS
to silent GLM warnings when using language extensions but using W4 or Wpedantic warnings #814 #775  Added adjugate functions to
GLM_GTX_matrix_operation
#151  Added
GLM_FORCE_ALIGNED_GENTYPES
to enable aligned types and SIMD instruction are not enabled. This disableconstexpr
#816
Improvements:
 Added constant time ULP distance between float #121
 Added
GLM_FORCE_SILENT_WARNINGS
to suppress GLM warnings #822
Fixes:
 Fixed
glm::simplex
noise build with double #734  Fixed
glm::bitfieldInsert
according to GLSL spec #818  Fixed
glm::refract
for negative 'k' #808
GLM 0.9.9.2  20180914
Fixes:
 Fixed
GLM_FORCE_CXX**
section in the manual  Fixed default initialization with vector and quaternion types using
GLM_FORCE_CTOR_INIT
#812
GLM 0.9.9.1  20180903
Features:
 Added
bitfieldDeinterleave
to GLM_GTC_bitfield  Added missing
glm::equal
andglm::notEqual
with epsilon for quaternion types to GLM_GTC_quaternion  Added GLM_EXT_matrix_relational:
glm::equal
andglm::notEqual
with epsilon for matrix types  Added missing aligned matrix types to GLM_GTC_type_aligned
 Added C++17 detection
 Added Visual C++ language standard version detection
 Added PDF manual build from markdown
Improvements:
 Added a section to the manual for contributing to GLM
 Refactor manual, lists all configuration defines
 Added missing
glm::vec1
based constructors  Redesigned constexpr support which excludes both SIMD and
constexpr
#783  Added detection of Visual C++ 2017 toolsets
 Added identity functions #765
 Splitted headers into EXT extensions to improve compilation time #670
 Added separated performance tests
 Clarified refract valid range of the indices of refraction, between 1 and 1 inclusively #806
Fixes:
 Fixed SIMD detection on Clang and GCC
 Fixed build problems due to
std::printf
andstd::clock_t
#778  Fixed int mod
 Anonymous unions require C++ language extensions
 Fixed
glm::ortho
#790  Fixed Visual C++ 2013 warnings in vector relational code #782
 Fixed ICC build errors with constexpr #704
 Fixed defaulted operator= and constructors #791
 Fixed invalid conversion from int scalar with vec4 constructor when using SSE instruction
 Fixed infinite loop in random functions when using negative radius values using an assert #739
GLM 0.9.9.0  20180522
Features:
 Added RGBM encoding in GLM_GTC_packing #420
 Added GLM_GTX_color_encoding extension
 Added GLM_GTX_vec_swizzle, faster compile time swizzling then swizzle operator #558
 Added GLM_GTX_exterior_product with a
vec2
glm::cross
implementation #621  Added GLM_GTX_matrix_factorisation to factor matrices in various forms #654
 Added [
GLM_ENABLE_EXPERIMENTAL
](manual.md#section7_4) to enable experimental features.  Added packing functions for integer vectors #639
 Added conan packaging configuration #643 #641
 Added
glm::quatLookAt
to GLM_GTX_quaternion #659  Added
glm::fmin
,glm::fmax
andglm::fclamp
to GLM_GTX_extended_min_max #372  Added GLM_EXT_vector_relational: extend
glm::equal
andglm::notEqual
to take an epsilon argument  Added GLM_EXT_vector_relational:
glm::openBounded
andglm::closeBounded
 Added GLM_EXT_vec1:
*vec1
types  Added GLM_GTX_texture:
levels
function  Added spearate functions to use both nagative one and zero near clip plans #680
 Added
GLM_FORCE_SINGLE_ONLY
to use GLM on platforms that don't support double #627  Added GLM_GTX_easing for interpolation functions #761
Improvements:
 No more default initialization of vector, matrix and quaternion types
 Added lowp variant of GTC_color_space convertLinearToSRGB #419
 Replaced the manual by a markdown version #458
 Improved API documentation #668
 Optimized GTC_packing implementation
 Optimized GTC_noise functions
 Optimized GTC_color_space HSV to RGB conversions
 Optimised GTX_color_space_YCoCg YCoCgR conversions
 Optimized GTX_matrix_interpolation axisAngle function
 Added FAQ 12: Windows headers cause build errors... #557
 Removed GCC shadow warnings #595
 Added error for including of different versions of GLM #619
 Added GLM_FORCE_IGNORE_VERSION to ignore error caused by including different version of GLM #619
 Reduced warnings when using very strict compilation flags #646
 length() member functions are constexpr #657
 Added support of Weverything with Clang #646
 Improved exponential function test coverage
 Enabled warnings as error with Clang unit tests
 Conan package is an external repository: https://github.com/bincrafters/conanglm
 Clarify quat_cast documentation, applying on pure rotation matrices #759
Fixes:
 Removed doxygen references to GLM_GTC_half_float which was removed in 0.9.4
 Fixed
glm::decompose
#448  Fixed
glm::intersectRayTriangle
#6  Fixed dual quaternion != operator #629
 Fixed usused variable warning in GLM_GTX_spline #618
 Fixed references to
GLM_FORCE_RADIANS
which was removed #642  Fixed
glm::fastInverseSqrt
to use fast inverse square #640  Fixed
glm::axisAngle
NaN #638  Fixed integer pow from GLM_GTX_integer with null exponent #658
 Fixed
quat
normalize
build error #656  Fixed Visual C++ 2017.2 warning regarding
__has_feature
definision #655  Fixed documentation warnings
 Fixed
GLM_HAS_OPENMP
when OpenMP is not enabled  Fixed Better follow GLSL
min
andmax
specification #372  Fixed quaternion constructor from two vectors special cases #469
 Fixed
glm::to_string
on quaternions wrong components order #681  Fixed
glm::acsch
#698  Fixed
glm::isnan
on CUDA #727
Deprecation:
 Requires Visual Studio 2013, GCC 4.7, Clang 3.4, Cuda 7, ICC 2013 or a C++11 compiler
 Removed GLM_GTX_simd_vec4 extension
 Removed GLM_GTX_simd_mat4 extension
 Removed GLM_GTX_simd_quat extension
 Removed
GLM_SWIZZLE
, useGLM_FORCE_SWIZZLE
instead  Removed
GLM_MESSAGES
, useGLM_FORCE_MESSAGES
instead  Removed
GLM_DEPTH_ZERO_TO_ONE
, useGLM_FORCE_DEPTH_ZERO_TO_ONE
instead  Removed
GLM_LEFT_HANDED
, useGLM_FORCE_LEFT_HANDED
instead  Removed
GLM_FORCE_NO_CTOR_INIT
 Removed
glm::uninitialize
GLM 0.9.8.5  20170816
Features:
 Added Conan package support #647
Fixes:
 Fixed Clang version detection from source #608
 Fixed
glm::packF3x9_E1x5
exponent packing #614  Fixed build error
min
andmax
specializations with integer #616  Fixed
simd_mat4
build error #652
GLM 0.9.8.4  20170122
Fixes:
 Fixed GLM_GTC_packing test failing on GCC x86 due to denorms #212 #577
 Fixed
POPCNT
optimization build in Clang #512  Fixed
glm::intersectRayPlane
returns true in parallel case #578  Fixed GCC 6.2 compiler warnings #580
 Fixed GLM_GTX_matrix_decompose
glm::decompose
#582 #448  Fixed GCC 4.5 and older build #566
 Fixed Visual C++ internal error when declaring a global vec type with siwzzle expression enabled #594
 Fixed
GLM_FORCE_CXX11
with Clang and libstlc++ which wasn't using C++11 STL features. #604
GLM 0.9.8.3  20161112
Improvements:
 Broader support of
GLM_FORCE_UNRESTRICTED_GENTYPE
#378
Fixes:
 Fixed Android build error with C++11 compiler but C++98 STL #284 #564
 Fixed GLM_GTX_transform2 shear* functions #403
 Fixed interaction between
GLM_FORCE_UNRESTRICTED_GENTYPE
andglm::ortho
function #568  Fixed
glm::bitCount
with AVX on 32 bit builds #567  Fixed CMake
find_package
with version specification #572 #573
GLM 0.9.8.2  20161101
Improvements:
 Added Visual C++ 15 detection
 Added Clang 4.0 detection
 Added warning messages when using
GLM_FORCE_CXX**
but the compiler is known to not fully support the requested C++ version #555  Refactored
GLM_COMPILER_VC
values  Made quat, vec, mat type component
length()
static #565
Fixes:
 Fixed Visual C++
constexpr
build error #555, #556
GLM 0.9.8.1  20160925
Improvements:
 Optimized quaternion
glm::log
function #554
Fixes:
 Fixed GCC warning filtering, replaced pedantic by Wpedantic
 Fixed SIMD faceforward bug. #549
 Fixed GCC 4.8 with C++11 compilation option #550
 Fixed Visual Studio aligned type W4 warning #548
 Fixed packing/unpacking function fixed for 5_6_5 and 5_5_5_1 #552
GLM 0.9.8.0  20160911
Features:
 Added right and left handed projection and clip control support #447 #415 #119
 Added
glm::compNormalize
andglm::compScale
functions to GLM_GTX_component_wise  Added
glm::packF3x9_E1x5
andglm::unpackF3x9_E1x5
to GLM_GTC_packing for RGB9E5 #416  Added
(un)packHalf
to GLM_GTC_packing  Added
(un)packUnorm
and(un)packSnorm
to GLM_GTC_packing  Added 16bit pack and unpack to GLM_GTC_packing
 Added 8bit pack and unpack to GLM_GTC_packing
 Added missing
bvec*
&& and  operators  Added
glm::iround
andglm::uround
to GLM_GTC_integer, fast round on positive values  Added raw SIMD API
 Added 'aligned' qualifiers
 Added GLM_GTC_type_aligned with aligned vec types
 Added GLM_GTC_functions extension
 Added quaternion version of
glm::isnan
andglm::isinf
#521  Added
glm::lowestBitValue
to GLM_GTX_bit #536  Added
GLM_FORCE_UNRESTRICTED_GENTYPE
allowing non basicgenType
#543
Improvements:
 Improved SIMD and swizzle operators interactions with GCC and Clang #474
 Improved GLM_GTC_random
linearRand
documentation  Improved GLM_GTC_reciprocal documentation
 Improved
GLM_FORCE_EXPLICIT_CTOR
coverage #481  Improved OpenMP support detection for Clang, GCC, ICC and VC
 Improved GLM_GTX_wrap for SIMD friendliness
 Added
constexpr
for*vec*
,*mat*
,*quat*
and*dual_quat*
types #493  Added NEON instruction set detection
 Added MIPS CPUs detection
 Added PowerPC CPUs detection
 Use Cuda builtin function for abs function implementation with Cuda compiler
 Factorized
GLM_COMPILER_LLVM
andGLM_COMPILER_APPLE_CLANG
intoGLM_COMPILER_CLANG
 No more warnings for use of long long
 Added more information to build messages
Fixes:
 Fixed GLM_GTX_extended_min_max filename typo #386
 Fixed
glm::intersectRayTriangle
to not do any unintentional backface culling  Fixed long long warnings when using C++98 on GCC and Clang #482
 Fixed sign with signed integer function on nonx86 architecture
 Fixed strict aliasing warnings #473
 Fixed missing
glm::vec1
overload toglm::length2
andglm::distance2
functions #431  Fixed GLM test '/fp:fast' and '/Za' commandline options are incompatible
 Fixed quaterion to mat3 cast function
glm::mat3_cast
from GLM_GTC_quaternion #542  Fixed GLM_GTX_io for Cuda #547 #546
Deprecation:
 Removed
GLM_FORCE_SIZE_FUNC
define  Deprecated GLM_GTX_simd_vec4 extension
 Deprecated GLM_GTX_simd_mat4 extension
 Deprecated GLM_GTX_simd_quat extension
 Deprecated
GLM_SWIZZLE
, useGLM_FORCE_SWIZZLE
instead  Deprecated
GLM_MESSAGES
, useGLM_FORCE_MESSAGES
instead
GLM 0.9.7.6  20160716
Improvements:
 Added pkgconfig file #509
 Updated list of compiler versions detected
 Improved C++ 11 STL detection #523
Fixes:
 Fixed STL for C++11 detection on ICC #510
 Fixed missing vec1 overload to length2 and distance2 functions #431
 Fixed long long warnings when using C++98 on GCC and Clang #482
 Fixed scalar reciprocal functions (GTC_reciprocal) #520
GLM 0.9.7.5  20160524
Improvements:
 Added Visual C++ Clang toolset detection
Fixes:
 Fixed uaddCarry warning #497
 Fixed roundPowerOfTwo and floorPowerOfTwo #503
 Fixed Visual C++ SIMD instruction set automatic detection in 64 bits
 Fixed to_string when used with GLM_FORCE_INLINE #506
 Fixed GLM_FORCE_INLINE with binary vec4 operators
 Fixed GTX_extended_min_max filename typo #386
 Fixed intersectRayTriangle to not do any unintentional backface culling
GLM 0.9.7.4  20160319
Fixes:
 Fixed asinh and atanh warning with C++98 STL #484
 Fixed polar coordinates function latitude #485
 Fixed outerProduct defintions and operator signatures for mat2x4 and vec4 #475
 Fixed eulerAngles precision error, returns NaN #451
 Fixed undefined reference errors #489
 Fixed missing GLM_PLATFORM_CYGWIN declaration #495
 Fixed various undefined reference errors #490
GLM 0.9.7.3  20160221
Improvements:
 Added AVX512 detection
Fixes:
 Fixed CMake policy warning
 Fixed GCC 6.0 detection #477
 Fixed Clang build on Windows #479
 Fixed 64 bits constants warnings on GCC #463
GLM 0.9.7.2  20160103
Fixes:
 Fixed GTC_round floorMultiple/ceilMultiple #412
 Fixed GTC_packing unpackUnorm3x10_1x2 #414
 Fixed GTC_matrix_inverse affineInverse #192
 Fixed ICC on Linux build errors #449
 Fixed ldexp and frexp compilation errors
 Fixed "Declaration shadows a field" warning #468
 Fixed 'GLM_COMPILER_VC2005 is not defined' warning #468
 Fixed various 'X is not defined' warnings #468
 Fixed missing unary + operator #435
 Fixed Cygwin build errors when using C++11 #405
GLM 0.9.7.1  20150907
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 nonidentity 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  20150802
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 to perform std::hash on GLM types #320 #367
 Added 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 YCoCgR #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 multiline 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  20150215
 Fixed Android doesn't have C++ 11 STL #284
GLM 0.9.6.2  20150215
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  20141210
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 conversion 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  20141130
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 matrixvector multiple performance with Cuda #257, #258
 Reduced integer type redifinitions #233
 Rewrited of GTX_fast_trigonometry #264 #265
 Made types trivially copyable #263
 Removed 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:
 Requires Visual Studio 2010, GCC 4.2, Apple Clang 4.0, LLVM 3.0, Cuda 4, ICC 2013 or a C++98 compiler
 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  20140621
 Fixed nonutf8 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 #144
 Fixed fastDistance ambiguity #215
 Fixed tweakedInfinitePerspective #208 and added userdefined 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  20140402
 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 righthanded coordinate system (#173)
 Added full tests for eulerAngle*** functions (#173)
 Added workaround for a CUDA compiler bug (#186, #185)
GLM 0.9.5.2  20140208
 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 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  20140111
 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  20131225
 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 lvalue 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 completeness
 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  20130920
 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  20130812
 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  20130529
 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  20130320
 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  20130214
 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  20121222
 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  20121118
 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
 Requires Visual Studio 2005, GCC 4.2, Clang 2.6, Cuda 3, ICC 2013 or a C++98 compiler
GLM 0.9.3.4  20120630
 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  20120510
 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 nonesquare matrices
 Fixed namespace issue on stream operators
 Fixed various warnings
 Added VC11 support
GLM 0.9.3.2  20120315
 Fixed doxygen documentation
 Fixed Clang version detection
 Fixed simd mat4 /= operator
GLM 0.9.3.1  20120125
 Fixed platform detection
 Fixed warnings
 Removed detail code from Doxygen doc
GLM 0.9.3.0  20120109
 Added CPP Check project
 Fixed conflict with Windows headers
 Fixed isinf implementation
 Fixed Boost conflict
 Fixed warnings
GLM 0.9.3.B  20111212
 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  20111111
 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 useful constants
 Added extension versioning
 Removed many unused namespaces
 Fixed half based type contructors
 Added GLSL core noise functions
GLM 0.9.2.7  20111024
 Added more swizzling constructors
 Added missing nonsquared matrix products
GLM 0.9.2.6  20111001
 Fixed half based type build on old GCC
 Fixed /W4 warnings on Visual C++
 Fixed some missing lvalue swizzle operators
GLM 0.9.2.5  20110920
 Fixed floatBitToXint functions
 Fixed pack and unpack functions
 Fixed round functions
GLM 0.9.2.4  20110903
 Fixed extensions bugs
GLM 0.9.2.3  20110608
 Fixed build issues
GLM 0.9.2.2  20110602
 Expend matrix constructors flexibility
 Improved quaternion implementation
 Fixed many warnings across platforms and compilers
GLM 0.9.2.1  20110524
 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  20110509
 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  20110507
 Fixed bugs
GLM 0.9.1.2  20110415
 Fixed bugs
GLM 0.9.1.1  20110317
 Fixed bugs
GLM 0.9.1.0  20110303
 Fixed bugs
GLM 0.9.1.B  20110213
 Updated API documentation
 Improved SIMD implementation
 Fixed Linux build
GLM 0.9.0.8  20110213
 Added quaternion product operator.
 Clarify that GLM is a header only library.
GLM 0.9.1.A  20110131
 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  20110130
 Added GLSL 4.10 packing functions
 Added == and != operators for every types.
GLM 0.9.0.6  20101221
 Many matrices bugs fixed
GLM 0.9.0.5  20101101
 Improved Clang support
 Fixed bugs
GLM 0.9.0.4  20101004
 Added autoexp for GLM
 Fixed bugs
GLM 0.9.0.3  20100826
 Fixed nonsquared matrix operators
GLM 0.9.0.2  20100708
 Added GLM_GTX_int_10_10_10_2
 Fixed bugs
GLM 0.9.0.1  20100621
 Fixed extensions errors
GLM 0.9.0.0  20100525
 ObjectiveC support
 Fixed warnings
 Updated documentation
GLM 0.9.B.2  20100430
 Git transition
 Removed experimental code from releases
 Fixed bugs
GLM 0.9.B.1  20100403
 Based on GLSL 4.00 specification
 Added the new core functions
 Added some implicit conversion support
GLM 0.9.A.2  20100220
 Improved some possible errors messages
 Improved declarations and definitions match
GLM 0.9.A.1  20100209
 Removed deprecated features
 Internal redesign
GLM 0.8.4.4 final  20100125
 Fixed warnings
GLM 0.8.4.3 final  20091116
 Fixed Half float arithmetic
 Fixed setup defines
GLM 0.8.4.2 final  20091019
 Fixed Half float adds
GLM 0.8.4.1 final  20091005
 Updated documentation
 Fixed MacOS X build
GLM 0.8.4.0 final  20090916
 Added GCC 4.4 and VC2010 support
 Added matrix optimizations
GLM 0.8.3.5 final  20090811
 Fixed bugs
GLM 0.8.3.4 final  20090810
 Updated GLM according GLSL 1.5 spec
 Fixed bugs
GLM 0.8.3.3 final  20090625
 Fixed bugs
GLM 0.8.3.2 final  20090604
 Added GLM_GTC_quaternion
 Added GLM_GTC_type_precision
GLM 0.8.3.1 final  20090521
 Fixed old extension system.
GLM 0.8.3.0 final  20090506
 Added stable extensions.
 Added new extension system.
GLM 0.8.2.3 final  20090401
 Fixed bugs.
GLM 0.8.2.2 final  20090224
 Fixed bugs.
GLM 0.8.2.1 final  20090213
 Fixed bugs.
GLM 0.8.2 final  20090121
 Fixed bugs.
GLM 0.8.1 final  20081030
 Fixed bugs.
GLM 0.8.0 final  20081023
 New method to use extension.
GLM 0.8.0 beta3  20081010
 Added CMake support for GLM tests.
GLM 0.8.0 beta2  20081004
 Improved half scalars and vectors support.
GLM 0.8.0 beta1  20080926
 Improved GLSL conformance
 Added GLSL 1.30 support
 Improved API documentation
GLM 0.7.6 final  20080808
 Improved C++ standard comformance
 Added Static assert for types checking
GLM 0.7.5 final  20080705
 Added build message system with Visual Studio
 Pedantic build with GCC
GLM 0.7.4 final  20080601
 Added external dependencies system.
GLM 0.7.3 final  20080524
 Fixed bugs
 Added new extension group
GLM 0.7.2 final  20080427
 Updated documentation
 Added preprocessor options
GLM 0.7.1 final  20080324
 Disabled half on GCC
 Fixed extensions
GLM 0.7.0 final  20080322
 Changed to MIT license
 Added new documentation
GLM 0.6.4  20071210
 Fixed swizzle operators
GLM 0.6.3  20071105
 Fixed type data accesses
 Fixed 3DSMax sdk conflict
GLM 0.6.2  20071008
 Fixed extension
GLM 0.6.1  20071007
 Fixed a namespace error
 Added extensions
GLM 0.6.0 : 20070916
 Added new extension namespace mecanium
 Added Automatic compiler detection
GLM 0.5.1  20070219
 Fixed swizzle operators
GLM 0.5.0  20070106
 Upgrated to GLSL 1.2
 Added swizzle operators
 Added setup settings
GLM 0.4.1  20060522
 Added OpenGL examples
GLM 0.4.0  20060517
 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  20060421
 Fixed texcoord components access.
 Fixed mat4 and imat4 division operators.
GLM 0.3.1  20060328
 Added GCC 4.0 support under MacOS X.
 Added GCC 4.0 and 4.1 support under Linux.
 Added code optimisations.
GLM 0.3  20060219
 Improved GLSL type conversion and construction compliance.
 Added experimental extensions.
 Added Doxygen Documentation.
 Added code optimisations.
 Fixed bugs.
GLM 0.2  20050505
 Improve adaptative from GLSL.
 Add experimental extensions based on OpenGL extension process.
 Fixed bugs.
GLM 0.1  20050221
 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
*Note that all licence references and agreements mentioned in the GLM README section above
are relevant to that project's source code only.