From aa0b2a5e28f8de92c25090141e0df0c2102361e4 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Tue, 17 Sep 2013 01:16:00 +0200 Subject: [PATCH] Fixed ldexp and frexp implementations --- glm/core/func_common.inl | 30 ++++++++++++++++++++++++------ readme.txt | 3 ++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/glm/core/func_common.inl b/glm/core/func_common.inl index c0023ed5..8ab0aadc 100644 --- a/glm/core/func_common.inl +++ b/glm/core/func_common.inl @@ -1077,7 +1077,9 @@ namespace detail std::numeric_limits::is_iec559, "'frexp' only accept floating-point inputs"); - return std::frexp(x, exp); + return detail::tvec2( + frexp(x.x, exp.x), + frexp(x.y, exp.y)); } template @@ -1091,7 +1093,10 @@ namespace detail std::numeric_limits::is_iec559, "'frexp' only accept floating-point inputs"); - return std::frexp(x, exp); + return detail::tvec3( + frexp(x.x, exp.x), + frexp(x.y, exp.y), + frexp(x.z, exp.z)); } template @@ -1105,7 +1110,11 @@ namespace detail std::numeric_limits::is_iec559, "'frexp' only accept floating-point inputs"); - return std::frexp(x, exp); + return detail::tvec4( + frexp(x.x, exp.x), + frexp(x.y, exp.y), + frexp(x.z, exp.z), + frexp(x.w, exp.w)); } template @@ -1133,7 +1142,9 @@ namespace detail std::numeric_limits::is_iec559, "'ldexp' only accept floating-point inputs"); - return std::ldexp(x, exp); + return detail::tvec2( + ldexp(x.x, exp.x), + ldexp(x.y, exp.y)); } template @@ -1147,7 +1158,10 @@ namespace detail std::numeric_limits::is_iec559, "'ldexp' only accept floating-point inputs"); - return std::ldexp(x, exp); + return detail::tvec3( + ldexp(x.x, exp.x), + ldexp(x.y, exp.y), + ldexp(x.z, exp.z)); } template @@ -1161,7 +1175,11 @@ namespace detail std::numeric_limits::is_iec559, "'ldexp' only accept floating-point inputs"); - return std::ldexp(x, exp); + return detail::tvec4( + ldexp(x.x, exp.x), + ldexp(x.y, exp.y), + ldexp(x.z, exp.z), + ldexp(x.w, exp.w)); } }//namespace glm diff --git a/readme.txt b/readme.txt index dd017276..09a86a15 100644 --- a/readme.txt +++ b/readme.txt @@ -59,11 +59,12 @@ GLM 0.9.5.0: 2013-XX-XX - Optimized packing and unpacking functions - Removed the normalization of the up argument of lookAt function (#114) - Added low precision specializations of inversesqrt -- Fixed ldexp implementation +- Fixed ldexp and frexp implementations - Increased assert coverage - Increased static_assert coverage - Replaced GLM traits by STL traits when possible - Allowed including individual core feature +- Increased unit tests completness ================================================================================ GLM 0.9.4.6: 2013-09-15