19 lines
		
	
	
		
			244 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
		
			244 B
		
	
	
	
		
			C
		
	
	
	
	
	
| int igray_(int *n0, int *idir)
 | |
| {
 | |
|   int n;
 | |
|   unsigned long sh;
 | |
|   unsigned long nn;
 | |
|   n=*n0;
 | |
| 
 | |
|   if(*idir>0) return (n ^ (n >> 1));
 | |
| 
 | |
|   sh = 1;
 | |
|   nn = (n >> sh);
 | |
|   while (nn > 0) {
 | |
|     n ^= nn;
 | |
|     sh <<= 1;
 | |
|     nn = (n >> sh);
 | |
|   }
 | |
|   return (n);
 | |
| }
 | 
