Fast Reverse-Mode Automatic Differentiation using Expression Templates in C++ | Synapse