The following functions compute the full Levin *u*-transform of a series
with its error estimate. The error estimate is computed by propagating
rounding errors from each term through to the final extrapolation.

These functions are intended for summing analytic series where each term
is known to high accuracy, and the rounding errors are assumed to
originate from finite precision. They are taken to be relative errors of
order `GSL_DBL_EPSILON`

for each term.

The calculation of the error in the extrapolated value is an
*O(N^2)* process, which is expensive in time and memory. A faster
but less reliable method which estimates the error from the convergence
of the extrapolated value is described in the next section. For the
method described here a full table of intermediate values and
derivatives through to *O(N)* must be computed and stored, but this
does give a reliable error estimate.

- Function:
*gsl_sum_levin_u_workspace ****gsl_sum_levin_u_alloc***(size_t*`n`) -
This function allocates a workspace for a Levin

*u*-transform of`n`terms. The size of the workspace is*O(2n^2 + 3n)*.

- Function:
*void***gsl_sum_levin_u_free***(gsl_sum_levin_u_workspace **`w`) This function frees the memory associated with the workspace

`w`.

- Function:
*int***gsl_sum_levin_u_accel***(const double **`array`, size_t`array_size`, gsl_sum_levin_u_workspace *`w`, double *`sum_accel`, double *`abserr`) This function takes the terms of a series in

`array`of size`array_size`and computes the extrapolated limit of the series using a Levin*u*-transform. Additional working space must be provided in`w`. The extrapolated sum is stored in`sum_accel`, with an estimate of the absolute error stored in`abserr`. The actual term-by-term sum is returned in`w->sum_plain`

. The algorithm calculates the truncation error (the difference between two successive extrapolations) and round-off error (propagated from the individual terms) to choose an optimal number of terms for the extrapolation. All the terms of the series passed in through`array`should be non-zero.