Explorar o código

Merge branch '0.9.1' into gtx_ulp

Christophe Riccio %!s(int64=15) %!d(string=hai) anos
pai
achega
06ee0b868b

+ 2 - 2
doc/man.doxy

@@ -44,7 +44,7 @@ PROJECT_BRIEF          =
 # exceed 55 pixels and the maximum width should not exceed 200 pixels. 
 # Doxygen will copy the logo to the output directory.
 
-PROJECT_LOGO           = G:/git/ogl-math/doc/image/logo-mini.png
+PROJECT_LOGO           = ./image/logo-mini.png
 
 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
 # base path where the generated documentation will be put. 
@@ -80,7 +80,7 @@ OUTPUT_LANGUAGE        = English
 # the file and class documentation (similar to JavaDoc). 
 # Set to NO to disable this.
 
-BRIEF_MEMBER_DESC      = YES
+BRIEF_MEMBER_DESC      = NO
 
 # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
 # the brief description of a member or function before the detailed description. 

+ 27 - 21
doc/pages.doxy

@@ -9,15 +9,15 @@
 	 
 	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, physic simulations and any context that requires a simple and convenient mathematics library.
 	
-	\note The Doxygen-generated documentation will often state that a type or function
-	is defined in a namespace that is a child of the \link glm glm \endlink namespace.
-	Please ignore this; you can access all publicly available types as direct children
-	of the glm namespace.
-	
 	GLM is written as a platform independent library with no dependence and officially supports the following compilers:
 	1. GCC 3.4 and higher
 	2. LLVM 2.3 through GCC 4.2 front-end and higher
 	3. Visual Studio 2005 and higher
+
+	\note The Doxygen-generated documentation will often state that a type or function
+	is defined in a namespace that is a child of the \link glm glm \endlink namespace.
+	Please ignore this; All publicly available types and functions can be accessed as a direct children
+	of the glm namespace.
 	 
 	The source code is licenced under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT licence</a>.
 	 
