Questaal Home
Navigation

Syntax of integer lists


Integer lists consist of a sequence of strings separated by commas:

       <i>strn1</i>,<i>strn2</i>,...

Each of the   strn1, strn2, …   can assume one of the following forms:

  1. a single integer or algebraic expression

  2. two integer expressions separated by a colon, viz
    low:high
    gets expanded into
    low, low+1, low+2, ... high

  3. Three integer expressions separated by colons, viz
    low:high:step
    gets expanded into:
    low, low+step, low+2*step, ... high

  4. (Extension, not always applicable). The dup tag
    dup=#
    duplicates the entire list to this point, adding  #  to each of the duplicate elements. The list up to the current point doubles in size.

  5. (Extension, not always applicable). The seq tag
    seq=#1,#2,#3,...
    is similar to dup, with the following modifications:

    1. The existing list is replicated and shifted for each of the #1, #2, #3, .
    2. The shift is constructed so that the first element of the the duplicated list begins at #1, the second at #2, etc.

    The size of the list thus increases by a factor n, n being the number of integers in #1,#2,#3,....

    If you want to continue the list after seq=#1,#2,#3,… , delimit this string with a semicolon (see the mlist example below).

Examples

  5+1             becomes a single number, 6.
  5+1:8+2         becomes a sequence of numbers, 6 7 8 9 10
  5+1:8+2:2       becomes a sequence of numbers, 6 8 10
  1:4,7:11        becomes the sequence 1 2 3 4  7 8 9 10 11

  5,6,dup=16,8    becomes the sequence 5 6  21 22  8

  7:9:2,seq=16,25 becomes the sequence 7 9  16 18  25 27

The mlist utility

The Questaal suite comes with a utility mlist that enables you to enter a list on the command line and see how it is expanded. mlist normally performs a corresponding function for real numbers (capabilities 1,2,3 but not 4,5); but if you invoke mlist with  -i  it will generate an integer list according to all five rules explained above.

Example using mlist:

mlist -i '0,dup=2,seq=10,20;dup=100,seq=1000'

doubles the initial list (0), then trebles the new list to make 6 elements (seq=10,20), doubles it again (dup=100), and doubles it once more to make the following list of 24 elements:

 0 2 10 12 20 22 100 102 110 112 120 122 1000 1002 1010 1012 1020 1022 1100 1102 1110 1112 1120 1122

Note:  slatsm/mkilst.f contains the source code for generating integer lists.

Questions or Comments


If this page has any errors, there is something you think is missing or unclear, or for any other issues, you can create a post here letting us know.