experimenting with template metaprogramming, created a small maths library