- galois.FLFSR.to_galois_lfsr() GLFSR
Converts the Fibonacci LFSR to a Galois LFSR that produces the same output.
- Returns:¶
An equivalent Galois LFSR.
Examples¶
Create a Fibonacci LFSR with a given initial state.
In [1]: c = galois.primitive_poly(7, 4); c Out[1]: Poly(x^4 + x^2 + 3x + 5, GF(7)) In [2]: fibonacci_lfsr = galois.FLFSR(c.reverse(), state=[1, 2, 3, 4]) In [3]: print(fibonacci_lfsr) Fibonacci LFSR: field: GF(7) feedback_poly: 5x^4 + 3x^3 + x^2 + 1 characteristic_poly: x^4 + x^2 + 3x + 5 taps: [0 6 4 2] order: 4 state: [1 2 3 4] initial_state: [1 2 3 4]
Convert the Fibonacci LFSR to an equivalent Galois LFSR. Notice the initial state is different.
In [4]: galois_lfsr = fibonacci_lfsr.to_galois_lfsr() In [5]: print(galois_lfsr) Galois LFSR: field: GF(7) feedback_poly: 5x^4 + 3x^3 + x^2 + 1 characteristic_poly: x^4 + x^2 + 3x + 5 taps: [2 4 6 0] order: 4 state: [2 6 3 4] initial_state: [2 6 3 4]
Step both LFSRs and see that their output sequences are identical.
In [6]: fibonacci_lfsr.step(10) Out[6]: GF([4, 3, 2, 1, 4, 6, 4, 5, 0, 2], order=7) In [7]: galois_lfsr.step(10) Out[7]: GF([4, 3, 2, 1, 4, 6, 4, 5, 0, 2], order=7)