Documentation of 'umontreal.iro.lecuyer.hups.DigitalNetBase2' Java class
DigitalNetBase2
umontreal.iro.lecuyer.hups

Class DigitalNetBase2

  • Direct Known Subclasses:
    DigitalNetBase2FromFile, DigitalSequenceBase2, F2wNetLFSR, F2wNetPolyLCG


    public class DigitalNetBase2
    extends DigitalNet
    A special case of DigitalNet for the base b = 2. The implementation exploit the binary nature of computers and is much more efficient than for the general case. Binary expansions are easy to obtain because the computer already uses them internally. The generator matrices Cj are stored in a large array of size sk. The c-th column of Cj, for c = 0,..., k - 1, is stored at position jk + c of that array, as a 32-bit integer. For all derived classes, the above 32-bit integer must be of the form [00 ... C0C1 ... Cr-1]. The value of k cannot exceed 31 (32 is not allowed because Java does not have 32-bit unsigned integers). The value of w is always 31.

    The random digital shift in base 2 corresponds to a random XOR. It can be applied via the method addRandomShift.

    • Constructor Detail

      • DigitalNetBase2

        public DigitalNetBase2()
    • Method Detail

      • printGeneratorMatrices

        public void printGeneratorMatrices(int s)
        Prints the generator matrices as bit matrices in standard form for dimensions 1 to s.
        Overrides:
        printGeneratorMatrices in class DigitalNet
      • printGeneratorMatricesTrans

        public void printGeneratorMatricesTrans(int s)
        Prints the generator matrices transposed in the form of integers for dimensions 1 to s. Each integer corresponds to a column of bits.
      • getCoordinate

        public double getCoordinate(int i,
                                    int j)
        Description copied from class: PointSet
        Returns ui, j, the coordinate j of the point i.
        Overrides:
        getCoordinate in class DigitalNet
        Parameters:
        i - index of the point to look for
        j - index of the coordinate to look for
        Returns:
        the value of ui, j
      • getCoordinateNoGray

        public double getCoordinateNoGray(int i,
                                          int j)
        Description copied from class: DigitalNet
        Returns ui, j, the coordinate j of point i, the points being enumerated in the standard order (no Gray code).
        Overrides:
        getCoordinateNoGray in class DigitalNet
        Parameters:
        i - point index
        j - coordinate index
        Returns:
        the value of ui, j
      • iterator

        public PointSetIterator iterator()
        Description copied from class: PointSet
        Constructs and returns a point set iterator. The default implementation returns an iterator that uses the method getCoordinate (i,j) to iterate over the points and coordinates, but subclasses can reimplement it for better efficiency.
        Overrides:
        iterator in class DigitalNet
        Returns:
        point set iterator for the point set
      • iteratorNoGray

        public PointSetIterator iteratorNoGray()
        This iterator does not use the Gray code. Thus the points are enumerated in the order of their first coordinate before randomization.
        Overrides:
        iteratorNoGray in class DigitalNet
      • toString

        public java.lang.String toString()
        Description copied from class: PointSet
        Formats a string that contains information about the point set.
        Overrides:
        toString in class DigitalNet
        Returns:
        string representation of the point set information
      • clearRandomShift

        public void clearRandomShift()
        Description copied from class: PointSet
        Erases the current random shift, if any.
        Overrides:
        clearRandomShift in class DigitalNet
      • addRandomShift

        public void addRandomShift(RandomStream stream)
        Description copied from class: DigitalNet
        Same as addRandomShift(0, dim, stream), where dim is the dimension of the digital net.
        Overrides:
        addRandomShift in class DigitalNet
        Parameters:
        stream - random number stream used to generate uniforms
      • addRandomShift

        public void addRandomShift(int d1,
                                   int d2,
                                   RandomStream stream)
        Description copied from class: DigitalNet
        Adds a random digital shift to all the points of the point set, using stream stream to generate the random numbers. For each coordinate j from d1 to d2-1, the shift vector (dj, 0,..., dj, k-1) is generated uniformly over {0,..., b - 1}k and added modulo b to the digits of all the points. After adding a digital shift, all iterators must be reconstructed or reset to zero.
        Overrides:
        addRandomShift in class DigitalNet
        stream - random number stream used to generate uniforms
      • leftMatrixScramble

        public void leftMatrixScramble(RandomStream stream)
        Description copied from class: DigitalNet
        Applies a linear scramble by multiplying each Cj on the left by a w×w nonsingular lower-triangular matrix Mj, as suggested by Matoušek and implemented by Hong and Hickernell. The diagonal entries of each matrix Mj are generated uniformly over {1,..., b - 1}, the entries below the diagonal are generated uniformly over {0,..., b - 1}, and all these entries are generated independently. This means that in base b = 2, all diagonal elements are equal to 1.
        Overrides:
        leftMatrixScramble in class DigitalNet
        Parameters:
        stream - random number stream used to generate the randomness
      • iBinomialMatrixScramble

        public void iBinomialMatrixScramble(RandomStream stream)
        Description copied from class: DigitalNet
        Applies the i-binomial matrix scramble proposed by Tezuka . This multiplies each Cj on the left by a w×w nonsingular lower-triangular matrix Mj as in leftMatrixScramble, but with the additional constraint that all entries on any given diagonal or subdiagonal of Mj are identical.
        Overrides:
        iBinomialMatrixScramble in class DigitalNet
        Parameters:
        stream - random number stream used as generator of the randomness
      • stripedMatrixScramble

        public void stripedMatrixScramble(RandomStream stream)
        Description copied from class: DigitalNet
        Applies the striped matrix scramble proposed by Owen. It multiplies each Cj on the left by a w×w nonsingular lower-triangular matrix Mj as in leftMatrixScramble, but with the additional constraint that in any column, all entries below the diagonal are equal to the diagonal entry, which is generated randomly over {1,..., b - 1}. Note that for b = 2, the matrices Mj become deterministic, with all entries on and below the diagonal equal to 1.
        Overrides:
        stripedMatrixScramble in class DigitalNet
        Parameters:
        stream - random number stream used as generator of the randomness
      • rightMatrixScramble

        public void rightMatrixScramble(RandomStream stream)
        Description copied from class: DigitalNet
        Applies a linear scramble by multiplying each Cj on the right by a single k×k nonsingular upper-triangular matrix M, as suggested by Faure and Tezuka. The diagonal entries of the matrix M are generated uniformly over {1,..., b - 1}, the entries above the diagonal are generated uniformly over {0,..., b - 1}, and all the entries are generated independently. The effect of this scramble is only to change the order in which the points are generated. If one computes the average value of a function over all the points of a given digital net, or over a number of points that is a power of the basis, then this scramble makes no difference.
        Overrides:
        rightMatrixScramble in class DigitalNet
        Parameters:
        stream - random number stream used as generator of the randomness
      • leftMatrixScrambleFaurePermut

        public void leftMatrixScrambleFaurePermut(RandomStream stream,
                                                  int sb)
        Description copied from class: DigitalNet
        Similar to leftMatrixScramble except that the diagonal elements of each matrix Mj are chosen from a restricted set of the best integers as calculated by Faure. They are generated uniformly over the first sb elements of array F, where F is made up of a permutation of the integers [1..(b - 1)]. These integers are sorted by increasing order of the upper bounds of the extreme discrepancy for the given integer.
        Overrides:
        leftMatrixScrambleFaurePermut in class DigitalNet
        Parameters:
        stream - random number stream used to generate the randomness
        sb - Only the first sb elements of F are used
      • leftMatrixScrambleFaurePermutAll

        public void leftMatrixScrambleFaurePermutAll(RandomStream stream,
                                                     int sb)
        Description copied from class: DigitalNet
        Similar to leftMatrixScrambleFaurePermut except that the elements under the diagonal are also chosen from the same restricted set as the diagonal elements.
        Overrides:
        leftMatrixScrambleFaurePermutAll in class DigitalNet
        Parameters:
        stream - random number stream used to generate the randomness
        sb - Only the first sb elements of F are used
      • iBinomialMatrixScrambleFaurePermutAll

        public void iBinomialMatrixScrambleFaurePermutAll(RandomStream stream,
                                                          int sb)
        Description copied from class: DigitalNet
        Similar to iBinomialMatrixScrambleFaurePermut except that the elements under the diagonal are also chosen from the same restricted set as the diagonal elements.
        Overrides:
        iBinomialMatrixScrambleFaurePermutAll in class DigitalNet
        Parameters:
        stream - random number stream used to generate the randomness
        sb - Only the first sb elements of F are used

DMelt 3.0 © DataMelt by jWork.ORG

You see the box below because you did not login.