---
name: "Math::GSL::Sum"
section: "3pm"
platform: "linux"
package: "libmath-gsl-perl"
version: "0.45-2+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Math::GSL::Sum"
---

# Math::GSL::Sum(3pm)

Sum series with the Levin u-transform

## NAME

Math::GSL::Sum - Sum series with the Levin u-transform

## SYNOPSIS

```
    use Math::GSL::Sum qw/:all/;
    my $w = gsl_sum_levin_u_alloc(5);
    $values = [8,2,3,4,6];
    my ($status, $sum_accel, $abserr) = gsl_sum_levin_u_accel($values, 5, $w);
    gsl_sum_levin_u_free($w);
    my $w2 = gsl_sum_levin_utrunc_alloc(5);
    my ($status2, $sum_accel2, $abserr_trunc) = gsl_sum_levin_utrunc_accel($values, 5, $w2);
    gsl_sum_levin_utrunc_free($w);
```

## DESCRIPTION

These functions accelerate the convergence of a series using the Levin u-transform.

- •

  gsl\_sum\_levin\_u\_alloc($n)

  This function allocates a workspace for a Levin u-transform of `$n` terms.

- •

  gsl\_sum\_levin\_u\_free($w)

  \- This function frees the memory associated with the workspace `$w`.

- •

  gsl\_sum\_levin\_u\_accel($array, `$array_size`, `$w`)

  This function takes the terms of a series in the array reference `$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 function returns multiple values in this order : 0 if the operation succeeded, 1 otherwise, the extrapolated sum and an estimate of the absolute error. 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.

- •

  gsl\_sum\_levin\_u\_minmax

- •

  gsl\_sum\_levin\_u\_step

- •

  gsl\_sum\_levin\_utrunc\_alloc($n)

  This function allocates a workspace for a Levin u-transform of `$n` terms, without error estimation.

- •

  gsl\_sum\_levin\_utrunc\_free($w)

  This function frees the memory associated with the workspace `$w`.

- •

  gsl\_sum\_levin\_utrunc\_accel($array, `$array_size`, `$w`)

  This function takes the terms of a series in the array reference `$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 function returns multiple values in this order : 0 if the operation succeeded, 1 otherwise, the extrapolated sum and an estimate of the error. The actual term-by-term sum is returned in `$w`-\>{sum\_plain}. The algorithm terminates when the difference between two successive extrapolations reaches a minimum or is sufficiently small. To improve the reliability of the algorithm the extrapolated values are replaced by moving averages when calculating the truncation error, smoothing out any fluctuations.

- •

  gsl\_sum\_levin\_utrunc\_minmax

- •

  gsl\_sum\_levin\_utrunc\_step

## AUTHORS

Jonathan "Duke" Leto \<jonathan@leto.net\> and Thierry Moisan \<thierry.moisan@gmail.com\>

## COPYRIGHT AND LICENSE

Copyright (C) 2008-2024 Jonathan "Duke" Leto and Thierry Moisan

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
