10 #ifndef EIGEN_MATHFUNCTIONS_H 11 #define EIGEN_MATHFUNCTIONS_H 15 #define EIGEN_PI 3.141592653589793238462643383279502884197169399375105820974944592307816406L 22 #if EIGEN_OS_WINCE && EIGEN_COMP_MSVC && EIGEN_COMP_MSVC<=1500 23 long abs(
long x) {
return (labs(x)); }
24 double abs(
double x) {
return (
fabs(x)); }
25 float abs(
float x) {
return (fabsf(x)); }
26 long double abs(
long double x) {
return (fabsl(x)); }
51 template<
typename T,
typename dummy =
void>
62 typename
always_void<typename
T::Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl>
::type 65 typedef typename T::Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl
type;
68 #define EIGEN_MATHFUNC_IMPL(func, scalar) Eigen::internal::func##_impl<typename Eigen::internal::global_math_functions_filtering_base<scalar>::type> 69 #define EIGEN_MATHFUNC_RETVAL(func, scalar) typename Eigen::internal::func##_retval<typename Eigen::internal::global_math_functions_filtering_base<scalar>::type>::type 86 template<
typename Scalar>
106 static inline T run(
const std::complex<T>& x)
113 template<
typename Scalar>
134 template<
typename Scalar>
154 static inline T run(
const std::complex<T>& x)
161 template<
typename Scalar>
171 template<
typename Scalar>
178 return reinterpret_cast<RealScalar*
>(&
x)[0];
183 return reinterpret_cast<const RealScalar*
>(&
x)[0];
187 template<
typename Scalar>
197 template<
typename Scalar,
bool IsComplex>
204 return reinterpret_cast<RealScalar*
>(&
x)[1];
209 return reinterpret_cast<RealScalar*
>(&
x)[1];
213 template<
typename Scalar>
228 template<
typename Scalar>
231 template<
typename Scalar>
251 template<
typename Scalar>
262 template<
typename Scalar>
272 template<
typename Scalar,
bool IsComplex>
283 template<
typename Scalar>
294 template<
typename Scalar>
305 template<
typename Scalar>
315 template<
typename Scalar,
bool IsComplex>
322 EIGEN_USING_STD_MATH(
abs);
327 template<
typename Scalar>
333 EIGEN_USING_STD_MATH(
abs);
338 template<
typename Scalar>
341 template<
typename Scalar>
353 template<
typename Scalar>
363 template<
typename OldType,
typename NewType>
367 static inline NewType
run(
const OldType& x)
369 return static_cast<NewType
>(
x);
375 template<
typename OldType,
typename NewType>
377 inline NewType
cast(
const OldType& x)
386 #if EIGEN_HAS_CXX11_MATH 387 template<
typename Scalar>
397 template<
typename Scalar>
403 EIGEN_USING_STD_MATH(
floor);
404 EIGEN_USING_STD_MATH(
ceil);
410 template<
typename Scalar>
420 #if EIGEN_HAS_CXX11_MATH 421 template<
typename Scalar>
425 EIGEN_USING_STD_MATH(
arg);
440 template<
typename Scalar>
447 EIGEN_USING_STD_MATH(
arg);
455 template<
typename Scalar>
465 namespace std_fallback {
468 template<
typename Scalar>
472 EIGEN_USING_STD_MATH(
log);
478 template<
typename Scalar>
483 #if EIGEN_HAS_CXX11_MATH 492 template<
typename Scalar>
507 static EIGEN_DEVICE_FUNC
inline result_type
run(
const ScalarX& x,
const ScalarY&
y)
509 EIGEN_USING_STD_MATH(
pow);
514 template<
typename ScalarX,
typename ScalarY>
518 static EIGEN_DEVICE_FUNC
inline ScalarX
run(ScalarX x, ScalarY
y)
543 template<
typename Scalar>
546 template<
typename Scalar>
558 static inline Scalar
run(
const Scalar& x,
const Scalar& y)
562 static inline Scalar
run()
577 enum { middle = (
lower + upper) / 2,
585 template<
unsigned int n,
587 int upper =
sizeof(
unsigned int) * CHAR_BIT - 1,
591 template<
unsigned int n,
int lower,
int upper>
597 template<
unsigned int n,
int lower,
int upper>
603 template<
unsigned int n,
int lower,
int upper>
606 enum {
value = (n >= ((
unsigned int)(1) << (lower+1))) ? lower+1 : lower };
609 template<
unsigned int n,
int lower,
int upper>
615 template<
typename Scalar>
627 typedef typename conditional<(ScalarU(-1) > unsigned(-1)), ScalarU,
unsigned>::
type ScalarX;
631 ScalarX range = ScalarX(y) - ScalarX(x);
634 ScalarX multiplier = 1;
635 const unsigned rand_max = RAND_MAX;
636 if (range <= rand_max) divisor = (rand_max + 1) / (range + 1);
637 else multiplier = 1 + range / (rand_max + 1);
640 offset = (unsigned(std::rand()) * multiplier) / divisor;
641 }
while (offset > range);
642 return Scalar(ScalarX(x) + offset);
647 #ifdef EIGEN_MAKING_DOCS 651 scalar_bits =
sizeof(
Scalar) * CHAR_BIT,
660 template<
typename Scalar>
671 return Scalar(random<RealScalar>(), random<RealScalar>());
675 template<
typename Scalar>
681 template<
typename Scalar>
690 #if (EIGEN_HAS_CXX11_MATH && !(EIGEN_COMP_GNUC_STRICT && __FINITE_MATH_ONLY__)) || (EIGEN_COMP_MSVC>=1800) || (EIGEN_COMP_CLANG) 691 #define EIGEN_USE_STD_FPCLASSIFY 1 693 #define EIGEN_USE_STD_FPCLASSIFY 0 703 typename internal::enable_if<internal::is_integral<T>::value,
bool>
::type 708 typename internal::enable_if<internal::is_integral<T>::value,
bool>
::type 718 #elif EIGEN_USE_STD_FPCLASSIFY 733 #elif EIGEN_USE_STD_FPCLASSIFY 748 #elif EIGEN_USE_STD_FPCLASSIFY 756 #if (!EIGEN_USE_STD_FPCLASSIFY) 760 template<
typename T> EIGEN_DEVICE_FUNC
bool isinf_msvc_helper(
T x)
762 return _fpclass(x)==_FPCLASS_NINF || _fpclass(x)==_FPCLASS_PINF;
766 EIGEN_DEVICE_FUNC
inline bool isnan_impl(
const long double& x) {
return _isnan(x)!=0; }
767 EIGEN_DEVICE_FUNC
inline bool isnan_impl(
const double& x) {
return _isnan(x)!=0; }
768 EIGEN_DEVICE_FUNC
inline bool isnan_impl(
const float& x) {
return _isnan(x)!=0; }
770 EIGEN_DEVICE_FUNC
inline bool isinf_impl(
const long double& x) {
return isinf_msvc_helper(x); }
771 EIGEN_DEVICE_FUNC
inline bool isinf_impl(
const double& x) {
return isinf_msvc_helper(x); }
772 EIGEN_DEVICE_FUNC
inline bool isinf_impl(
const float& x) {
return isinf_msvc_helper(x); }
774 #elif (defined __FINITE_MATH_ONLY__ && __FINITE_MATH_ONLY__ && EIGEN_COMP_GNUC) 776 #if EIGEN_GNUC_AT_LEAST(5,0) 777 #define EIGEN_TMP_NOOPT_ATTRIB EIGEN_DEVICE_FUNC inline __attribute__((optimize("no-finite-math-only"))) 781 #define EIGEN_TMP_NOOPT_ATTRIB EIGEN_DEVICE_FUNC inline __attribute__((noinline,optimize("no-finite-math-only"))) 784 template<> EIGEN_TMP_NOOPT_ATTRIB
bool isnan_impl(
const long double& x) {
return __builtin_isnan(x); }
785 template<> EIGEN_TMP_NOOPT_ATTRIB
bool isnan_impl(
const double& x) {
return __builtin_isnan(x); }
786 template<> EIGEN_TMP_NOOPT_ATTRIB
bool isnan_impl(
const float& x) {
return __builtin_isnan(x); }
787 template<> EIGEN_TMP_NOOPT_ATTRIB
bool isinf_impl(
const double& x) {
return __builtin_isinf(x); }
788 template<> EIGEN_TMP_NOOPT_ATTRIB
bool isinf_impl(
const float& x) {
return __builtin_isinf(x); }
789 template<> EIGEN_TMP_NOOPT_ATTRIB
bool isinf_impl(
const long double& x) {
return __builtin_isinf(x); }
791 #undef EIGEN_TMP_NOOPT_ATTRIB 798 template<
typename T> EIGEN_DEVICE_FUNC
bool isfinite_impl(
const std::complex<T>& x);
799 template<
typename T> EIGEN_DEVICE_FUNC
bool isnan_impl(
const std::complex<T>& x);
800 template<
typename T> EIGEN_DEVICE_FUNC
bool isinf_impl(
const std::complex<T>& x);
812 #ifndef __CUDA_ARCH__ 817 EIGEN_USING_STD_MATH(
min);
825 EIGEN_USING_STD_MATH(
max);
833 return y < x ? y :
x;
845 return x < y ? y :
x;
856 template<
typename Scalar>
863 template<
typename Scalar>
870 template<
typename Scalar>
877 template<
typename Scalar>
884 template<
typename Scalar>
891 template<
typename Scalar>
898 template<
typename Scalar>
905 template<
typename Scalar>
912 template<
typename Scalar>
919 template<
typename Scalar>
926 template<
typename Scalar>
933 template<
typename Scalar>
942 float log1p(
const float &x) { return ::log1pf(x); }
948 template<
typename ScalarX,
typename ScalarY>
959 template<
typename Scalar>
970 EIGEN_USING_STD_MATH(
floor);
976 float floor(
const float &x) { return ::floorf(x); }
986 EIGEN_USING_STD_MATH(
ceil);
992 float ceil(
const float &x) { return ::ceilf(x); }
1005 static const int table[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
1011 return table[(v * 0x07C4ACDD
U) >> 27];
1023 template<
typename T>
1027 EIGEN_USING_STD_MATH(
sqrt);
1031 template<
typename T>
1034 EIGEN_USING_STD_MATH(
log);
1040 float log(
const float &x) { return ::logf(x); }
1046 template<
typename T>
1050 EIGEN_USING_STD_MATH(
abs);
1054 template<
typename T>
1061 #if defined(__SYCL_DEVICE_ONLY__) 1064 #endif // defined(__SYCL_DEVICE_ONLY__) 1068 float abs(
const float &x) { return ::fabsf(x); }
1074 float abs(
const std::complex<float>& x) {
1075 return ::hypotf(x.real(), x.imag());
1079 double abs(
const std::complex<double>& x) {
1084 template<
typename T>
1087 EIGEN_USING_STD_MATH(
exp);
1093 float exp(
const float &x) { return ::expf(x); }
1099 template<
typename T>
1102 EIGEN_USING_STD_MATH(
cos);
1108 float cos(
const float &x) { return ::cosf(x); }
1114 template<
typename T>
1117 EIGEN_USING_STD_MATH(
sin);
1123 float sin(
const float &x) { return ::sinf(x); }
1129 template<
typename T>
1132 EIGEN_USING_STD_MATH(
tan);
1138 float tan(
const float &x) { return ::tanf(x); }
1144 template<
typename T>
1147 EIGEN_USING_STD_MATH(
acos);
1153 float acos(
const float &x) { return ::acosf(x); }
1159 template<
typename T>
1162 EIGEN_USING_STD_MATH(
asin);
1168 float asin(
const float &x) { return ::asinf(x); }
1174 template<
typename T>
1177 EIGEN_USING_STD_MATH(
atan);
1183 float atan(
const float &x) { return ::atanf(x); }
1190 template<
typename T>
1193 EIGEN_USING_STD_MATH(
cosh);
1199 float cosh(
const float &x) { return ::coshf(x); }
1205 template<
typename T>
1208 EIGEN_USING_STD_MATH(
sinh);
1214 float sinh(
const float &x) { return ::sinhf(x); }
1220 template<
typename T>
1223 EIGEN_USING_STD_MATH(
tanh);
1227 #if (!defined(__CUDACC__)) && EIGEN_FAST_MATH 1234 float tanh(
const float &x) { return ::tanhf(x); }
1240 template <
typename T>
1243 EIGEN_USING_STD_MATH(
fmod);
1250 float fmod(
const float&
a,
const float&
b) {
1251 return ::fmodf(a, b);
1256 double fmod(
const double& a,
const double& b) {
1265 template<
typename T>
1271 template<
typename T>
1277 template<
typename T>
1287 template<
typename Scalar,
1292 template<
typename Scalar>
1296 template<
typename OtherScalar> EIGEN_DEVICE_FUNC
1309 return x <= y ||
isApprox(x, y, prec);
1313 template<
typename Scalar>
1317 template<
typename OtherScalar> EIGEN_DEVICE_FUNC
1334 template<
typename Scalar>
1338 template<
typename OtherScalar> EIGEN_DEVICE_FUNC
1350 template<
typename Scalar>
1353 template<
typename Scalar,
typename OtherScalar> EIGEN_DEVICE_FUNC
1360 template<
typename Scalar> EIGEN_DEVICE_FUNC
1367 template<
typename Scalar> EIGEN_DEVICE_FUNC
1382 return random<int>(0,1)==0 ?
false :
true;
1390 template<
typename OtherScalar> EIGEN_DEVICE_FUNC
1415 #endif // EIGEN_MATHFUNCTIONS_H NumTraits< Scalar >::Real RealScalar
static EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, const RealScalar &prec)
#define EIGEN_ALWAYS_INLINE
static Scalar run(const Scalar &x)
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
const AutoDiffScalar< DerType > & conj(const AutoDiffScalar< DerType > &x)
NumTraits< Scalar >::Real RealScalar
static EIGEN_DEVICE_FUNC RealScalar & run(Scalar &x)
EIGEN_DEVICE_FUNC internal::add_const_on_value_type< EIGEN_MATHFUNC_RETVAL(real_ref, Scalar) >::type real_ref(const Scalar &x)
#define EIGEN_NOT_A_MACRO
NumTraits< Scalar >::Real type
static EIGEN_DEVICE_FUNC Scalar run(const Scalar &x)
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
static EIGEN_DEVICE_FUNC const RealScalar & run(const Scalar &x)
static EIGEN_DEVICE_FUNC bool isApproxOrLessThan(const bool &x, const bool &y, const bool &)
EIGEN_DEVICE_FUNC bool() isfinite(const T &x)
EIGEN_DEVICE_FUNC const ExpReturnType exp() const
static EIGEN_DEVICE_FUNC bool isApprox(bool x, bool y, bool)
static Scalar run(const Scalar &x)
EIGEN_DEVICE_FUNC internal::enable_if< internal::is_integral< T >::value, bool >::type isnan_impl(const T &)
NumTraits< Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC const TanhReturnType tanh() const
EIGEN_DEVICE_FUNC const LogReturnType log() const
#define EIGEN_PLAIN_ENUM_MAX(a, b)
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate offset
EIGEN_DEVICE_FUNC const SqrtReturnType sqrt() const
EIGEN_DEVICE_FUNC const CoshReturnType cosh() const
Namespace containing all symbols from the Eigen library.
NumTraits< Scalar >::Real type
DerType::Scalar imag(const AutoDiffScalar< DerType > &)
static Scalar run(const Scalar &x, const Scalar &y)
static Scalar run(const Scalar &x, const Scalar &y)
static EIGEN_DEVICE_FUNC bool isApprox(const Scalar &x, const Scalar &y, const RealScalar &prec)
Holds information about the various numeric (i.e. scalar) types allowed by Eigen. ...
T generic_fast_tanh_float(const T &a_x)
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
static EIGEN_DEVICE_FUNC const RealScalar & run(const Scalar &x)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T maxi(const T &x, const T &y)
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &)
NumTraits< Scalar >::Real & type
NumTraits< Scalar >::Real RealScalar
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
EIGEN_DEVICE_FUNC internal::enable_if< internal::is_integral< T >::value, bool >::type isfinite_impl(const T &)
static EIGEN_DEVICE_FUNC bool isApprox(const Scalar &x, const Scalar &y, const RealScalar &)
NumTraits< Scalar >::Real RealScalar
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
static EIGEN_DEVICE_FUNC RealScalar & run(Scalar &x)
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
EIGEN_DEVICE_FUNC const RoundReturnType round() const
EIGEN_DEVICE_FUNC const CosReturnType cos() const
EIGEN_DEVICE_FUNC const CeilReturnType ceil() const
EIGEN_STRONG_INLINE bool equal_strict(const X &x, const Y &y)
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE internal::enable_if< NumTraits< T >::IsSigned||NumTraits< T >::IsComplex, typename NumTraits< T >::Real >::type abs(const T &x)
static EIGEN_DEVICE_FUNC Scalar run(Scalar &)
static EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const bool &x, const bool &, const bool &)
EIGEN_DEVICE_FUNC const Log1pReturnType log1p() const
static EIGEN_DEVICE_FUNC Scalar run(const Scalar &x)
static EIGEN_DEVICE_FUNC result_type run(const ScalarX &x, const ScalarY &y)
EIGEN_DEVICE_FUNC const SinhReturnType sinh() const
static Scalar run(const Scalar &x, const Scalar &y)
static EIGEN_DEVICE_FUNC Scalar run(const Scalar &x)
static EIGEN_DEVICE_FUNC ScalarX run(ScalarX x, ScalarY y)
NumTraits< Scalar >::Real type
static EIGEN_DEVICE_FUNC NewType run(const OldType &x)
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
NumTraits< Scalar >::Real & type
EIGEN_DEVICE_FUNC NewType cast(const OldType &x)
Eigen::Triplet< double > T
EIGEN_DEVICE_FUNC Scalar log1p(const Scalar &x)
static EIGEN_DEVICE_FUNC bool isApprox(const Scalar &x, const Scalar &y, const RealScalar &prec)
EIGEN_DEVICE_FUNC const AtanReturnType atan() const
NumTraits< Scalar >::Real RealScalar
NumTraits< Scalar >::Real type
EIGEN_DEVICE_FUNC internal::add_const_on_value_type< EIGEN_MATHFUNC_RETVAL(imag_ref, Scalar) >::type imag_ref(const Scalar &x)
#define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE)
static EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const OtherScalar &y, const RealScalar &prec)
static EIGEN_DEVICE_FUNC bool isMuchSmallerThan(const Scalar &x, const Scalar &, const RealScalar &)
EIGEN_DEVICE_FUNC bool() isnan(const T &x)
ScalarBinaryOpTraits< ScalarX, ScalarY, internal::scalar_pow_op< ScalarX, ScalarY > >::ReturnType result_type
EIGEN_DEVICE_FUNC const TanReturnType tan() const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE internal::enable_if<!(NumTraits< T >::IsSigned||NumTraits< T >::IsComplex), typename NumTraits< T >::Real >::type abs(const T &x)
EIGEN_DEVICE_FUNC bool() isinf(const T &x)
NumTraits< Scalar >::Real RealScalar
NumTraits< Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T mini(const T &x, const T &y)
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Abs2ReturnType abs2() const
EIGEN_DEVICE_FUNC internal::pow_impl< ScalarX, ScalarY >::result_type pow(const ScalarX &x, const ScalarY &y)
EIGEN_DEVICE_FUNC const AcosReturnType acos() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArgReturnType arg() const
NumTraits< Scalar >::Real RealScalar
NumTraits< Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC internal::enable_if< internal::is_integral< T >::value, bool >::type isinf_impl(const T &)
NumTraits< Scalar >::Real type
const mpreal hypot(const mpreal &x, const mpreal &y, mp_rnd_t rnd_mode=mpreal::get_default_rnd())
NumTraits< Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC const FloorReturnType floor() const
#define EIGEN_PLAIN_ENUM_MIN(a, b)
NumTraits< Scalar >::Real type
NumTraits< Scalar >::Real RealScalar
static constexpr int log2(size_t n, int k=0)
static EIGEN_DEVICE_FUNC bool isApproxOrLessThan(const Scalar &x, const Scalar &y, const RealScalar &prec)
const mpreal random(unsigned int seed=0)
NumTraits< Scalar >::Real RealScalar
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
EIGEN_DEVICE_FUNC const ImagReturnType imag() const
Determines whether the given binary operation of two numeric types is allowed and what the scalar ret...
T::Eigen_BaseClassForSpecializationOfGlobalMathFuncImpl type
EIGEN_DEVICE_FUNC const SinReturnType sin() const
static EIGEN_DEVICE_FUNC const Scalar run(const Scalar &)
NumTraits< Scalar >::Real RealScalar
EIGEN_DEVICE_FUNC bool isApprox(const Scalar &x, const Scalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
EIGEN_DEVICE_FUNC bool isApproxOrLessThan(const Scalar &x, const Scalar &y, const typename NumTraits< Scalar >::Real &precision=NumTraits< Scalar >::dummy_precision())
void run(Expr &expr, Dev &dev)
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
const AutoDiffScalar< DerType > & real(const AutoDiffScalar< DerType > &x)
NumTraits< Scalar >::Real RealScalar
#define EIGEN_MATHFUNC_IMPL(func, scalar)
static EIGEN_DEVICE_FUNC bool isApproxOrLessThan(const Scalar &x, const Scalar &y, const RealScalar &)
static EIGEN_DEVICE_FUNC RealScalar run(const Scalar &x)
EIGEN_MATHFUNC_RETVAL(random, Scalar) random(const Scalar &x
EIGEN_DEVICE_FUNC const AsinReturnType asin() const
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE T fmod(const T &a, const T &b)
ScalarWithExceptions conj(const ScalarWithExceptions &x)
NumTraits< Scalar >::Real RealScalar