* Here we test GiNaC's Clifford algebra objects. */
/*
- * GiNaC Copyright (C) 1999-2011 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2015 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
{
ex e = expand_dummy_sum(normal(simplify_indexed(e1) - e2), true);
- for (int j=0; j<4; j++) {
+ for (int j=0; j<4; j++) {
ex esub = e.subs(
is_a<varidx>(mu)
? lst (
static unsigned check_equal_simplify_term2(const ex & e1, const ex & e2)
{
- ex e = expand_dummy_sum(normal(simplify_indexed(e1) - e2), true);
+ ex e = expand_dummy_sum(normal(simplify_indexed(e1) - e2), true);
if (!(canonicalize_clifford(e).is_zero())) {
clog << "simplify_indexed(" << e1 << ") - (" << e2 << ") erroneously returned "
<< canonicalize_clifford(e) << " instead of 0" << endl;
e = dirac_gamma(mu, 0) * dirac_gamma(mu.toggle_variance(), 1) * dirac_gamma(nu, 0) * dirac_gamma(nu.toggle_variance(), 1);
result += check_equal_simplify(dirac_trace(e, 0), 4 * dim * dirac_ONE(1));
result += check_equal_simplify(dirac_trace(e, 1), 4 * dim * dirac_ONE(0));
- // Fails with new tinfo mechanism because the order of gamme matrices with different rl depends on luck.
+ // Fails with new tinfo mechanism because the order of gamma matrices with different rl depends on luck.
// TODO: better check.
//result += check_equal_simplify(dirac_trace(e, 2), canonicalize_clifford(e)); // e will be canonicalized by the calculation of the trace
result += check_equal_simplify(dirac_trace(e, lst(0, 1)), 16 * dim);
result += clifford_check6<varidx>(ex_to<matrix>(diag_matrix(lst(-1, 1, s, t))))+clifford_check6<idx>(ex_to<matrix>(diag_matrix(lst(-1, 1, s, t))));; cout << '.' << flush;
matrix A(4, 4);
- A = 1, 0, 0, 0, // anticommuting, not symmetric, Tr=0
- 0, -1, 0, 0,
- 0, 0, 0, -1,
- 0, 0, 1, 0;
+ A = 1, 0, 0, 0, // anticommuting, not symmetric, Tr=0
+ 0, -1, 0, 0,
+ 0, 0, 0, -1,
+ 0, 0, 1, 0;
result += clifford_check6<varidx>(A)+clifford_check6<idx>(A);; cout << '.' << flush;
- A = 1, 0, 0, 0, // anticommuting, not symmetric, Tr=2
- 0, 1, 0, 0,
- 0, 0, 0, -1,
- 0, 0, 1, 0;
+ A = 1, 0, 0, 0, // anticommuting, not symmetric, Tr=2
+ 0, 1, 0, 0,
+ 0, 0, 0, -1,
+ 0, 0, 1, 0;
result += clifford_check6<varidx>(A)+clifford_check6<idx>(A);; cout << '.' << flush;
- A = 1, 0, 0, 0, // not anticommuting, symmetric, Tr=0
- 0, -1, 0, 0,
- 0, 0, 0, -1,
- 0, 0, -1, 0;
+ A = 1, 0, 0, 0, // not anticommuting, symmetric, Tr=0
+ 0, -1, 0, 0,
+ 0, 0, 0, -1,
+ 0, 0, -1, 0;
result += clifford_check6<varidx>(A)+clifford_check6<idx>(A);; cout << '.' << flush;
- A = 1, 0, 0, 0, // not anticommuting, symmetric, Tr=2
- 0, 1, 0, 0,
- 0, 0, 0, -1,
- 0, 0, -1, 0;
+ A = 1, 0, 0, 0, // not anticommuting, symmetric, Tr=2
+ 0, 1, 0, 0,
+ 0, 0, 0, -1,
+ 0, 0, -1, 0;
result += clifford_check6<varidx>(A)+clifford_check6<idx>(A);; cout << '.' << flush;
- A = 1, 1, 0, 0, // not anticommuting, not symmetric, Tr=4
- 0, 1, 1, 0,
- 0, 0, 1, 1,
- 0, 0, 0, 1;
+ A = 1, 1, 0, 0, // not anticommuting, not symmetric, Tr=4
+ 0, 1, 1, 0,
+ 0, 0, 1, 1,
+ 0, 0, 0, 1;
result += clifford_check6<varidx>(A)+clifford_check6<idx>(A);; cout << '.' << flush;
symbol dim("D");