From 6f67371bb1b46579ae837d0e0c61ac1b291be743 Mon Sep 17 00:00:00 2001 From: LaG1924 <12997935+LaG1924@users.noreply.github.com> Date: Sat, 13 Jan 2018 07:51:33 +0500 Subject: Directory renamed --- external/include/glm/gtx/common.inl | 112 ++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 external/include/glm/gtx/common.inl (limited to 'external/include/glm/gtx/common.inl') diff --git a/external/include/glm/gtx/common.inl b/external/include/glm/gtx/common.inl new file mode 100644 index 0000000..6c9cb65 --- /dev/null +++ b/external/include/glm/gtx/common.inl @@ -0,0 +1,112 @@ +/// @ref gtx_common +/// @file glm/gtx/common.inl + +#include + +namespace glm{ +namespace detail +{ + template class vecType, bool isFloat = true> + struct compute_fmod + { + GLM_FUNC_QUALIFIER static vecType call(vecType const & a, vecType const & b) + { + return detail::functor2::call(std::fmod, a, b); + } + }; + + template class vecType> + struct compute_fmod + { + GLM_FUNC_QUALIFIER static vecType call(vecType const & a, vecType const & b) + { + return a % b; + } + }; +}//namespace detail + + template + GLM_FUNC_QUALIFIER bool isdenormal(T const & x) + { + GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'isdenormal' only accept floating-point inputs"); + +# if GLM_HAS_CXX11_STL + return std::fpclassify(x) == FP_SUBNORMAL; +# else + return x != static_cast(0) && std::fabs(x) < std::numeric_limits::min(); +# endif + } + + template + GLM_FUNC_QUALIFIER typename tvec1::bool_type isdenormal + ( + tvec1 const & x + ) + { + GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'isdenormal' only accept floating-point inputs"); + + return typename tvec1::bool_type( + isdenormal(x.x)); + } + + template + GLM_FUNC_QUALIFIER typename tvec2::bool_type isdenormal + ( + tvec2 const & x + ) + { + GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'isdenormal' only accept floating-point inputs"); + + return typename tvec2::bool_type( + isdenormal(x.x), + isdenormal(x.y)); + } + + template + GLM_FUNC_QUALIFIER typename tvec3::bool_type isdenormal + ( + tvec3 const & x + ) + { + GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'isdenormal' only accept floating-point inputs"); + + return typename tvec3::bool_type( + isdenormal(x.x), + isdenormal(x.y), + isdenormal(x.z)); + } + + template + GLM_FUNC_QUALIFIER typename tvec4::bool_type isdenormal + ( + tvec4 const & x + ) + { + GLM_STATIC_ASSERT(std::numeric_limits::is_iec559, "'isdenormal' only accept floating-point inputs"); + + return typename tvec4::bool_type( + isdenormal(x.x), + isdenormal(x.y), + isdenormal(x.z), + isdenormal(x.w)); + } + + // fmod + template + GLM_FUNC_QUALIFIER genType fmod(genType x, genType y) + { + return fmod(tvec1(x), y).x; + } + + template class vecType> + GLM_FUNC_QUALIFIER vecType fmod(vecType const & x, T y) + { + return detail::compute_fmod::is_iec559>::call(x, vecType(y)); + } + + template class vecType> + GLM_FUNC_QUALIFIER vecType fmod(vecType const & x, vecType const & y) + { + return detail::compute_fmod::is_iec559>::call(x, y); + } +}//namespace glm -- cgit v1.2.3