  In this paper, we describe an algorithm for approximating functions of the
form $f(x) = < \sigma(\mu), x^\mu >$ over $[0,1] \subset \mathbb{R}$, where
$\sigma(\mu)$ is some distribution supported on $[a,b]$, with $0 <a < b <
\infty$. One example from this class of functions is $x^c (\log{x})^m=(-1)^m <
\delta^{(m)}(\mu-c), x^\mu >$, where $a\leq c \leq b$ and $m \geq 0$ is an
integer. Given the desired accuracy $\epsilon$ and the values of $a$ and $b$,
our method determines a priori a collection of non-integer powers $t_1$, $t_2$,
$\ldots$, $t_N$, so that the functions are approximated by series of the form
$f(x)\approx \sum_{j=1}^N c_j x^{t_j}$, and a set of collocation points $x_1$,
$x_2$, $\ldots$, $x_N$, such that the expansion coefficients can be found by
collocating the function at these points. We prove that our method has a small
uniform approximation error which is proportional to $\epsilon$ multiplied by
some small constants. We demonstrate the performance of our algorithm with
several numerical experiments, and show that the number of singular powers and
collocation points grows as $N=O(\log{\frac{1}{\epsilon}})$.
