mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 05:54:32 +00:00 
			
		
		
		
	Logical ops element by element
This commit is contained in:
		
							
								
								
									
										32
									
								
								lib/tensors/Tensor_logical.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								lib/tensors/Tensor_logical.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
#ifndef GRID_TENSOR_LOGICAL_H
 | 
			
		||||
#define GRID_TENSOR_LOGICAL_H
 | 
			
		||||
 | 
			
		||||
namespace Grid {
 | 
			
		||||
 | 
			
		||||
#define LOGICAL_BINOP(Op)\
 | 
			
		||||
template<class v> strong_inline iScalar<v> operator Op (const iScalar<v>& lhs,const iScalar<v>& rhs) \
 | 
			
		||||
{\
 | 
			
		||||
  iScalar<v> ret;\
 | 
			
		||||
  ret._internal = lhs._internal Op rhs._internal ;\
 | 
			
		||||
  return ret;\
 | 
			
		||||
}\
 | 
			
		||||
template<class l> strong_inline iScalar<l> operator Op (const iScalar<l>& lhs,Integer rhs) \
 | 
			
		||||
{\
 | 
			
		||||
  typename iScalar<l>::scalar_type t; t=rhs;\
 | 
			
		||||
  typename iScalar<l>::tensor_reduced srhs; srhs=t;\
 | 
			
		||||
  return lhs Op srhs;\
 | 
			
		||||
}\
 | 
			
		||||
template<class l> strong_inline iScalar<l> operator Op (Integer lhs,const iScalar<l>& rhs) \
 | 
			
		||||
{\
 | 
			
		||||
  typename iScalar<l>::scalar_type t;t=lhs;\
 | 
			
		||||
  typename iScalar<l>::tensor_reduced slhs;slhs=t;\
 | 
			
		||||
  return slhs Op rhs;\
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
LOGICAL_BINOP(|);
 | 
			
		||||
LOGICAL_BINOP(&);
 | 
			
		||||
LOGICAL_BINOP(||);
 | 
			
		||||
LOGICAL_BINOP(&&);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
		Reference in New Issue
	
	Block a user