A big problem arises when calculating the semblance. At this step (c) we have to
do index calculations and extract data points. The preprocessor does not know
how to handle this instance and we have no way to tell it that the operation is
actually a discrete function evaluation.
We would like to either have the choice of telling it that this is a valid function
or that we are providing another
subroutine to evaluate the derivative numerically (eg. a derivative using Fourier transforms would be one alternative). At present *JAKEF* and any other preprocessor do not allow
this possibility. Appendix A shows the subroutine that calculates
the semblance function. Appendix B shows the *JAKEF* produced version.
It proceeds correctly up to the point of stacking the data values along
the computed RMS stacking trajectory. Since it does not know how to differentiate the
numerical function, the gradient is calculated as zero, and using
the chain rule, indicates that the total semblance gradient is zero.

11/18/1997