You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							948 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							948 B
						
					
					
				| 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; | |
|     }; | |
|   } | |
| }
 |