Symbolic differentiation is messy and finite differences are approximate. What if there were another option?