@@ -67,7 +67,7 @@ int foo()
 	
 	The \ref core "GLM" represents only what GLSL's core provides in terms of types and functions
 	(to the best of GLM's ability to replicate them). All that is needed to use the core
-	is to <tt>#include <glm/glm.hpp></tt>.
+	is to include <tt><glm/glm.hpp></tt>.
 	
 	\ref gtc "GTC extensions" are functions and types that add onto the core.
 	These are considered reasonably stable, with their APIs not changing much between
@@ -79,7 +79,7 @@ int foo()
 	is why they are marked "experimental". Like GTC extensions, each experimental extension is included
 	with a separate header file.
 	
-	All the extensions can be included at once by default with <tt>#include <glm/ext.hpp></tt> 
+	All the extensions can be included at once by default by including <tt><glm/ext.hpp></tt> 
 	but this is not recommanded as it will reduce compilation speed for many unused features.
 	
 	All of GLM is defined as direct children of the glm namespace, including extensions. 
@@ -255,8 +255,8 @@ void foo()
 	
 	GLM's functions are defined in headers, so they are defined with C++'s "inline" delcaration. 
 	This does not require the compiler to inline them, however. 
-	If you want to force the compiler to inline the function, using whatever capabilities that the compiler provides to do so, 
-	you can define GLM_FORCE_INLINE before any inclusion of <glm/glm.hpp>.
+	To force the compiler to inline the function, using whatever capabilities that the compiler provides to do so, 
+	GLM_FORCE_INLINE can be defined before any inclusion of <glm/glm.hpp>.
 
 	\code
 #define GLM_FORCE_INLINE 
@@ -281,7 +281,7 @@ void foo()
 
 	\section advanced_compatibility Compatibility
 	Compilers have some language extensions that GLM will automatically take advantage of them when they are enabled. 
-	The #define GLM_FORCE_CXX98 can switch off these extensions, forcing GLM to operate on pure C++98.
+	GLM_FORCE_CXX98 can switch off these extensions, forcing GLM to operate on pure C++98.
 
 	\code
 #define GLM_FORCE_CXX98 
@@ -394,9 +394,10 @@ void foo()
 	
 	\section faq7 Should I use 'using namespace glm;'?
 	
-	This is unwise. There is every chance that are that if 'using namespace glm;' is called, name collisions will happen. GLSL names for functions are fairly generic, so it is entirely likely that there is another function called, for example, \link glm::sqrt sqrt \endlink.
+	This is unwise. Chances are that if 'using namespace glm;' is called, name collisions will happen. 
+	GLSL names for functions are fairly generic, so it is entirely likely that there is another function called, for example, \link glm::sqrt sqrt \endlink.
 	
-	If you need frequent use of particular types, you can bring them into the global
+	For frequent use of particular types, they can be brough into the global
 	namespace with a 'using' declaration like this:
 	
 	/code
@@ -409,9 +410,11 @@ void foo()
 	
 	GLM is mainly designed to be convenient; that's why it is written against GLSL specification.
 	
-	The <a href="http://en.wikipedia.org/wiki/Pareto_principle">80-20</a> rule suggests that 80% of a program's performance comes from 20% of its code. Therefore, one must first identify which 20% of the code is impacting the performance.
+	The <a href="http://en.wikipedia.org/wiki/Pareto_principle">80-20 rule</a> suggests that 80% of a program's performance comes from 20% of its code. 
+	Therefore, one should first identify which 20% of the code is impacting the performance.
 	
-	In general, if one identifies certain math code to be a performance bottleneck, the only way to solve this is to write specialized code for those particular math needs. So no canned library solution would be suitable.
+	In general, if one identifies certain math code to be a performance bottleneck, the only way to solve this is to write specialized code for those particular math needs. 
+	So no canned library solution would be suitable.
 	
 	That being said, GLM can provides some descent performances alternatives based on approximations or SIMD instructions.
 **/
@@ -603,27 +606,30 @@ glm::vec3 lighting(
 	\page pg_reference References
 	
 	OpenGL 4.1 core specification:
-	http://www.opengl.org/registry/doc/glspec41.core.20100725.pdf
+		http://www.opengl.org/registry/doc/glspec41.core.20100725.pdf
 	 
 	GLSL 4.10 specification:
-			http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf
+		http://www.opengl.org/registry/doc/GLSLangSpec.4.10.6.clean.pdf
 	 
 	GLU 1.3 specification:
-			http://www.opengl.org/documentation/specs/glu/glu1_3.pdf
+		http://www.opengl.org/documentation/specs/glu/glu1_3.pdf
 	 
 	GLM HEAD snapshot:
-	http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz
+		http://ogl-math.git.sourceforge.net/git/gitweb.cgi?p=ogl-math/ogl-math;a=snapshot;h=HEAD;sf=tgz
 	 
-	GLM Trac, for bug report and feature request:
+	GLM bug tracker:
 		https://sourceforge.net/apps/trac/ogl-math
 	 
 	GLM website:
 		http://glm.g-truc.net
 	 
+	GLM OpenGL SDK page:
+		http://www.opengl.org/sdk/libs/GLM/
+
 	G-Truc Creation page:
-			http://www.g-truc.net/project-0016.html
+		http://www.g-truc.net/project-0016.html
 	 
 	The OpenGL Toolkits forum to ask questions about GLM:
-	http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1
+		http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=postlist&Board=10&page=1
 **/
 

+ 31 - 1425
doc/src/data.xml

@@ -141,1449 +141,55 @@
     <release version="0.9.6">In place operations.</release>
   </schedule>
   <todo>
-    <entry>bit rotation.</entry>
-    <entry>frexp</entry>
     <entry>RGBE.</entry>
     <entry>row matrices.</entry>
-    <entry>Optimize *mat4 inverse.</entry>
     <entry>fixed numbers</entry>
     <entry>row and column major matrices</entry>
   </todo>
-  <changelog>
-    <update date="2010-03-17">
-      <entry>Promoted double types</entry>
-    </update>
-    <update date="2010-01-28">
-      <entry>Removed global inclusion.</entry>
-      <entry>Removed auto cast setup.</entry>
-      <entry>Removed compatibility setup.</entry>
-      <entry>Clean up and simplify setup.hpp</entry>
-      <entry>Fixed website links</entry>
-    </update>
-    <update date="2010-01-26">
-      <entry>Added missing inline.</entry>
-      <entry>Added common vecType for vector based types.</entry>
-      <entry>Updated copyright date.</entry>
-      <entry>Refactoring of type precision</entry>
-      <entry>GLM types are now more generic</entry>
-      <entry>Extract vec1 code</entry>
-      <entry>Reduced namespaces count</entry>
-    </update>
-    <update date="2010-01-25">
-      <entry>GLM 0.8.4.4 released.</entry>
-    </update>
-    <update date="2010-01-20">
-      <entry>Fixed warnings.</entry>
-    </update>
-    <update date="2009-11-25">
-      <entry>Added texcoord wrapping through GLM_IMG_wrap extension.</entry>
-    </update>
-    <update date="2009-11-20">
-      <entry>Reorganized SVN directory.</entry>
-    </update>
-    <update date="2009-11-16">
-      <entry>GLM 0.8.4.3 released.</entry>
-    </update>
-    <update date="2009-11-12">
-      <entry>Fixed half arithmetic.</entry>
-    </update>
-    <update date="2009-11-11">
-      <entry>Added scalars support for GLM_IMG_multiple.</entry>
-    </update>
-    <update date="2009-11-05">
-      <entry>Fixed setup defines.</entry>
-    </update>
-    <update date="2009-10-27">
-      <entry>Added GLM_IMG_multiple extensions and unit tests.</entry>
-    </update>
-    <update date="2009-10-19">
-      <entry>GLM 0.8.4.2 released.</entry>
-    </update>
-    <update date="2009-10-10">
-      <entry>Fixed half.</entry>
-    </update>
-    <update date="2009-10-05">
-      <entry>GLM 0.8.4.1 released.</entry>
-    </update>
-    <update date="2009-10-02">
-      <entry>Updated documentation.</entry>
-    </update>
-    <update date="2009-09-30">
-      <entry>Updated manual.</entry>
-      <entry>Added static assert implementation.</entry>
-      <entry>Removed unuse GLM_SWIZZLE_FUNC.</entry>
-    </update>
-    <update date="2009-09-23">
-      <entry>Some progress on fixing GLM for MacOSX comflics.</entry>
-    </update>
-    <update date="2009-09-22">
-      <entry>Fixed GLM_GTX_quaternion extension: cross and intermediate.</entry>
-    </update>
-    <update date="2009-09-17">
-      <entry>Fixed quaternion angle.</entry>
-    </update>
-    <update date="2009-09-16">
-      <entry>Updated documentation.</entry>
-      <entry>GLM 0.8.4.0 released.</entry>
-    </update>
-    <update date="2009-09-14">
-      <entry>Added Visual Studio 2010 support.</entry>
-      <entry>Fixed build on GCC.</entry>
-      <entry>Added GCC 4.4 support.</entry>
-    </update>
-    <update date="2009-09-03">
-      <entry>Added no initilization constructor to vec4.</entry>
-    </update>
-    <update date="2009-09-01">
-      <entry>Added no initilization constructor to mat4.</entry>
-      <entry>Updated GLM_GTC_matrix_transform: faster rotate.</entry>
-    </update>
-    <update date="2009-08-29">
-      <entry>Added GLM_GTX_matrix_operation: build diagonal matrix.</entry>
-      <entry>Updated GLM_GTC_matrix_transform: faster scaling.</entry>
-    </update>
-    <update date="2009-08-28">
-      <entry>Fixed transpose function for mat4x3.</entry>
-      <entry>Optimized translate function for mat4 matrix: ~184 cycles instead of ~592 cycles on Q6600.</entry>
-    </update>
-    <update date="2009-08-24">
-      <entry>Fixed OpenGL dependence.</entry>
-      <entry>Added OpenGL 3 dependence.</entry>
-    </update>
-    <update date="2009-08-23">
-      <entry>Fixed parameter definition and definition mismatch.</entry>
-    </update>
-    <update date="2009-08-11">
-      <entry>Fixed GLM_GTC_matrix_projection.</entry>
-      <entry>Updated GLM_GTX_transform: Added missing entry points.</entry>
-      <entry>GLM 0.8.3.5 released.</entry>
-    </update>
-    <update date="2009-08-10">
-      <entry>Move inverse function to core following GLSL 1.4 specification.</entry>
-      <entry>Move determinant function to core following GLSL 1.5 specification.</entry>
-      <entry>GLM 0.8.3.4 released.</entry>
-    </update>
-    <update date="2009-07-22">
-      <entry>Fixed GLM_GTX_matrix_query extension: Fixed row_size and col_size() calls.</entry>
-      <entry>Fixed GLM_GTX_matrix_access extension: Fixed row_size calls.</entry>
-    </update>
-    <update date="2009-07-03">
-      <entry>Fixed GLM_GTX_string_cast extension: Build on GCC 4.</entry>
-      <entry>Fixed GLM_GTC_quaternion extension: rotate function build.</entry>
-    </update>
-    <update date="2009-06-25">
-      <entry>Fixed GLM_GTC_matrix_transform extension: Fixed matrix operation order; like OpenGL instead of like Direct3D.</entry>
-      <entry>GLM 0.8.3.3 released.</entry>
-    </update>
-    <update date="2009-06-16">
-      <entry>Fixed GLM_GTX_rotate_vector extension: Fixed rotate function.</entry>
-    </update>
-    <update date="2009-06-09">
-      <entry>Fixed matrix external operators.</entry>
-    </update>
-    <update date="2009-06-04">
-      <entry>Added GLM_GTC_type_precision extension.</entry>
-      <entry>GLM 0.8.3.2 released.</entry>
-    </update>
-    <update date="2009-06-02">
-      <entry>Fixed GLM_GTC_matrix_transform: Fixed mat4 inverse function.</entry>
-    </update>
-    <update date="2009-05-22">
-      <entry>Added GLM_GTC_quaternion extension.</entry>
-      <entry>Updated GLM_GTC_quaternion extension.</entry>
-      <entry>Fixed GLM_GTC_matrix_transform extension.</entry>
-    </update>
-    <update date="2009-05-21">
-      <entry>GLM 0.8.3.1 released.</entry>
-    </update>
-    <update date="2009-05-20">
-      <entry>Updated GLM_GTX_bit extension: Added lowestBit functions.</entry>
-      <entry>Fixed old extention inclusion method.</entry>
-    </update>
-    <update date="2009-05-19">
-      <entry>Updated sse mat4 implementation.</entry>
-    </update>
-    <update date="2009-05-18">
-      <entry>Updated GLM_GTX_bit extension: Added bitRevert, bitRotateRight and bitRotateLeft functions.</entry>
-    </update>
-    <update date="2009-05-17">
-      <entry>Added intrinsic like functions for mat4 product and inverse.</entry>
-    </update>
-    <update date="2009-05-15">
-      <entry>Added intrinsic like functions for mat4 and vec4 products.</entry>
-    </update>
-    <update date="2009-05-06">
-      <entry>Fixed GLM_GTX_type_ptr extension.</entry>
-      <entry>GLM 0.8.3.0 released.</entry>
-    </update>
-    <update date="2009-05-06">
-      <entry>Fixed GLM_GTC_matrix_projection: glm::project build.</entry>
-    </update>
-    <update date="2009-05-05">
-      <entry>Added new extensions inclusion system.</entry>
-    </update>
-    <update date="2009-05-01">
-      <entry>Fixed GLM_GTX_determinant extension.</entry>
-      <entry>Reorganized extensions.</entry>
-      <entry>Removed GLM_GTX_vector_comp_mult and GLM_GTX_mat4x3 extensions.</entry>
-      <entry>Renamed .h files to .hpp.</entry>
-    </update>
-    <update date="2009-04-30">
-      <entry>Added GLM_GTC_half_float.</entry>
-    </update>
-    <update date="2009-04-29">
-      <entry>Fixed GLM_GTX_perpendicular extension.</entry>
-      <entry>Fixed GLM_GTX_matrix_projection extension.</entry>
-      <entry>Fixed GLM_GTX_transform2 extension.</entry>
-    </update>
-    <update date="2009-04-27">
-      <entry>Added GLM_GTC_matrix_operation.</entry>
-      <entry>Added GLM_GTC_matrix_transform.</entry>
-      <entry>Added GLM_GTC_matrix_projection.</entry>
-      <entry>Added GLM_GTC_double_float.</entry>
-    </update>
-    <update date="2009-04-20">
-      <entry>Fixed bug 2774738.</entry>
-      <entry>Fixed bug 2774015.</entry>
-    </update>
-    <update date="2009-04-01">
-      <entry>GLM 0.8.2.3 released.</entry>
-    </update>
-    <update date="2009-03-30">
-      <entry>Updaded mix function: Makes it more flexible, types wise.</entry>
-    </update>
-    <update date="2009-03-06">
-      <entry>Fixed GLM_GTX_perpendicular and GLM_GTX_projection.</entry>
-      <entry>Added GLM_GTX_radial_gradient extensions.</entry>
-    </update>
-    <update date="2009-02-24">
-      <entry>Fixed GCC 4.3 pedantic build.</entry>
-      <entry>GLM 0.8.2.2 released.</entry>
-    </update>
-    <update date="2009-02-19">
-      <entry>Removed all deprecated ARB conventions.</entry>
-    </update>
-    <update date="2009-02-18">
-      <entry>Fixed highp_int_t and highp_uint_t with Linux 64.</entry>
-      <entry>Fixed GCC 4.3 'extra ;' with pedentic build.</entry>
-    </update>
-    <update date="2009-02-13">
-      <entry>Fixed build.</entry>
-      <entry>GLM 0.8.2.1 released.</entry>
-    </update>
-    <update date="2009-02-02">
-      <entry>Fixed build.</entry>
-      <entry>Added extensions build test.</entry>
-    </update>
-    <update date="2009-01-21">
-      <entry>GLM 0.8.2 released.</entry>
-    </update>
-    <update date="2009-01-20">
-      <entry>Fixed GLM_GTX_intersect: intersectRayTriangle.</entry>
-    </update>
-    <update date="2009-01-17">
-      <entry>Fixed vectors access operators.</entry>
-      <entry>Fixed unresolved with quaternions.</entry>
-    </update>
-    <update date="2009-01-16">
-      <entry>Fixed GLM_GTX_norm: Include issue.</entry>
-    </update>
-    <update date="2009-01-01">
-      <entry>Fixed left value swizzle operators.</entry>
-    </update>
-    <update date="2008-12-03">
-      <entry>Fixed GLM_GTX intersect extension: intersectRayTriangleGTX with GCC.</entry>
-      <entry>Typo.</entry>
-    </update>
-    <update date="2008-12-02">
-      <entry>Fixed GLM_GTX inverse_transpose extension.</entry>
-    </update>
-    <update date="2008-11-27">
-      <entry>Updated quaternion implementation.</entry>
-    </update>
-    <update date="2008-11-19">
-      <entry>Added GLM_GTX_raw_data extension.</entry>
-    </update>
-    <update date="2008-11-18">
-      <entry>Updated GLM_GTX_bit extension: Added mask function.</entry>
-    </update>
-    <update date="2008-11-14">
-      <entry>Updated GLM_GTX_bit extension: Added extractField function.</entry>
-      <entry>Fixed STATIC_ASSERT with 64bits integers.</entry>
-    </update>
-    <update date="2008-10-30">
-      <entry>GLM 0.8.1 released.</entry>
-    </update>
-    <update date="2008-10-29">
-      <entry>Fixed mix function with boolean parameter.</entry>
-      <entry>Fixed value_size issue.</entry>
-    </update>
-    <update date="2008-10-28">
-      <entry>Fixed GLM_GTX_component_wise extension.</entry>
-      <entry>Added GLM_GTX_color_space_YCoCg extension.</entry>
-    </update>
-    <update date="2008-10-27">
-      <entry>Added GLM_GTX_comparison extension: Defined comparison operators for vectors.</entry>
-    </update>
-    <update date="2008-10-25">
-      <entry>Added GLM_GTX_log_base extension.</entry>
-    </update>
-    <update date="2008-10-24">
-      <entry>Fixed 64 bits integers with GCC.</entry>
-      <entry>Deleted deprecated half number setup options.</entry>
-      <entry>Updated GLM_GTX_number_precision: Clean up and added missing type definitions.</entry>
-      <entry>Updated GLM_GTX_color_cast: Clean up and fixes.</entry>
-    </update>
-    <update date="2008-10-23">
-      <entry>Updated manuel and documentation.</entry>
-      <entry>GLM 0.8.0 final released.</entry>
-    </update>
-    <update date="2008-10-22">
-      <entry>Fixed glm::size_t possible collisions with std::size_t. glm::size_t is now named glm::sizeType.</entry>
-      <entry>Updated GLM_VIRTREV_address extension: Added none const fonctions.</entry>
-      <entry>Updated GLM_GTX_double_float extension: Typo.</entry>
-      <entry>Added new API to use extension.</entry>
-    </update>
-    <update date="2008-10-18">
-      <entry>Added logos in varius resolutions.</entry>
-    </update>
-    <update date="2008-10-17">
-      <entry>Updated website.</entry>
-      <entry>Added website builder.</entry>
-    </update>
-    <update date="2008-10-15">
-      <entry>Updated GLM_GTX_number_precision: No more warning with type size tests.</entry>
-      <entry>Fixed none consistent size_t.</entry>
-    </update>
-    <update date="2008-10-12">
-      <entry>Updated website.</entry>
-    </update>
-    <update date="2008-10-10">
-      <entry>Fixed build.</entry>
-      <entry>Updated manual.</entry>
-      <entry>GLM 0.8.0 beta3 released.</entry>
-    </update>
-    <update date="2008-10-09">
-      <entry>Added GLM_GTX_reciprocal extension: Define sec, csc, cot, asec, acsc, acot, sech, csch, coth, asech, acsch and acoth functions.</entry>
-    </update>
-    <update date="2008-10-08">
-      <entry>Updated GLM_GTX_euler_angles extension: Added functions to build rotation matrices.</entry>
-    </update>
-    <update date="2008-10-07">
-      <entry>Fixed GLM_GTX_color_space: Fixed conflits with swizzle operators.</entry>
-      <entry>Fixed virtrev.h, didn't build.</entry>
-      <entry>Fixed genType build.</entry>
-      <entry>Fixed GLM_GTX_compatibility build.</entry>
-      <entry>Added GLM_VIRTREV_address: Get the address of internal vector or matrix contents.</entry>
-      <entry>Fixed code typo and clean up.</entry>
-    </update>
-    <update date="2008-10-06">
-      <entry>Added genType class. For long term base class for all types though template specialization.</entry>
-      <entry>Updated project directory.</entry>
-      <entry>Added CMakeFile in test directory.</entry>
-      <entry>Fixed code typo and clean up.</entry>
-      <entry>Fixed GLM_GTX_string_cast: Missing some matrix definitions, some wrong behaviours with matrices.</entry>
-    </update>
-    <update date="2008-10-05">
-      <entry>Added glm::sizeType type which is used to defined size of all vectors and matrices. Defined as std::size_t.</entry>
-      <entry>row_size, col_size and is_matrix are now functions.</entry>
-      <entry>Fixed use inline on *mat4 function declaration.</entry>
-      <entry>Deleted auto cast from *mat4x3.</entry>
-      <entry>Fixed missing ++ -- and - operators to some matrix types.</entry>
-      <entry>Fixed typo.</entry>
-    </update>
-    <update date="2008-10-04">
-      <entry>GLM 0.8.0 beta2 released.</entry>
-    </update>
-    <update date="2008-10-03">
-      <entry>value_size and is_vector are now functions.</entry>
-    </update>
-    <update date="2008-10-02">
-      <entry>Added GLM_USE_ANONYMOUS_UNION: To use anonymous union to provide multiple component names access for class valType. Visual C++ only.</entry>
-      <entry>Removed noise function from documentation.</entry>
-    </update>
-    <update date="2008-10-01">
-      <entry>Fixed build with GCC.</entry>
-      <entry>Updated manual.</entry>
-    </update>
-    <update date="2008-09-30">
-      <entry>Updated GLM_GTX_bit implementation.</entry>
-      <entry>Added GLM_USE_ONLY_XYZW to disable multiple component names.</entry>
-      <entry>Updated GLM_GTX_euler_angles extension: added yawPitchRoll function.</entry>
-    </update>
-    <update date="2008-09-29">
-      <entry>Fixed half vector build.</entry>
-      <entry>Updated GLM_GTX_vector_angle: Added orientedAngleFromRef function.</entry>
-      <entry>Deprecated GLM_GTX_mul extension. Features moved in GLM_GTX_verbose_operator.</entry>
-      <entry>Updated GLM_GTX_verbose_operator: Added mad function.</entry>
-    </update>
-    <update date="2008-09-28">
-      <entry>Fixed missing inline in tvec3 and tvec4 definisions.</entry>
-      <entry>New implementation of hvec3 thought specialisation of tvec3 template.</entry>
-      <entry>New implementation of hvec4 thought specialisation of tvec4 template.</entry>
-      <entry>Fixed tvec4 operators than where applied just on 3 components.</entry>
-    </update>
-    <update date="2008-09-27">
-      <entry>Added build option for build that support anonymous structure.</entry>
-      <entry>Fixed missing inline in tvec2 definision.</entry>
-      <entry>New implementation of hvec2 thought specialisation of tvec2 template.</entry>
-    </update>
-    <update date="2008-09-26">
-      <entry>Updated documentation.</entry>
-      <entry>GLM 0.8.0 beta1 released.</entry>
-    </update>
-    <update date="2008-09-25">
-      <entry>Fixed static asserts within vector and matrix types.</entry>
-      <entry>Updated mix function implementation, support for boolean vectors.</entry>
-    </update>
-    <update date="2008-09-24">
-      <entry>Fixed static asserts.</entry>
-      <entry>Added some asserts.</entry>
-      <entry>Updated matrices operator[].</entry>
-    </update>
-    <update date="2008-09-23">
-      <entry>Added GLM_VIRTREV_equal_operator: Operators that compare vectors.</entry>
-      <entry>Fixed build errors from static asserts.</entry>
-    </update>
-    <update date="2008-09-22">
-      <entry>Fixed build errors with GCC.</entry>
-      <entry>Fixed func_trigonometric.h encoding.</entry>
-    </update>
-    <update date="2008-09-21">
-      <entry>Deleted GLM_GTX_INCLUDED.</entry>
-      <entry>Fixed build errors.</entry>
-      <entry>Fixed GLM_GTX_random: Bad assert definition.</entry>
-    </update>
-    <update date="2008-09-20">
-      <entry>Updated manual.</entry>
-      <entry>Updated swizzle operators with swizzle function.</entry>
-      <entry>Added modf definition.</entry>
-    </update>
-    <update date="2008-09-17">
-      <entry>Added namespaces to sort type and function in the API documentation.</entry>
-      <entry>Deleted some documentations from {__}*GTX types and functions from extensions.</entry>
-      <entry>Updated vectors and matrices documentation.</entry>
-      <entry>Updated scalars and precisions documentation.</entry>
-      <entry>Fixed some vectors and matrices declaration missing in some cases.</entry>
-      <entry>Updated overall documentation.</entry>
-    </update>
-    <update date="2008-09-16">
-      <entry>Included all types in type namespace.</entry>
-    </update>
-    <update date="2008-09-15">
-      <entry>Added type namespace in glm namespace for documentation purpose.</entry>
-    </update>
-    <update date="2008-09-14">
-      <entry>Added modf definition for vec2, vec3 and vec4.</entry>
-      <entry>Updated static assert to exponential, geometric, matrix, noise, trigonometric and vector relational functions.</entry>
-      <entry>Added GLM_GTC_matrix_transformation extensions: API and translate, rotate and scale definisions.</entry>
-      <entry>Deprecated GLM_GTX_gpu_shader4, GLM_GTX_hyperbolic, GLM_GTX_flexible_mix, GLM_GTX_round.</entry>
-      <entry>Added definition of mix with last parameter being booleans.</entry>
-      <entry>Added hint classes.</entry>
-      <entry>Updated GLM_GTX_integer, GLM_GTX_unsigned_int, GLM_GTX_half and GLM_GTX_double_float extensions.</entry>
-    </update>
-    <update date="2008-09-13">
-      <entry>Added trait code (class type) to detect bool, float, int and uint numbers.</entry>
-      <entry>Updated static assert to common functions.</entry>
-    </update>
-    <update date="2008-09-12">
-      <entry>Updated noise function definitions... Still unsure for staying in GLM 0.8.0.</entry>
-    </update>
-    <update date="2008-09-11">
-      <entry>Updated overall documentation, doxygen documentation.</entry>
-    </update>
-    <update date="2008-09-10">
-      <entry>Updated documentation and implementation of all matrix functions.</entry>
-      <entry>Added declaration of main functions for each function group namespace.</entry>
-      <entry>Updated documentation and API of all noise functions... Should be deleted becose of bad implementation?</entry>
-    </update>
-    <update date="2008-09-09">
-      <entry>Updated documentation and implementation of all vector relational functions.</entry>
-      <entry>Added transpose_type typedef to all matrix types.</entry>
-      <entry>Added is_matrix static constantes to all matrix types for static assert usage.</entry>
-      <entry>Added is_vector static constantes to all vector types for static assert usage.</entry>
-    </update>
-    <update date="2008-09-08">
-      <entry>Updated documentation and implementation of all geometric functions.</entry>
-    </update>
-    <update date="2008-09-07">
-      <entry>Updated documentation and implementation of all exponential functions.</entry>
-    </update>
-    <update date="2008-09-06">
-      <entry>Added isinf and isnan GLSL 1.3 functions.</entry>
-      <entry>Updated common functions code, mostly syntax.</entry>
-      <entry>Added trunc, round and roundEven GLSL 1.3 functions.</entry>
-      <entry>Added sinh, cosh, tanh, asinh, acosh and atanh GLSL 1.3 functions.</entry>
-      <entry>Updated documentation and implementation of all trigonometric functions.</entry>
-    </update>
-    <update date="2008-09-05">
-      <entry>Added bool_type implementation detail to vector types.</entry>
-    </update>
-    <update date="2008-09-04">
-      <entry>Added API and documentation of all common functions.</entry>
-    </update>
-    <update date="2008-09-03">
-      <entry>Updated GLM_GTX_extensions: Define operator* as a cross product. Still in WIP...</entry>
-    </update>
-    <update date="2008-09-02">
-      <entry>Updated *vec2 and *vec3 with precision types missed and documentation.</entry>
-    </update>
-    <update date="2008-09-01">
-      <entry>Fixed 2085925 bug: rotateGTX didn't use it quaternion parameter.</entry>
-    </update>
-    <update date="2008-08-31">
-      <entry>Added test files.</entry>
-      <entry>Updated *vec4 with precision types missed and documentation.</entry>
-    </update>
-    <update date="2008-08-30">
-      <entry>Renamed implementation files.</entry>
-      <entry>Updated type pre-declarations.</entry>
-    </update>
-    <update date="2008-08-25">
-      <entry>Fixed GLM_GTX_matrix_projection extension: frustum function gave a wrong result.</entry>
-    </update>
-    <update date="2008-08-24">
-      <entry>Updated matrix types functions and extensions according new vectors types.</entry>
-    </update>
-    <update date="2008-08-23">
-      <entry>Added new vector types implementation.</entry>
-    </update>
-    <update date="2008-08-22">
-      <entry>Added support for new GLSL 1.30 precision model.</entry>
-    </update>
-    <update date="2008-08-19">
-      <entry>Added GLSL 1.30.08 unsigned int types support</entry>
-    </update>
-    <update date="2008-08-17">
-      <entry>Added detail::vec1 type.</entry>
-      <entry>Added detail::desc for types description and higher templatisation.</entry>
-    </update>
-    <update date="2008-08-11">
-      <entry>Started work on GLM 0.8.x based on GLSL 1.3 specification.</entry>
-      <entry>Visual Studio .NET 2003 (7.1) is now deprecated.</entry>
-      <entry>GLM_FORCE_HALF_COMPATIBILITY is now deprecated.</entry>
-      <entry>GLM_AUTO_CAST is now deprecated.</entry>
-    </update>
-    <update date="2008-08-09">
-      <entry>Updated GLM_GTX_fast_square_root implementation: Updated fastInverseSqrt</entry>
-    </update>
-    <update date="2008-08-08">
-      <entry>Updated documentation.</entry>
-      <entry>GLM 0.7.6 released.</entry>
-    </update>
-    <update date="2008-08-06">
-      <entry>gl_svec* (for GLshort) added in GLM_virtrev_gl extension.</entry>
-      <entry>Updated detail implementation of vector types.</entry>
-      <entry>Make Visual C++ build with Visual C++ extensions disabled.</entry>
-      <entry>Rename "not" to "not_" for compatibility.</entry>
-      <entry>Fixed GLM_GTX_fast_square_root build.</entry>
-    </update>
-    <update date="2008-07-31">
-      <entry>Fixed GLM_GTX_component_wise extension.</entry>
-    </update>
-    <update date="2008-07-29">
-      <entry>Updated mix functions for optimization purpose.</entry>
-      <entry>Fixed mix functions static assert.</entry>
-      <entry>Updated test files.</entry>
-      <entry>Updated GLM_GTX_statistics_operation.</entry>
-    </update>
-    <update date="2008-07-24">
-      <entry>Fixed GLM_GTX_bit extension: isPowerOfTwoGTX works for signed int too.</entry>
-      <entry>Updated GLM_GTX_norm extension: Added distance2, l2norm and lxNorm functions.</entry>
-      <entry>Added some boost static assert.</entry>
-    </update>
-    <update date="2008-07-23">
-      <entry>Added GLM_GTX_std_based_type: Types based on C++ conventions.</entry>
-      <entry>Added files for extension tests.</entry>
-    </update>
-    <update date="2008-07-22">
-      <entry>Fixed GLM_GTX_fast_square_root: Updated fastDistance.</entry>
-    </update>
-    <update date="2008-07-16">
-      <entry>Fixed GLM_GTX_fast_square_root: Wrong const and updated fastLenght.</entry>
-      <entry>Optimized mix core function</entry>
-    </update>
-    <update date="2008-07-14">
-      <entry>Fixed GLM_GTX_epsilon: Wrong function definitions for y, z and w components.</entry>
-    </update>
-    <update date="2008-07-10">
-      <entry>Fixed GLM_GTX_flexible: Flexible with scalar only failed.</entry>
-      <entry>Fixed GLM_GTX_quaternion: One rotate overloaded function undefined.</entry>
-    </update>
-    <update date="2008-07-08">
-      <entry>Some fixes on GLM_GTX_intersect extension.</entry>
-    </update>
-    <update date="2008-07-05">
-      <entry>GLM 0.7.5 released.</entry>
-    </update>
-    <update date="2008-07-03">
-      <entry>Updated documentation.</entry>
-    </update>
-    <update date="2008-07-01">
-      <entry>Updated message system.</entry>
-    </update>
-    <update date="2008-06-26">
-      <entry>Added new message system.</entry>
-    </update>
-    <update date="2008-06-13">
-      <entry>Fixed GLM_GTX_normal extension.</entry>
-    </update>
-    <update date="2008-06-07">
-      <entry>Updated GLM_GTX_unsigned_int extension. (New typedef extensions)</entry>
-    </update>
-    <update date="2008-06-06">
-      <entry>Added new precompiler system.</entry>
-    </update>
-    <update date="2008-06-04">
-      <entry>Increase C++ conformance.</entry>
-    </update>
-    <update date="2008-06-01">
-      <entry>Fixed build errors.</entry>
-      <entry>GLM 0.7.4 released.</entry>
-    </update>
-    <update date="2008-05-30">
-      <entry>Updated external dependencies system.</entry>
-      <entry>Updated manual.</entry>
-      <entry>Fixed GLM_GTX_random extension: Fixed build with GCC.</entry>
-      <entry>Fixed GLM_GTX_string_cast extension: Fixed build with GCC 3.4 due to GCC anonymuous namespace bug.</entry>
-    </update>
-    <update date="2008-05-29">
-      <entry>Fixed GLM_GTX_transform2 extension: scaleBias didn't built.</entry>
-    </update>
-    <update date="2008-05-26">
-      <entry>Added GLM_VIRTREV_xstream extension: XML output for GLM types.</entry>
-      <entry>Added external library system</entry>
-    </update>
-    <update date="2008-05-24">
-      <entry>Updated GLM_GTX_string_cast extension: Support of non-square matrices.</entry>
-      <entry>GLM 0.7.3 released.</entry>
-    </update>
-    <update date="2008-05-23">
-      <entry>Fixed mat2 product.</entry>
-    </update>
-    <update date="2008-05-18">
-      <entry>Fixed GLM_GTX_transform2 dependencies.</entry>
-    </update>
-    <update date="2008-05-01">
-      <entry>Added GLM_VIRTREV_gl extension: Vector and matrix integration with OpenGL.</entry>
-    </update>
-    <update date="2008-04-28">
-      <entry>Updated GLM_GTX_number_precision extension: Added uint type.</entry>
-      <entry>Added GLM_GTX_string_cast extension: Create formated string from GLM type instances.</entry>
-      <entry>Updated GLM_GTX_transform2: added scaleBias matrix build</entry>
-    </update>
-    <update date="2008-04-27">
-      <entry>GLM 0.7.2 released.</entry>
-    </update>
-    <update date="2008-04-26">
-      <entry>Added GLM_AUTO_CAST setup option.</entry>
-      <entry>Updated documentation</entry>
-    </update>
-    <update date="2008-04-23">
-      <entry>Updated GLM_GTX_inverse, added affine inverse functions for fast matrix inverts.</entry>
-      <entry>Updated overall documentation</entry>
-      <entry>Added trait typedef to all GLM data types</entry>
-    </update>
-    <update date="2008-04-22">
-      <entry>Updated GLM_GTX_compatibility documentation.</entry>
-      <entry>Fixed GLM_GTX_random, gauss functions didn't build.</entry>
-    </update>
-    <update date="2008-04-13">
-      <entry>Added few SSE code.</entry>
-      <entry>Fixed matrix projections.</entry>
-    </update>
-    <update date="2008-04-07">
-      <entry>Added GLM_SWIZZLE_FUNC swizzle option.</entry>
-    </update>
-    <update date="2008-04-06">
-      <entry>Updated GLM_GTX_euler_angles documentation.</entry>
-    </update>
-    <update date="2008-03-26">
-      <entry>Updated documentation.</entry>
-    </update>
-    <update date="2008-03-24">
-      <entry>Fixed GLM_GTX_associated_min_max build on GCC.</entry>
-      <entry>Updated GLM_GTX_matrix_projection.</entry>
-      <entry>GLM 0.7.1 released.</entry>
-    </update>
-    <update date="2008-03-22">
-      <entry>GLM 0.7.0 released.</entry>
-    </update>
-    <update date="2008-03-20">
-      <entry>Updated manual.</entry>
-    </update>
-    <update date="2008-03-16">
-      <entry>Updated documentation.</entry>
-      <entry>Added GLM_GTX_associated_min_max extension.</entry>
-    </update>
-    <update date="2008-03-15">
-      <entry>Fixed not function with GCC.</entry>
-    </update>
-    <update date="2008-03-12">
-      <entry>Fixed interger pow function for the case of a null power.</entry>
-    </update>
-    <update date="2008-02-20">
-      <entry>Fixed mat4x2 and mat4x3 GCC build.</entry>
-      <entry>Updated documentation.</entry>
-      <entry>Reseted glmsetup.h to default values.</entry>
-    </update>
-    <update date="2008-02-17">
-      <entry>Fixed missing xvec4 constructor with bool argument definition.</entry>
-      <entry>Fixed namespace collision in quaternion inverse function.</entry>
-      <entry>Fixed swizzle operators involved in operations.</entry>
-      <entry>Change license from GNU LGPL to MIT.</entry>
-    </update>
-    <update date="2008-02-16">
-      <entry>Fixed missing xvec4 ++ and -- operator definition.</entry>
-    </update>
-    <update date="2008-01-05">
-      <entry>Move some implementation details into detail namespace.</entry>
-    </update>
-    <update date="2008-01-04">
-      <entry>Fixed cast between matrices of different sizes.</entry>
-    </update>
-    <update date="2008-01-02">
-      <entry>Fixed matNxM type cast to other matNxM type.</entry>
-    </update>
-    <update date="2007-12-15">
-      <entry>Fixed GLM_GTX_matrix_projection extension.</entry>
-    </update>
-    <update date="2007-12-13">
-      <entry>GLM 0.6.4 released.</entry>
-    </update>
-    <update date="2007-12-09">
-      <entry>Fixed swizzle operators.</entry>
-    </update>
-    <update date="2007-11-21">
-      <entry>Fixed GLM_GTX_matrix_selection extension.</entry>
-    </update>
-    <update date="2007-11-14">
-      <entry>Updated GLM_GTX_color_space extension. Added luminosity function.</entry>
-    </update>
-    <update date="2007-11-05">
-      <entry>GLM 0.6.3 released.</entry>
-    </update>
-    <update date="2007-10-31">
-      <entry>Fixed 3DSMax SDK conflict with GLM.</entry>
-    </update>
-    <update date="2007-10-29">
-      <entry>Updated GLM_GTX_quaternion. Added sqrt function.</entry>
-    </update>
-    <update date="2007-10-28">
-      <entry>Updated GLM_GTX_random extension.</entry>
-      <entry>Updated GLM_GTX_half extension.</entry>
-    </update>
-    <update date="2007-10-21">
-      <entry>Fixed matrices operator const T*() const.</entry>
-    </update>
-    <update date="2007-10-08">
-      <entry>Fixed GLM_GTX_normalize_dot extension.</entry>
-      <entry>GLM 0.6.2 released.</entry>
-    </update>
-    <update date="2007-10-07">
-      <entry>GLM 0.6.1 released.</entry>
-    </update>
-    <update date="2007-10-02">
-      <entry>Added GLM_GTX_normalize_dot extension: Faster way to normalize parameters before a dot product</entry>
-    </update>
-    <update date="2007-09-22">
-      <entry>Fixed namespace error on GLM_GTX_matx extension</entry>
-    </update>
-    <update date="2007-09-21">
-      <entry>Added GLM_GTX_flexible_mix extension: mix function can take different types parameters</entry>
-    </update>
-    <update date="2007-09-16">
-      <entry>Updated documentation.</entry>
-      <entry>GLM 0.6.0 released.</entry>
-    </update>
-    <update date="2007-09-15">
-      <entry>Added GLM_SINGLE_COMP_NAME to fixed multiple component names on half types with GCC.</entry>
-    </update>
-    <update date="2007-09-10">
-      <entry>Added #define GLM_GTX_INCLUDED to automatically include all GTX extensions in the language.</entry>
-    </update>
-    <update date="2007-09-09">
-      <entry>Updated extensions documentation.</entry>
-      <entry>Updated GLM_GTX_quaternion extension: squad, euler angles conversions</entry>
-    </update>
-    <update date="2007-09-06">
-      <entry>Updated GLM_GTX_compatibility extension: Added isfinite isinf, and isnan.</entry>
-    </update>
-    <update date="2007-08-26">
-      <entry>Updated GLM_GTX_random extension: Gauss distribution, spherical distribution, linear distribution.</entry>
-    </update>
-    <update date="2007-08-21">
-      <entry>Fixed namespace issues with Visual Studio 8.0 SP1.</entry>
-    </update>
-    <update date="2007-08-20">
-      <entry>Updated GLM_GTX_gpu_shader4 extension: Add bit operators.</entry>
-      <entry>Updated GLM_GTX_integer extension: Delete some code duplications.</entry>
-      <entry>Added GLM_GTX_unsigned_int extension.</entry>
-    </update>
-    <update date="2007-08-19">
-      <entry>Fixed namespace issues with Visual Studio 8.0 SP1.</entry>
-      <entry>Added new namespace management for extensions.</entry>
-      <entry>Added automatic compiler ditection, no more compiler setup.</entry>
-    </update>
-    <update date="2007-07-31">
-      <entry>Updated GLM_GTX_number_precision extension.</entry>
-      <entry>Updated usertype.dat for Visual Studio.</entry>
-      <entry>Updated GLM_GTX_random extension.</entry>
-    </update>
-    <update date="2007-06-21">
-      <entry>Added GLM_GTX_color_cast extension.</entry>
-      <entry>Updated GLM_GTX_quaternion extension.</entry>
-    </update>
-    <update date="2007-05-22">
-      <entry>Added GLM_GTX_verbose_operator extension.</entry>
-    </update>
-    <update date="2007-05-21">
-      <entry>Added GLM_GTX_component_wise extension.</entry>
-    </update>
-    <update date="2007-05-10">
-      <entry>Added GLM_GTX_number_precision extension.</entry>
-    </update>
-    <update date="2007-04-16">
-      <entry>Updated GLM_GTX_bit extension.</entry>
-    </update>
-    <update date="2007-04-10">
-      <entry>Updated GLM_GTX_bit extension.</entry>
-    </update>
-    <update date="2007-04-04">
-      <entry>Updated GLM_GTX_fast_square_root extension.</entry>
-      <entry>Updated GLM_GTX_fast_trigonometry extension.</entry>
-      <entry>Updated GLM_GTX_fast_exponential extension.</entry>
-      <entry>Added GLM_GTX_mul extension.</entry>
-      <entry>Fixed GLM_GTX_epsilon extension.</entry>
-    </update>
-    <update date="2007-04-03">
-      <entry>Added GLM_GTX_mixed_product extension.</entry>
-      <entry>Added GLM_GTX_intersect extension.</entry>
-      <entry>Updated GLM_GTX_matrix_access extension.</entry>
-    </update>
-    <update date="2007-03-20">
-      <entry>Added bits operators in comment for vec2, vec3 and vec4.</entry>
-      <entry>Fixed friendly conformance to GLM_GTX_double.</entry>
-    </update>
-    <update date="2007-03-18">
-      <entry>Fixed size_type errors.</entry>
-    </update>
-    <update date="2007-03-14">
-      <entry>Updated GLM_GTX_quaternion extension.</entry>
-      <entry>Added GLM_GTX_bit extension.</entry>
-      <entry>Added value_type, size_type and value_size typedefs and value to all types.</entry>
-    </update>
-    <update date="2007-03-09">
-      <entry>Updated GLM_GTX_compatibility extension.</entry>
-      <entry>Fixed GLM_GTX_color_space extension.</entry>
-    </update>
-    <update date="2007-03-06">
-      <entry>Added GLM_GTX_polar_coordinates extension.</entry>
-    </update>
-    <update date="2007-03-05">
-      <entry>Added GLM_GTX_vector_query extension.</entry>
-      <entry>Added GLM_GTX_matrix_query extension.</entry>
-    </update>
-    <update date="2007-03-01">
-      <entry>Fixed square matrices division operators.</entry>
-    </update>
-    <update date="2007-02-28">
-      <entry>Added GLM_GTX_mat_mn extension.</entry>
-    </update>
-    <update date="2007-02-22">
-      <entry>Updated GLM_GTX_color_space extension.</entry>
-    </update>
-    <update date="2007-02-21">
-      <entry>Added GLM_GTX_vecx extension.</entry>
-      <entry>Added GLM_GTX_matx extension.</entry>
-    </update>
-    <update date="2007-02-19">
-      <entry>GLM 0.5.1 released.</entry>
-    </update>
-    <update date="2006-02-08">
-      <entry>Updated Visual Studio projects.</entry>
-    </update>
-    <update date="2006-02-01">
-      <entry>Updated GLM_GTX_compatibility extension.</entry>
-    </update>
-    <update date="2006-01-26">
-      <entry>Added GLM_GTX_hyperbolic extension.</entry>
-      <entry>Added GLM_GTX_spline extension.</entry>
-      <entry>Fixed unProject and project functions from GLM_GTX_matrix_projection extension.</entry>
-    </update>
-    <update date="2006-01-24">
-      <entry>Added GLM_GTX_compatibility extension.</entry>
-    </update>
-    <update date="2006-01-19">
-      <entry>Add some undefined write swizzle operators from bvec*</entry>
-      <entry>Fixed vectors component access operators[] from bvec*</entry>
-      <entry>Fixed bvec* equal operators with write swizzle operators</entry>
-      <entry>Fixed various vector constructors</entry>
-      <entry>Updated swizzle operators, _xvec* and _bvec* share the same code</entry>
-    </update>
-    <update date="2006-01-11">
-      <entry>Add some undefined write swizzle operators from xvec*</entry>
-      <entry>Fixed some write operator considered as read operator from xvec*</entry>
-      <entry>Fixed vectors component access operators[] from xvec*</entry>
-      <entry>Fixed not function setup according compilers</entry>
-    </update>
-    <update date="2006-01-06">
-      <entry>Added user manual.</entry>
-      <entry>GLM 0.5.0 released.</entry>
-    </update>
-    <update date="2006-01-05">
-      <entry>Updated overloaded functions of matrixCompMult.</entry>
-      <entry>Added transpose and outerProduct functions in the GLM core.</entry>
-    </update>
-    <update date="2006-12-15">
-      <entry>Fixed GLM_GTX_rotate_vector extension.</entry>
-    </update>
-    <update date="2006-12-07">
-      <entry>Fixed GLM_GTX_interger extension conformance.</entry>
-    </update>
-    <update date="2006-12-06">
-      <entry>Improved "friendly conformance" support.</entry>
-      <entry>Improved quaternion implementation.</entry>
-    </update>
-    <update date="2006-12-03">
-      <entry>Updated setup options.</entry>
-    </update>
-    <update date="2006-11-26">
-      <entry>Added new setup options for swizzle operators.</entry>
-    </update>
-    <update date="2006-11-14">
-      <entry>Updated GLM_GTX_integer extension.</entry>
-    </update>
-    <update date="2006-11-13">
-      <entry>Added GLM_GTX_gpu_shader4 extension.</entry>
-      <entry>Added extension errors management.</entry>
-      <entry>Added compilers management.</entry>
-      <entry>Added conformance management.</entry>
-    </update>
-    <update date="2006-11-02">
-      <entry>Added GLM_GTX_rotate_vector extension.</entry>
-    </update>
-    <update date="2006-10-15">
-      <entry>Updated product operators to non-squared matrices</entry>
-    </update>
-    <update date="2006-10-01">
-      <entry>Updated tmat4x3 and tmat3x4 types</entry>
-      <entry>Added tmat2x3, tmat3x2, tmat2x4 and tmat4x2</entry>
-      <entry>Clarified ToDo comments for missing operators with non-squared matrices types</entry>
-    </update>
-    <update date="2006-08-05">
-      <entry>Added GLSL 1.2 mat4x3 and mat3x4</entry>
-      <entry>Added missing declaration of mat* operators</entry>
-      <entry>Added _xmat* with _xvec* division operators</entry>
-    </update>
-    <update date="2006-08-04">
-      <entry>Added GLSL 1.2 non-squared matrices files</entry>
-    </update>
-    <update date="2006-07-17">
-      <entry>fastCos and fastSin are defined between -2 pi and 2 pi</entry>
-    </update>
-    <update date="2006-06-18">
-      <entry>Added swizzle operators for xvec4</entry>
-      <entry>Added swizzle operators for bvec4</entry>
-    </update>
-    <update date="2006-06-17">
-      <entry>Added swizzle operators for bvec2></entry>
-      <entry>Implicit conversion from *ref* to *vec*</entry>
-      <entry>Added swizzles operators for xvec3</entry>
-      <entry>Added swizzles operators for bvec3</entry>
-    </update>
-    <update date="2006-05-29">
-      <entry>Separated _*ref* types in different files</entry>
-      <entry>Added _bref* types</entry>
-      <entry>Updated _xref* types</entry>
-    </update>
-    <update date="2006-05-28">
-      <entry>Added operators for tvec2 swizzles operators management</entry>
-    </update>
-    <update date="2006-05-23">
-      <entry>GLM 0.4.1 released.</entry>
-    </update>
-    <update date="2006-05-22">
-      <entry>Add 4 examples of use with OpenGL under Windows and Linux</entry>
-    </update>
-    <update date="2006-05-17">
-      <entry>GLM 0.4.0 released.</entry>
-    </update>
-    <update date="2006-05-16">
-      <entry>It's not anymore required to include windows.h before glm.h whether windows.h is required</entry>
-    </update>
-    <update date="2006-05-04">
-      <entry>Improved tvec3 conversions</entry>
-      <entry>Improved tvec2 conversions</entry>
-      <entry>Added left hand side vec2 swizzle operators</entry>
-      <entry>Improved bvec4 conversions</entry>
-      <entry>Improved bvec3 conversions</entry>
-      <entry>Improved bvec2 conversions</entry>
-    </update>
-    <update date="2006-04-28">
-      <entry>Added _xref* structures for swizzle operators implementation</entry>
-      <entry>Seperated bvec* and xvec* types in different files</entry>
-      <entry>Updated core functions code</entry>
-    </update>
-    <update date="2006-04-22">
-      <entry>Fixed texture coordinate components access</entry>
-      <entry>Added GLM_GTX_mul extension.</entry>
-      <entry>Added GLM_GTX_inertia extension.</entry>
-      <entry>GLM 0.3.2 released.</entry>
-    </update>
-    <update date="2006-04-21">
-      <entry>Added right hand side vec2 swizzle operators</entry>
-      <entry>Improved tvec4 conversions</entry>
-    </update>
-    <update date="2006-04-20">
-      <entry>Updated GLM_GTX_quaterion, added log and exp functions</entry>
-      <entry>Added GLM_GTX_matrix_major_storage extension.</entry>
-    </update>
-    <update date="2006-04-19">
-      <entry>Reorganize types code</entry>
-      <entry>Complete addition and subtraction vertrices operators</entry>
-    </update>
-    <update date="2006-04-18">
-      <entry>Complete addition and subtraction matrices operators</entry>
-      <entry>Optimize increment and decrement operators</entry>
-    </update>
-    <update date="2006-04-17">
-      <entry>Fixed tmat4x4 division</entry>
-    </update>
-    <update date="2006-03-30">
-      <entry>Added GLM_GTX_outer_product extension.</entry>
-    </update>
-    <update date="2006-03-28">
-      <entry>GLM 0.3.1 released.</entry>
-    </update>
-    <update date="2006-03-27">
-      <entry>Added Linux support under GCC 4.0 and 4.1.</entry>
-    </update>
-    <update date="2006-03-26">
-      <entry>Optimisation of increment and decrement operators.</entry>
-    </update>
-    <update date="2006-03-20">
-      <entry>Added MacOS X support under GCC 4.0.</entry>
-    </update>
-    <update date="2006-02-19">
-      <entry>Added GLM_GTX_extend extension to wishlist in position 27.</entry>
-      <entry>Added GLM_GTX_euler_angles extension to wishlist in position 28.</entry>
-      <entry>Added Doxygen documentation.</entry>
-      <entry>GLM 0.3.0 released.</entry>
-    </update>
-    <update date="2006-01-30">
-      <entry>Optimized GLM_GTX_integer implementation.</entry>
-    </update>
-    <update date="2006-01-27">
-      <entry>Deleted explicit conversions from array to type to prevent unespected conversions.</entry>
-    </update>
-    <update date="2006-01-16">
-      <entry>Fixed bugs</entry>
-      <entry>Improved types conversions.</entry>
-      <entry>Added GLM_GTX_vector_access extension to wishlist in position 25.</entry>
-      <entry>Added GLM_GTX_random extension to wishlist in position 26.</entry>
-    </update>
-    <update date="2006-01-13">
-      <entry>Fixed bugs</entry>
-    </update>
-    <update date="2006-01-10">
-      <entry>Updated GLM_GTX_integer extension.</entry>
-    </update>
-    <update date="2006-01-09">
-      <entry>Added GLM_GTX_fast_exponential extension to wishlist in position 24.</entry>
-    </update>
-    <update date="2006-01-08">
-      <entry>Optimized _xvec* copy.</entry>
-    </update>
-    <update date="2006-01-07">
-      <entry>Added GLM_GTX_fast_trigonometry extension to wishlist in position 23.</entry>
-      <entry>Added factorial function to GLM_GTX_integer extension.</entry>
-    </update>
-    <update date="2006-01-05">
-      <entry>Added GLM_GTX_half extension to wishlist in position 21.</entry>
-      <entry>Optimized normalize function.</entry>
-      <entry>Global optimisation for debugging time</entry>
-      <entry>Added GLM_GTX_integer extension to wishlist in position 18.</entry>
-      <entry>Optimized clamp function.</entry>
-    </update>
-    <update date="2006-01-04">
-      <entry>Added GLM_GTX_fast_square_root extension to wishlist in position 19.</entry>
-      <entry>Added GLM_GTX_inverse_transpose extension to wishlist in position 20.</entry>
-      <entry>Fixed missing of vec4 * mat4 operator.</entry>
-    </update>
-    <update date="2005-12-23">
-      <entry>Reorganization of extensions.</entry>
-      <entry>Fixed vec2 constructeur bug.</entry>
-    </update>
-    <update date="2005-11-22">
-      <entry>Updated GLM_GTX_length2 extension.</entry>
-      <entry>Renamed GLM_GTX_length2 extension to GLM_GTX_norm.</entry>
-    </update>
-    <update date="2005-11-12">
-      <entry>Fixed GLM_GTX_quaterion implémentation bugs.</entry>
-    </update>
-    <update date="2005-11-09">
-      <entry>Updated GLM_GTX_projection extension.</entry>
-    </update>
-    <update date="2005-10-30">
-      <entry>Added GLM_GTX_transform2 extension to wishlist in position 18.</entry>
-    </update>
-    <update date="2005-09-28">
-      <entry>Updated for GCC 4.0.</entry>
-    </update>
-    <update date="2005-08-12">
-      <entry>Fixed normalization bug with LookAtGTX.</entry>
-    </update>
-    <update date="2005-07-15">
-      <entry>Add array conversion to GLM types.</entry>
-    </update>
-    <update date="2005-07-02">
-      <entry>Added GL_GTX_euler_angles extension to wishlist in position 17.</entry>
-    </update>
-    <update date="2005-06-24">
-      <entry>Added GLM_GTX_matrix_selection extension to wishlist in position 16.</entry>
-      <entry>Added GLM_GTX_matrix_selection extension support.</entry>
-    </update>
-    <update date="2005-06-22">
-      <entry>Updated GLM_GTX_projection extension to wishlist in position 15.</entry>
-    </update>
-    <update date="2005-06-21">
-      <entry>Added GLM_GTX_projection extension to wishlist in position 15.</entry>
-    </update>
-    <update date="2005-06-09">
-      <entry>Fixed bug from rotateGTX with quaternion.</entry>
-      <entry>Fixed matrix vector product.</entry>
-      <entry>Add vector usage to describe transformations axis.</entry>
-    </update>
-    <update date="2005-05-05">
-      <entry>Added GLM_GTX_quaternion extension support</entry>
-      <entry>GLM 0.2 released.</entry>
-    </update>
-    <update date="2005-05-02">
-      <entry>Add GLM_GTX_transform 2D transform support</entry>
-    </update>
-    <update date="2005-05-01">
-      <entry>Add GLM_GTX_transform 3D transform support</entry>
-    </update>
-    <update date="2005-04-29">
-      <entry>Updated GLM_GTX_transform extension to wishlist in position 2</entry>
-    </update>
-    <update date="2005-04-23">
-      <entry>Added GLM_GTX_vector_comp_mult extension to whislist in position 14</entry>
-      <entry>Added GLM_GTX_vector_comp_mult extension support</entry>
-    </update>
-    <update date="2005-04-22">
-      <entry>Added GLM_GTX_color_space extension to whislist in position 13</entry>
-      <entry>Added GLM_GTX_color_space extension support</entry>
-      <entry>Added GLM_GTX_double extension support</entry>
-    </update>
-    <update date="2005-04-10">
-      <entry>Overload of GLSL functions used by extentions instead of create new functions</entry>
-    </update>
-    <update date="2005-04-08">
-      <entry>Added GLM_GTX_optimum_pow extension to whislist in position 11</entry>
-      <entry>Added GLM_GTX_double extension to wishlist in position 12</entry>
-    </update>
-    <update date="2005-04-03">
-      <entry>Updated GLM_GTX_matrix_cross_product extension to wishlist in position 8</entry>
-      <entry>Added GLM_GTX_matrix_cross_product extension support</entry>
-      <entry>Added GLM_GTX_projection extension to whislist in position 9</entry>
-      <entry>Added GLM_GTX_perpendicular extension to wishlist in position 10</entry>
-      <entry>Added GLM_GTX_projection extension support</entry>
-      <entry>Added GLM_GTX_perpendicular extension support</entry>
-      <entry>Changed extensions organisation</entry>
-    </update>
-    <update date="2005-03-27">
-      <entry>Added *vec* by *mat* product</entry>
-      <entry>Updated GLM_GTX_determinant extension to wishlist in position 4</entry>
-      <entry>Updated GLM_GTX_inverse extension to wishlist in position 5</entry>
-      <entry>Updated GLM_GTX_length2 extension to wishlist in position 6</entry>
-      <entry>Updated GLM_GTX_orthonormalize extension to wishlist in position 7</entry>
-      <entry>Added GLM_GTX_determinant extension support</entry>
-      <entry>Added GLM_GTX_inverse extension support</entry>
-      <entry>Added GLM_GTX_length2 extension support</entry>
-      <entry>Added GLM_GTX_orthonormalize extension support</entry>
-    </update>
-    <update date="2005-03-21">
-      <entry>Added bug #7 : Vector constructor non conform</entry>
-      <entry>Updated issue #13 : Only ARB can allow extensions adding new operators</entry>
-    </update>
-    <update date="2005-03-13">
-      <entry>Added GLM_GTX_orthonormalize extension to wishlist in position 7</entry>
-      <entry>Added GLM_GTX_matrix_cross_product extension to wishlist in position 8</entry>
-      <entry>Updated issue #10 : Using template functions members</entry>
-      <entry>Updated *vec* types following issue #10 guidance</entry>
-    </update>
-    <update date="2005-03-06">
-      <entry>Fixed bug #2 with '#error'</entry>
-    </update>
-    <update date="2005-03-05">
-      <entry>Updated issue #4</entry>
-    </update>
-    <update date="2005-03-04">
-      <entry>Updated issue #13</entry>
-      <entry>Updated issue #8</entry>
-      <entry>Updated issue #6</entry>
-      <entry>Updated issue #4</entry>
-    </update>
-    <update date="2005-03-03">
-      <entry>Bugs #2 and #5 are now one</entry>
-      <entry>Updated / operator for vec* types with support of the divisibility of two vectors, and the divisibility term to term</entry>
-    </update>
-    <update date="2005-02-28">
-      <entry>Updated GLM_GTX_transpose extension to wishlist in position 8</entry>
-      <entry>Added GLM_GTX_transpose extension support</entry>
-      <entry>Fixed mat* types constructor scalar-parameted</entry>
-    </update>
-    <update date="2005-02-27">
-      <entry>Fixed mat* types product by a scalar</entry>
-    </update>
-    <update date="2005-02-25">
-      <entry>Updated function 'not'</entry>
-      <entry>Defined identificators following compilers</entry>
-      <entry>Added GLM_GTX_length2 extension to wishlist in position 6</entry>
-      <entry>Optimized mat3 type divide operator</entry>
-    </update>
-    <update date="2005-02-21">
-      <entry>GLM 0.1 released</entry>
-    </update>
-    <update date="2005-02-18">
-      <entry>Updated issue #4</entry>
-      <entry>Updated issue #6</entry>
-      <entry>Updated issue #9</entry>
-      <entry>Updated issue #12</entry>
-      <entry>Updated issue #13</entry>
-      <entry>Updated issues ordering</entry>
-    </update>
-    <update date="2005-02-17">
-      <entry>Updated vec* types + operator. Can now add a vector and a scalar, term by term</entry>
-      <entry>Updated vec* types - operator. Can now minus a vector and a scalar, term by term</entry>
-      <entry>Updated vec* types * operator. Can now multiply a vector and a scalar, term by term</entry>
-      <entry>Deleted issue #11, which was erroneous</entry>
-    </update>
-    <update date="2005-02-15">
-      <entry>Deleted from wishlist extension #6 : refract function is defined by version 1.10.59 from GLSL specs</entry>
-      <entry>Updated reflect function tests</entry>
-      <entry>Added fucntion reflect with its tests</entry>
-      <entry>Using typename 'genType' for functions templates</entry>
-      <entry>Added bug #5</entry>
-      <entry>Updated function sqrt</entry>
-      <entry>Added function log with its tests</entry>
-      <entry>Added function exp with its tests</entry>
-      <entry>Added function log2 with its tests</entry>
-      <entry>Updated cross function</entry>
-      <entry>Updated bvec* types data implementation</entry>
-      <entry>Added bug #6</entry>
-    </update>
-    <update date="2005-02-14">
-      <entry>Updated issue #13</entry>
-      <entry>Converted text files into XML</entry>
-      <entry>Modified files hierarchy</entry>
-    </update>
-    <update date="2005-02-13">
-      <entry>Updated clamp function</entry>
-      <entry>Added function noise1 with its tests</entry>
-      <entry>Added function noise2 with its tests</entry>
-      <entry>Added function noise3 with its tests</entry>
-      <entry>Added function noise4 with its tests</entry>
-    </update>
-    <update date="2005-02-08">
-      <entry>Enhanced mat4 type division operator</entry>
-      <entry>Added function sqrt with its tests</entry>
-      <entry>Added function inversesqrt with its tests</entry>
-      <entry>Added function exp2 with its tests</entry>
-      <entry>Added function log2 with its tests</entry>
-    </update>
-    <update date="2005-02-07">
-      <entry>Modified *vec* types constructors implementation, chooses initialisation instead of affectation</entry>
-      <entry>Added function reflect with its tests</entry>
-      <entry>Updated tan function</entry>
-      <entry>Fixed mat4 type * operator</entry>
-    </update>
-    <update date="2005-02-05">
-      <entry>Added GLM_GTX_refract extension to wishlist in position 5.</entry>
-    </update>
-    <update date="2005-02-03">
-      <entry>Added default constructor for mat* types</entry>
-    </update>
-    <update date="2005-02-02">
-      <entry>Added mat2 and vec2 type * operator</entry>
-      <entry>Added mat3 and vec3 type * operator</entry>
-      <entry>Added mat4 and vec4 type * operator</entry>
-    </update>
-    <update date="2005-02-01">
-      <entry>Added GLM_GTX_transpose extension to wishlist in position 3</entry>
-      <entry>Added GLM_GTX_determinant extension to wishlist in position 4</entry>
-      <entry>Added GLM_GTX_inverse extension to wishlist in position 5</entry>
-      <entry>Added / operator for two mat3 types</entry>
-      <entry>Enhanced *vec* types conception</entry>
-      <entry>Enhanced *mat* types conception</entry>
-    </update>
-    <update date="2005-01-31">
-      <entry>Updated bug #3</entry>
-      <entry>Updated issue #10</entry>
-      <entry>Added function matrixCompMult with its tests</entry>
-      <entry>Updated mat* type constant access operators</entry>
-      <entry>Added bug #4 : Conversion problem between two different *vec* types</entry>
-    </update>
-    <update date="2005-01-30">
-      <entry>Added bug #1 : Inability to select multiple components</entry>
-      <entry>Added bug #2 : Some *vec* types conversions are not available</entry>
-      <entry>Added bug #3 : 'not' is a C++ ISO keyword</entry>
-      <entry>Added * operator for two mat3 types</entry>
-      <entry>Added * operator for two mat4 types</entry>
-      <entry>Updated mat* types</entry>
-      <entry>Updated GLM_GTX_quaternion extension to wishlist in position 1</entry>
-      <entry>Updated GLM_GTX_transform extension to wishlist in position 2</entry>
-    </update>
-    <update date="2005-01-27">
-      <entry>Added mat2 type</entry>
-      <entry>Added * operator for two mat2 types</entry>
-      <entry>Added issue #14</entry>
-      <entry>Added issue #15</entry>
-      <entry>Added mat3 type</entry>
-      <entry>Added mat4 type</entry>
-    </update>
-    <update date="2005-01-26">
-      <entry>Added function mix with its tests</entry>
-      <entry>Added function step with its tests</entry>
-      <entry>Added function smoothstep with its tests</entry>
-      <entry>Updated issue #10</entry>
-      <entry>Updated issue #12</entry>
-      <entry>Updated issue #8</entry>
-      <entry>Added type bvec4 forgotten declaration</entry>
-      <entry>Added function lessThan with its tests</entry>
-      <entry>Added function lessThanEqual with its tests</entry>
-      <entry>Added function greaterThan with its tests</entry>
-      <entry>Added function greaterThanEqual with its tests</entry>
-      <entry>Added function equal with its tests</entry>
-      <entry>Added function notEqual with its tests</entry>
-      <entry>Added function any with its tests</entry>
-      <entry>Added function all with its tests</entry>
-      <entry>Added function not with its tests</entry>
-    </update>
-    <update date="2005-01-24">
-      <entry>Added function fract with its tests</entry>
-      <entry>Added function mod with its tests</entry>
-      <entry>Added function clamp with its tests</entry>
-    </update>
-    <update date="2005-01-23">
-      <entry>Added function mod with its tests</entry>
-      <entry>Added function abs with its tests</entry>
-      <entry>Added function sign with its tests</entry>
-      <entry>Added function floor with its tests</entry>
-      <entry>Added function ceil with its tests</entry>
-      <entry>Added function min with its tests</entry>
-      <entry>Added function max with its tests</entry>
-    </update>
-    <update date="2005-01-22">
-      <entry>Updated issue #13</entry>
-      <entry>Added temporary namespace called 'glm'</entry>
-      <entry>Added function pow with its tests</entry>
-    </update>
-    <update date="2005-01-19">
-      <entry>Updated sin function tests</entry>
-      <entry>Enhanced trigonometrics functions</entry>
-      <entry>Enhanced geometric functions</entry>
-    </update>
-    <update date="2005-01-18">
-      <entry>Added xvec* type constructor taking a single scalar as parameter.</entry>
-      <entry>Added xvec* into xvec3 type conversion</entry>
-      <entry>Added xvec* into xvec4 type conversion</entry>
-      <entry>Added xvec* into bvec2 type conversion</entry>
-      <entry>Added xvec* into bvec3 type conversion</entry>
-      <entry>Added xvec* into bvec4 type conversion</entry>
-      <entry>Added function sin with its tests</entry>
-      <entry>Added function cos with its tests</entry>
-      <entry>Added function tan with its tests</entry>
-      <entry>Added function asin with its tests</entry>
-      <entry>Added function acos with its tests</entry>
-      <entry>Added function atan with its tests</entry>
-      <entry>Added issue #13</entry>
-    </update>
-    <update date="2005-01-17">
-      <entry>Added function radians with its tests</entry>
-      <entry>Added function degrees with its tests</entry>
-      <entry>Added issue #9</entry>
-    </update>
-    <update date="2005-01-16">
-      <entry>Separated *vec* types definition from declaration</entry>
-      <entry>Added xvec* into xvec2 type conversion</entry>
-      <entry>Updated issue #11</entry>
-      <entry>Added issue #12</entry>
-    </update>
-    <update date="2005-01-15">
-      <entry>Using 'union' for multiple access to *vec* types components</entry>
-      <entry>Added issue #11</entry>
-      <entry>Deleted __*vec1GT following issue #11 guidance</entry>
-      <entry>Closed issue #2</entry>
-    </update>
-    <update date="2005-01-13">
-      <entry>Added function normalize with its tests</entry>
-      <entry>Added function faceforward with its tests</entry>
-    </update>
-    <update date="2005-01-12">
-      <entry>Added function cross with its tests</entry>
-      <entry>Added a function that can determine *vec* types size, and write beyond GLSL 1.051 specs</entry>
-      <entry>Added function lenght with its tests</entry>
-      <entry>Added function distance with its tests</entry>
-      <entry>Added function dot with its tests</entry>
-      <entry>Closed issue #1</entry>
-    </update>
-    <update date="2005-01-10">
-      <entry>Renamed intern types _vec* into _xvec*</entry>
-      <entry>Separated _xvec* types data, operators and accesses</entry>
-      <entry>Added bvec2 type</entry>
-      <entry>Added __bvec1GT type beyond GLSL 1.051 specs</entry>
-    </update>
-    <update date="2005-01-09">
-      <entry>Added types vec2 and ivec2</entry>
-      <entry>Added types vec3 and ivec3</entry>
-      <entry>Added types vec4 and ivec4</entry>
-      <entry>Added types __vec1GT and __ivec1GT, write beyond GLSL 1.051 specs</entry>
-    </update>
-  </changelog>
 
   <page_news>
-
-	  <news index="0061" date="02/03/2011" title="GLM 0.9.1.0 final released" image="goodies/logo.png" image-mini="image/logo-mini.png">
+	  <news index="0061" date="03/03/2011" title="GLM 0.9.1.0 final released" image="goodies/logo.png" image-mini="image/logo-mini.png">
+		  <paragraph>
+			  Finally, GLM 0.9.1 branch is reaching the status of stable with
+			  <link href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.0/glm-0.9.1.0.zip/download">GLM 0.9.1.0</link>.
+		  </paragraph>
 		  <paragraph>
-			  The stable version, GLM 0.9.0.8, adds the operator * for quaternion products and deprecated the cross function previously used for the same purpose.
-			  Also, it clarifies that GLM is a header only library when a user try to build it. Once more, there is nothing to build.
+			  From GLM 0.9.1 beta, mainly bugs has been fixed. GLM has evolved on many sides since GLM 0.9.0:
+			  Improved documentation (manual and doxygen), better test framework, simplified setup/options/configration of GLM and new experimental SIMD API.
 		  </paragraph>
 		  <paragraph>
-			  The development version, GLM 0.9.1 beta, provides an improved <link href="http://glm.g-truc.net/html-0.9.1/index.html">API documentation</link> by
-			  <link href="http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&amp;User=23530">Alfonse Reinheart</link>,
-			  author of <link href="http://www.arcsynthesis.org/gltut/">a great OpenGL tutorial</link> which uses GLM.
-			  This version also improves the SIMD extensions and it fixes many bugs.
+			  GLM 0.9.1.0 is not 100% backward compatile with 
+			  <link href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.0.8/glm-0.9.0.8.zip/download">GLM 0.9.0.8</link>
+			  but mainly advanced usages should be affected by the differencies.
+			  Have a look at the <link href="http://glm.g-truc.net/glm-0.9.1.pdf">GLM manual</link> for more information on how to use GLM 0.9.1.
 		  </paragraph>
 
-		  <source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.0/glm-0.9.1.0.zip/download">GLM 0.9.1.0 (zip,)</source>
+		  <source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.0/glm-0.9.1.0.zip/download">GLM 0.9.1.0 (zip)</source>
 		  <source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.0/glm-0.9.1.0.7z/download">GLM 0.9.1.0 (7z)</source>
 		  <source type="Link" href="http://glm.g-truc.net/glm-0.9.1.pdf">GLM 0.9.1 manual</source>
 		  <source type="Link" href="https://sourceforge.net/apps/trac/ogl-math/newticket">Submit a bug report</source>
 	  </news>
 
-	  <news index="0060" date="13/02/2011" title="GLM 0.9.0.8 and GLM 0.9.1 beta released" image="goodies/logo.png" image-mini="image/logo-mini.png">
-      <paragraph>
-        The stable version, GLM 0.9.0.8, adds the operator * for quaternion products and deprecated the cross function previously used for the same purpose.
-        Also, it clarifies that GLM is a header only library when a user try to build it. Once more, there is nothing to build.
-      </paragraph>
-      <paragraph>
-        The development version, GLM 0.9.1 beta, provides an improved <link href="http://glm.g-truc.net/html-0.9.1/index.html">API documentation</link> by 
-        <link href="http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&amp;User=23530">Alfonse Reinheart</link>,
-        author of <link href="http://www.arcsynthesis.org/gltut/">a great OpenGL tutorial</link> which uses GLM. 
-        This version also improves the SIMD extensions and it fixes many bugs.
-      </paragraph>
+	<news index="0060" date="13/02/2011" title="GLM 0.9.0.8 and GLM 0.9.1 beta released" image="goodies/logo.png" image-mini="image/logo-mini.png">
+		<paragraph>
+			The stable version, GLM 0.9.0.8, adds the operator * for quaternion products and deprecated the cross function previously used for the same purpose.
+			Also, it clarifies that GLM is a header only library when a user try to build it. Once more, there is nothing to build.
+		</paragraph>
+		<paragraph>
+			The development version, GLM 0.9.1 beta, provides an improved <link href="http://glm.g-truc.net/html-0.9.1/index.html">API documentation</link> by 
+			<link href="http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showprofile&amp;User=23530">Alfonse Reinheart</link>,
+			author of <link href="http://www.arcsynthesis.org/gltut/">a great OpenGL tutorial</link> which uses GLM. 
+			This version also improves the SIMD extensions and it fixes many bugs.
+		</paragraph>
 
-      <source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.B/glm-0.9.1.B.zip/download">GLM 0.9.1.B (zip,)</source>
-      <source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.B/glm-0.9.1.B.7z/download">GLM 0.9.1.B (7z)</source>
-      <source type="Link" href="http://glm.g-truc.net/glm-0.9.1.pdf">GLM 0.9.1 manual</source>
-      <source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.0.8/glm-0.9.0.8.zip/download">GLM 0.9.0.8 (zip,)</source>
-      <source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.0.8/glm-0.9.0.8.7z/download">GLM 0.9.0.8 (7z)</source>
-      <source type="Link" href="http://glm.g-truc.net/glm-0.9.0.pdf">GLM 0.9.0 manual</source>
-      <source type="Link" href="https://sourceforge.net/apps/trac/ogl-math/newticket">Submit a bug report</source>
-    </news>
+		<source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.B/glm-0.9.1.B.zip/download">GLM 0.9.1.B (zip)</source>
+		<source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.1.B/glm-0.9.1.B.7z/download">GLM 0.9.1.B (7z)</source>
+		<source type="Link" href="http://glm.g-truc.net/glm-0.9.1.pdf">GLM 0.9.1 manual</source>
+		<source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.0.8/glm-0.9.0.8.zip/download">GLM 0.9.0.8 (zip)</source>
+		<source type="Download" href="https://sourceforge.net/projects/ogl-math/files/glm-0.9.0.8/glm-0.9.0.8.7z/download">GLM 0.9.0.8 (7z)</source>
+		<source type="Link" href="http://glm.g-truc.net/glm-0.9.0.pdf">GLM 0.9.0 manual</source>
+		<source type="Link" href="https://sourceforge.net/apps/trac/ogl-math/newticket">Submit a bug report</source>
+	</news>
 
     <news index="0059" date="31/01/2011" title="GLM 0.9.1 alpha released" image="goodies/logo.png" image-mini="image/logo-mini.png">
       <paragraph>

+ 2 - 3
glm/core/intrinsic_matrix.inl

@@ -1005,8 +1005,7 @@ inline void sse_inverse_fast_ps(__m128 const in[4], __m128 out[4])
 	out[3] = _mm_mul_ps(Inv3, Rcp0);
 }
 
-
-void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4])
+inline void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out[4])
 {
 	float a = glm::radians(Angle);
     float c = cos(a);
@@ -1076,7 +1075,7 @@ void sse_rotate_ps(__m128 const in[4], float Angle, float const v[3], __m128 out
 	sse_mul_ps(in, Result, out);
 }
 
-void sse_outer_ps(__m128 const & c, __m128 const & r, __m128 out[4])
+inline void sse_outer_ps(__m128 const & c, __m128 const & r, __m128 out[4])
 {
 	out[0] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(0, 0, 0, 0)));
 	out[1] = _mm_mul_ps(c, _mm_shuffle_ps(r, r, _MM_SHUFFLE(1, 1, 1, 1)));

