Inverse NMO stack is a procedure which combines conventional NMO and stacking into one step. By solving a set of simultaneous equations using optimization methods, such as conjugate gradient, inverse NMO stack tries to find the most ``reasonable'' stack trace for a CMP gather. Claerbout 1994 discusses inverse NMO stack in constant velocity to illustrate how back projection can be upgraded towards inversion. In this note, I extend his idea to the case of depth-variable velocity.

When implementing the inverse NMO stack operator, I find some interesting
features linking with the concepts of ``push'' and ``pull''
Claerbout (1995), which are adjoint to each other. In this note,
I call this adjoint *implementation adjoint*. There is another kind of
adjoint associated with a geophysical operator, which I call *geophysical
adjoint*. For instance, the process of generating a CMP gather from a stack
trace and the process of creating a stack trace from a CMP gather are adjoint
to each other. Ideally, the geophysical adjoint should be independent
from the implementation adjoint. In practice, it is not true. The geophysical
adjoint is always coupled with the implementation adjoint. For example, if the
geophysical forward operation is ``push'', the adjoint operation
must be ``pull'', and vice versa.

In this note, I discuss the relation between the geophysical adjoint and the implementation adjoint. I argue that this relation is inevitable in our computer implementation. In other words, this relation will only disappear when the geophysical adjoint operation can be implemented in continuous space, instead of a discrete space.

Finally, I investigate the possibility of using this method in suppressing nonhyperbolic moveout and random noise. The result is encouraging.

11/11/1997