1 /////////////////////////////////////////////////////////////////////////////////// 2 /// OpenGL Mathematics (glm.g-truc.net) 3 /// 4 /// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net) 5 /// Permission is hereby granted, free of charge, to any person obtaining a copy 6 /// of this software and associated documentation files (the "Software"), to deal 7 /// in the Software without restriction, including without limitation the rights 8 /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 /// copies of the Software, and to permit persons to whom the Software is 10 /// furnished to do so, subject to the following conditions: 11 /// 12 /// The above copyright notice and this permission notice shall be included in 13 /// all copies or substantial portions of the Software. 14 /// 15 /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 /// THE SOFTWARE. 22 /// 23 /// @ref core 24 /// @file glm/core/func_exponential.hpp 25 /// @date 2008-08-08 / 2011-06-14 26 /// @author Christophe Riccio 27 /// 28 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 29 /// 30 /// @defgroup core_func_exponential Exponential functions 31 /// @ingroup core 32 /// 33 /// These all operate component-wise. The description is per component. 34 /////////////////////////////////////////////////////////////////////////////////// 35 36 #ifndef glm_core_func_exponential 37 #define glm_core_func_exponential 38 39 #include "type_vec1.hpp" 40 #include "type_vec2.hpp" 41 #include "type_vec3.hpp" 42 #include "type_vec4.hpp" 43 #include <cmath> 44 45 namespace glm 46 { 47 /// @addtogroup core_func_exponential 48 /// @{ 49 50 /// Returns 'base' raised to the power 'exponent'. 51 /// 52 /// @param base Floating point value. pow function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. 53 /// @param exponent Floating point value representing the 'exponent'. 54 /// @tparam genType Floating-point scalar or vector types. 55 /// 56 /// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/pow.xml">GLSL pow man page</a> 57 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 58 template <typename genType> 59 GLM_FUNC_DECL genType pow(genType const & base, genType const & exponent); 60 61 /// Returns the natural exponentiation of x, i.e., e^x. 62 /// 63 /// @param x exp function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. 64 /// @tparam genType Floating-point scalar or vector types. 65 /// 66 /// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/exp.xml">GLSL exp man page</a> 67 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 68 template <typename genType> 69 GLM_FUNC_DECL genType exp(genType const & x); 70 71 /// Returns the natural logarithm of x, i.e., 72 /// returns the value y which satisfies the equation x = e^y. 73 /// Results are undefined if x <= 0. 74 /// 75 /// @param x log function is defined for input values of x defined in the range (0, inf+) in the limit of the type precision. 76 /// @tparam genType Floating-point scalar or vector types. 77 /// 78 /// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/log.xml">GLSL log man page</a> 79 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 80 template <typename genType> 81 GLM_FUNC_DECL genType log(genType const & x); 82 83 /// Returns 2 raised to the x power. 84 /// 85 /// @param x exp2 function is defined for input values of x defined in the range (inf-, inf+) in the limit of the type precision. 86 /// @tparam genType Floating-point scalar or vector types. 87 /// 88 /// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/exp2.xml">GLSL exp2 man page</a> 89 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 90 template <typename genType> 91 GLM_FUNC_DECL genType exp2(genType const & x); 92 93 /// Returns the base 2 log of x, i.e., returns the value y, 94 /// which satisfies the equation x = 2 ^ y. 95 /// 96 /// @param x log2 function is defined for input values of x defined in the range (0, inf+) in the limit of the type precision. 97 /// @tparam genType Floating-point scalar or vector types. 98 /// 99 /// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/log2.xml">GLSL log2 man page</a> 100 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 101 template <typename genType> 102 GLM_FUNC_DECL genType log2(genType x); 103 104 /// Returns the positive square root of x. 105 /// 106 /// @param x sqrt function is defined for input values of x defined in the range [0, inf+) in the limit of the type precision. 107 /// @tparam genType Floating-point scalar or vector types. 108 /// 109 /// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/sqrt.xml">GLSL sqrt man page</a> 110 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 111 //template <typename genType> 112 //GLM_FUNC_DECL genType sqrt(genType const & x); 113 114 template <typename T, precision P, template <typename, precision> class vecType> 115 GLM_FUNC_DECL vecType<T, P> sqrt(vecType<T, P> const & x); 116 117 /// Returns the reciprocal of the positive square root of x. 118 /// 119 /// @param x inversesqrt function is defined for input values of x defined in the range [0, inf+) in the limit of the type precision. 120 /// @tparam genType Floating-point scalar or vector types. 121 /// 122 /// @see <a href="http://www.opengl.org/sdk/docs/manglsl/xhtml/inversesqrt.xml">GLSL inversesqrt man page</a> 123 /// @see <a href="http://www.opengl.org/registry/doc/GLSLangSpec.4.20.8.pdf">GLSL 4.20.8 specification, section 8.2 Exponential Functions</a> 124 template <typename genType> 125 GLM_FUNC_DECL genType inversesqrt(genType const & x); 126 127 /// @} 128 }//namespace glm 129 130 #include "func_exponential.inl" 131 132 #endif//glm_core_func_exponential 133