adds symbolic differentiation