diff --git a/glm/common.hpp b/glm/common.hpp
index 66d2495c..39318769 100644
--- a/glm/common.hpp
+++ b/glm/common.hpp
@@ -1,8 +1,550 @@
/// @ref core
/// @file glm/common.hpp
+///
+/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+///
+/// @defgroup core_func_common Common functions
+/// @ingroup core
+///
+/// Include to use these core features.
+///
+/// These all operate component-wise. The description is per component.
+
+#pragma once
#include "detail/setup.hpp"
+#include "detail/qualifier.hpp"
+#include "detail/type_int.hpp"
+#include "detail/_fixes.hpp"
-#pragma once
+namespace glm
+{
+ /// @addtogroup core_func_common
+ /// @{
+
+ /// Returns x if x >= 0; otherwise, it returns -x.
+ ///
+ /// @tparam genType floating-point or signed integer; scalar or vector types.
+ ///
+ /// @see GLSL abs man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ /// @see qualifier
+ template
+ GLM_FUNC_DECL genType abs(genType x);
+
+ /// Returns x if x >= 0; otherwise, it returns -x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point or signed integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL abs man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec abs(vec const& x);
+
+ /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL sign man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec sign(vec const& x);
+
+ /// Returns a value equal to the nearest integer that is less then or equal to x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL floor man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec floor(vec const& x);
+
+ /// Returns a value equal to the nearest integer to x
+ /// whose absolute value is not larger than the absolute value of x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL trunc man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec trunc(vec const& x);
+
+ /// Returns a value equal to the nearest integer to x.
+ /// The fraction 0.5 will round in a direction chosen by the
+ /// implementation, presumably the direction that is fastest.
+ /// This includes the possibility that round(x) returns the
+ /// same value as roundEven(x) for all values of x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL round man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec round(vec const& x);
+
+ /// Returns a value equal to the nearest integer to x.
+ /// A fractional part of 0.5 will round toward the nearest even
+ /// integer. (Both 3.5 and 4.5 for x will return 4.0.)
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL roundEven man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ /// @see New round to even technique
+ template
+ GLM_FUNC_DECL vec roundEven(vec const& x);
+
+ /// Returns a value equal to the nearest integer
+ /// that is greater than or equal to x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL ceil man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec ceil(vec const& x);
+
+ /// Return x - floor(x).
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see GLSL fract man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType fract(genType x);
+
+ /// Return x - floor(x).
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL fract man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec fract(vec const& x);
+
+ /// Modulus. Returns x - y * floor(x / y)
+ /// for each component in x using the floating point value y.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see GLSL mod man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType mod(genType x, genType y);
+
+ /// Modulus. Returns x - y * floor(x / y)
+ /// for each component in x using the floating point value y.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL mod man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec mod(vec const& x, T y);
+
+ /// Modulus. Returns x - y * floor(x / y)
+ /// for each component in x using the floating point value y.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL mod man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec mod(vec const& x, vec const& y);
+
+ /// Returns the fractional part of x and sets i to the integer
+ /// part (as a whole number floating point value). Both the
+ /// return value and the output parameter will have the same
+ /// sign as x.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see GLSL modf man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType modf(genType x, genType& i);
+
+ /// Returns y if y < x; otherwise, it returns x.
+ ///
+ /// @tparam genType Floating-point or integer; scalar or vector types.
+ ///
+ /// @see GLSL min man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType min(genType x, genType y);
+
+ /// Returns y if y < x; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL min man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec min(vec const& x, T y);
+
+ /// Returns y if y < x; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL min man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec min(vec const& x, vec const& y);
+
+ /// Returns y if x < y; otherwise, it returns x.
+ ///
+ /// @tparam genType Floating-point or integer; scalar or vector types.
+ ///
+ /// @see GLSL max man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType max(genType x, genType y);
+
+ /// Returns y if x < y; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL max man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec max(vec const& x, T y);
+
+ /// Returns y if x < y; otherwise, it returns x.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL max man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec max(vec const& x, vec const& y);
+
+ /// Returns min(max(x, minVal), maxVal) for each component in x
+ /// using the floating-point values minVal and maxVal.
+ ///
+ /// @tparam genType Floating-point or integer; scalar or vector types.
+ ///
+ /// @see GLSL clamp man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal);
+
+ /// Returns min(max(x, minVal), maxVal) for each component in x
+ /// using the floating-point values minVal and maxVal.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL clamp man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec clamp(vec const& x, T minVal, T maxVal);
+
+ /// Returns min(max(x, minVal), maxVal) for each component in x
+ /// using the floating-point values minVal and maxVal.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point or integer scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL clamp man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec clamp(vec const& x, vec const& minVal, vec const& maxVal);
+
+ /// If genTypeU is a floating scalar or vector:
+ /// Returns x * (1.0 - a) + y * a, i.e., the linear blend of
+ /// x and y using the floating-point value a.
+ /// The value for a is not restricted to the range [0, 1].
+ ///
+ /// If genTypeU is a boolean scalar or vector:
+ /// Selects which vector each returned component comes
+ /// from. For a component of 'a' that is false, the
+ /// corresponding component of 'x' is returned. For a
+ /// component of 'a' that is true, the corresponding
+ /// component of 'y' is returned. Components of 'x' and 'y' that
+ /// are not selected are allowed to be invalid floating point
+ /// values and will have no effect on the results. Thus, this
+ /// provides different functionality than
+ /// genType mix(genType x, genType y, genType(a))
+ /// where a is a Boolean vector.
+ ///
+ /// @see GLSL mix man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ ///
+ /// @param[in] x Value to interpolate.
+ /// @param[in] y Value to interpolate.
+ /// @param[in] a Interpolant.
+ ///
+ /// @tparam genTypeT Floating point scalar or vector.
+ /// @tparam genTypeU Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT.
+ ///
+ /// @code
+ /// #include
+ /// ...
+ /// float a;
+ /// bool b;
+ /// glm::dvec3 e;
+ /// glm::dvec3 f;
+ /// glm::vec4 g;
+ /// glm::vec4 h;
+ /// ...
+ /// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors.
+ /// glm::vec4 s = glm::mix(g, h, b); // Returns g or h;
+ /// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second.
+ /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter.
+ /// @endcode
+ template
+ GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a);
+
+ template
+ GLM_FUNC_DECL vec mix(vec const& x, vec const& y, vec const& a);
+
+ template
+ GLM_FUNC_DECL vec mix(vec const& x, vec const& y, U a);
+
+ /// Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType.
+ ///
+ /// @see GLSL step man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType step(genType edge, genType x);
+
+ /// Returns 0.0 if x < edge, otherwise it returns 1.0.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL step man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec step(T edge, vec const& x);
+
+ /// Returns 0.0 if x < edge, otherwise it returns 1.0.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL step man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec step(vec const& edge, vec const& x);
+
+ /// Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
+ /// performs smooth Hermite interpolation between 0 and 1
+ /// when edge0 < x < edge1. This is useful in cases where
+ /// you would want a threshold function with a smooth
+ /// transition. This is equivalent to:
+ /// genType t;
+ /// t = clamp ((x - edge0) / (edge1 - edge0), 0, 1);
+ /// return t * t * (3 - 2 * t);
+ /// Results are undefined if edge0 >= edge1.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see GLSL smoothstep man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x);
+
+ template
+ GLM_FUNC_DECL vec smoothstep(T edge0, T edge1, vec const& x);
+
+ template
+ GLM_FUNC_DECL vec smoothstep(vec const& edge0, vec const& edge1, vec const& x);
+
+ /// Returns true if x holds a NaN (not a number)
+ /// representation in the underlying implementation's set of
+ /// floating point representations. Returns false otherwise,
+ /// including for implementations with no NaN
+ /// representations.
+ ///
+ /// /!\ When using compiler fast math, this function may fail.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL isnan man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec isnan(vec const& x);
+
+ /// Returns true if x holds a positive infinity or negative
+ /// infinity representation in the underlying implementation's
+ /// set of floating point representations. Returns false
+ /// otherwise, including for implementations with no infinity
+ /// representations.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam T Floating-point scalar types
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL isinf man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec isinf(vec const& x);
+
+ /// Returns a signed integer value representing
+ /// the encoding of a floating-point value. The floating-point
+ /// value's bit-level representation is preserved.
+ ///
+ /// @see GLSL floatBitsToInt man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ GLM_FUNC_DECL int floatBitsToInt(float const& v);
+
+ /// Returns a signed integer value representing
+ /// the encoding of a floating-point value. The floatingpoint
+ /// value's bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL floatBitsToInt man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec floatBitsToInt(vec const& v);
+
+ /// Returns a unsigned integer value representing
+ /// the encoding of a floating-point value. The floatingpoint
+ /// value's bit-level representation is preserved.
+ ///
+ /// @see GLSL floatBitsToUint man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ GLM_FUNC_DECL uint floatBitsToUint(float const& v);
+
+ /// Returns a unsigned integer value representing
+ /// the encoding of a floating-point value. The floatingpoint
+ /// value's bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL floatBitsToUint man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec floatBitsToUint(vec const& v);
+
+ /// Returns a floating-point value corresponding to a signed
+ /// integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @see GLSL intBitsToFloat man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ GLM_FUNC_DECL float intBitsToFloat(int const& v);
+
+ /// Returns a floating-point value corresponding to a signed
+ /// integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL intBitsToFloat man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec intBitsToFloat(vec const& v);
+
+ /// Returns a floating-point value corresponding to a
+ /// unsigned integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @see GLSL uintBitsToFloat man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ GLM_FUNC_DECL float uintBitsToFloat(uint const& v);
+
+ /// Returns a floating-point value corresponding to a
+ /// unsigned integer encoding of a floating-point value.
+ /// If an inf or NaN is passed in, it will not signal, and the
+ /// resulting floating point value is unspecified. Otherwise,
+ /// the bit-level representation is preserved.
+ ///
+ /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
+ /// @tparam Q Value from qualifier enum
+ ///
+ /// @see GLSL uintBitsToFloat man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL vec uintBitsToFloat(vec const& v);
+
+ /// Computes and returns a * b + c.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see GLSL fma man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType fma(genType const& a, genType const& b, genType const& c);
+
+ /// Splits x into a floating-point significand in the range
+ /// [0.5, 1.0) and an integral exponent of two, such that:
+ /// x = significand * exp(2, exponent)
+ ///
+ /// The significand is returned by the function and the
+ /// exponent is returned in the parameter exp. For a
+ /// floating-point value of zero, the significant and exponent
+ /// are both zero. For a floating-point value that is an
+ /// infinity or is not a number, the results are undefined.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see GLSL frexp man page
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType frexp(genType const& x, genIType& exp);
+
+ /// Builds a floating-point number from x and the
+ /// corresponding integral exponent of two in exp, returning:
+ /// significand * exp(2, exponent)
+ ///
+ /// If this product is too large to be represented in the
+ /// floating-point type, the result is undefined.
+ ///
+ /// @tparam genType Floating-point scalar or vector types.
+ ///
+ /// @see GLSL ldexp man page;
+ /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
+ template
+ GLM_FUNC_DECL genType ldexp(genType const& x, genIType const& exp);
+
+ /// @}
+}//namespace glm
+
+#include "detail/func_common.inl"
-#include "detail/func_common.hpp"
diff --git a/glm/detail/func_common.hpp b/glm/detail/func_common.hpp
deleted file mode 100644
index ac19db82..00000000
--- a/glm/detail/func_common.hpp
+++ /dev/null
@@ -1,550 +0,0 @@
-/// @ref core
-/// @file glm/detail/func_common.hpp
-///
-/// @see GLSL 4.20.8 specification, section 8.3 Common Functions
-///
-/// @defgroup core_func_common Common functions
-/// @ingroup core
-///
-/// Include to use these core features.
-///
-/// These all operate component-wise. The description is per component.
-
-#pragma once
-
-#include "setup.hpp"
-#include "qualifier.hpp"
-#include "type_int.hpp"
-#include "_fixes.hpp"
-
-namespace glm
-{
- /// @addtogroup core_func_common
- /// @{
-
- /// Returns x if x >= 0; otherwise, it returns -x.
- ///
- /// @tparam genType floating-point or signed integer; scalar or vector types.
- ///
- /// @see GLSL abs man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- /// @see qualifier
- template
- GLM_FUNC_DECL genType abs(genType x);
-
- /// Returns x if x >= 0; otherwise, it returns -x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point or signed integer scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL abs man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec abs(vec const& x);
-
- /// Returns 1.0 if x > 0, 0.0 if x == 0, or -1.0 if x < 0.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL sign man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec sign(vec const& x);
-
- /// Returns a value equal to the nearest integer that is less then or equal to x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL floor man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec floor(vec const& x);
-
- /// Returns a value equal to the nearest integer to x
- /// whose absolute value is not larger than the absolute value of x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL trunc man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec trunc(vec const& x);
-
- /// Returns a value equal to the nearest integer to x.
- /// The fraction 0.5 will round in a direction chosen by the
- /// implementation, presumably the direction that is fastest.
- /// This includes the possibility that round(x) returns the
- /// same value as roundEven(x) for all values of x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL round man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec round(vec const& x);
-
- /// Returns a value equal to the nearest integer to x.
- /// A fractional part of 0.5 will round toward the nearest even
- /// integer. (Both 3.5 and 4.5 for x will return 4.0.)
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL roundEven man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- /// @see New round to even technique
- template
- GLM_FUNC_DECL vec roundEven(vec const& x);
-
- /// Returns a value equal to the nearest integer
- /// that is greater than or equal to x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL ceil man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec ceil(vec const& x);
-
- /// Return x - floor(x).
- ///
- /// @tparam genType Floating-point scalar or vector types.
- ///
- /// @see GLSL fract man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType fract(genType x);
-
- /// Return x - floor(x).
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL fract man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec fract(vec const& x);
-
- /// Modulus. Returns x - y * floor(x / y)
- /// for each component in x using the floating point value y.
- ///
- /// @tparam genType Floating-point scalar or vector types.
- ///
- /// @see GLSL mod man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType mod(genType x, genType y);
-
- /// Modulus. Returns x - y * floor(x / y)
- /// for each component in x using the floating point value y.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL mod man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec mod(vec const& x, T y);
-
- /// Modulus. Returns x - y * floor(x / y)
- /// for each component in x using the floating point value y.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL mod man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec mod(vec const& x, vec const& y);
-
- /// Returns the fractional part of x and sets i to the integer
- /// part (as a whole number floating point value). Both the
- /// return value and the output parameter will have the same
- /// sign as x.
- ///
- /// @tparam genType Floating-point scalar or vector types.
- ///
- /// @see GLSL modf man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType modf(genType x, genType& i);
-
- /// Returns y if y < x; otherwise, it returns x.
- ///
- /// @tparam genType Floating-point or integer; scalar or vector types.
- ///
- /// @see GLSL min man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType min(genType x, genType y);
-
- /// Returns y if y < x; otherwise, it returns x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point or integer scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL min man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec min(vec const& x, T y);
-
- /// Returns y if y < x; otherwise, it returns x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point or integer scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL min man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec min(vec const& x, vec const& y);
-
- /// Returns y if x < y; otherwise, it returns x.
- ///
- /// @tparam genType Floating-point or integer; scalar or vector types.
- ///
- /// @see GLSL max man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType max(genType x, genType y);
-
- /// Returns y if x < y; otherwise, it returns x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point or integer scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL max man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec max(vec const& x, T y);
-
- /// Returns y if x < y; otherwise, it returns x.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point or integer scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL max man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec max(vec const& x, vec const& y);
-
- /// Returns min(max(x, minVal), maxVal) for each component in x
- /// using the floating-point values minVal and maxVal.
- ///
- /// @tparam genType Floating-point or integer; scalar or vector types.
- ///
- /// @see GLSL clamp man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType clamp(genType x, genType minVal, genType maxVal);
-
- /// Returns min(max(x, minVal), maxVal) for each component in x
- /// using the floating-point values minVal and maxVal.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point or integer scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL clamp man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec clamp(vec const& x, T minVal, T maxVal);
-
- /// Returns min(max(x, minVal), maxVal) for each component in x
- /// using the floating-point values minVal and maxVal.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point or integer scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL clamp man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec clamp(vec const& x, vec const& minVal, vec const& maxVal);
-
- /// If genTypeU is a floating scalar or vector:
- /// Returns x * (1.0 - a) + y * a, i.e., the linear blend of
- /// x and y using the floating-point value a.
- /// The value for a is not restricted to the range [0, 1].
- ///
- /// If genTypeU is a boolean scalar or vector:
- /// Selects which vector each returned component comes
- /// from. For a component of 'a' that is false, the
- /// corresponding component of 'x' is returned. For a
- /// component of 'a' that is true, the corresponding
- /// component of 'y' is returned. Components of 'x' and 'y' that
- /// are not selected are allowed to be invalid floating point
- /// values and will have no effect on the results. Thus, this
- /// provides different functionality than
- /// genType mix(genType x, genType y, genType(a))
- /// where a is a Boolean vector.
- ///
- /// @see GLSL mix man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- ///
- /// @param[in] x Value to interpolate.
- /// @param[in] y Value to interpolate.
- /// @param[in] a Interpolant.
- ///
- /// @tparam genTypeT Floating point scalar or vector.
- /// @tparam genTypeU Floating point or boolean scalar or vector. It can't be a vector if it is the length of genTypeT.
- ///
- /// @code
- /// #include
- /// ...
- /// float a;
- /// bool b;
- /// glm::dvec3 e;
- /// glm::dvec3 f;
- /// glm::vec4 g;
- /// glm::vec4 h;
- /// ...
- /// glm::vec4 r = glm::mix(g, h, a); // Interpolate with a floating-point scalar two vectors.
- /// glm::vec4 s = glm::mix(g, h, b); // Returns g or h;
- /// glm::dvec3 t = glm::mix(e, f, a); // Types of the third parameter is not required to match with the first and the second.
- /// glm::vec4 u = glm::mix(g, h, r); // Interpolations can be perform per component with a vector for the last parameter.
- /// @endcode
- template
- GLM_FUNC_DECL genTypeT mix(genTypeT x, genTypeT y, genTypeU a);
-
- template
- GLM_FUNC_DECL vec mix(vec const& x, vec const& y, vec const& a);
-
- template
- GLM_FUNC_DECL vec mix(vec const& x, vec const& y, U a);
-
- /// Returns 0.0 if x < edge, otherwise it returns 1.0 for each component of a genType.
- ///
- /// @see GLSL step man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType step(genType edge, genType x);
-
- /// Returns 0.0 if x < edge, otherwise it returns 1.0.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL step man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec step(T edge, vec const& x);
-
- /// Returns 0.0 if x < edge, otherwise it returns 1.0.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL step man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec step(vec const& edge, vec const& x);
-
- /// Returns 0.0 if x <= edge0 and 1.0 if x >= edge1 and
- /// performs smooth Hermite interpolation between 0 and 1
- /// when edge0 < x < edge1. This is useful in cases where
- /// you would want a threshold function with a smooth
- /// transition. This is equivalent to:
- /// genType t;
- /// t = clamp ((x - edge0) / (edge1 - edge0), 0, 1);
- /// return t * t * (3 - 2 * t);
- /// Results are undefined if edge0 >= edge1.
- ///
- /// @tparam genType Floating-point scalar or vector types.
- ///
- /// @see GLSL smoothstep man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType smoothstep(genType edge0, genType edge1, genType x);
-
- template
- GLM_FUNC_DECL vec smoothstep(T edge0, T edge1, vec const& x);
-
- template
- GLM_FUNC_DECL vec smoothstep(vec const& edge0, vec const& edge1, vec const& x);
-
- /// Returns true if x holds a NaN (not a number)
- /// representation in the underlying implementation's set of
- /// floating point representations. Returns false otherwise,
- /// including for implementations with no NaN
- /// representations.
- ///
- /// /!\ When using compiler fast math, this function may fail.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL isnan man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec isnan(vec const& x);
-
- /// Returns true if x holds a positive infinity or negative
- /// infinity representation in the underlying implementation's
- /// set of floating point representations. Returns false
- /// otherwise, including for implementations with no infinity
- /// representations.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam T Floating-point scalar types
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL isinf man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec isinf(vec const& x);
-
- /// Returns a signed integer value representing
- /// the encoding of a floating-point value. The floating-point
- /// value's bit-level representation is preserved.
- ///
- /// @see GLSL floatBitsToInt man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- GLM_FUNC_DECL int floatBitsToInt(float const& v);
-
- /// Returns a signed integer value representing
- /// the encoding of a floating-point value. The floatingpoint
- /// value's bit-level representation is preserved.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL floatBitsToInt man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec floatBitsToInt(vec const& v);
-
- /// Returns a unsigned integer value representing
- /// the encoding of a floating-point value. The floatingpoint
- /// value's bit-level representation is preserved.
- ///
- /// @see GLSL floatBitsToUint man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- GLM_FUNC_DECL uint floatBitsToUint(float const& v);
-
- /// Returns a unsigned integer value representing
- /// the encoding of a floating-point value. The floatingpoint
- /// value's bit-level representation is preserved.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL floatBitsToUint man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec floatBitsToUint(vec const& v);
-
- /// Returns a floating-point value corresponding to a signed
- /// integer encoding of a floating-point value.
- /// If an inf or NaN is passed in, it will not signal, and the
- /// resulting floating point value is unspecified. Otherwise,
- /// the bit-level representation is preserved.
- ///
- /// @see GLSL intBitsToFloat man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- GLM_FUNC_DECL float intBitsToFloat(int const& v);
-
- /// Returns a floating-point value corresponding to a signed
- /// integer encoding of a floating-point value.
- /// If an inf or NaN is passed in, it will not signal, and the
- /// resulting floating point value is unspecified. Otherwise,
- /// the bit-level representation is preserved.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL intBitsToFloat man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec intBitsToFloat(vec const& v);
-
- /// Returns a floating-point value corresponding to a
- /// unsigned integer encoding of a floating-point value.
- /// If an inf or NaN is passed in, it will not signal, and the
- /// resulting floating point value is unspecified. Otherwise,
- /// the bit-level representation is preserved.
- ///
- /// @see GLSL uintBitsToFloat man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- GLM_FUNC_DECL float uintBitsToFloat(uint const& v);
-
- /// Returns a floating-point value corresponding to a
- /// unsigned integer encoding of a floating-point value.
- /// If an inf or NaN is passed in, it will not signal, and the
- /// resulting floating point value is unspecified. Otherwise,
- /// the bit-level representation is preserved.
- ///
- /// @tparam L Integer between 1 and 4 included that qualify the dimension of the vector
- /// @tparam Q Value from qualifier enum
- ///
- /// @see GLSL uintBitsToFloat man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL vec uintBitsToFloat(vec const& v);
-
- /// Computes and returns a * b + c.
- ///
- /// @tparam genType Floating-point scalar or vector types.
- ///
- /// @see GLSL fma man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType fma(genType const& a, genType const& b, genType const& c);
-
- /// Splits x into a floating-point significand in the range
- /// [0.5, 1.0) and an integral exponent of two, such that:
- /// x = significand * exp(2, exponent)
- ///
- /// The significand is returned by the function and the
- /// exponent is returned in the parameter exp. For a
- /// floating-point value of zero, the significant and exponent
- /// are both zero. For a floating-point value that is an
- /// infinity or is not a number, the results are undefined.
- ///
- /// @tparam genType Floating-point scalar or vector types.
- ///
- /// @see GLSL frexp man page
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType frexp(genType const& x, genIType& exp);
-
- /// Builds a floating-point number from x and the
- /// corresponding integral exponent of two in exp, returning:
- /// significand * exp(2, exponent)
- ///
- /// If this product is too large to be represented in the
- /// floating-point type, the result is undefined.
- ///
- /// @tparam genType Floating-point scalar or vector types.
- ///
- /// @see GLSL ldexp man page;
- /// @see GLSL 4.20.8 specification, section 8.3 Common Functions
- template
- GLM_FUNC_DECL genType ldexp(genType const& x, genIType const& exp);
-
- /// @}
-}//namespace glm
-
-#include "func_common.inl"
-
diff --git a/glm/detail/func_common.inl b/glm/detail/func_common.inl
index e31ad3ae..59b97aa8 100644
--- a/glm/detail/func_common.inl
+++ b/glm/detail/func_common.inl
@@ -1,7 +1,7 @@
/// @ref core
/// @file glm/detail/func_common.inl
-#include "func_vector_relational.hpp"
+#include "../vector_relational.hpp"
#include "type_vec2.hpp"
#include "type_vec3.hpp"
#include "type_vec4.hpp"
diff --git a/glm/detail/func_exponential.hpp b/glm/detail/func_exponential.hpp
deleted file mode 100644
index 9bb415b9..00000000
--- a/glm/detail/func_exponential.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/// @ref core
-/// @file glm/detail/func_exponential.hpp
-///
-/// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
-///
-/// @defgroup core_func_exponential Exponential functions
-/// @ingroup core
-///
-/// Include to use these core features.
-///
-/// These all operate component-wise. The description is per component.
-
-#pragma once
-
-#include "type_vec1.hpp"
-#include "type_vec2.hpp"
-#include "type_vec3.hpp"
-#include "type_vec4.hpp"
-#include
-
-namespace glm
-{
- /// @addtogroup core_func_exponential
- /// @{
-
- /// Returns 'base' raised to the power 'exponent'.
- ///
- /// @param base Floating point value. pow function is defined for input values of 'base' defined in the range (inf-, inf+) in the limit of the type qualifier.
- /// @param exponent Floating point value representing the 'exponent'.
- ///
- /// @see GLSL pow man page
- /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
- template
- GLM_FUNC_DECL vec pow(vec const& base, vec const& exponent);
-
- /// Returns the natural exponentiation of x, i.e., e^x.
- ///
- /// @param v exp function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type qualifier.
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL exp man page
- /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
- template
- GLM_FUNC_DECL vec exp(vec const& v);
-
- /// Returns the natural logarithm of v, i.e.,
- /// returns the value y which satisfies the equation x = e^y.
- /// Results are undefined if v <= 0.
- ///
- /// @param v log function is defined for input values of v defined in the range (0, inf+) in the limit of the type qualifier.
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL log man page
- /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
- template
- GLM_FUNC_DECL vec log(vec const& v);
-
- /// Returns 2 raised to the v power.
- ///
- /// @param v exp2 function is defined for input values of v defined in the range (inf-, inf+) in the limit of the type qualifier.
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL exp2 man page
- /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
- template
- GLM_FUNC_DECL vec exp2(vec const& v);
-
- /// Returns the base 2 log of x, i.e., returns the value y,
- /// which satisfies the equation x = 2 ^ y.
- ///
- /// @param v log2 function is defined for input values of v defined in the range (0, inf+) in the limit of the type qualifier.
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL log2 man page
- /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
- template
- GLM_FUNC_DECL vec log2(vec const& v);
-
- /// Returns the positive square root of v.
- ///
- /// @param v sqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type qualifier.
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL sqrt man page
- /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
- template
- GLM_FUNC_DECL vec sqrt(vec const& v);
-
- /// Returns the reciprocal of the positive square root of v.
- ///
- /// @param v inversesqrt function is defined for input values of v defined in the range [0, inf+) in the limit of the type qualifier.
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL inversesqrt man page
- /// @see GLSL 4.20.8 specification, section 8.2 Exponential Functions
- template
- GLM_FUNC_DECL vec inversesqrt(vec const& v);
-
- /// @}
-}//namespace glm
-
-#include "func_exponential.inl"
diff --git a/glm/detail/func_exponential.inl b/glm/detail/func_exponential.inl
index e574beba..2151d8b6 100644
--- a/glm/detail/func_exponential.inl
+++ b/glm/detail/func_exponential.inl
@@ -1,7 +1,7 @@
/// @ref core
/// @file glm/detail/func_exponential.inl
-#include "func_vector_relational.hpp"
+#include "../vector_relational.hpp"
#include "_vectorize.hpp"
#include
#include
diff --git a/glm/detail/func_geometric.hpp b/glm/detail/func_geometric.hpp
deleted file mode 100644
index 17df9f2f..00000000
--- a/glm/detail/func_geometric.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/// @ref core
-/// @file glm/detail/func_geometric.hpp
-///
-/// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions
-///
-/// @defgroup core_func_geometric Geometric functions
-/// @ingroup core
-///
-/// Include to use these core features.
-///
-/// These operate on vectors as vectors, not component-wise.
-
-#pragma once
-
-#include "type_vec3.hpp"
-
-namespace glm
-{
- /// @addtogroup core_func_geometric
- /// @{
-
- /// Returns the length of x, i.e., sqrt(x * x).
- ///
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL length man page
- /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions
- template
- GLM_FUNC_DECL T length(vec const& x);
-
- /// Returns the distance betwwen p0 and p1, i.e., length(p0 - p1).
- ///
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL distance man page
- /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions
- template
- GLM_FUNC_DECL T distance(vec const& p0, vec const& p1);
-
- /// Returns the dot product of x and y, i.e., result = x * y.
- ///
- /// @tparam L An integer between 1 and 4 included that qualify the dimension of the vector.
- /// @tparam T Floating-point scalar types.
- ///
- /// @see GLSL dot man page
- /// @see GLSL 4.20.8 specification, section 8.5 Geometric Functions
- template
- GLM_FUNC_DECL T dot(vec const& x, vec