[GiNaC-list] Performance of simplify_indexed on long chains of Dirac matrices

Vladyslav Shtabovenko v.shtabovenko at tum.de
Sun Jan 4 00:48:23 CET 2015


Dear all,

I'm wondering about the performance of simplify_indexed applied to a
long chain of Dirac matrices in D dimensions.

For example, simplifying

g^i1 g^i2 g^i3 g^i4 g^i5 g^i6 g^i7 g^i8 g^i9 g^i1 g^i2 g^i3 g^i4 g^i5
g^i6 g^i7 g^i8 g^i9

requires about 15 seconds on my machine. Is this something one would
normally expect with GiNaC, or am I lacking some essential optimizations?

I'm using Fedora 20 64-bit with newest GiNaC from the Git repository.
The machine is an i5-3570 with 16GB RAM. The source code
---------------------------------------------------------------------
#include <iostream>
#include <ginac/ginac.h>
using namespace std;
using namespace GiNaC;
int main() {
symbol D("D");
  varidx i1(symbol("i1"), D),
   i2(symbol("i2"), D),
   i3(symbol("i3"), D),
   i4(symbol("i4"), D),
   i5(symbol("i5"), D),
   i6(symbol("i6"), D),
   i7(symbol("i7"), D),
   i8(symbol("i8"), D),
   i9(symbol("i9"), D);


cout << (simplify_indexed(dirac_gamma(i1)*
    dirac_gamma(i2)*
    dirac_gamma(i3)*
    dirac_gamma(i4)*
    dirac_gamma(i5)*
    dirac_gamma(i6)*
    dirac_gamma(i7)*
    dirac_gamma(i8)*
    dirac_gamma(i9)*
    dirac_gamma(i1.toggle_variance())*
    dirac_gamma(i2.toggle_variance())*
    dirac_gamma(i3.toggle_variance())*
    dirac_gamma(i4.toggle_variance())*
    dirac_gamma(i5.toggle_variance())*
    dirac_gamma(i6.toggle_variance())*
    dirac_gamma(i7.toggle_variance())*
    dirac_gamma(i8.toggle_variance())*
    dirac_gamma(i9.toggle_variance())
    )).expand()
    << endl;

   return 0;
}
---------------------------------------------------------------------

is compiled and run via

c++ test.cpp -o test -Ofast -lcln -lginac  -Wl,-rpath,/usr/local/lib
time ./test

Cheers,
Vladyslav


More information about the GiNaC-list mailing list