  We discuss the best methods available for computing the gamma function
$\Gamma(z)$ in arbitrary-precision arithmetic with rigorous error bounds. We
address different cases: rational, algebraic, real or complex arguments; large
or small arguments; low or high precision; with or without precomputation. The
methods also cover the log-gamma function $\log \Gamma(z)$, the digamma
function $\psi(z)$, and derivatives $\Gamma^{(n)}(z)$ and $\psi^{(n)}(z)$.
Besides attempting to summarize the existing state of the art, we present some
new formulas, estimates, bounds and algorithmic improvements and discuss
implementation results.
