Maths Code Refactoring

This pull request represents the completion of the first deliverable of my Google Summer of Code project.
I managed to refactor all the maths code in a c++ style while mantaining the same level of performance.
If you have any questions or doubts please ask.
This kind of \#define will cause obscure compile errors if someone accidentally uses X as a variable (not an uncommon letter to use) somewhere.