+ 1 - 1
glm/core/type_int.hpp

@@ -88,7 +88,7 @@ namespace glm
 #elif(GLM_PRECISION & GLM_PRECISION_LOWP_INT)
 	typedef precision::lowp_int					int_t;
 #else
-	typedef mediump_int							int_t;
+	typedef precision::mediump_int							int_t;
 #	pragma message("GLM message: Precisson undefined for signed integer number.");
 #endif//GLM_PRECISION
 

+ 0 - 1
glm/core/type_vec4.hpp

@@ -15,7 +15,6 @@
 #include "type_int.hpp"
 #include "type_size.hpp"
 #include "_swizzle.hpp"
-#include "_detail.hpp"
 
 namespace glm
 {

+ 0 - 3
glm/glm.hpp

@@ -12,9 +12,6 @@
 #ifndef glm_glm
 #define glm_glm
 
-//! TODO: to delete
-#define GLMvalType typename genType::value_type
-
 #include <cmath>
 #include <climits>
 #include <cfloat>

+ 40 - 19
glm/gtc/matrix_transform.inl

@@ -144,13 +144,15 @@ namespace matrix_transform
     }
 
 	template <typename valType> 
-	inline detail::tmat4x4<valType> ortho(
+	inline detail::tmat4x4<valType> ortho
+	(
 		valType const & left, 
 		valType const & right, 
 		valType const & bottom, 
 		valType const & top, 
 		valType const & zNear, 
-		valType const & zFar)
+		valType const & zFar
+	)
 	{
 		detail::tmat4x4<valType> Result(1);
 		Result[0][0] = valType(2) / (right - left);
@@ -179,13 +181,15 @@ namespace matrix_transform
 	}
 
 	template <typename valType> 
