mirror of
				https://github.com/PaddlePaddle/FastDeploy.git
				synced 2025-10-31 20:02:53 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			948 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			948 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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;
 | |
|     };
 | |
|   }
 | |
| }
 | 
