Computational differentiation