toms515, a MATLAB code which lists the subsets of size K selected from a set of size N, by Bill Buckles, Matthew Lybanon.

The text of many ACM TOMS algorithms is available online through ACM: or NETLIB:


The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.


toms515 is available in a C version and a C++ version and a FORTRAN90 version and a MATLAB version and a Python version.

Related Data and Programs:


subset, a MATLAB code which enumerates combinations, partitions, subsets, index sets, and other combinatorial objects.


Original FORTRAN77 version by Bill Buckles, Matthew Lybanon. MATLAB version by John Burkardt.


  1. Bill Buckles, Matthew Lybanon,
    Algorithm 515: Generation of a Vector from the Lexicographical Index,
    ACM Transactions on Mathematical Software,
    Volume 3, Number 2, June 1977, pages 180-182.

Source Code:

Last revised on 11 January 2021.