Even a tiny analytic error in taking the derivative
will result in completely incorrect results for
your calculations. (There is no ``partial'' credit for analytic
errors when doing numerical calculations!)
To make certain that you have taken the derivative correctly and coded it properly, run your routines exc() and excp() with the main program in Appendix A. When your derivative is right, your results should approach the value one with a very regular digit-shifting pattern!