1 /// @ref gtx_fast_square_root 2 /// @file glm/gtx/fast_square_root.hpp 3 /// 4 /// @see core (dependence) 5 /// 6 /// @defgroup gtx_fast_square_root GLM_GTX_fast_square_root 7 /// @ingroup gtx 8 /// 9 /// @brief Fast but less accurate implementations of square root based functions. 10 /// - Sqrt optimisation based on Newton's method, 11 /// www.gamedev.net/community/forums/topic.asp?topic id=139956 12 /// 13 /// <glm/gtx/fast_square_root.hpp> need to be included to use these functionalities. 14 15 #pragma once 16 17 // Dependency: 18 #include "../common.hpp" 19 #include "../exponential.hpp" 20 #include "../geometric.hpp" 21 22 #if GLM_MESSAGES == GLM_MESSAGES_ENABLED && !defined(GLM_EXT_INCLUDED) 23 # pragma message("GLM: GLM_GTX_fast_square_root extension included") 24 #endif 25 26 namespace glm 27 { 28 /// @addtogroup gtx_fast_square_root 29 /// @{ 30 31 /// Faster than the common sqrt function but less accurate. 32 /// 33 /// @see gtx_fast_square_root extension. 34 template <typename genType> 35 GLM_FUNC_DECL genType fastSqrt(genType x); 36 37 /// Faster than the common sqrt function but less accurate. 38 /// 39 /// @see gtx_fast_square_root extension. 40 template <typename T, precision P, template <typename, precision> class vecType> 41 GLM_FUNC_DECL vecType<T, P> fastSqrt(vecType<T, P> const & x); 42 43 /// Faster than the common inversesqrt function but less accurate. 44 /// 45 /// @see gtx_fast_square_root extension. 46 template <typename genType> 47 GLM_FUNC_DECL genType fastInverseSqrt(genType x); 48 49 /// Faster than the common inversesqrt function but less accurate. 50 /// 51 /// @see gtx_fast_square_root extension. 52 template <typename T, precision P, template <typename, precision> class vecType> 53 GLM_FUNC_DECL vecType<T, P> fastInverseSqrt(vecType<T, P> const & x); 54 55 /// Faster than the common length function but less accurate. 56 /// 57 /// @see gtx_fast_square_root extension. 58 template <typename genType> 59 GLM_FUNC_DECL genType fastLength(genType x); 60 61 /// Faster than the common length function but less accurate. 62 /// 63 /// @see gtx_fast_square_root extension. 64 template <typename T, precision P, template <typename, precision> class vecType> 65 GLM_FUNC_DECL T fastLength(vecType<T, P> const & x); 66 67 /// Faster than the common distance function but less accurate. 68 /// 69 /// @see gtx_fast_square_root extension. 70 template <typename genType> 71 GLM_FUNC_DECL genType fastDistance(genType x, genType y); 72 73 /// Faster than the common distance function but less accurate. 74 /// 75 /// @see gtx_fast_square_root extension. 76 template <typename T, precision P, template <typename, precision> class vecType> 77 GLM_FUNC_DECL T fastDistance(vecType<T, P> const & x, vecType<T, P> const & y); 78 79 /// Faster than the common normalize function but less accurate. 80 /// 81 /// @see gtx_fast_square_root extension. 82 template <typename genType> 83 GLM_FUNC_DECL genType fastNormalize(genType const & x); 84 85 /// @} 86 }// namespace glm 87 88 #include "fast_square_root.inl" 89