DOKK / manpages / debian 11 / libmath-gsl-perl / Math::GSL::Multiset.3pm.en
Math::GSL::Multiset(3pm) User Contributed Perl Documentation Math::GSL::Multiset(3pm)

Math::GSL::Multiset - Multisets manipulation

    use Math::GSL::Multiset qw/:all/;
    my $ms = Math::GSL::Multiset->($n, $k);
    
    my $value = $ms->get(2);
    # compute next multiset
    $ms->next;
    # compute the previous multiset
    # clone a multiset
    my $other = $ms->clone();

A multiset c is represented by an array of k integers in the range 0 to n-1, where each value c_i may occur more than once. The multiset c corresponds to indices of k elements chosen from an n element vector with replacement. In mathematical terms, n is the cardinality of the multiset while k is the maximum multiplicity of any value.

Handy Perl-style OO API for Multisets.

"new"
Creates a new multiset with parameters n, k and initializes it to the lexicographically first multiset element, i.e., 0 repeated k times.

    my $ms = Math::GSL::Multiset->($n, $k);
    
"init_first"
Initializes the multiset to the lexicographically first multiset element, i.e. 0 repeated k times.

    $ms->init_first;
    
"init_last"
Initializes the multiset c to the lexicographically last multiset element, i.e. n-1 repeated k times.

    $ms->init_last;
    
"get"
Returns the value of the i-th element of the multiset. If i lies outside the allowed range of 0 to k-1 then the error handler is invoked and 0 is returned.

    my $val = $ms->get($k-1);
    
"next"
Advances the multiset to the next multiset element in lexicographic order and returns GSL_SUCCESS. If no further multisets elements are available it returns GSL_FAILURE and leaves the multiset unmodified. Starting with the first multiset and repeatedly applying this function will iterate through all possible multisets of a given order.

    $ms->next();
    
"prev"
    $ms->prev();
    

Steps backwards from the multiset to the previous multiset element in lexicographic order, returning GSL_SUCCESS. If no previous multiset is available it returns GSL_FAILURE and leaves the multiset unmodified.

"to_list"
Creates a Perl list of integers with the values from the multiset, starting at index 0 and ending at index $k-1.

    @data = $ms->to_list;
    
"clone"
Creates a new multiset with the same size, and same values.

    my $new = $ms->clone;
    

GSL API

For reference on these methds, please consult the GSL documentation.

"gsl_multiset_calloc"
"gsl_multiset_alloc"
"gsl_multiset_init_first"
"gsl_multiset_init_last"
"gsl_multiset_free"
"gsl_multiset_memcpy"
"gsl_multiset_get"
"gsl_multiset_n"
"gsl_multiset_k"
"gsl_multiset_data"
"gsl_multiset_valid"
"gsl_multiset_next"
"gsl_multiset_prev"
"gsl_multiset_fwrite"
"gsl_multiset_fread"
"gsl_multiset_fprintf"
"gsl_multiset_fscanf"

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

Copyright (C) 2008-2020 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.

2020-11-09 perl v5.32.0