Mathematical expression manipulation, differentiation and code generation in C#