-	inline detail::tmat4x4<valType> frustum(
+	inline detail::tmat4x4<valType> frustum
+	(
 		valType const & left, 
 		valType const & right, 
 		valType const & bottom, 
 		valType const & top, 
 		valType const & nearVal, 
-		valType const & farVal)
+		valType const & farVal
+	)
 	{
 		detail::tmat4x4<valType> Result(0);
 		Result[0][0] = (valType(2) * nearVal) / (right - left);
@@ -199,11 +203,13 @@ namespace matrix_transform
 	}
 
 	template <typename valType> 
-	inline detail::tmat4x4<valType> perspective(
+	inline detail::tmat4x4<valType> perspective
+	(
 		valType const & fovy, 
 		valType const & aspect, 
 		valType const & zNear, 
-		valType const & zFar)
+		valType const & zFar
+	)
 	{
 		valType range = tan(radians(fovy / valType(2))) * zNear;	
 		valType left = -range * aspect;
@@ -244,10 +250,12 @@ namespace matrix_transform
 	}
 
 	template <typename T> 
-	inline detail::tmat4x4<T> infinitePerspective(
+	inline detail::tmat4x4<T> infinitePerspective
+	(
 		T fovy, 
 		T aspect, 
-		T zNear)
+		T zNear
+	)
 	{
 		T range = tan(radians(fovy / T(2))) * zNear;	
 		T left = -range * aspect;
@@ -265,10 +273,12 @@ namespace matrix_transform
 	}
 
 	template <typename T> 
