A review of automatic differentiation and its efficient implementation | Synapse