As observed above, r"k" is the negative gradient of "f" at x = x"k", so the gradient descent method would require to move in the direction r"k". Here, however, we insist that the directions p"k" be conjugate to each other. A practical way to enforce this is by requiring that the next search direction be built out of the current residual and all previous search directions. The conjugation constraint is an orthonormal-type constraint and hence the algorithm can be viewed as an example of Gram-Schmidt orthonormalization. This gives the following expression: