Groups
group.h
1 #include <iostream>
2 #include <typeinfo>
3 #include <complex>
4 #include <cmath>
5 #include <Eigen/Eigenvalues>
6 #include <unsupported/Eigen/CXX11/Tensor>
7 
8 using namespace Eigen;
9 using namespace std;
10 
16 class Group
17 {
18  public:
19  MatrixXd group;
20  int order;
21  // void cyclicGroup(int dim); //Deprecated -- Use CyclicGroup class
22  bool checkIfGroup();
23  MatrixXd regularRepresentationOfElement(int ele);
24  void regularRepresentation();
25  void printGroup();
26  void correctedCyclicGroup();
27  Tensor<complex<double>, 3> pauliMatrices();
28  Matrix<complex<double>,2,2> pauliMatrix(int n);
29  void printPauliMatrix(int n);
30  template <typename T>
31  void checkHermiticity(T mat);
32 };
33 
40 class PauliGroup:public Group
41 {
42  public:
43  PauliGroup();
44  // vector <Matrix<complex<double>,2,2> > PauliElements; <-- Initialization of Elements as arrays
45  Tensor <complex<double>,3> PauliTensor;
46  Matrix <complex<double>,2,2> PauliMatrix(int subScript);
47 
48  void printPauliMatrix(int subScript);
49 };
50 
56 class CyclicGroup:public Group
57 {
58  public:
59  //Cyclic Group constructor with dimensions
60  CyclicGroup(int dim);
61  MatrixXd HDecomp(int ele);
62  //Inherits other group public methods
63 };
64 
65 #include "group.tpp"
Definition: group.h:56
Definition: group.h:40
Definition: group.h:16