-	inline detail::tmat4x4<T> tweakedInfinitePerspective(
+	inline detail::tmat4x4<T> tweakedInfinitePerspective
+	(
 		T fovy, 
 		T aspect, 
-		T zNear)
+		T zNear
+	)
 	{
 		T range = tan(radians(fovy / T(2))) * zNear;	
 		T left = -range * aspect;
@@ -286,11 +296,13 @@ namespace matrix_transform
 	}
 
 	template <typename T, typename U>
-	inline detail::tvec3<T> project(
+	inline detail::tvec3<T> project
+	(
 		detail::tvec3<T> const & obj, 
 		detail::tmat4x4<T> const & model, 
 		detail::tmat4x4<T> const & proj, 
-		detail::tvec4<U> const & viewport)
+		detail::tvec4<U> const & viewport
+	)
 	{
 		detail::tvec4<T> tmp = detail::tvec4<T>(obj, T(1));
 		tmp = model * tmp;
@@ -305,11 +317,13 @@ namespace matrix_transform
 	}
 
 	template <typename T, typename U>
-	inline detail::tvec3<T> unProject(
+	inline detail::tvec3<T> unProject
+	(
 		detail::tvec3<T> const & win, 
 		detail::tmat4x4<T> const & model, 
 		detail::tmat4x4<T> const & proj, 
-		detail::tvec4<U> const & viewport)
+		detail::tvec4<U> const & viewport
+	)
 	{
 		detail::tmat4x4<T> inverse = glm::inverse(proj * model);
 
@@ -338,16 +352,23 @@ namespace matrix_transform
 		if(!(delta.x > T(0) && delta.y > T(0))) 
 			return Result; // Error
 
+		detail::tvec3<T> Temp(
+			(T(viewport[2]) - T(2) * (center.x - T(viewport[0]))) / delta.x,
+			(T(viewport[3]) - T(2) * (center.y - T(viewport[1]))) / delta.y,
+			T(0));
+
 		// Translate and scale the picked region to the entire window
-		Result = translate(Result, (T(viewport[2]) - T(2) * (center.x - T(viewport[0]))) / delta.x, (T(viewport[3]) - T(2) * (center.y - T(viewport[1]))) / delta.y, T(0));
+		Result = translate(Result, Temp);
 		return scale(Result, T(viewport[2]) / delta.x, T(viewport[3]) / delta.y, T(1));
 	}
 
     template <typename T> 
