AbsReturnType; typedef CwiseUnaryOp<internal::scalar_arg_op<Scalar>, const Derived> ArgReturnType; typedef CwiseUnaryOp<internal::scalar_carg_op<Scalar>, const Derived> CArgReturnType; typedef CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> Abs2ReturnType; typedef CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> SqrtReturnType; typedef CwiseUnaryOp<internal::scalar_cbrt_op<Scalar>, const Derived> CbrtReturnType; typedef CwiseUnaryOp<internal::scalar_rsqrt_op<Scalar>, const Derived> RsqrtReturnType; typedef CwiseUnaryOp<internal::scalar_sign_op<Scalar>, const Derived> SignReturnType; typedef CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> InverseReturnType; typedef CwiseUnaryOp<internal::scalar_boolean_not_op<Scalar>, const Derived> BooleanNotReturnType; typedef CwiseUnaryOp<internal::scalar_bitwise_not_op<Scalar>, const Derived> BitwiseNotReturnType; typedef CwiseUnaryOp<internal::scalar_exp_op<Scalar>, const Derived> ExpReturnType; typedef CwiseUnaryOp<internal::scalar_expm1_op<Scalar>, const Derived> Expm1ReturnType; typedef CwiseUnaryOp<internal::scalar_log_op<Scalar>, const Derived> LogReturnType; typedef CwiseUnaryOp<internal::scalar_log1p_op<Scalar>, const Derived> Log1pReturnType; typedef CwiseUnaryOp<internal::scalar_log10_op<Scalar>, const Derived> Log10ReturnType; typedef CwiseUnaryOp<internal::scalar_log2_op<Scalar>, const Derived> Log2ReturnType; typedef CwiseUnaryOp<internal::scalar_cos_op<Scalar>, const Derived> CosReturnType; typedef CwiseUnaryOp<internal::scalar_sin_op<Scalar>, const Derived> SinReturnType; typedef CwiseUnaryOp<internal::scalar_tan_op<Scalar>, const Derived> TanReturnType; typedef CwiseUnaryOp<internal::scalar_acos_op<Scalar>, const Derived> AcosReturnType; typedef CwiseUnaryOp<internal::scalar_asin_op<Scalar>, const Derived> AsinReturnType; typedef CwiseUnaryOp<internal::scalar_atan_op<Scalar>, const Derived> AtanReturnType; typedef CwiseUnaryOp<internal::scalar_tanh_op<Scalar>, const Derived> TanhReturnType; typedef CwiseUnaryOp<internal::scalar_logistic_op<Scalar>, const Derived> LogisticReturnType; typedef CwiseUnaryOp<internal::scalar_sinh_op<Scalar>, const Derived> SinhReturnType; typedef CwiseUnaryOp<internal::scalar_atanh_op<Scalar>, const Derived> AtanhReturnType; typedef CwiseUnaryOp<internal::scalar_asinh_op<Scalar>, const Derived> AsinhReturnType; typedef CwiseUnaryOp<internal::scalar_acosh_op<Scalar>, const Derived> AcoshReturnType; typedef CwiseUnaryOp<internal::scalar_cosh_op<Scalar>, const Derived> CoshReturnType; typedef CwiseUnaryOp<internal::scalar_square_op<Scalar>, const Derived> SquareReturnType; typedef CwiseUnaryOp<internal::scalar_cube_op<Scalar>, const Derived> CubeReturnType; typedef CwiseUnaryOp<internal::scalar_round_op<Scalar>, const Derived> RoundReturnType; typedef CwiseUnaryOp<internal::scalar_rint_op<Scalar>, const Derived> RintReturnType; typedef CwiseUnaryOp<internal::scalar_floor_op<Scalar>, const Derived> FloorReturnType; typedef CwiseUnaryOp<internal::scalar_ceil_op<Scalar>, const Derived> CeilReturnType; typedef CwiseUnaryOp<internal::scalar_trunc_op<Scalar>, const Derived> TruncReturnType; typedef CwiseUnaryOp<internal::scalar_isnan_op<Scalar>, const Derived> IsNaNReturnType; typedef CwiseUnaryOp<internal::scalar_isinf_op<Scalar>, const Derived> IsInfReturnType; typedef CwiseUnaryOp<internal::scalar_isfinite_op<Scalar>, const Derived> IsFiniteReturnType; typedef CwiseUnaryOp<internal::scalar_isfinite_op<Scalar, true>, const Derived> IsFiniteTypedReturnType; /** \returns an expression of the coefficient-wise absolute value of \c *this * * Example: \include Cwise_abs.cpp * Output: \verbinclude Cwise_abs.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_abs">Math functions</a>, abs2() */ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const AbsReturnType abs() const { … } … } /** \returns an expression of the coefficient-wise phase angle of \c *this * * Example: \include Cwise_arg.cpp * Output: \verbinclude Cwise_arg.out * * \sa abs() */ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const ArgReturnType arg() const { … } … } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const CArgReturnType carg() const { … } … } /** \returns an expression of the coefficient-wise squared absolute value of \c *this * * Example: \include Cwise_abs2.cpp * Output: \verbinclude Cwise_abs2.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_abs2">Math functions</a>, abs(), square() */ EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Abs2ReturnType abs2() const { … } … } /** \returns an expression of the coefficient-wise exponential of *this. * * This function computes the coefficient-wise exponential. The function MatrixBase::exp() in the * unsupported module MatrixFunctions computes the matrix exponential. * * Example: \include Cwise_exp.cpp * Output: \verbinclude Cwise_exp.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_exp">Math functions</a>, pow(), log(), sin(), cos() */ EIGEN_DEVICE_FUNC inline const ExpReturnType exp() const { … } … } /** \returns an expression of the coefficient-wise exponential of *this minus 1. * * In exact arithmetic, \c x.expm1() is equivalent to \c x.exp() - 1, * however, with finite precision, this function is much more accurate when \c x is close to zero. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_expm1">Math functions</a>, exp() */ EIGEN_DEVICE_FUNC inline const Expm1ReturnType expm1() const { … } … } /** \returns an expression of the coefficient-wise logarithm of *this. * * This function computes the coefficient-wise logarithm. The function MatrixBase::log() in the * unsupported module MatrixFunctions computes the matrix logarithm. * * Example: \include Cwise_log.cpp * Output: \verbinclude Cwise_log.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_log">Math functions</a>, log() */ EIGEN_DEVICE_FUNC inline const LogReturnType log() const { … } … } /** \returns an expression of the coefficient-wise logarithm of 1 plus \c *this. * * In exact arithmetic, \c x.log() is equivalent to \c (x+1).log(), * however, with finite precision, this function is much more accurate when \c x is close to zero. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_log1p">Math functions</a>, log() */ EIGEN_DEVICE_FUNC inline const Log1pReturnType log1p() const { … } … } /** \returns an expression of the coefficient-wise base-10 logarithm of *this. * * This function computes the coefficient-wise base-10 logarithm. * * Example: \include Cwise_log10.cpp * Output: \verbinclude Cwise_log10.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_log10">Math functions</a>, log() */ EIGEN_DEVICE_FUNC inline const Log10ReturnType log10() const { … } … } /** \returns an expression of the coefficient-wise base-2 logarithm of *this. * * This function computes the coefficient-wise base-2 logarithm. * */ EIGEN_DEVICE_FUNC inline const Log2ReturnType log2() const { … } … } /** \returns an expression of the coefficient-wise square root of *this. * * This function computes the coefficient-wise square root. The function MatrixBase::sqrt() in the * unsupported module MatrixFunctions computes the matrix square root. * * Example: \include Cwise_sqrt.cpp * Output: \verbinclude Cwise_sqrt.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_sqrt">Math functions</a>, pow(), square(), cbrt() */ EIGEN_DEVICE_FUNC inline const SqrtReturnType sqrt() const { … } … } /** \returns an expression of the coefficient-wise cube root of *this. * * This function computes the coefficient-wise cube root. * * Example: \include Cwise_cbrt.cpp * Output: \verbinclude Cwise_cbrt.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_cbrt">Math functions</a>, sqrt(), pow(), square() */ EIGEN_DEVICE_FUNC inline const CbrtReturnType cbrt() const { … } … } /** \returns an expression of the coefficient-wise inverse square root of *this. * * This function computes the coefficient-wise inverse square root. * * Example: \include Cwise_sqrt.cpp * Output: \verbinclude Cwise_sqrt.out * * \sa pow(), square() */ EIGEN_DEVICE_FUNC inline const RsqrtReturnType rsqrt() const { … } … } /** \returns an expression of the coefficient-wise signum of *this. * * This function computes the coefficient-wise signum. * * Example: \include Cwise_sign.cpp * Output: \verbinclude Cwise_sign.out * * \sa pow(), square() */ EIGEN_DEVICE_FUNC inline const SignReturnType sign() const { … } … } /** \returns an expression of the coefficient-wise cosine of *this. * * This function computes the coefficient-wise cosine. The function MatrixBase::cos() in the * unsupported module MatrixFunctions computes the matrix cosine. * * Example: \include Cwise_cos.cpp * Output: \verbinclude Cwise_cos.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_cos">Math functions</a>, sin(), acos() */ EIGEN_DEVICE_FUNC inline const CosReturnType cos() const { … } … } /** \returns an expression of the coefficient-wise sine of *this. * * This function computes the coefficient-wise sine. The function MatrixBase::sin() in the * unsupported module MatrixFunctions computes the matrix sine. * * Example: \include Cwise_sin.cpp * Output: \verbinclude Cwise_sin.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_sin">Math functions</a>, cos(), asin() */ EIGEN_DEVICE_FUNC inline const SinReturnType sin() const { … } … } /** \returns an expression of the coefficient-wise tan of *this. * * Example: \include Cwise_tan.cpp * Output: \verbinclude Cwise_tan.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_tan">Math functions</a>, cos(), sin() */ EIGEN_DEVICE_FUNC inline const TanReturnType tan() const { … } … } /** \returns an expression of the coefficient-wise arc tan of *this. * * Example: \include Cwise_atan.cpp * Output: \verbinclude Cwise_atan.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_atan">Math functions</a>, tan(), asin(), acos() */ EIGEN_DEVICE_FUNC inline const AtanReturnType atan() const { … } … } /** \returns an expression of the coefficient-wise arc cosine of *this. * * Example: \include Cwise_acos.cpp * Output: \verbinclude Cwise_acos.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_acos">Math functions</a>, cos(), asin() */ EIGEN_DEVICE_FUNC inline const AcosReturnType acos() const { … } … } /** \returns an expression of the coefficient-wise arc sine of *this. * * Example: \include Cwise_asin.cpp * Output: \verbinclude Cwise_asin.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_asin">Math functions</a>, sin(), acos() */ EIGEN_DEVICE_FUNC inline const AsinReturnType asin() const { … } … } /** \returns an expression of the coefficient-wise hyperbolic tan of *this. * * Example: \include Cwise_tanh.cpp * Output: \verbinclude Cwise_tanh.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_tanh">Math functions</a>, tan(), sinh(), cosh() */ EIGEN_DEVICE_FUNC inline const TanhReturnType tanh() const { … } … } /** \returns an expression of the coefficient-wise hyperbolic sin of *this. * * Example: \include Cwise_sinh.cpp * Output: \verbinclude Cwise_sinh.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_sinh">Math functions</a>, sin(), tanh(), cosh() */ EIGEN_DEVICE_FUNC inline const SinhReturnType sinh() const { … } … } /** \returns an expression of the coefficient-wise hyperbolic cos of *this. * * Example: \include Cwise_cosh.cpp * Output: \verbinclude Cwise_cosh.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_cosh">Math functions</a>, tanh(), sinh(), cosh() */ EIGEN_DEVICE_FUNC inline const CoshReturnType cosh() const { … } … } /** \returns an expression of the coefficient-wise inverse hyperbolic tan of *this. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_atanh">Math functions</a>, atanh(), asinh(), acosh() */ EIGEN_DEVICE_FUNC inline const AtanhReturnType atanh() const { … } … } /** \returns an expression of the coefficient-wise inverse hyperbolic sin of *this. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_asinh">Math functions</a>, atanh(), asinh(), acosh() */ EIGEN_DEVICE_FUNC inline const AsinhReturnType asinh() const { … } … } /** \returns an expression of the coefficient-wise inverse hyperbolic cos of *this. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_acosh">Math functions</a>, atanh(), asinh(), acosh() */ EIGEN_DEVICE_FUNC inline const AcoshReturnType acosh() const { … } … } /** \returns an expression of the coefficient-wise logistic of *this. */ EIGEN_DEVICE_FUNC inline const LogisticReturnType logistic() const { … } … } /** \returns an expression of the coefficient-wise inverse of *this. * * Example: \include Cwise_inverse.cpp * Output: \verbinclude Cwise_inverse.out * * \sa operator/(), operator*() */ EIGEN_DEVICE_FUNC inline const InverseReturnType inverse() const { … } … } /** \returns an expression of the coefficient-wise square of *this. * * Example: \include Cwise_square.cpp * Output: \verbinclude Cwise_square.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_squareE">Math functions</a>, abs2(), cube(), pow() */ EIGEN_DEVICE_FUNC inline const SquareReturnType square() const { … } … } /** \returns an expression of the coefficient-wise cube of *this. * * Example: \include Cwise_cube.cpp * Output: \verbinclude Cwise_cube.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_cube">Math functions</a>, square(), pow() */ EIGEN_DEVICE_FUNC inline const CubeReturnType cube() const { … } … } /** \returns an expression of the coefficient-wise rint of *this. * * Example: \include Cwise_rint.cpp * Output: \verbinclude Cwise_rint.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_rint">Math functions</a>, ceil(), floor() */ EIGEN_DEVICE_FUNC inline const RintReturnType rint() const { … } … } /** \returns an expression of the coefficient-wise round of *this. * * Example: \include Cwise_round.cpp * Output: \verbinclude Cwise_round.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_round">Math functions</a>, ceil(), floor() */ EIGEN_DEVICE_FUNC inline const RoundReturnType round() const { … } … } /** \returns an expression of the coefficient-wise floor of *this. * * Example: \include Cwise_floor.cpp * Output: \verbinclude Cwise_floor.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_floor">Math functions</a>, ceil(), round() */ EIGEN_DEVICE_FUNC inline const FloorReturnType floor() const { … } … } /** \returns an expression of the coefficient-wise ceil of *this. * * Example: \include Cwise_ceil.cpp * Output: \verbinclude Cwise_ceil.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_ceil">Math functions</a>, floor(), round() */ EIGEN_DEVICE_FUNC inline const CeilReturnType ceil() const { … } … } /** \returns an expression of the coefficient-wise truncation of *this. * * Example: \include Cwise_trunc.cpp * Output: \verbinclude Cwise_trunc.out * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_trunc">Math functions</a>, floor(), round() */ EIGEN_DEVICE_FUNC inline const TruncReturnType trunc() const { … } … } template <int N> struct ShiftRightXpr { … }; /** \returns an expression of \c *this with the \a Scalar type arithmetically * shifted right by \a N bit positions. * * The template parameter \a N specifies the number of bit positions to shift. * * \sa shiftLeft() */ template <int N> EIGEN_DEVICE_FUNC typename ShiftRightXpr<N>::Type shiftRight() const { … } … } template <int N> struct ShiftLeftXpr { … }; /** \returns an expression of \c *this with the \a Scalar type logically * shifted left by \a N bit positions. * * The template parameter \a N specifies the number of bit positions to shift. * * \sa shiftRight() */ template <int N> EIGEN_DEVICE_FUNC typename ShiftLeftXpr<N>::Type shiftLeft() const { … } … } /** \returns an expression of the coefficient-wise isnan of *this. * * Example: \include Cwise_isNaN.cpp * Output: \verbinclude Cwise_isNaN.out * * \sa isfinite(), isinf() */ EIGEN_DEVICE_FUNC inline const IsNaNReturnType isNaN() const { … } … } /** \returns an expression of the coefficient-wise isinf of *this. * * Example: \include Cwise_isInf.cpp * Output: \verbinclude Cwise_isInf.out * * \sa isnan(), isfinite() */ EIGEN_DEVICE_FUNC inline const IsInfReturnType isInf() const { … } … } /** \returns an expression of the coefficient-wise isfinite of *this. * * Example: \include Cwise_isFinite.cpp * Output: \verbinclude Cwise_isFinite.out * * \sa isnan(), isinf() */ EIGEN_DEVICE_FUNC inline const IsFiniteReturnType isFinite() const { … } … } EIGEN_DEVICE_FUNC inline const IsFiniteTypedReturnType isFiniteTyped() const { … } … } /** \returns an expression of the coefficient-wise ! operator of *this * * Example: \include Cwise_boolean_not.cpp * Output: \verbinclude Cwise_boolean_not.out * * \sa operator!=() */ EIGEN_DEVICE_FUNC inline const BooleanNotReturnType operator!() const { … } … } /** \returns an expression of the bitwise ~ operator of *this */ EIGEN_DEVICE_FUNC inline const BitwiseNotReturnType operator~() const { … } … } // --- SpecialFunctions module --- typedef CwiseUnaryOp<internal::scalar_lgamma_op<Scalar>, const Derived> LgammaReturnType; typedef CwiseUnaryOp<internal::scalar_digamma_op<Scalar>, const Derived> DigammaReturnType; typedef CwiseUnaryOp<internal::scalar_erf_op<Scalar>, const Derived> ErfReturnType; typedef CwiseUnaryOp<internal::scalar_erfc_op<Scalar>, const Derived> ErfcReturnType; typedef CwiseUnaryOp<internal::scalar_ndtri_op<Scalar>, const Derived> NdtriReturnType; /** \cpp11 \returns an expression of the coefficient-wise ln(|gamma(*this)|). * * \specialfunctions_module * * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types, * or float/double in non c++11 mode, the user has to provide implementations of lgamma(T) for any scalar * type T to be supported. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_lgamma">Math functions</a>, digamma() */ EIGEN_DEVICE_FUNC inline const LgammaReturnType lgamma() const { … } … } /** \returns an expression of the coefficient-wise digamma (psi, derivative of lgamma). * * \specialfunctions_module * * \note This function supports only float and double scalar types. To support other scalar types, * the user has to provide implementations of digamma(T) for any scalar * type T to be supported. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_digamma">Math functions</a>, Eigen::digamma(), * Eigen::polygamma(), lgamma() */ EIGEN_DEVICE_FUNC inline const DigammaReturnType digamma() const { … } … } /** \cpp11 \returns an expression of the coefficient-wise Gauss error * function of *this. * * \specialfunctions_module * * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types, * or float/double in non c++11 mode, the user has to provide implementations of erf(T) for any scalar * type T to be supported. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_erf">Math functions</a>, erfc() */ EIGEN_DEVICE_FUNC inline const ErfReturnType erf() const { … } … } /** \cpp11 \returns an expression of the coefficient-wise Complementary error * function of *this. * * \specialfunctions_module * * \note This function supports only float and double scalar types in c++11 mode. To support other scalar types, * or float/double in non c++11 mode, the user has to provide implementations of erfc(T) for any scalar * type T to be supported. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_erfc">Math functions</a>, erf() */ EIGEN_DEVICE_FUNC inline const ErfcReturnType erfc() const { … } … } /** \returns an expression of the coefficient-wise inverse of the CDF of the Normal distribution function * function of *this. * * \specialfunctions_module * * In other words, considering `x = ndtri(y)`, it returns the argument, x, for which the area under the * Gaussian probability density function (integrated from minus infinity to x) is equal to y. * * \note This function supports only float and double scalar types. To support other scalar types, * the user has to provide implementations of ndtri(T) for any scalar type T to be supported. * * \sa <a href="group__CoeffwiseMathFunctions.html#cwisetable_ndtri">Math functions</a> */ EIGEN_DEVICE_FUNC inline const NdtriReturnType ndtri() const { … } … } template <typename ScalarExponent> using UnaryPowReturnType = …