26 #ifndef EIGEN_CWISE_UNARY_OP_H
27 #define EIGEN_CWISE_UNARY_OP_H
52 template<
typename UnaryOp,
typename XprType>
53 struct traits<CwiseUnaryOp<UnaryOp, XprType> >
56 typedef typename result_of<
57 UnaryOp(
typename XprType::Scalar)
59 typedef typename XprType::Nested XprTypeNested;
60 typedef typename remove_reference<XprTypeNested>::type _XprTypeNested;
62 Flags = _XprTypeNested::Flags & (
65 CoeffReadCost = _XprTypeNested::CoeffReadCost + functor_traits<UnaryOp>::Cost
70 template<
typename UnaryOp,
typename XprType,
typename StorageKind>
73 template<
typename UnaryOp,
typename XprType>
75 public CwiseUnaryOpImpl<UnaryOp, XprType, typename internal::traits<XprType>::StorageKind>
82 inline
CwiseUnaryOp(const XprType& xpr, const UnaryOp& func = UnaryOp())
92 const typename internal::remove_all<typename XprType::Nested>::type&
96 typename internal::remove_all<typename XprType::Nested>::type&
106 template<
typename UnaryOp,
typename XprType>
108 :
public internal::dense_xpr_base<CwiseUnaryOp<UnaryOp, XprType> >::type
113 typedef typename internal::dense_xpr_base<CwiseUnaryOp<UnaryOp, XprType> >::type
Base;
118 return derived().functor()(derived().nestedExpression().coeff(row, col));
121 template<
int LoadMode>
124 return derived().functor().packetOp(derived().nestedExpression().
template packet<LoadMode>(row, col));
129 return derived().functor()(derived().nestedExpression().coeff(index));
132 template<
int LoadMode>
135 return derived().functor().packetOp(derived().nestedExpression().
template packet<LoadMode>(index));
141 #endif // EIGEN_CWISE_UNARY_OP_H