-    inline detail::tmat4x4<T> lookAt(
-		const detail::tvec3<T>& eye, 
-		const detail::tvec3<T>& center, 
-		const detail::tvec3<T>& up)
+	inline detail::tmat4x4<T> lookAt
+	(
+		detail::tvec3<T> const & eye,
+		detail::tvec3<T> const & center,
+		detail::tvec3<T> const & up
+	)
     {
         detail::tvec3<T> f = normalize(center - eye);
         detail::tvec3<T> u = normalize(up);

+ 15 - 15
glm/gtx/spline.hpp

@@ -36,31 +36,31 @@ namespace glm
 		//! From GLM_GTX_spline extension.
 		template <typename genType> 
 		genType catmullRom(
-			const genType& v1, 
-			const genType& v2, 
-			const genType& v3, 
-			const genType& v4, 
-			const GLMvalType& s);
+			genType const & v1, 
+			genType const & v2, 
+			genType const & v3, 
+			genType const & v4, 
+			typename genType::value_type const & s);
 		
 		//! Return a point from a hermite curve.
 		//! From GLM_GTX_spline extension.
         template <typename genType> 
 		genType hermite(
-			const genType& v1, 
-			const genType& t1, 
-			const genType& v2, 
-			const genType& t2, 
-			const GLMvalType& s);
+			genType const & v1, 
+			genType const & t1, 
+			genType const & v2, 
+			genType const & t2, 
+			typename genType::value_type const & s);
 		
         //! Return a point from a cubic curve. 
 		//! From GLM_GTX_spline extension.
 		template <typename genType> 
 		genType cubic(
-			const genType& v1, 
-			const genType& v2, 
-			const genType& v3, 
-			const genType& v4, 
-			const GLMvalType& s);
+			genType const & v1, 
+			genType const & v2, 
+			genType const & v3, 
+			genType const & v4, 
+			typename genType::value_type const & s);
 
 		///@}
 

