A fast and numerically stable algorithm is described for computing the discrete Hankel transform of order 0 as well as evaluating Schlömilch and Fourier-Bessel expansions in O(N (log N ) 2 / loglog N ) operations. The algorithm is based on an asymptotic expansion for Bessel functions of large arguments, the fast Fourier transform, and the Neumann addition formula. All the algorithmic parameters are selected from error bounds to achieve a near-optimal computational cost for any accuracy goal. Numerical results demonstrate the efficiency of the resulting algorithm. 1 2. Existing methods. We now give a brief description of some existing methods for evaluating (1.2) that roughly fall into four categories: (1) Direct summation; (2) Evaluation via an integral representation; (3) Evaluation using asymptotic expansions, and; (4) Butterfly schemes. For other approaches see [5].2.1. Direct summation. One of the simplest ideas is to evaluate J ν (r k ω n ) for 1 ≤ k, n ≤ N and then naively compute the sums in (1.2). By using the Taylor series expansion in (3.3) for small z, the asymptotic expansion in (3.1) for large z, and Miller's algorithm [18, Sec. 3.6(vi)] (backward recursion with a three-term recurrence) otherwise, each evaluation of J ν (z) costs O(1) operations [2]. Therefore, 2 One could now compute J ν,M ( r ω ⊺ )c by first computing the vector J ASY ν,M ( r ω ⊺ )c and then correcting it by R ν,M ( r ω ⊺ )c. The matrix-vector product J ASY ν,M ( r ω ⊺ )c 9