Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Examples

su2_cmp.h

Go to the documentation of this file.
00001 #ifndef _INC_SU2_CMP_H
00002 #define _INC_SU2_CMP_H
00003 
00004 #include <complex>
00005 
00006 #include "matrix.h"
00007 #include "su2.h"
00008 
00009 typedef std::complex<double> cdouble;
00010 
00012 
00014 class su2_equiv 
00015 {
00016 public:
00018     double epsilon, gamma;
00019 
00022     su2_equiv(double e) : epsilon(e*e), gamma((2.0-e)*(2.0-e)) {}
00023 
00025     bool operator()(const Matrix<cdouble>& A, const Matrix<cdouble>& B) const
00026     {
00027         double a[] ={real(A(0,0)),-1.0*imag(A(0,1)),real(A(1,0)),imag(A(1,1))};
00028         double b[] ={real(B(0,0)),-1.0*imag(B(0,1)),real(B(1,0)),imag(B(1,1))};
00029 
00030         a[0] -= b[0];
00031         a[1] -= b[1];
00032         a[2] -= b[2];
00033         a[3] -= b[3];
00034 
00035         double dist = a[0]*a[0] + a[1]*a[1] + a[2]*a[2] + a[3]*a[3];
00036         if (dist < epsilon || dist > gamma)
00037             return true;
00038         else
00039             return false;
00040 
00041     }
00042 };
00043 
00044 #endif

Generated on Sun Jul 10 21:57:13 2005 by  doxygen 1.4.1