exercise 2.73 data-directed symbolic differentiation package