This post is a summary of the main content of G. R. Danesfahani and T. G. Jeans, *Optimisation of modified Mueller and Müller algorithm*, Electronics Letters 31(13), 22nd June 1995, pages 1032-1033 (DOI 10.1049/el:19950711). The original paper is copyright IEE, and is available from IEEE or your local library. The algorithm described in that paper is the one used in GNU Radio‘s gr_clock_recovery_mm block.

The paper first recalls the modified Mueller and Müller algorithm: given

- data symbols
- received signal with real part ,
- the receiver’s decision on the data symbol

then the modified Mueller and Müller algorithm (mM&M) computes an error

.

The paper then observes that this algorithm contains a self-noise term which can be cancelled by adding

.

The resulting algorithm, the optimised modified Mueller and Müller algorithm for real symbols (e.g., BPSK), outputs a timing error

.

This can be generalised to the complex domain (e.g., for QPSK) as

,

where

- is the receiver’s decision on the (complex) data symbol, and
- is the complex conjugate of .

Figure 1 presents this equation in the form of a block diagram, including a combined filter and interpolator (and presumably sampler) betweeen the input signal and , a decision block between and , and a loop filter driven from the real output of the equation via which influences the filter/interpolator/sampler.

The paper then presents simulation results (using a gain factor of ) which show that while the mM&M algorithm has fast acquisition it has lots of jitter and some symbol slips; by contrast the optimised mM&M algorithm exhibits much less jitter and no symbol slips, while preserving the same fast acquisition characteristics.