classmethod galois.GLFSR.Taps(taps: FieldArray, state: ArrayLike | None = None) Self

Constructs a Galois LFSR from its taps \(T = [-a_n, \dots, -a_2, -a_1]\).

Parameters:
taps: FieldArray

The shift register taps \(T = [-a_n, \dots, -a_2, -a_1]\).

state: ArrayLike | None = None

The initial state vector \(S = [S_0, S_1, \dots, S_{n-2}, S_{n-1}]\). The default is None which corresponds to all ones.

Returns:

A Galois LFSR with taps \(T = [-a_n, \dots, -a_2, -a_1]\).

Examples

In [1]: characteristic_poly = galois.primitive_poly(7, 4); characteristic_poly
Out[1]: Poly(x^4 + x^2 + 3x + 5, GF(7))

In [2]: taps = -characteristic_poly.coeffs[1:]; taps
Out[2]: GF([0, 6, 4, 2], order=7)

In [3]: lfsr = galois.GLFSR.Taps(taps)

In [4]: print(lfsr)
Galois LFSR:
  field: GF(7)
  feedback_poly: 1 + x^2 + 3x^3 + 5x^4
  characteristic_poly: x^4 + x^2 + 3x + 5
  taps: [2 4 6 0]
  order: 4
  state: [1 1 1 1]
  initial_state: [1 1 1 1]