You can interpret each evaluation as computing ``f(x+dx_i)``. To get the full gradient we need to do this for each `i`, so you get `n` function calls. This is the main issue with forward-mode automatic differentiation (reverse-mode only requires O(1) calls).