![]() |
Eigen
3.4.1 (git rev 28ded8800c26864e537852658428ab44c8399e87)
|
#include <Eigen/src/Core/NumTraits.h>
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
| T | the numeric type at hand |
This class stores enums, typedefs and static methods giving information about a numeric type.
The provided data consists of:
Real, giving the "real part" type of T. If T is already real, then Real is just a typedef to T. If T is std::complex<U> then Real is a typedef to U. NonInteger, giving the type that should be used for operations producing non-integral values, such as quotients, square roots, etc. If T is a floating-point type, then this typedef just gives T again. Note however that many Eigen functions such as internal::sqrt simply refuse to take integers. Outside of a few cases, Eigen doesn't do automatic type promotion. Thus, this typedef is only intended as a helper for code that needs to explicitly promote types. Literal giving the type to use for numeric literals such as "2" or "0.5". For instance, for std::complex<U>, Literal is defined as U. Of course, this type must be fully compatible with T. In doubt, just use T here. Nested giving the type to use to nest a value inside of the expression tree. If you don't know what this means, just use T here. IsComplex. It is equal to 1 if T is a std::complex type, and to 0 otherwise. IsInteger. It is equal to 1 if T is an integer type such as int, and to 0 otherwise. ReadCost, AddCost and MulCost representing a rough estimate of the number of CPU cycles needed to by move / add / mul instructions respectively, assuming the data is already stored in CPU registers. Stay vague here. No need to do architecture-specific stuff. If you don't know what this means, just use Eigen::HugeCost. IsSigned. It is equal to 1 if T is a signed type and to 0 if T is unsigned. RequireInitialization. It is equal to 1 if the constructor of the numeric type T must be called, and to 0 if it is safe not to call it. Default is 0 if T is an arithmetic type, and 1 otherwise. epsilon() function which, unlike std::numeric_limits::epsilon(), it returns a Real instead of a T. dummy_precision() function returning a weak epsilon value. It is mainly used as a default value by the fuzzy comparison operators. highest() and lowest() functions returning the highest and lowest possible values respectively. digits() function returning the number of radix digits (non-sign digits for integers, mantissa for floating-point). This is the analogue of std::numeric_limits<T>::digits which is used as the default implementation if specialized. digits10() function returning the number of decimal digits that can be represented without change. This is the analogue of std::numeric_limits<T>::digits10 which is used as the default implementation if specialized. min_exponent() and max_exponent() functions returning the highest and lowest possible values, respectively, such that the radix raised to the power exponent-1 is a normalized floating-point number. These are equivalent to std::numeric_limits<T>::min_exponent/ std::numeric_limits<T>::max_exponent. infinity() function returning a representation of positive infinity, if available. quiet_NaN function returning a non-signaling "not-a-number", if available.