+ 39 - 33
glm/gtx/spline.inl

@@ -12,53 +12,59 @@ namespace gtx{
 namespace spline
 {
 	template <typename genType>
-	inline genType catmullRom(
-		const genType& v1, 
-		const genType& v2, 
-		const genType& v3, 
-		const genType& v4, 
-		const GLMvalType& s)
+	inline genType catmullRom
+	(
+		genType const & v1, 
+		genType const & v2, 
+		genType const & v3, 
+		genType const & v4, 
+		typename genType::value_type const & s
+	)
 	{
-		GLMvalType s1 = s;
-		GLMvalType s2 = optimum_pow::pow2(s);
-		GLMvalType s3 = optimum_pow::pow3(s);
+		typename genType::value_type s1 = s;
+		typename genType::value_type s2 = optimum_pow::pow2(s);
+		typename genType::value_type s3 = optimum_pow::pow3(s);
 
-		GLMvalType f1 = -s3 + GLMvalType(2) * s2 - s;
-		GLMvalType f2 = GLMvalType(3) * s3 - GLMvalType(5) * s2 + GLMvalType(2);
-		GLMvalType f3 = GLMvalType(-3) * s3 + GLMvalType(4) * s2 + s;
-		GLMvalType f4 = s3 - s2;
+		typename genType::value_type f1 = -s3 + typename genType::value_type(2) * s2 - s;
+		typename genType::value_type f2 = typename genType::value_type(3) * s3 - typename genType::value_type(5) * s2 + typename genType::value_type(2);
+		typename genType::value_type f3 = typename genType::value_type(-3) * s3 + typename genType::value_type(4) * s2 + s;
+		typename genType::value_type f4 = s3 - s2;
 
-		return (f1 * v1 + f2 * v2 + f3 * v3 + f4 * v4) / GLMvalType(2);
+		return (f1 * v1 + f2 * v2 + f3 * v3 + f4 * v4) / typename genType::value_type(2);
 
 	}
 
 	template <typename genType>
-	inline genType hermite(
-		const genType& v1, 
-		const genType& t1, 
-		const genType& v2, 
-		const genType& t2, 
-		const GLMvalType& s)
+	inline genType hermite
+	(
+		genType const & v1, 
+		genType const & t1, 
+		genType const & v2, 
+		genType const & t2, 
+		typename genType::value_type const & s
+	)
 	{
-		GLMvalType s1 = s;
-		GLMvalType s2 = optimum_pow::pow2(s);
-		GLMvalType s3 = optimum_pow::pow3(s);
+		typename genType::value_type s1 = s;
+		typename genType::value_type s2 = optimum_pow::pow2(s);
+		typename genType::value_type s3 = optimum_pow::pow3(s);
 
-		GLMvalType f1 = GLMvalType(2) * s3 - GLMvalType(3) * s2 + GLMvalType(1);
-		GLMvalType f2 = GLMvalType(-2) * s3 + GLMvalType(3) * s2;
-		GLMvalType f3 = s3 - GLMvalType(2) * s2 + s;
-		GLMvalType f4 = s3 - s2;
+		typename genType::value_type f1 = typename genType::value_type(2) * s3 - typename genType::value_type(3) * s2 + typename genType::value_type(1);
+		typename genType::value_type f2 = typename genType::value_type(-2) * s3 + typename genType::value_type(3) * s2;
+		typename genType::value_type f3 = s3 - typename genType::value_type(2) * s2 + s;
+		typename genType::value_type f4 = s3 - s2;
 
 		return f1 * v1 + f2 * v2 + f3 * t1 + f4 * t2;
 	}
 
 	template <typename genType>
-	inline genType cubic(
-		const genType& v1, 
-		const genType& v2, 
-		const genType& v3, 
-		const genType& v4, 
-		const GLMvalType& s)
+	inline genType cubic
+	(
+		genType const & v1, 
+		genType const & v2, 
+		genType const & v3, 
+		genType const & v4, 
+		typename genType::value_type const & s
+	)
 	{
 		return ((v1 * s + v2) * s + v3) * s + v4;
 	}

+ 19 - 19
glm/gtx/vector_query.hpp

@@ -39,55 +39,55 @@ namespace glm
 		//! From GLM_GTX_vector_query extensions.
 		template <typename genType> 
 		bool areCollinear(
-			const genType & v0, 
-			const genType & v1, 
-			const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon());
+			genType const & v0, 
+			genType const & v1, 
+			typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
 		
         //! Check if two vectors are opposites.
 		//! From GLM_GTX_vector_query extensions.
 		template <typename genType> 
 		bool areOpposite(
-			const genType & v0, 
-			const genType & v1, 
-			const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon());
+			genType const & v0, 
+			genType const & v1, 
+			typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
 		
         //! Check if two vectors are orthogonals.
 		//! From GLM_GTX_vector_query extensions.
 		template <typename genType> 
 		bool areOrthogonal(
-			const genType & v0, 
-			const genType & v1, 
-			const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon());
+			genType const & v0, 
+			genType const & v1, 
+			typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
 
 		//! Check if a vector is normalized.
 		//! From GLM_GTX_vector_query extensions.
 		template <typename genType> 
 		bool isNormalized(
-			const genType & v, 
-			const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon());
+			genType const & v, 
+			typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
 		
 		//! Check if a vector is null.
 		//! From GLM_GTX_vector_query extensions.
 		template <typename genType> 
 		bool isNull(
-			const genType& v, 
-			const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon());
+			genType const & v, 
+			typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
 
 		//! Check if two vectors are orthonormal.
 		//! From GLM_GTX_vector_query extensions.
 		template <typename genType>
 		bool areOrthonormal(
-			const genType & v0, 
-			const genType & v1, 
-			const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon());
+			genType const & v0, 
+			genType const & v1, 
+			typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
 
 		//! Check if two vectors are similar.
 		//! From GLM_GTX_vector_query extensions.
 		template <typename genType> 
 		bool areSimilar(
-			const genType& v0, 
-			const genType& v1, 
-			const GLMvalType epsilon = std::numeric_limits<GLMvalType>::epsilon());
+			genType const & v0, 
+			genType const & v1, 
+			typename genType::value_type const & epsilon = std::numeric_limits<typename genType::value_type>::epsilon());
 
 		///@}
 

+ 77 - 46
glm/gtx/vector_query.inl

@@ -17,77 +17,100 @@ namespace gtx{
 namespace vector_query
 {
 	template <typename T>
-	inline bool areCollinear(
-		const detail::tvec2<T>& v0, 
-		const detail::tvec2<T>& v1, 
-		const T epsilon)
+	inline bool areCollinear
+	(
+		detail::tvec2<T> const & v0, 
+		detail::tvec2<T> const & v1, 
+		T const & epsilon
+	)
 	{
 		return length(cross(detail::tvec3<T>(v0, T(0)), detail::tvec3<T>(v1, T(0)))) < epsilon;
 	}
 
 	template <typename T>
-	inline bool areCollinear(
-		const detail::tvec3<T>& v0, 
-		const detail::tvec3<T>& v1, 
-		const T epsilon)
+	inline bool areCollinear
+	(
+		detail::tvec3<T> const & v0, 
+		detail::tvec3<T> const & v1, 
+		T const & epsilon
+	)
 	{
 		return length(cross(v0, v1)) < epsilon;
 	}
 
 	template <typename T>
-	inline bool areCollinear(
-		const detail::tvec4<T>& v0, 
-		const detail::tvec4<T>& v1, 
-		const T epsilon)
+	inline bool areCollinear
+	(
+		detail::tvec4<T> const & v0, 
+		detail::tvec4<T> const & v1, 
+		T const & epsilon
+	)
 	{
 		return length(cross(detail::tvec3<T>(v0), detail::tvec3<T>(v1))) < epsilon;
 	}
 
 	template <typename genType>
-	inline bool areOpposite(
-		const genType& v0, 
-		const genType& v1, 
-		const GLMvalType epsilon)
+	inline bool areOpposite
+	(
+		genType const & v0, 
+		genType const & v1, 
+		typename genType::value_type const & epsilon
+	)
 	{
 		assert(isNormalized(v0) && isNormalized(v1));
-        return((genType::value_type(1) + dot(v0, v1)) <= epsilon);
+        return((typename genType::value_type(1) + dot(v0, v1)) <= epsilon);
 	}
 
 	template <typename genType>
-	inline bool areOrthogonal(
-		const genType& v0, 
-		const genType& v1, 
-		const GLMvalType epsilon)
+	inline bool areOrthogonal
+	(
+		genType const & v0, 
+		genType const & v1, 
+		typename genType::value_type const & epsilon
+	)
 	{
-		return abs(dot(v0, v1)) <= max(GLMvalType(1), length(v0)) * max(GLMvalType(1), length(v1)) * epsilon;
+		return abs(dot(v0, v1)) <= max(
+			typename genType::value_type(1), 
+			length(v0)) * max(
+				typename genType::value_type(1), 
+				length(v1)) * epsilon;
 	}
 
 	template <typename genType> 
-	inline bool isNormalized(
-		const genType& v, 
-		const GLMvalType epsilon)
+	inline bool isNormalized
+	(
+		genType const & v, 
+		typename genType::value_type const & epsilon
+	)
 	{
 		return abs(length(v) - GLMvalType(1)) <= GLMvalType(2) * epsilon;
 	}
 
 	template <typename genType> 
-	inline bool isNull(const genType& v, const GLMvalType epsilon)
+	inline bool isNull
+	(
+		genType const & v, 
+		typename genType::value_type const & epsilon
+	)
 	{
 		return length(v) <= epsilon;
 	}
 
     template <typename T> 
-    inline bool isCompNull(
-		const T s, 
-		const T epsilon)
+    inline bool isCompNull
+	(
+		T const & s, 
+		T const & epsilon
+	)
     {
         return abs(s) < epsilon;
     }
 
     template <typename T> 
-    inline detail::tvec2<bool> isCompNull(
-		const detail::tvec2<T>& v, 
-		const T epsilon)
+    inline detail::tvec2<bool> isCompNull
+	(
+		detail::tvec2<T> const & v, 
+		T const & epsilon)
     {
         return detail::tvec2<bool>(
             (abs(v.x) < epsilon),
@@ -95,9 +118,11 @@ namespace vector_query
     }
 
     template <typename T> 
-    inline detail::tvec3<bool> isCompNull(
-		const detail::tvec3<T>& v, 
-		const T epsilon)
+    inline detail::tvec3<bool> isCompNull
+	(
+		detail::tvec3<T> const & v, 
+		T const & epsilon
+	)
     {
         return detail::tvec3<bool>(
             abs(v.x) < epsilon,
@@ -106,9 +131,11 @@ namespace vector_query
     }
 
     template <typename T> 
-    inline detail::tvec4<bool> isCompNull(
-		const detail::tvec4<T>& v, 
-		const T epsilon)
+    inline detail::tvec4<bool> isCompNull
+	(
+		detail::tvec4<T> const & v, 
+		T const & epsilon
+	)
     {
         return detail::tvec4<bool>(
             abs(v.x) < epsilon,
@@ -118,19 +145,23 @@ namespace vector_query
     }
 
 	template <typename genType>
-	inline bool areOrthonormal(
-		const genType& v0, 
-		const genType& v1, 
-		const GLMvalType epsilon)
+	inline bool areOrthonormal
+	(
+		genType const & v0, 
+		genType const & v1, 
+		typename genType::value_type const & epsilon
+	)
 	{
 		return isNormalized(v0, epsilon) && isNormalized(v1, epsilon) && (abs(dot(v0, v1)) <= epsilon);
 	}
 
 	template <typename genType>
-	inline bool areSimilar(
-		const genType& v0, 
-		const genType& v1, 
-		const GLMvalType epsilon)
+	inline bool areSimilar
+	(
+		genType const & v0, 
+		genType const & v1, 
+		typename genType::value_type const & epsilon
+	)
 	{
 		bool similar = true;
         for(typename genType::size_type i = 0; similar && i < genType::value_size(); i++)