these will each end up holding the answer to the question: “If, at the point when $I_k$ became first known during the calculation of the function value, we interrupted the computation, changed that value from $I_k$ to $I_k'=I_k+\epsilon$, and then allowed the computation to proceed without further modifications now using $I_k'$ instead of $I_k$, by how much would the final result then change, relative to $\epsilon$ (in the limit of small $\epsilon$)?”. Hence, the $\bar I_k$ will eventually become *sensitivities* that describe the dependence of the result on the given intermediate quantity.

-   Treating input parameters in the same way as intermediate values, the sensitivities on all the input values give the function’s gradient.

-   Sensitivities are calculated in a two-step process: first, the function is evaluated once to obtain all the intermediate quantities for the given choice of input parameters. Then, starting from the result, which has been obtained from an arithmetic operation involving intermediate values, sensitivities for the last intermediate get updated. As these again have been the result of some arithmetic operation, the sensitivities for the intermediate values they have been obtained from can be determined, etc. As one intermediate quantity may be used multiple times throughout 