1#include "_vectorize.hpp"
8 template<
typename genType>
9 GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType radians(genType degrees)
11 GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559,
"'radians' only accept floating-point input");
13 return degrees *
static_cast<genType
>(0.01745329251994329576923690768489);
16 template<length_t L,
typename T, qualifier Q>
23 template<
typename genType>
24 GLM_FUNC_QUALIFIER GLM_CONSTEXPR genType degrees(genType radians)
26 GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559,
"'degrees' only accept floating-point input");
28 return radians *
static_cast<genType
>(57.295779513082320876798154814105);
31 template<length_t L,
typename T, qualifier Q>
40 template<length_t L,
typename T, qualifier Q>
49 template<length_t L,
typename T, qualifier Q>
58 template<length_t L,
typename T, qualifier Q>
67 template<length_t L,
typename T, qualifier Q>
76 template<length_t L,
typename T, qualifier Q>
83 template<
typename genType>
84 GLM_FUNC_QUALIFIER genType atan(genType y, genType x)
86 GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559,
"'atan' only accept floating-point input");
88 return ::std::atan2(y, x);
91 template<length_t L,
typename T, qualifier Q>
99 template<length_t L,
typename T, qualifier Q>
108 template<length_t L,
typename T, qualifier Q>
117 template<length_t L,
typename T, qualifier Q>
126 template<length_t L,
typename T, qualifier Q>
133# if GLM_HAS_CXX11_STL
136 template<
typename genType>
137 GLM_FUNC_QUALIFIER genType asinh(genType x)
139 GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559,
"'asinh' only accept floating-point input");
141 return (x <
static_cast<genType
>(0) ?
static_cast<genType
>(-1) : (x >
static_cast<genType
>(0) ?
static_cast<genType
>(1) :
static_cast<genType
>(0))) *
log(std::abs(x) +
sqrt(
static_cast<genType
>(1) + x * x));
145 template<length_t L,
typename T, qualifier Q>
152# if GLM_HAS_CXX11_STL
155 template<
typename genType>
156 GLM_FUNC_QUALIFIER genType acosh(genType x)
158 GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559,
"'acosh' only accept floating-point input");
160 if(x <
static_cast<genType
>(1))
161 return static_cast<genType
>(0);
162 return log(x +
sqrt(x * x -
static_cast<genType
>(1)));
166 template<length_t L,
typename T, qualifier Q>
173# if GLM_HAS_CXX11_STL
176 template<
typename genType>
177 GLM_FUNC_QUALIFIER genType atanh(genType x)
179 GLM_STATIC_ASSERT(std::numeric_limits<genType>::is_iec559,
"'atanh' only accept floating-point input");
181 if(std::abs(x) >=
static_cast<genType
>(1))
183 return static_cast<genType
>(0.5) *
log((
static_cast<genType
>(1) + x) / (
static_cast<genType
>(1) - x));
187 template<length_t L,
typename T, qualifier Q>
194#if GLM_CONFIG_SIMD == GLM_ENABLE
195# include "func_trigonometric_simd.inl"
GLM_FUNC_QUALIFIER vec< L, T, Q > sqrt(vec< L, T, Q > const &x)
Definition func_exponential.inl:128
GLM_FUNC_QUALIFIER vec< L, T, Q > log(vec< L, T, Q > const &x)
Definition func_exponential.inl:88
GLM_FUNC_QUALIFIER vec< L, T, Q > tanh(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:127
GLM_FUNC_QUALIFIER vec< L, T, Q > sin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:41
GLM_FUNC_QUALIFIER vec< L, T, Q > cos(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:50
GLM_FUNC_QUALIFIER vec< L, T, Q > sinh(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:109
GLM_FUNC_QUALIFIER vec< L, T, Q > asin(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:68
GLM_FUNC_QUALIFIER vec< L, T, Q > cosh(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:118
GLM_FUNC_QUALIFIER vec< L, T, Q > tan(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:59
GLM_FUNC_QUALIFIER vec< L, T, Q > acos(vec< L, T, Q > const &v)
Definition func_trigonometric.inl:77
Core features
Definition common.hpp:21
Definition _vectorize.hpp:7
Definition _vectorize.hpp:46
Definition qualifier.hpp:35