1
2
3/** \returns an expression of the coefficient-wise absolute value of \c *this
4  *
5  * Example: \include Cwise_abs.cpp
6  * Output: \verbinclude Cwise_abs.out
7  *
8  * \sa abs2()
9  */
10EIGEN_STRONG_INLINE const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived>
11abs() const
12{
13  return derived();
14}
15
16/** \returns an expression of the coefficient-wise squared absolute value of \c *this
17  *
18  * Example: \include Cwise_abs2.cpp
19  * Output: \verbinclude Cwise_abs2.out
20  *
21  * \sa abs(), square()
22  */
23EIGEN_STRONG_INLINE const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived>
24abs2() const
25{
26  return derived();
27}
28
29/** \returns an expression of the coefficient-wise exponential of *this.
30  *
31  * Example: \include Cwise_exp.cpp
32  * Output: \verbinclude Cwise_exp.out
33  *
34  * \sa pow(), log(), sin(), cos()
35  */
36inline const CwiseUnaryOp<internal::scalar_exp_op<Scalar>, const Derived>
37exp() const
38{
39  return derived();
40}
41
42/** \returns an expression of the coefficient-wise logarithm of *this.
43  *
44  * Example: \include Cwise_log.cpp
45  * Output: \verbinclude Cwise_log.out
46  *
47  * \sa exp()
48  */
49inline const CwiseUnaryOp<internal::scalar_log_op<Scalar>, const Derived>
50log() const
51{
52  return derived();
53}
54
55/** \returns an expression of the coefficient-wise square root of *this.
56  *
57  * Example: \include Cwise_sqrt.cpp
58  * Output: \verbinclude Cwise_sqrt.out
59  *
60  * \sa pow(), square()
61  */
62inline const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived>
63sqrt() const
64{
65  return derived();
66}
67
68/** \returns an expression of the coefficient-wise cosine of *this.
69  *
70  * Example: \include Cwise_cos.cpp
71  * Output: \verbinclude Cwise_cos.out
72  *
73  * \sa sin(), acos()
74  */
75inline const CwiseUnaryOp<internal::scalar_cos_op<Scalar>, const Derived>
76cos() const
77{
78  return derived();
79}
80
81
82/** \returns an expression of the coefficient-wise sine of *this.
83  *
84  * Example: \include Cwise_sin.cpp
85  * Output: \verbinclude Cwise_sin.out
86  *
87  * \sa cos(), asin()
88  */
89inline const CwiseUnaryOp<internal::scalar_sin_op<Scalar>, const Derived>
90sin() const
91{
92  return derived();
93}
94
95/** \returns an expression of the coefficient-wise arc cosine of *this.
96  *
97  * Example: \include Cwise_acos.cpp
98  * Output: \verbinclude Cwise_acos.out
99  *
100  * \sa cos(), asin()
101  */
102inline const CwiseUnaryOp<internal::scalar_acos_op<Scalar>, const Derived>
103acos() const
104{
105  return derived();
106}
107
108/** \returns an expression of the coefficient-wise arc sine of *this.
109  *
110  * Example: \include Cwise_asin.cpp
111  * Output: \verbinclude Cwise_asin.out
112  *
113  * \sa sin(), acos()
114  */
115inline const CwiseUnaryOp<internal::scalar_asin_op<Scalar>, const Derived>
116asin() const
117{
118  return derived();
119}
120
121/** \returns an expression of the coefficient-wise tan of *this.
122  *
123  * Example: \include Cwise_tan.cpp
124  * Output: \verbinclude Cwise_tan.out
125  *
126  * \sa cos(), sin()
127  */
128inline const CwiseUnaryOp<internal::scalar_tan_op<Scalar>, Derived>
129tan() const
130{
131  return derived();
132}
133
134
135/** \returns an expression of the coefficient-wise power of *this to the given exponent.
136  *
137  * Example: \include Cwise_pow.cpp
138  * Output: \verbinclude Cwise_pow.out
139  *
140  * \sa exp(), log()
141  */
142inline const CwiseUnaryOp<internal::scalar_pow_op<Scalar>, const Derived>
143pow(const Scalar& exponent) const
144{
145  return CwiseUnaryOp<internal::scalar_pow_op<Scalar>, const Derived>
146          (derived(), internal::scalar_pow_op<Scalar>(exponent));
147}
148
149
150/** \returns an expression of the coefficient-wise inverse of *this.
151  *
152  * Example: \include Cwise_inverse.cpp
153  * Output: \verbinclude Cwise_inverse.out
154  *
155  * \sa operator/(), operator*()
156  */
157inline const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived>
158inverse() const
159{
160  return derived();
161}
162
163/** \returns an expression of the coefficient-wise square of *this.
164  *
165  * Example: \include Cwise_square.cpp
166  * Output: \verbinclude Cwise_square.out
167  *
168  * \sa operator/(), operator*(), abs2()
169  */
170inline const CwiseUnaryOp<internal::scalar_square_op<Scalar>, const Derived>
171square() const
172{
173  return derived();
174}
175
176/** \returns an expression of the coefficient-wise cube of *this.
177  *
178  * Example: \include Cwise_cube.cpp
179  * Output: \verbinclude Cwise_cube.out
180  *
181  * \sa square(), pow()
182  */
183inline const CwiseUnaryOp<internal::scalar_cube_op<Scalar>, const Derived>
184cube() const
185{
186  return derived();
187}
188
189#define EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(METHOD_NAME,FUNCTOR) \
190  inline const CwiseUnaryOp<std::binder2nd<FUNCTOR<Scalar> >, const Derived> \
191  METHOD_NAME(const Scalar& s) const { \
192    return CwiseUnaryOp<std::binder2nd<FUNCTOR<Scalar> >, const Derived> \
193            (derived(), std::bind2nd(FUNCTOR<Scalar>(), s)); \
194  }
195
196EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator==,  std::equal_to)
197EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator!=,  std::not_equal_to)
198EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator<,   std::less)
199EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator<=,  std::less_equal)
200EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator>,   std::greater)
201EIGEN_MAKE_SCALAR_CWISE_UNARY_OP(operator>=,  std::greater_equal)
202
203
204