13#ifndef EIGEN_PARSED_BY_DOXYGEN
16typedef std::conditional_t<NumTraits<Scalar>::IsComplex,
17 const CwiseUnaryOp<internal::scalar_conjugate_op<Scalar>,
const Derived>,
const Derived&>
20typedef std::conditional_t<NumTraits<Scalar>::IsComplex,
21 const CwiseUnaryOp<internal::scalar_real_op<Scalar>,
const Derived>,
const Derived&>
24typedef std::conditional_t<NumTraits<Scalar>::IsComplex, CwiseUnaryView<internal::scalar_real_ref_op<Scalar>, Derived>,
26 NonConstRealReturnType;
28typedef CwiseUnaryOp<internal::scalar_imag_op<Scalar>,
const Derived> ImagReturnType;
30typedef CwiseUnaryView<internal::scalar_imag_ref_op<Scalar>, Derived> NonConstImagReturnType;
32typedef CwiseUnaryOp<internal::scalar_opposite_op<Scalar>,
const Derived> NegativeReturnType;
38EIGEN_DOC_UNARY_ADDONS(
operator-, opposite)
40EIGEN_DEVICE_FUNC
inline const NegativeReturnType operator-()
const {
return NegativeReturnType(derived()); }
42template <
class NewType>
44 typedef typename internal::cast_return_type<
45 Derived,
const CwiseUnaryOp<internal::core_cast_op<Scalar, NewType>,
const Derived> >::type Type;
53EIGEN_DOC_UNARY_ADDONS(cast, conversion
function)
57template <
typename NewType>
58EIGEN_DEVICE_FUNC
typename CastXpr<NewType>::Type cast()
const {
59 return typename CastXpr<NewType>::Type(derived());
64EIGEN_DOC_UNARY_ADDONS(conjugate, complex conjugate)
67EIGEN_DEVICE_FUNC
inline ConjugateReturnType conjugate()
const {
return ConjugateReturnType(derived()); }
71EIGEN_DOC_UNARY_ADDONS(conjugate, complex conjugate)
75EIGEN_DEVICE_FUNC
inline std::conditional_t<Cond, ConjugateReturnType, const Derived&> conjugateIf()
const {
76 typedef std::conditional_t<Cond, ConjugateReturnType, const Derived&> ReturnType;
77 return ReturnType(derived());
82EIGEN_DOC_UNARY_ADDONS(real, real part
function)
85EIGEN_DEVICE_FUNC
inline RealReturnType
real()
const {
return RealReturnType(derived()); }
89EIGEN_DOC_UNARY_ADDONS(imag, imaginary part
function)
92EIGEN_DEVICE_FUNC
inline const ImagReturnType
imag()
const {
return ImagReturnType(derived()); }
111EIGEN_DOC_UNARY_ADDONS(unaryExpr, unary
function)
115template <
typename CustomUnaryOp>
116EIGEN_DEVICE_FUNC
inline const CwiseUnaryOp<CustomUnaryOp, const Derived> unaryExpr(
117 const CustomUnaryOp& func = CustomUnaryOp())
const {
118 return CwiseUnaryOp<CustomUnaryOp, const Derived>(derived(), func);
130EIGEN_DOC_UNARY_ADDONS(unaryViewExpr, unary
function)
134template <
typename CustomViewOp>
135EIGEN_DEVICE_FUNC
inline const CwiseUnaryView<CustomViewOp, const Derived> unaryViewExpr(
136 const CustomViewOp& func = CustomViewOp())
const {
137 return CwiseUnaryView<CustomViewOp, const Derived>(derived(), func);
145EIGEN_DOC_UNARY_ADDONS(unaryViewExpr, unary
function)
149template <
typename CustomViewOp>
150EIGEN_DEVICE_FUNC
inline CwiseUnaryView<CustomViewOp, Derived> unaryViewExpr(
151 const CustomViewOp& func = CustomViewOp()) {
152 return CwiseUnaryView<CustomViewOp, Derived>(derived(), func);
157EIGEN_DOC_UNARY_ADDONS(real, real part
function)
160EIGEN_DEVICE_FUNC
inline NonConstRealReturnType
real() {
return NonConstRealReturnType(derived()); }
164EIGEN_DOC_UNARY_ADDONS(imag, imaginary part
function)
167EIGEN_DEVICE_FUNC
inline NonConstImagReturnType
imag() {
return NonConstImagReturnType(derived()); }
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_real_op< typename Derived::Scalar >, const Derived > real(const Eigen::ArrayBase< Derived > &x)
const Eigen::CwiseUnaryOp< Eigen::internal::scalar_imag_op< typename Derived::Scalar >, const Derived > imag(const Eigen::ArrayBase< Derived > &x)