3 template<typename ArgType>
4 struct evaluator<Circulant<ArgType> >
5 : evaluator_base<Circulant<ArgType> >
7 typedef Circulant<ArgType> XprType;
8 typedef typename nested_eval<ArgType, XprType::ColsAtCompileTime>::type ArgTypeNested;
9 typedef remove_all_t<ArgTypeNested> ArgTypeNestedCleaned;
10 typedef typename XprType::CoeffReturnType CoeffReturnType;
13 CoeffReadCost = evaluator<ArgTypeNestedCleaned>::CoeffReadCost,
14 Flags = Eigen::ColMajor
17 evaluator(const XprType& xpr)
18 : m_argImpl(xpr.m_arg), m_rows(xpr.rows())
21 CoeffReturnType coeff(Index row, Index col) const
23 Index index = row - col;
24 if (index < 0) index += m_rows;
25 return m_argImpl.coeff(index);
28 evaluator<ArgTypeNestedCleaned> m_argImpl;