10#ifndef EIGEN_NUMTRAITS_H
11#define EIGEN_NUMTRAITS_H
20 bool use_numeric_limits = std::numeric_limits<T>::is_specialized,
21 bool is_integer = NumTraits<T>::IsInteger>
24 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
25 static int run() {
return std::numeric_limits<T>::digits10; }
31 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
43 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
44 static int run() {
return 0; }
55 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
56 static int run() {
return std::numeric_limits<T>::digits; }
62 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
74 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
75 static int run() {
return 0; }
84template <
typename Tgt,
typename Src>
85EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC
Tgt bit_cast(
const Src&
src) {
86#if EIGEN_HAS_TYPE_TRAITS
88 EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Src>::value, THIS_TYPE_IS_NOT_SUPPORTED);
89 EIGEN_STATIC_ASSERT(std::is_trivially_copyable<Tgt>::value && std::is_default_constructible<Tgt>::value,
90 THIS_TYPE_IS_NOT_SUPPORTED);
93 EIGEN_STATIC_ASSERT(
sizeof(
Src) ==
sizeof(
Tgt), THIS_TYPE_IS_NOT_SUPPORTED);
158 IsInteger = std::numeric_limits<T>::is_integer,
159 IsSigned = std::numeric_limits<T>::is_signed,
176 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
177 static inline Real epsilon()
179 return numext::numeric_limits<T>::epsilon();
182 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
183 static inline int digits10()
188 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
189 static inline int digits()
194 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
195 static inline int min_exponent()
197 return numext::numeric_limits<T>::min_exponent;
200 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
201 static inline int max_exponent()
203 return numext::numeric_limits<T>::max_exponent;
206 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
207 static inline Real dummy_precision()
213 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
214 static inline T highest() {
215 return (numext::numeric_limits<T>::max)();
218 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
219 static inline T lowest() {
220 return IsInteger ? (numext::numeric_limits<T>::min)()
221 :
static_cast<T
>(-(numext::numeric_limits<T>::max)());
224 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
225 static inline T infinity() {
226 return numext::numeric_limits<T>::infinity();
229 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
230 static inline T quiet_NaN() {
231 return numext::numeric_limits<T>::quiet_NaN();
241 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
242 static inline float dummy_precision() {
return 1e-5f; }
247 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
248 static inline double dummy_precision() {
return 1e-12; }
252#ifndef EIGEN_GPU_COMPILE_PHASE
256 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
257 static inline long double dummy_precision() {
return static_cast<long double>(1e-15l); }
259#if defined(EIGEN_ARCH_PPC) && (__LDBL_MANT_DIG__ == 106)
261 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
262 static inline long double epsilon()
265 return static_cast<long double>(2.4651903288156618919116517665087e-32l);
284 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
286 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
288 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
292template<
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
307 RequireInitialization = 1,
313 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
315 EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR
326 RequireInitialization = 1,
333 static inline int digits10() {
return 0; }
336 static inline std::string epsilon();
337 static inline std::string dummy_precision();
338 static inline std::string lowest();
339 static inline std::string highest();
340 static inline std::string infinity();
341 static inline std::string quiet_NaN();
General-purpose arrays with easy API for coefficient-wise operations.
Definition Array.h:47
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
Namespace containing all symbols from the Eigen library.
Definition LDLT.h:16
const int HugeCost
This value means that the cost to evaluate an expression coefficient is either very expensive or cann...
Definition Constants.h:44
const int Dynamic
This value means that a positive quantity (e.g., a size) is not known at compile-time,...
Definition Constants.h:22
Definition NumTraits.h:156
Holds information about the various numeric (i.e.
Definition NumTraits.h:236
Definition NumTraits.h:23
Definition NumTraits.h:54