Quick Navigator

 Search Site Miscellaneous Server Agreement Year 2038 Credits

# Manual Reference Pages  -  MATH::GSL::COMBINATION (3)

.ds Aq ’

### NAME

Math::GSL::Combination - Combinations

### SYNOPSIS

```

use Math::GSL qw/:all/;
use Math::GSL::Combination qw/:all/;

my \$c   = Math::GSL::Combination->new(6,3);
print join (" ", \$c->as_list) . "\n";
\$c->next;
print join (" ", \$c->as_list) . "\n";

my \$fd = gsl_fopen(combination.dat, w);
gsl_combination_fwrite(\$fd, \$c->raw);
gsl_fclose(\$fd);

```

### DESCRIPTION

Here is a list of all the functions in this module :
o gsl_combination_alloc(\$n, \$k)

This function allocates memory for a new combination with parameters \$n, \$k. The combination is not initialized and its elements are undefined. Use the function gsl_combination_calloc if you want to create a combination which is initialized to the lexicographically first combination.

o gsl_combination_calloc(\$n, \$k)

This function allocates memory for a new combination with parameters \$n, \$k and initializes it to the lexicographically first combination.

o gsl_combination_init_first(\$c)

This function initializes the combination \$c to the lexicographically first combination, i.e. (0,1,2,...,k-1).

o gsl_combination_init_last(\$c)

This function initializes the combination \$c to the lexicographically last combination, i.e. (n-k,n-k+1,...,n-1).

o gsl_combination_free(\$c)

This function frees all the memory used by the combination \$c.

o gsl_combination_memcpy(\$dest, \$src)

This function copies the elements of the combination \$src into the combination \$dest. The two combinations must have the same size.

o gsl_combination_get(\$c, \$i)

This function returns the value of the i-th element of the combination \$c. If \$i lies outside the allowed range of 0 to k-1 then the error handler is invoked and 0 is returned.

o gsl_combination_fwrite(\$stream, \$c)

This function writes the elements of the combination \$c to the stream \$stream, opened with the gsl_fopen function from the Math::GSL module, in binary format. The function returns \$GSL_EFAILED if there was a problem writing to the file. Since the data is written in the native binary format it may not be portable between different architectures.

This function reads elements from the open stream \$stream, opened with the gsl_fopen function from the Math::GSL module, into the combination \$c in binary format. The combination \$c must be preallocated with correct values of n and k since the function uses the size of \$c to determine how many bytes to read. The function returns \$GSL_EFAILED if there was a problem reading from the file. The data is assumed to have been written in the native binary format on the same architecture.

o gsl_combination_fprintf(\$stream, \$c, \$format)

This function writes the elements of the combination \$c line-by-line to the stream \$stream, opened with the gsl_fopen function from the Math::GSL module, using the format specifier \$format, which should be suitable for a type of size_t. In ISO C99 the type modifier z represents size_t, so %zu\n is a suitable format. The function returns \$GSL_EFAILED if there was a problem writing to the file.

o gsl_combination_fscanf(\$stream, \$c)

This function reads formatted data from the stream \$stream into the combination \$c. The combination \$c must be preallocated with correct values of n and k since the function uses the size of \$c to determine how many numbers to read. The function returns \$GSL_EFAILED if there was a problem reading from the file.

o gsl_combination_n(\$c)

This function returns the range (n) of the combination \$c.

o gsl_combination_k(\$c)

This function returns the number of elements (k) in the combination \$c.

o gsl_combination_data(\$c)

This function returns a pointer to the array of elements in the combination \$c.

o gsl_combination_valid(\$c)

This function checks that the combination \$c is valid. The k elements should lie in the range 0 to n-1, with each value occurring once at most and in increasing order.

o gsl_combination_next(\$c)

This function advances the combination \$c to the next combination in lexicographic order and returns \$GSL_SUCCESS. If no further combinations are available it returns \$GSL_FAILURE and leaves \$c unmodified. Starting with the first combination and repeatedly applying this function will iterate through all possible combinations of a given order.

o gsl_combination_prev(\$c)

This function steps backwards from the combination \$c to the previous combination in lexicographic order, returning \$GSL_SUCCESS. If no previous combination is available it returns \$GSL_FAILURE and leaves \$c unmodified.

For more informations on the functions, we refer you to the GSL offcial documentation: <http://www.gnu.org/software/gsl/manual/html_node/>

### AUTHORS

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