| 1234567891011121314151617181920212223242526272829303132 | 
							- namespace Eigen {
 
-   namespace internal {
 
-     template<typename ArgType>
 
-     struct evaluator<Circulant<ArgType> >
 
-       : evaluator_base<Circulant<ArgType> >
 
-     {
 
-       typedef Circulant<ArgType> XprType;
 
-       typedef typename nested_eval<ArgType, XprType::ColsAtCompileTime>::type ArgTypeNested;
 
-       typedef typename remove_all<ArgTypeNested>::type ArgTypeNestedCleaned;
 
-       typedef typename XprType::CoeffReturnType CoeffReturnType;
 
-       enum { 
 
-         CoeffReadCost = evaluator<ArgTypeNestedCleaned>::CoeffReadCost,
 
-         Flags = Eigen::ColMajor 
 
-       };
 
-       
 
-       evaluator(const XprType& xpr)
 
-         : m_argImpl(xpr.m_arg), m_rows(xpr.rows())
 
-       { }
 
-       CoeffReturnType coeff(Index row, Index col) const
 
-       {
 
-         Index index = row - col;
 
-         if (index < 0) index += m_rows;
 
-         return m_argImpl.coeff(index);
 
-       }
 
-       evaluator<ArgTypeNestedCleaned> m_argImpl;
 
-       const Index m_rows;
 
-     };
 
-   }
 
- }
 
 
  |