1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
32b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> AbsReturnType;
42b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_arg_op<Scalar>, const Derived> ArgReturnType;
52b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> Abs2ReturnType;
62b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> SqrtReturnType;
72b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_rsqrt_op<Scalar>, const Derived> RsqrtReturnType;
82b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_sign_op<Scalar>, const Derived> SignReturnType;
92b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> InverseReturnType;
102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_boolean_not_op<Scalar>, const Derived> BooleanNotReturnType;
112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_exp_op<Scalar>, const Derived> ExpReturnType;
132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_log_op<Scalar>, const Derived> LogReturnType;
142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_log1p_op<Scalar>, const Derived> Log1pReturnType;
152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_log10_op<Scalar>, const Derived> Log10ReturnType;
162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_cos_op<Scalar>, const Derived> CosReturnType;
172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_sin_op<Scalar>, const Derived> SinReturnType;
182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_tan_op<Scalar>, const Derived> TanReturnType;
192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_acos_op<Scalar>, const Derived> AcosReturnType;
202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_asin_op<Scalar>, const Derived> AsinReturnType;
212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_atan_op<Scalar>, const Derived> AtanReturnType;
222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_tanh_op<Scalar>, const Derived> TanhReturnType;
232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_sinh_op<Scalar>, const Derived> SinhReturnType;
242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_cosh_op<Scalar>, const Derived> CoshReturnType;
252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_square_op<Scalar>, const Derived> SquareReturnType;
262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_cube_op<Scalar>, const Derived> CubeReturnType;
272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_round_op<Scalar>, const Derived> RoundReturnType;
282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_floor_op<Scalar>, const Derived> FloorReturnType;
292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_ceil_op<Scalar>, const Derived> CeilReturnType;
302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_isnan_op<Scalar>, const Derived> IsNaNReturnType;
312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_isinf_op<Scalar>, const Derived> IsInfReturnType;
322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_isfinite_op<Scalar>, const Derived> IsFiniteReturnType;
332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise absolute value of \c *this
35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_abs.cpp
37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_abs.out
38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
392b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_abs">Math functions</a>, abs2()
40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
412b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_STRONG_INLINE const AbsReturnType
43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathabs() const
44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
452b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return AbsReturnType(derived());
462b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
472b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise phase angle of \c *this
492b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
502b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_arg.cpp
512b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_arg.out
522b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
532b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa abs()
542b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
552b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
562b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_STRONG_INLINE const ArgReturnType
572b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangarg() const
582b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
592b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return ArgReturnType(derived());
60c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
61c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
62c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise squared absolute value of \c *this
63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_abs2.cpp
65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_abs2.out
66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
672b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_abs2">Math functions</a>, abs(), square()
68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
692b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
702b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_STRONG_INLINE const Abs2ReturnType
71c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathabs2() const
72c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
732b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return Abs2ReturnType(derived());
74c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
75c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
76c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise exponential of *this.
77c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
782b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise exponential. The function MatrixBase::exp() in the
792b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * unsupported module MatrixFunctions computes the matrix exponential.
802b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
81c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_exp.cpp
82c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_exp.out
83c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
842b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_exp">Math functions</a>, pow(), log(), sin(), cos()
85c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
862b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
872b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const ExpReturnType
88c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathexp() const
89c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
902b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return ExpReturnType(derived());
91c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
92c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
93c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise logarithm of *this.
94c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
952b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise logarithm. The function MatrixBase::log() in the
962b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * unsupported module MatrixFunctions computes the matrix logarithm.
972b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
98c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_log.cpp
99c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_log.out
100c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
1012b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_log">Math functions</a>, exp()
102c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
1032b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
1042b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const LogReturnType
105c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathlog() const
106c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
1072b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return LogReturnType(derived());
1082b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
1092b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
1102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise logarithm of 1 plus \c *this.
1112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * In exact arithmetic, \c x.log() is equivalent to \c (x+1).log(),
1132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * however, with finite precision, this function is much more accurate when \c x is close to zero.
1142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_log1p">Math functions</a>, log()
1162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
1172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
1182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const Log1pReturnType
1192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanglog1p() const
1202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
1212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return Log1pReturnType(derived());
1222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
1232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
1242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise base-10 logarithm of *this.
1252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise base-10 logarithm.
1272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_log10.cpp
1292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_log10.out
1302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_log10">Math functions</a>, log()
1322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
1332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
1342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const Log10ReturnType
1352b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanglog10() const
1362b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
1372b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return Log10ReturnType(derived());
138c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
139c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
140c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise square root of *this.
141c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
1422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise square root. The function MatrixBase::sqrt() in the
1432b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * unsupported module MatrixFunctions computes the matrix square root.
1442b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
145c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_sqrt.cpp
146c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_sqrt.out
147c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
1482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_sqrt">Math functions</a>, pow(), square()
149c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
1502b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
1512b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const SqrtReturnType
152c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathsqrt() const
153c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
1542b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return SqrtReturnType(derived());
155c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
156c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
1572b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise inverse square root of *this.
1582b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1592b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise inverse square root.
1602b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1612b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_sqrt.cpp
1622b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_sqrt.out
1632b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1642b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa pow(), square()
1652b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
1662b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
1672b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const RsqrtReturnType
1682b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangrsqrt() const
1692b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
1702b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return RsqrtReturnType(derived());
1712b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
1722b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
1732b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise signum of *this.
1742b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1752b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise signum.
1762b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1772b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_sign.cpp
1782b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_sign.out
1792b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
1802b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa pow(), square()
1812b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
1822b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
1832b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const SignReturnType
1842b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangsign() const
1852b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
1862b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return SignReturnType(derived());
1872b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
1882b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
1892b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
190c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise cosine of *this.
191c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
1922b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise cosine. The function MatrixBase::cos() in the
1932b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * unsupported module MatrixFunctions computes the matrix cosine.
1942b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
195c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_cos.cpp
196c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_cos.out
197c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
1982b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_cos">Math functions</a>, sin(), acos()
199c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
2002b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
2012b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const CosReturnType
202c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathcos() const
203c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
2042b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return CosReturnType(derived());
205c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
206c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
207c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
208c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise sine of *this.
209c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
2102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * This function computes the coefficient-wise sine. The function MatrixBase::sin() in the
2112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * unsupported module MatrixFunctions computes the matrix sine.
2122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
213c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_sin.cpp
214c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_sin.out
215c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
2162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_sin">Math functions</a>, cos(), asin()
217c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
2182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
2192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const SinReturnType
220c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathsin() const
221c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
2222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return SinReturnType(derived());
2232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
2242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
2252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise tan of *this.
2262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
2272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_tan.cpp
2282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_tan.out
2292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
2302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_tan">Math functions</a>, cos(), sin()
2312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
2322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
2332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const TanReturnType
2342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtan() const
2352b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
2362b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return TanReturnType(derived());
2372b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
2382b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
2392b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise arc tan of *this.
2402b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
2412b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_atan.cpp
2422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_atan.out
2432b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
2442b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_atan">Math functions</a>, tan(), asin(), acos()
2452b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
2462b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
2472b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const AtanReturnType
2482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangatan() const
2492b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
2502b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return AtanReturnType(derived());
251c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
252c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
253c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise arc cosine of *this.
254c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
255c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_acos.cpp
256c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_acos.out
257c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
2582b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_acos">Math functions</a>, cos(), asin()
259c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
2602b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
2612b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const AcosReturnType
262c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathacos() const
263c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
2642b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return AcosReturnType(derived());
265c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
266c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
267c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise arc sine of *this.
268c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
269c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_asin.cpp
270c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_asin.out
271c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
2722b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_asin">Math functions</a>, sin(), acos()
273c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
2742b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
2752b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const AsinReturnType
276c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathasin() const
277c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
2782b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return AsinReturnType(derived());
279c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
280c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
2812b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise hyperbolic tan of *this.
282c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
2832b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_tanh.cpp
2842b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_tanh.out
285c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
2862b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_tanh">Math functions</a>, tan(), sinh(), cosh()
287c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
2882b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
2892b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const TanhReturnType
2902b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtanh() const
291c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
2922b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return TanhReturnType(derived());
293c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
294c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
2952b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise hyperbolic sin of *this.
296c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
2972b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_sinh.cpp
2982b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_sinh.out
299c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
3002b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_sinh">Math functions</a>, sin(), tanh(), cosh()
301c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
3022b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
3032b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const SinhReturnType
3042b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangsinh() const
305c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
3062b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return SinhReturnType(derived());
307c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
308c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
3092b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise hyperbolic cos of *this.
3102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_cosh.cpp
3122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_cosh.out
3132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_cosh">Math functions</a>, tan(), sinh(), cosh()
3152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
3162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
3172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const CoshReturnType
3182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangcosh() const
3192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
3202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return CoshReturnType(derived());
3212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
322c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
323c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise inverse of *this.
324c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
325c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_inverse.cpp
326c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_inverse.out
327c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
328c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * \sa operator/(), operator*()
329c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
3302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
3312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const InverseReturnType
332c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathinverse() const
333c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
3342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return InverseReturnType(derived());
335c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
336c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
337c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise square of *this.
338c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
339c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_square.cpp
340c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_square.out
341c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
3422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_squareE">Math functions</a>, abs2(), cube(), pow()
343c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
3442b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
3452b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const SquareReturnType
346c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathsquare() const
347c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
3482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return SquareReturnType(derived());
349c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
350c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
351c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath/** \returns an expression of the coefficient-wise cube of *this.
352c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
353c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Example: \include Cwise_cube.cpp
354c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  * Output: \verbinclude Cwise_cube.out
355c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  *
3562b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_cube">Math functions</a>, square(), pow()
357c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  */
3582b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
3592b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const CubeReturnType
360c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathcube() const
361c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
3622b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return CubeReturnType(derived());
3632b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
3642b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
3652b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise round of *this.
3662b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3672b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_round.cpp
3682b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_round.out
3692b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3702b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_round">Math functions</a>, ceil(), floor()
3712b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
3722b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
3732b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const RoundReturnType
3742b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanground() const
3752b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
3762b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return RoundReturnType(derived());
3772b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
3782b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
3792b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise floor of *this.
3802b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3812b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_floor.cpp
3822b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_floor.out
3832b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3842b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_floor">Math functions</a>, ceil(), round()
3852b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
3862b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
3872b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const FloorReturnType
3882b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangfloor() const
3892b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
3902b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return FloorReturnType(derived());
3912b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
3922b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
3932b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise ceil of *this.
3942b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3952b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_ceil.cpp
3962b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_ceil.out
3972b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
3982b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_ceil">Math functions</a>, floor(), round()
3992b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
4002b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
4012b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const CeilReturnType
4022b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangceil() const
4032b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
4042b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return CeilReturnType(derived());
4052b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
4062b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4072b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise isnan of *this.
4082b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4092b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_isNaN.cpp
4102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_isNaN.out
4112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa isfinite(), isinf()
4132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
4142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
4152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const IsNaNReturnType
4162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangisNaN() const
4172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
4182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return IsNaNReturnType(derived());
4192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
4202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise isinf of *this.
4222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_isInf.cpp
4242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_isInf.out
4252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa isnan(), isfinite()
4272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
4282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
4292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const IsInfReturnType
4302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangisInf() const
4312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
4322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return IsInfReturnType(derived());
4332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
4342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4352b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise isfinite of *this.
4362b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4372b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_isFinite.cpp
4382b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_isFinite.out
4392b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4402b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa isnan(), isinf()
4412b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
4422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
4432b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const IsFiniteReturnType
4442b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangisFinite() const
4452b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
4462b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return IsFiniteReturnType(derived());
4472b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
4482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4492b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise ! operator of *this
4502b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4512b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \warning this operator is for expression of bool only.
4522b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4532b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_boolean_not.cpp
4542b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_boolean_not.out
4552b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4562b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa operator!=()
4572b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
4582b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
4592b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const BooleanNotReturnType
4602b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangoperator!() const
4612b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
4622b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  EIGEN_STATIC_ASSERT((internal::is_same<bool,Scalar>::value),
4632b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang                      THIS_METHOD_IS_ONLY_FOR_EXPRESSIONS_OF_BOOL);
4642b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return BooleanNotReturnType(derived());
4652b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
4662b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4672b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4682b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang// --- SpecialFunctions module ---
4692b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4702b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_lgamma_op<Scalar>, const Derived> LgammaReturnType;
4712b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_digamma_op<Scalar>, const Derived> DigammaReturnType;
4722b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_erf_op<Scalar>, const Derived> ErfReturnType;
4732b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangtypedef CwiseUnaryOp<internal::scalar_erfc_op<Scalar>, const Derived> ErfcReturnType;
4742b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4752b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \cpp11 \returns an expression of the coefficient-wise ln(|gamma(*this)|).
4762b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4772b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \specialfunctions_module
4782b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4792b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_lgamma.cpp
4802b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_lgamma.out
4812b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4822b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types,
4832b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * or float/double in non c++11 mode, the user has to provide implementations of lgamma(T) for any scalar
4842b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * type T to be supported.
4852b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4862b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_lgamma">Math functions</a>, digamma()
4872b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
4882b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
4892b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const LgammaReturnType
4902b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanglgamma() const
4912b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
4922b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return LgammaReturnType(derived());
4932b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
4942b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
4952b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \returns an expression of the coefficient-wise digamma (psi, derivative of lgamma).
4962b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4972b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \specialfunctions_module
4982b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
4992b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \note This function supports only float and double scalar types. To support other scalar types,
5002b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * the user has to provide implementations of digamma(T) for any scalar
5012b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * type T to be supported.
5022b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5032b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_digamma">Math functions</a>, Eigen::digamma(), Eigen::polygamma(), lgamma()
5042b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
5052b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
5062b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const DigammaReturnType
5072b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangdigamma() const
5082b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
5092b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return DigammaReturnType(derived());
5102b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
5112b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
5122b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \cpp11 \returns an expression of the coefficient-wise Gauss error
5132b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * function of *this.
5142b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5152b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \specialfunctions_module
5162b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5172b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_erf.cpp
5182b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_erf.out
5192b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5202b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types,
5212b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * or float/double in non c++11 mode, the user has to provide implementations of erf(T) for any scalar
5222b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * type T to be supported.
5232b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5242b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_erf">Math functions</a>, erfc()
5252b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
5262b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
5272b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const ErfReturnType
5282b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangerf() const
5292b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
5302b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return ErfReturnType(derived());
5312b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang}
5322b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang
5332b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang/** \cpp11 \returns an expression of the coefficient-wise Complementary error
5342b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * function of *this.
5352b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5362b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \specialfunctions_module
5372b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5382b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Example: \include Cwise_erfc.cpp
5392b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * Output: \verbinclude Cwise_erfc.out
5402b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5412b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types,
5422b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * or float/double in non c++11 mode, the user has to provide implementations of erfc(T) for any scalar
5432b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * type T to be supported.
5442b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  *
5452b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_erfc">Math functions</a>, erf()
5462b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  */
5472b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao WangEIGEN_DEVICE_FUNC
5482b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wanginline const ErfcReturnType
5492b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wangerfc() const
5502b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang{
5512b8756b6f1de65d3f8bffab45be6c44ceb7411fcMiao Wang  return ErfcReturnType(derived());
552c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
553