/* The functions in this file contain the generators of su(3) in the fundamental representation (Gell-Mann matrices). */ #include /* The function gell_mann_mat() returns the 8 Gell-Mann matrices, a = 1,...,8. */ su3_mat gell_mann_mat(int a) { su3_mat gen; switch(a) { case 1: { gen.su3m[1][1] = Complex(0., 0.); gen.su3m[1][2] = Complex(1., 0.); gen.su3m[1][3] = Complex(0., 0.); gen.su3m[2][1] = Complex(1., 0.); gen.su3m[2][2] = Complex(0., 0.); gen.su3m[2][3] = Complex(0., 0.); gen.su3m[3][1] = Complex(0., 0.); gen.su3m[3][2] = Complex(0., 0.); gen.su3m[3][3] = Complex(0., 0.); break; } case 2: { gen.su3m[1][1] = Complex(0., 0.); gen.su3m[1][2] = Complex(0., -1.); gen.su3m[1][3] = Complex(0., 0.); gen.su3m[2][1] = Complex(0., 1.); gen.su3m[2][2] = Complex(0., 0.); gen.su3m[2][3] = Complex(0., 0.); gen.su3m[3][1] = Complex(0., 0.); gen.su3m[3][2] = Complex(0., 0.); gen.su3m[3][3] = Complex(0., 0.); break; } case 3: { gen.su3m[1][1] = Complex(1., 0.); gen.su3m[1][2] = Complex(0., 0.); gen.su3m[1][3] = Complex(0., 0.); gen.su3m[2][1] = Complex(0., 0.); gen.su3m[2][2] = Complex(-1., 0.); gen.su3m[2][3] = Complex(0., 0.); gen.su3m[3][1] = Complex(0., 0.); gen.su3m[3][2] = Complex(0., 0.); gen.su3m[3][3] = Complex(0., 0.); break; } case 4: { gen.su3m[1][1] = Complex(0., 0.); gen.su3m[1][2] = Complex(0., 0.); gen.su3m[1][3] = Complex(1., 0.); gen.su3m[2][1] = Complex(0., 0.); gen.su3m[2][2] = Complex(0., 0.); gen.su3m[2][3] = Complex(0., 0.); gen.su3m[3][1] = Complex(1., 0.); gen.su3m[3][2] = Complex(0., 0.); gen.su3m[3][3] = Complex(0., 0.); break; } case 5: { gen.su3m[1][1] = Complex(0., 0.); gen.su3m[1][2] = Complex(0., 0.); gen.su3m[1][3] = Complex(0., -1.); gen.su3m[2][1] = Complex(0., 0.); gen.su3m[2][2] = Complex(0., 0.); gen.su3m[2][3] = Complex(0., 0.); gen.su3m[3][1] = Complex(0., 1.); gen.su3m[3][2] = Complex(0., 0.); gen.su3m[3][3] = Complex(0., 0.); break; } case 6: { gen.su3m[1][1] = Complex(0., 0.); gen.su3m[1][2] = Complex(0., 0.); gen.su3m[1][3] = Complex(0., 0.); gen.su3m[2][1] = Complex(0., 0.); gen.su3m[2][2] = Complex(0., 0.); gen.su3m[2][3] = Complex(1., 0.); gen.su3m[3][1] = Complex(0., 0.); gen.su3m[3][2] = Complex(1., 0.); gen.su3m[3][3] = Complex(0., 0.); break; } case 7: { gen.su3m[1][1] = Complex(0., 0.); gen.su3m[1][2] = Complex(0., 0.); gen.su3m[1][3] = Complex(0., 0.); gen.su3m[2][1] = Complex(0., 0.); gen.su3m[2][2] = Complex(0., 0.); gen.su3m[2][3] = Complex(0., -1.); gen.su3m[3][1] = Complex(0., 0.); gen.su3m[3][2] = Complex(0., 1.); gen.su3m[3][3] = Complex(0., 0.); break; } case 8: { gen.su3m[1][1] = Complex(1./sqrt(3.), 0.); gen.su3m[1][2] = Complex(0., 0.); gen.su3m[1][3] = Complex(0., 0.); gen.su3m[2][1] = Complex(0., 0.); gen.su3m[2][2] = Complex(1./sqrt(3.), 0.); gen.su3m[2][3] = Complex(0., 0.); gen.su3m[3][1] = Complex(0., 0.); gen.su3m[3][2] = Complex(0., 0.); gen.su3m[3][3] = Complex(-2./sqrt(3.), 0.); break; } } return gen; } su3_mat su3_mul(su3_mat a, su3_mat b) { su3_mat c; int i, j; for(i = 1; i <= 3; i++) { for(j = 1; j <= 3; j++) { int k; dcomplex temp = Complex(0., 0.); for(k = 1; k <= 3; k++) { temp = Cadd(temp, Cmul(a.su3m[i][k], b.su3m[k][j]) ); } c.su3m[i][j] = temp; } } return c; }