Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef EIGEN_GLOBAL_FUNCTIONS_H
00027 #define EIGEN_GLOBAL_FUNCTIONS_H
00028
00029 #define EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(NAME,FUNCTOR) \
00030 template<typename Derived> \
00031 inline const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, Derived> \
00032 NAME(const Eigen::ArrayBase<Derived>& x) { \
00033 return x.derived(); \
00034 }
00035
00036 #define EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(NAME,FUNCTOR) \
00037 \
00038 template<typename Derived> \
00039 struct NAME##_retval<ArrayBase<Derived> > \
00040 { \
00041 typedef const Eigen::CwiseUnaryOp<Eigen::internal::FUNCTOR<typename Derived::Scalar>, Derived> type; \
00042 }; \
00043 template<typename Derived> \
00044 struct NAME##_impl<ArrayBase<Derived> > \
00045 { \
00046 static inline typename NAME##_retval<ArrayBase<Derived> >::type run(const Eigen::ArrayBase<Derived>& x) \
00047 { \
00048 return x.derived(); \
00049 } \
00050 };
00051
00052
00053 namespace std
00054 {
00055 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(real,scalar_real_op)
00056 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(imag,scalar_imag_op)
00057 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(sin,scalar_sin_op)
00058 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(cos,scalar_cos_op)
00059 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(exp,scalar_exp_op)
00060 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(log,scalar_log_op)
00061 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(abs,scalar_abs_op)
00062 EIGEN_ARRAY_DECLARE_GLOBAL_STD_UNARY(sqrt,scalar_sqrt_op)
00063
00064 template<typename Derived>
00065 inline const Eigen::CwiseUnaryOp<Eigen::internal::scalar_pow_op<typename Derived::Scalar>, Derived>
00066 pow(const Eigen::ArrayBase<Derived>& x, const typename Derived::Scalar& exponent) { \
00067 return x.derived().pow(exponent); \
00068 }
00069 }
00070
00071 namespace Eigen
00072 {
00073 namespace internal
00074 {
00075 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(real,scalar_real_op)
00076 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(imag,scalar_imag_op)
00077 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(sin,scalar_sin_op)
00078 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(cos,scalar_cos_op)
00079 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(exp,scalar_exp_op)
00080 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(log,scalar_log_op)
00081 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(abs,scalar_abs_op)
00082 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(abs2,scalar_abs2_op)
00083 EIGEN_ARRAY_DECLARE_GLOBAL_EIGEN_UNARY(sqrt,scalar_sqrt_op)
00084 }
00085 }
00086
00087
00088
00089 #endif // EIGEN_GLOBAL_FUNCTIONS_H