A few words of warning

A misuse of a mathematical term

Scattered through the comments is the word "Schur index", which is NOT used in its normal sense. It is defined for irreducible, real representations, and is 1 if the type is real, 2 if it is complex, 4 if it is quaternion. (So it is the real dimension of the endomorphism ring).
I do apologize about this. I made this mistake while coding, and very quickly it was just too late to change all the comments.

The use of C++

When you look at the source code for this project, you will realize that I have started from "scratch", and that I define polynomials, algebras, Grobner basis methods, and so on. Why did I choose not to rely on a package written by somebody else ? Now, in retrospect, do I think this was a good idea ? Not certain. I think SAGE is a marvelous algebra package (and I just love Python, which underlies it). It would have taken a lot of time to understand SAGE enough to do the stuff that I have in mind, but it would have been a lifetime investment. I'll probably do it sooner or later.
A good thing with SAGE is that most of its methods have been refereed. On the other hand, I'm not certain if 100% of it has been refereed. My code is compact enough that anyone should be able to check for themselves its validity.

What this project is not

The style of coding might be misleading: I just wanted to get straight to the point, and do just enough to complete my calculations. At first sight the code looks like it should be able to do much more than it actually can. However, the advantage is that its structure is pretty transparent.