permutation of fourindex class
This commit is contained in:
		
							parent
							
								
									4c1aa07acf
								
							
						
					
					
						commit
						5e08e42387
					
				
							
								
								
									
										15
									
								
								fourindex.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								fourindex.h
									
									
									
									
									
								
							@ -284,6 +284,21 @@ public:
 | 
			
		||||
	unsigned long get(int fd,bool withattr=true);
 | 
			
		||||
	void fscanf(FILE *f); //C-style formatted IO
 | 
			
		||||
	void fprintf(FILE *f, char *format) const;
 | 
			
		||||
	void permuteme(const NRPerm<int> &p, const bool inverse)// index permutation
 | 
			
		||||
		{
 | 
			
		||||
		if(p.size()!=nn)  laerror("inconsistent dimension in fourindex::permuteme");
 | 
			
		||||
		copyonwrite();
 | 
			
		||||
		matel4<I,T> *l=list;
 | 
			
		||||
		NRPerm<int> pp; if(inverse) pp=p.inverse(); else pp=p;
 | 
			
		||||
		while(l)
 | 
			
		||||
        		{
 | 
			
		||||
        		l->index.indiv.i = (I) pp[(int)l->index.indiv.i];
 | 
			
		||||
        		l->index.indiv.j = (I) pp[(int)l->index.indiv.j];
 | 
			
		||||
        		l->index.indiv.k = (I) pp[(int)l->index.indiv.k];
 | 
			
		||||
        		l->index.indiv.l = (I) pp[(int)l->index.indiv.l];
 | 
			
		||||
        		l=l->next;
 | 
			
		||||
        		}
 | 
			
		||||
		}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user