GF2Vector (Bouncy Castle Library 1.54 API Specification)
Date: 2015-12-29

org.bouncycastle.pqc.math.linearalgebra

## Class GF2Vector

- java.lang.Object
- - org.bouncycastle.pqc.math.linearalgebra.Vector
  - - org.bouncycastle.pqc.math.linearalgebra.GF2Vector

-     public class GF2Vector
      extends Vector

  This class implements the abstract class `Vector` for the case of vectors over the finite field GF(2).
  For the vector representation the array of type int[] is used, thus one element of the array holds 32 elements of the vector.
  See Also:
    `Vector`

- - ### Field Summary

    - ### Fields inherited from class org.bouncycastle.pqc.math.linearalgebra.Vector

      `length`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `GF2Vector(GF2Vector other)` Copy constructor.
    `` | `GF2Vector(int length)` Construct the zero vector of the given length.
    `protected` | `GF2Vector(int[] v, int length)` Construct a new `GF2Vector` of the given length and with the given element array.
    `` | `GF2Vector(int length, int[] v)` Construct a GF2Vector of the given length and with elements from the given array.
    `` | `GF2Vector(int length, int t, java.security.SecureRandom sr)` Construct a random GF2Vector of the given length with the specified number of non-zero coefficients.
    `` | `GF2Vector(int length, java.security.SecureRandom sr)` Construct a random GF2Vector of the given length.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Vector` | `add(Vector other)` Adds another GF2Vector to this vector.
    `boolean` | `equals(java.lang.Object other)` Check if the given object is equal to this vector.
    `GF2Vector` | `extractLeftVector(int k)` Return a new vector consisting of the first `k` elements of this vector.
    `GF2Vector` | `extractRightVector(int k)` Return a new vector consisting of the last `k` elements of this vector.
    `GF2Vector` | `extractVector(int[] setJ)` Return a new vector consisting of the elements of this vector with the indices given by the set `setJ`.
    `int` | `getBit(int index)` Return the value of the bit of this vector at the specified index.
    `byte[]` | `getEncoded()` Encode this vector as byte array.
    `int` | `getHammingWeight()` Return the Hamming weight of this vector, i.e., compute the number of units of this vector.
    `int[]` | `getVecArray()`
    `int` | `hashCode()`
    `boolean` | `isZero()` Return whether this is the zero vector (i.e., all elements are zero).
    `Vector` | `multiply(Permutation p)` Multiply this vector with a permutation.
    `static GF2Vector` | `OS2VP(int length, byte[] encVec)` Construct a new GF2Vector with the given length out of the encoded vector.
    `void` | `setBit(int index)` Set the coefficient at the given index to 1.
    `GF2mVector` | `toExtensionFieldVector(GF2mField field)` Rewrite this vector as a vector over `GF(2m)` with `t` elements.
    `java.lang.String` | `toString()`

    - ### Methods inherited from class org.bouncycastle.pqc.math.linearalgebra.Vector

      `getLength`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### GF2Vector

          public GF2Vector(int length)

      Construct the zero vector of the given length.
      Parameters:
        `length` - the length of the vector

    - #### GF2Vector

          public GF2Vector(int length,
                   java.security.SecureRandom sr)

      Construct a random GF2Vector of the given length.
      Parameters:
        `length` - the length of the vector
        `sr` - the source of randomness

    - #### GF2Vector

          public GF2Vector(int length,
                   int t,
                   java.security.SecureRandom sr)

      Construct a random GF2Vector of the given length with the specified number of non-zero coefficients.
      Parameters:
        `length` - the length of the vector
        `t` - the number of non-zero coefficients
        `sr` - the source of randomness

    - #### GF2Vector

          public GF2Vector(int length,
                   int[] v)

      Construct a GF2Vector of the given length and with elements from the given array. The array is copied and unused bits are masked out.
      Parameters:
        `length` - the length of the vector
        `v` - the element array

    - #### GF2Vector

          public GF2Vector(GF2Vector other)

      Copy constructor.
      Parameters:
        `other` - another `GF2Vector`

    - #### GF2Vector

          protected GF2Vector(int[] v,
                   int length)

      Construct a new `GF2Vector` of the given length and with the given element array. The array is not changed and only a reference to the array is stored. No length checking is performed either.
      Parameters:
        `v` - the element array
        `length` - the length of the vector

  - ### Method Detail

    - #### OS2VP

          public static GF2Vector OS2VP(int length,
                        byte[] encVec)

      Construct a new GF2Vector with the given length out of the encoded vector.
      Parameters:
        `length` - the length of the vector
        `encVec` - the encoded vector
      Returns:
        the decoded vector

    - #### getEncoded

          public byte[] getEncoded()

      Encode this vector as byte array.
      Specified by:
        `getEncoded` in class `Vector`
      Returns:
        the encoded vector

    - #### getVecArray

          public int[] getVecArray()

      Returns:
        the int array representation of this vector

    - #### getHammingWeight

          public int getHammingWeight()

      Return the Hamming weight of this vector, i.e., compute the number of units of this vector.
      Returns:
        the Hamming weight of this vector

    - #### isZero

          public boolean isZero()

      Description copied from class: `Vector`
      Return whether this is the zero vector (i.e., all elements are zero).
      Specified by:
        `isZero` in class `Vector`
      Returns:
        whether this is the zero vector (i.e., all elements are zero)

    - #### getBit

          public int getBit(int index)

      Return the value of the bit of this vector at the specified index.
      Parameters:
        `index` - the index
      Returns:
        the value of the bit (0 or 1)

    - #### setBit

          public void setBit(int index)

      Set the coefficient at the given index to 1. If the index is out of bounds, do nothing.
      Parameters:
        `index` - the index of the coefficient to set

    - #### add

          public Vector add(Vector other)

      Adds another GF2Vector to this vector.
      Specified by:
        `add` in class `Vector`
      Parameters:
        `other` - another GF2Vector
      Returns:
        `this + other`
      Throws:
        `java.lang.ArithmeticException` - if the other vector is not a GF2Vector or has another length.

    - #### multiply

          public Vector multiply(Permutation p)

      Multiply this vector with a permutation.
      Specified by:
        `multiply` in class `Vector`
      Parameters:
        `p` - the permutation
      Returns:
        `this*p = p*this`

    - #### extractVector

          public GF2Vector extractVector(int[] setJ)

      Return a new vector consisting of the elements of this vector with the indices given by the set `setJ`.
      Parameters:
        `setJ` - the set of indices of elements to extract
      Returns:
        the new `GF2Vector` `[this_setJ[0], this_setJ[1], ..., this_setJ[#setJ-1]]`

    - #### extractLeftVector

          public GF2Vector extractLeftVector(int k)

      Return a new vector consisting of the first `k` elements of this vector.
      Parameters:
        `k` - the number of elements to extract
      Returns:
        a new `GF2Vector` consisting of the first `k` elements of this vector

    - #### extractRightVector

          public GF2Vector extractRightVector(int k)

      Return a new vector consisting of the last `k` elements of this vector.
      Parameters:
        `k` - the number of elements to extract
      Returns:
        a new `GF2Vector` consisting of the last `k` elements of this vector

    - #### toExtensionFieldVector

          public GF2mVector toExtensionFieldVector(GF2mField field)

      Rewrite this vector as a vector over `GF(2m)` with `t` elements.
      Parameters:
        `field` - the finite field `GF(2m)`
      Returns:
        the converted vector over `GF(2m)`

    - #### equals

          public boolean equals(java.lang.Object other)

      Check if the given object is equal to this vector.
      Specified by:
        `equals` in class `Vector`
      Parameters:
        `other` - vector
      Returns:
        the result of the comparison

    - #### hashCode

          public int hashCode()

      Specified by:
        `hashCode` in class `Vector`
      Returns:
        the hash code of this vector

    - #### toString

          public java.lang.String toString()

      Specified by:
        `toString` in class `Vector`
      Returns:
        a human readable form of this vector