X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=check%2Fexam_color.cpp;h=4d26a1e4151fc3c7076f92c740502725e86f1f97;hp=3097188bcea8a41cc2b74c44fc26f58b8d3319b3;hb=2c22412269ccfb551a27fd8081712b46c243cbac;hpb=ea924f534d741945cabe3df7d9981f592c46013f diff --git a/check/exam_color.cpp b/check/exam_color.cpp index 3097188b..4d26a1e4 100644 --- a/check/exam_color.cpp +++ b/check/exam_color.cpp @@ -3,7 +3,7 @@ * Here we test GiNaC's color objects (su(3) Lie algebra). */ /* - * GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2004 Johannes Gutenberg University Mainz, Germany * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -44,15 +44,14 @@ static unsigned check_equal_simplify(const ex &e1, const ex &e2) return 0; } -static unsigned color_check1(void) +static unsigned color_check1() { - // checks general identities and contractions + // checks general identities and contractions of the structure constants unsigned result = 0; idx a(symbol("a"), 8), b(symbol("b"), 8), c(symbol("c"), 8), d(symbol("d"), 8); - // structure constants result += check_equal(color_d(a, c, a), 0); result += check_equal_simplify(color_d(a, b, c) * color_d(b, d, c), numeric(5,3) * delta_tensor(a, d)); result += check_equal_simplify(color_d(idx(5, 8), b, c) * color_d(b, idx(5, 8), c), numeric(5,3)); @@ -79,7 +78,57 @@ static unsigned color_check1(void) return result; } -unsigned exam_color(void) +static unsigned color_check2() +{ + // checks general identities and contractions of the generators + + unsigned result = 0; + + idx a(symbol("a"), 8), b(symbol("b"), 8), c(symbol("c"), 8), k(symbol("k"), 8); + ex e; + + e = color_T(k) * color_T(k); + result += check_equal_simplify(e, 4 * color_ONE() / 3); + e = color_T(k) * color_T(a) * color_T(k); + result += check_equal_simplify(e, -color_T(a) / 6); + e = color_T(k) * color_T(a) * color_T(b) * color_T(k); + result += check_equal_simplify(e, delta_tensor(a, b) * color_ONE() / 4 - color_T(a) * color_T(b) / 6); + e = color_T(k) * color_T(a) * color_T(b) * color_T(c) * color_T(k); + result += check_equal_simplify(e, (color_h(a, b, c) * color_ONE() / 8).expand() - color_T(a) * color_T(b) * color_T(c) / 6); + e = color_T(a) * color_T(b) * color_T(a) * color_T(b); + result += check_equal_simplify(e, -2 * color_ONE() / 9); + e = color_T(a) * color_T(b) * color_T(b) * color_T(a); + result += check_equal_simplify(e, 16 * color_ONE() / 9); + e = color_T(a) * color_T(b) * color_T(c) * color_T(c) * color_T(b) * color_T(a); + result += check_equal_simplify(e, 64 * color_ONE() / 27); + e = color_T(a) * color_T(b) * color_T(c) * color_T(k) * color_T(a) * color_T(k) * color_T(c) * color_T(b); + result += check_equal_simplify(e, -color_ONE() / 162); + + return result; +} + +static unsigned color_check3() +{ + // checks traces + + unsigned result = 0; + + idx a(symbol("a"), 8), b(symbol("b"), 8), c(symbol("c"), 8), k(symbol("k"), 8); + ex e; + + e = color_ONE(); + result += check_equal(color_trace(e), 3); + e = color_T(a); + result += check_equal(color_trace(e), 0); + e = color_T(a) * color_T(b); + result += check_equal(color_trace(e), delta_tensor(a, b) / 2); + e = color_T(a) * color_T(b) * color_T(c); + result += check_equal(color_trace(e), color_h(a, b, c) / 4); + + return result; +} + +unsigned exam_color() { unsigned result = 0; @@ -87,6 +136,8 @@ unsigned exam_color(void) clog << "----------color objects:" << endl; result += color_check1(); cout << '.' << flush; + result += color_check2(); cout << '.' << flush; + result += color_check3(); cout << '.' << flush; if (!result) { cout << " passed " << endl;