  We describe an efficient implementation of Bayesian quantum phase estimation
in the presence of noise and multiple eigenstates. The main contribution of
this work is the dynamic switching between different representations of the
phase distributions, namely truncated Fourier series and normal distributions.
The Fourier-series representation has the advantage of being exact in many
cases, but suffers from increasing complexity with each update of the prior.
This necessitates truncation of the series, which eventually causes the
distribution to become unstable. We derive bounds on the error in representing
normal distributions with a truncated Fourier series, and use these to decide
when to switch to the normal-distribution representation. This representation
is much simpler, and was proposed in conjunction with rejection filtering for
approximate Bayesian updates. We show that, in many cases, the update can be
done exactly using analytic expressions, thereby greatly reducing the time
complexity of the updates. Finally, when dealing with a superposition of
several eigenstates, we need to estimate the relative weights. This can be
formulated as a convex optimization problem, which we solve using a
gradient-projection algorithm. By updating the weights at exponentially scaled
iterations we greatly reduce the computational complexity without affecting the
overall accuracy.
