LatNet Builder Manual 2.1.3-6
Software Package for Constructing Highly Uniform Point Sets
Loading...
Searching...
No Matches
Point set types

Switching between point set types

LatNet Builder can handle two main point set types:

The switch between these two types of points can be operated using the option –set-type which can take the following values:

  • –set-type lattice to search for lattice rules; or
  • –set-type net to search for digital nets.

Lattice rules

Types of lattice rules

Two types of lattice rules are supported by LatNet Builder:

The switch between these two types of lattices can be operated using the option –construction which can take the following values:

  • –construction ordinary to search for ordinary lattice rules; or
  • –construction polynomial to search for polynomial lattice rules.

Size and modulus of lattice rules

The option –size can be used to specify the size (number of points) of a lattice rule.

For instance, to specify an ordinary lattice rule with 6977 points, use –size 6977. It is also possible to specify the number of points as a power of a base. For instance –size 3^10 is also a valid expression. Recall that for ordinary lattice rules, the number of points is the same thing as the modulus.

For polynomial lattice rules, the number of points equals two to the power of the degree of its modulus. The number of points will thus always be a power of two. In the case of unilevel point sets, one can specify the number of points of the polynomial lattice rule to equal \(2^k\) with –size 2^k. In this case, a predefined polynomial with degree \(k\) will be chosen as modulus for the lattice. All the predefined polynomials are irreducible so that they can be used with the fast-CBC exploration method. These polynomials are from Arash Partow .

Otherwise, one can also specify a custom polynomial modulus using the option –modulus. The number of points will be two to the power of its degree. Polynomials are encoded as integers, where the formal variable is replaced by 2. For instance \( 1 + z^2 + z^5 \) is represented by \( 1 + 2^2 + 2^5 = 37\), so it can be specified by –modulus 37. Note that it is always necessary to specify a custom modulus when one constructs an embedded polynomial lattice rule.

How to construct a specific lattice rule

To construct a specific lattice rule, for instance to evaluate its merit value or to extend it, one must specify its generating vector. LatNet Builder uses the following convention: a generating vector is described by a dash-separated list of integers or polynomials, depending on whether the lattice is ordinary or polynomial.

  • An ordinary generating vector is a dash-separated list of integers.
  • A polynomial generating vector is a dash-separated list of polynomials (specified as explained above).

In the Command-Line Tutorial, any occurrence of genVec or point-set-description with –set-type lattice can be replaced by such a list. For instance to specify an ordinary lattice with generating vector \((1, 2, 3, 5, 7, 11)\), replace genVec with 1-2-3-5-7-11.

Digital nets

Digital net constructions

Three constructions of digital nets are supported by LatNet Builder:

The switch between these three constructions can be operated using the option –construction which can take the following values:

  • –construction sobol to search for Sobol' nets;
  • –construction polynomial to search for polynomial lattice rules; or
  • –construction explicit to search for with digital nets with explicit generating matrices.

Size of digital nets

Recall that the number of points of a digital net in base 2 is always a power of two. The option –size can be used to specify the number of points of the digital net. For instance, to specify a net with \(2^8\) points, use –size 2^8. For polynomial lattice rules, a default (irreducible) modulus corresponding to this number of points will be chosen; to choose a specific modulus, one can use –modulus as they would specify a modulus for a polynomial lattice rule.

How to construct a specific net

Constructing a specific digital net depends on its construction method. In the Command-Line Tutorial, any occurence of point-set-description or net-description can be replaced as follows:

  • for Sobol' nets:
    a list of direction numbers. Direction numbers are specified as a dash-separated list of comma-separated lists of integers. Each comma-separated list correspond to a coordinate. Details on direction numbers, including the number of direction numbers required for each coordinate, can be find here. For instance 0-1-1,1 stands for the Sobol' net in dimension 3 with direction numbers \(((0), (1), (1,1))\). Note that a dummy direction number equal to zero must be specified for the first coordinate (which is always equal to the identity matrix).
  • for polynomial lattice rules:
    a (polynomial) generating vector.
  • for explicit digital nets:
    a list of integers. Each integer represents a column of a generating matrix with the following format: the binary representation of the integer gives the r bits in the column, with the bit on the first row of the matrix (row \(0\)) being the most significant, and the one on the last row (row \(r − 1\)) being the least significant. Columns of the same matrix are separated by comma, and different matrices are separated by dashes. So for instance, if r=3, we can encode matrices with 3 rows, and 1,3,5-5,5,3-6,2,1 stands for the following generating matrices:

    \[ \begin{pmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{pmatrix}, \begin{pmatrix} 1 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 1 & 1 \end{pmatrix}, \begin{pmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}. \]

    In the code, we take r=31. So, for instance, 2^30=1073741824 encodes a column with a 1 on the first row, and 0 elsewhere.