gf(2) Berlekamp Algorithm

If possible, factor polynomial, including at least one irreducible factor.

f = b0000000000000000111101111101100100100100100111111111001100111111
f = 0x0000f7d9249ff33f
f = x47 + x46 + x45 + x44 + x42 + x41 + x40 + x39 + x38 + x36 + x35 + x32 + x29 + x26 + x23 + x20 + x19 + x18 + x17 + x16 + x15 + x14 + x13 + x12 + x9 + x8 + x5 + x4 + x3 + x2 + x + 1

Calculate vn = x2n (mod f) for n=0 to 47

v0 = x0 (mod f)
v0 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
v0 = 0x000000000000000000000001
v0 = 1

v1 = x2 (mod f)
v1 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100
v1 = 0x000000000000000000000004
v1 = x2

v2 = x4 (mod f)
v2 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000
v2 = 0x000000000000000000000010
v2 = x4

v3 = x6 (mod f)
v3 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000
v3 = 0x000000000000000000000040
v3 = x6

v4 = x8 (mod f)
v4 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000
v4 = 0x000000000000000000000100
v4 = x8

v5 = x10 (mod f)
v5 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000
v5 = 0x000000000000000000000400
v5 = x10

v6 = x12 (mod f)
v6 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000
v6 = 0x000000000000000000001000
v6 = x12

v7 = x14 (mod f)
v7 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000
v7 = 0x000000000000000000004000
v7 = x14

v8 = x16 (mod f)
v8 = b000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000
v8 = 0x000000000000000000010000
v8 = x16

v9 = x18 (mod f)
v9 = b000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000
v9 = 0x000000000000000000040000
v9 = x18

v10 = x20 (mod f)
v10 = b000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000
v10 = 0x000000000000000000100000
v10 = x20

v11 = x22 (mod f)
v11 = b000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000
v11 = 0x000000000000000000400000
v11 = x22

v12 = x24 (mod f)
v12 = b000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000
v12 = 0x000000000000000001000000
v12 = x24

v13 = x26 (mod f)
v13 = b000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000
v13 = 0x000000000000000004000000
v13 = x26

v14 = x28 (mod f)
v14 = b000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000
v14 = 0x000000000000000010000000
v14 = x28

v15 = x30 (mod f)
v15 = b000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000
v15 = 0x000000000000000040000000
v15 = x30

v16 = x32 (mod f)
v16 = b000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000
v16 = 0x000000000000000100000000
v16 = x32

v17 = x34 (mod f)
v17 = b000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000
v17 = 0x000000000000000400000000
v17 = x34

v18 = x36 (mod f)
v18 = b000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000
v18 = 0x000000000000001000000000
v18 = x36

v19 = x38 (mod f)
v19 = b000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000
v19 = 0x000000000000004000000000
v19 = x38

v20 = x40 (mod f)
v20 = b000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000
v20 = 0x000000000000010000000000
v20 = x40

v21 = x42 (mod f)
v21 = b000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000
v21 = 0x000000000000040000000000
v21 = x42

v22 = x44 (mod f)
v22 = b000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000
v22 = 0x000000000000100000000000
v22 = x44

v23 = x46 (mod f)
v23 = b000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000
v23 = 0x000000000000400000000000
v23 = x46

v24 = x48 (mod f)
v24 = b000000000000000000000000000000000000000000000000000110000110101101101101101000000001010101000001
v24 = 0x000000000000186b6da01541
v24 = x44 + x43 + x38 + x37 + x35 + x33 + x32 + x30 + x29 + x27 + x26 + x24 + x23 + x21 + x12 + x10 + x8 + x6 + 1

v25 = x50 (mod f)
v25 = b000000000000000000000000000000000000000000000000011000011010110110110110100000000101010100000100
v25 = 0x00000000000061adb6805504
v25 = x46 + x45 + x40 + x39 + x37 + x35 + x34 + x32 + x31 + x29 + x28 + x26 + x25 + x23 + x14 + x12 + x10 + x8 + x2

v26 = x52 (mod f)
v26 = b000000000000000000000000000000000000000000000000011010010000010010010011001111101011001001101110
v26 = 0x0000000000006904933eb26e
v26 = x46 + x45 + x43 + x40 + x34 + x31 + x28 + x25 + x24 + x21 + x20 + x19 + x18 + x17 + x15 + x13 + x12 + x9 + x6 + x5 + x3 + x2 + x

v27 = x54 (mod f)
v27 = b000000000000000000000000000000000000000000000000010010111010000000000101110001010010111111000110
v27 = 0x0000000000004ba005c52fc6
v27 = x46 + x43 + x41 + x40 + x39 + x37 + x26 + x24 + x23 + x22 + x18 + x16 + x13 + x11 + x10 + x9 + x8 + x7 + x6 + x2 + x

v28 = x56 (mod f)
v28 = b000000000000000000000000000000000000000000000000001101101110101101111010101101001010101001011001
v28 = 0x00000000000036eb7ab4aa59
v28 = x45 + x44 + x42 + x41 + x39 + x38 + x37 + x35 + x33 + x32 + x30 + x29 + x28 + x27 + x25 + x23 + x21 + x20 + x18 + x15 + x13 + x11 + x9 + x6 + x4 + x3 + 1

v29 = x58 (mod f)
v29 = b000000000000000000000000000000000000000000000000001011000111010011001110010011010101101001011011
v29 = 0x0000000000002c74ce4d5a5b
v29 = x45 + x43 + x42 + x38 + x37 + x36 + x34 + x31 + x30 + x27 + x26 + x25 + x22 + x19 + x18 + x16 + x14 + x12 + x11 + x9 + x6 + x4 + x3 + x + 1

v30 = x60 (mod f)
v30 = b000000000000000000000000000000000000000000000000010001100000101000011101101010101001101001010011
v30 = 0x000000000000460a1daa9a53
v30 = x46 + x42 + x41 + x35 + x33 + x28 + x27 + x26 + x24 + x23 + x21 + x19 + x17 + x15 + x12 + x11 + x9 + x6 + x4 + x + 1

v31 = x62 (mod f)
v31 = b000000000000000000000000000000000000000000000000000000000100001100011011000010100111110000001101
v31 = 0x00000000000000431b0a7c0d
v31 = x38 + x33 + x32 + x28 + x27 + x25 + x24 + x19 + x17 + x14 + x13 + x12 + x11 + x10 + x3 + x2 + 1

v32 = x64 (mod f)
v32 = b000000000000000000000000000000000000000000000000000000010000110001101100001010011111000000110100
v32 = 0x000000000000010c6c29f034
v32 = x40 + x35 + x34 + x30 + x29 + x27 + x26 + x21 + x19 + x16 + x15 + x14 + x13 + x12 + x5 + x4 + x2

v33 = x66 (mod f)
v33 = b000000000000000000000000000000000000000000000000000001000011000110110000101001111100000011010000
v33 = 0x0000000000000431b0a7c0d0
v33 = x42 + x37 + x36 + x32 + x31 + x29 + x28 + x23 + x21 + x18 + x17 + x16 + x15 + x14 + x7 + x6 + x4

v34 = x68 (mod f)
v34 = b000000000000000000000000000000000000000000000000000100001100011011000010100111110000001101000000
v34 = 0x00000000000010c6c29f0340
v34 = x44 + x39 + x38 + x34 + x33 + x31 + x30 + x25 + x23 + x20 + x19 + x18 + x17 + x16 + x9 + x8 + x6

v35 = x70 (mod f)
v35 = b000000000000000000000000000000000000000000000000010000110001101100001010011111000000110100000000
v35 = 0x000000000000431b0a7c0d00
v35 = x46 + x41 + x40 + x36 + x35 + x33 + x32 + x27 + x25 + x22 + x21 + x20 + x19 + x18 + x11 + x10 + x8

v36 = x72 (mod f)
v36 = b000000000000000000000000000000000000000000000000000101000000011101000100010100000010000101000001
v36 = 0x000000000000140744502141
v36 = x44 + x42 + x34 + x33 + x32 + x30 + x26 + x22 + x20 + x13 + x8 + x6 + 1

v37 = x74 (mod f)
v37 = b000000000000000000000000000000000000000000000000010100000001110100010001010000001000010100000100
v37 = 0x000000000000501d11408504
v37 = x46 + x44 + x36 + x35 + x34 + x32 + x28 + x24 + x22 + x15 + x10 + x8 + x2

v38 = x76 (mod f)
v38 = b000000000000000000000000000000000000000000000000010110000001111100101000101000100000000101010001
v38 = 0x000000000000581f28a20151
v38 = x46 + x44 + x43 + x36 + x35 + x34 + x33 + x32 + x29 + x27 + x23 + x21 + x17 + x8 + x6 + x4 + 1

v39 = x78 (mod f)
v39 = b000000000000000000000000000000000000000000000000011110000001011111001111001010000001000000000101
v39 = 0x0000000000007817cf281005
v39 = x46 + x45 + x44 + x43 + x36 + x34 + x33 + x32 + x31 + x30 + x27 + x26 + x25 + x24 + x21 + x19 + x12 + x2 + 1

v40 = x80 (mod f)
v40 = b000000000000000000000000000000000000000000000000000011111110110101110101100111111010011001101010
v40 = 0x0000000000000fed759fa66a
v40 = x43 + x42 + x41 + x40 + x39 + x38 + x37 + x35 + x34 + x32 + x30 + x29 + x28 + x26 + x24 + x23 + x20 + x19 + x18 + x17 + x16 + x15 + x13 + x10 + x9 + x6 + x5 + x3 + x

v41 = x82 (mod f)
v41 = b000000000000000000000000000000000000000000000000001111111011010111010110011111101001100110101000
v41 = 0x0000000000003fb5d67e99a8
v41 = x45 + x44 + x43 + x42 + x41 + x40 + x39 + x37 + x36 + x34 + x32 + x31 + x30 + x28 + x26 + x25 + x22 + x21 + x20 + x19 + x18 + x17 + x15 + x12 + x11 + x8 + x7 + x5 + x3

v42 = x84 (mod f)
v42 = b000000000000000000000000000000000000000000000000000010010000111001111101011001011001010110011111
v42 = 0x000000000000090e7d65959f
v42 = x43 + x40 + x35 + x34 + x33 + x30 + x29 + x28 + x27 + x26 + x24 + x22 + x21 + x18 + x16 + x15 + x12 + x10 + x8 + x7 + x4 + x3 + x2 + x + 1

v43 = x86 (mod f)
v43 = b000000000000000000000000000000000000000000000000001001000011100111110101100101100101011001111100
v43 = 0x0000000000002439f596567c
v43 = x45 + x42 + x37 + x36 + x35 + x32 + x31 + x30 + x29 + x28 + x26 + x24 + x23 + x20 + x18 + x17 + x14 + x12 + x10 + x9 + x6 + x5 + x4 + x3 + x2

v44 = x88 (mod f)
v44 = b000000000000000000000000000000000000000000000000011001110011111011110010110001101010101011001111
v44 = 0x000000000000673ef2c6aacf
v44 = x46 + x45 + x42 + x41 + x40 + x37 + x36 + x35 + x34 + x33 + x31 + x30 + x29 + x28 + x25 + x23 + x22 + x18 + x17 + x15 + x13 + x11 + x9 + x7 + x6 + x3 + x2 + x + 1

v45 = x90 (mod f)
v45 = b000000000000000000000000000000000000000000000000011100110100100110000010001001010100110101000010
v45 = 0x000000000000734982254d42
v45 = x46 + x45 + x44 + x41 + x40 + x38 + x35 + x32 + x31 + x25 + x21 + x18 + x16 + x14 + x11 + x10 + x8 + x6 + x

v46 = x92 (mod f)
v46 = b000000000000000000000000000000000000000000000000001000101001010001000001101010101101001101110110
v46 = 0x000000000000229441aad376
v46 = x45 + x41 + x39 + x36 + x34 + x30 + x24 + x23 + x21 + x19 + x17 + x15 + x14 + x12 + x9 + x8 + x6 + x5 + x4 + x2 + x

Represent v0-v46 as matrix Q
Q = 00000000000000000000000000000000000000000000001 00000000000000000000000000000000000000000000100 00000000000000000000000000000000000000000010000 00000000000000000000000000000000000000001000000 00000000000000000000000000000000000000100000000 00000000000000000000000000000000000010000000000 00000000000000000000000000000000001000000000000 00000000000000000000000000000000100000000000000 00000000000000000000000000000010000000000000000 00000000000000000000000000001000000000000000000 00000000000000000000000000100000000000000000000 00000000000000000000000010000000000000000000000 00000000000000000000001000000000000000000000000 00000000000000000000100000000000000000000000000 00000000000000000010000000000000000000000000000 00000000000000001000000000000000000000000000000 00000000000000100000000000000000000000000000000 00000000000010000000000000000000000000000000000 00000000001000000000000000000000000000000000000 00000000100000000000000000000000000000000000000 00000010000000000000000000000000000000000000000 00001000000000000000000000000000000000000000000 00100000000000000000000000000000000000000000000 10000000000000000000000000000000000000000000000 00110000110101101101101101000000001010101000001 11000011010110110110110100000000101010100000100 11010010000010010010011001111101011001001101110 10010111010000000000101110001010010111111000110 01101101110101101111010101101001010101001011001 01011000111010011001110010011010101101001011011 10001100000101000011101101010101001101001010011 00000000100001100011011000010100111110000001101 00000010000110001101100001010011111000000110100 00001000011000110110000101001111100000011010000 00100001100011011000010100111110000001101000000 10000110001101100001010011111000000110100000000 00101000000011101000100010100000010000101000001 10100000001110100010001010000001000010100000100 10110000001111100101000101000100000000101010001 11110000001011111001111001010000001000000000101 00011111110110101110101100111111010011001101010 01111111011010111010110011111101001100110101000 00010010000111001111101011001011001010110011111 01001000011100111110101100101100101011001111100 11001110011111011110010110001101010101011001111 11100110100100110000010001001010100110101000010 01000101001010001000001101010101101001101110110
Represent 47x47 identity matrix I
I = 00000000000000000000000000000000000000000000001 00000000000000000000000000000000000000000000010 00000000000000000000000000000000000000000000100 00000000000000000000000000000000000000000001000 00000000000000000000000000000000000000000010000 00000000000000000000000000000000000000000100000 00000000000000000000000000000000000000001000000 00000000000000000000000000000000000000010000000 00000000000000000000000000000000000000100000000 00000000000000000000000000000000000001000000000 00000000000000000000000000000000000010000000000 00000000000000000000000000000000000100000000000 00000000000000000000000000000000001000000000000 00000000000000000000000000000000010000000000000 00000000000000000000000000000000100000000000000 00000000000000000000000000000001000000000000000 00000000000000000000000000000010000000000000000 00000000000000000000000000000100000000000000000 00000000000000000000000000001000000000000000000 00000000000000000000000000010000000000000000000 00000000000000000000000000100000000000000000000 00000000000000000000000001000000000000000000000 00000000000000000000000010000000000000000000000 00000000000000000000000100000000000000000000000 00000000000000000000001000000000000000000000000 00000000000000000000010000000000000000000000000 00000000000000000000100000000000000000000000000 00000000000000000001000000000000000000000000000 00000000000000000010000000000000000000000000000 00000000000000000100000000000000000000000000000 00000000000000001000000000000000000000000000000 00000000000000010000000000000000000000000000000 00000000000000100000000000000000000000000000000 00000000000001000000000000000000000000000000000 00000000000010000000000000000000000000000000000 00000000000100000000000000000000000000000000000 00000000001000000000000000000000000000000000000 00000000010000000000000000000000000000000000000 00000000100000000000000000000000000000000000000 00000001000000000000000000000000000000000000000 00000010000000000000000000000000000000000000000 00000100000000000000000000000000000000000000000 00001000000000000000000000000000000000000000000 00010000000000000000000000000000000000000000000 00100000000000000000000000000000000000000000000 01000000000000000000000000000000000000000000000 10000000000000000000000000000000000000000000000
M = Q-I
M = 00000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000110 00000000000000000000000000000000000000000010100 00000000000000000000000000000000000000001001000 00000000000000000000000000000000000000100010000 00000000000000000000000000000000000010000100000 00000000000000000000000000000000001000001000000 00000000000000000000000000000000100000010000000 00000000000000000000000000000010000000100000000 00000000000000000000000000001000000001000000000 00000000000000000000000000100000000010000000000 00000000000000000000000010000000000100000000000 00000000000000000000001000000000001000000000000 00000000000000000000100000000000010000000000000 00000000000000000010000000000000100000000000000 00000000000000001000000000000001000000000000000 00000000000000100000000000000010000000000000000 00000000000010000000000000000100000000000000000 00000000001000000000000000001000000000000000000 00000000100000000000000000010000000000000000000 00000010000000000000000000100000000000000000000 00001000000000000000000001000000000000000000000 00100000000000000000000010000000000000000000000 10000000000000000000000100000000000000000000000 00110000110101101101100101000000001010101000001 11000011010110110110100100000000101010100000100 11010010000010010010111001111101011001001101110 10010111010000000001101110001010010111111000110 01101101110101101101010101101001010101001011001 01011000111010011101110010011010101101001011011 10001100000101001011101101010101001101001010011 00000000100001110011011000010100111110000001101 00000010000110101101100001010011111000000110100 00001000011001110110000101001111100000011010000 00100001100001011000010100111110000001101000000 10000110001001100001010011111000000110100000000 00101000001011101000100010100000010000101000001 10100000011110100010001010000001000010100000100 10110000101111100101000101000100000000101010001 11110001001011111001111001010000001000000000101 00011101110110101110101100111111010011001101010 01111011011010111010110011111101001100110101000 00011010000111001111101011001011001010110011111 01011000011100111110101100101100101011001111100 11101110011111011110010110001101010101011001111 10100110100100110000010001001010100110101000010 11000101001010001000001101010101101001101110110
Find null basis vectors of M

nv0 = b000000000000000000000000000000000000000000000000010000110000110000001110100101100010101100011000
nv0 = 0x000000000000430c0e962b18
nv0 = x46 + x41 + x40 + x35 + x34 + x27 + x26 + x25 + x23 + x20 + x18 + x17 + x13 + x11 + x9 + x8 + x4 + x3

nv1 = b000000000000000000000000000000000000000000000000001000101010001100101010101101010001000010010010
nv1 = 0x00000000000022a32ab51092
nv1 = x45 + x41 + x39 + x37 + x33 + x32 + x29 + x27 + x25 + x23 + x21 + x20 + x18 + x16 + x12 + x7 + x4 + x

nv2 = b000000000000000000000000000000000000000000000000000100011011101100010010111000110111101000001100
nv2 = 0x00000000000011bb12e37a0c
nv2 = x44 + x40 + x39 + x37 + x36 + x35 + x33 + x32 + x28 + x25 + x23 + x22 + x21 + x17 + x16 + x14 + x13 + x12 + x11 + x9 + x3 + x2

nv3 = b000000000000000000000000000000000000000000000000000010001011001011101101101010110001011000000000
nv3 = 0x00000000000008b2edab1600
nv3 = x43 + x39 + x37 + x36 + x33 + x31 + x30 + x29 + x27 + x26 + x24 + x23 + x21 + x19 + x17 + x16 + x12 + x10 + x9

nv4 = b000000000000000000000000000000000000000000000000000001111001111000100100100010101110100111101100
nv4 = 0x000000000000079e248ae9ec
nv4 = x42 + x41 + x40 + x39 + x36 + x35 + x34 + x33 + x29 + x26 + x23 + x19 + x17 + x15 + x14 + x13 + x11 + x8 + x7 + x6 + x5 + x3 + x2

nv5 = b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
nv5 = 0x000000000000000000000001
nv5 = 1

Add f to list of known factors (kf)

kfo = b0000000000000000111101111101100100100100100111111111001100111111
kfo = 0x0000f7d9249ff33f
kfo = x47 + x46 + x45 + x44 + x42 + x41 + x40 + x39 + x38 + x36 + x35 + x32 + x29 + x26 + x23 + x20 + x19 + x18 + x17 + x16 + x15 + x14 + x13 + x12 + x9 + x8 + x5 + x4 + x3 + x2 + x + 1

For each null basis vector (excluding trivial 1), find known factor (kf) which can be factored.

nv0 = b0000000000000000010000110000110000001110100101100010101100011000
nv0 = 0x0000430c0e962b18
nv0 = x46 + x41 + x40 + x35 + x34 + x27 + x26 + x25 + x23 + x20 + x18 + x17 + x13 + x11 + x9 + x8 + x4 + x3

New factor (nf) = f/gcd(f,nv0)

nf = b0000000000000000000000001100011101000000110100011000111011010101
nf = 0x000000c740d18ed5
nf = x39 + x38 + x34 + x33 + x32 + x30 + x23 + x22 + x20 + x16 + x15 + x11 + x10 + x9 + x7 + x6 + x4 + x2 + 1

Search though known factors (kf) for which (nf) factors evenly

kf0 = b0000000000000000111101111101100100100100100111111111001100111111
kf0 = 0x0000f7d9249ff33f
kf0 = x47 + x46 + x45 + x44 + x42 + x41 + x40 + x39 + x38 + x36 + x35 + x32 + x29 + x26 + x23 + x20 + x19 + x18 + x17 + x16 + x15 + x14 + x13 + x12 + x9 + x8 + x5 + x4 + x3 + x2 + x + 1

t = kf0/nf

tremainder = b0000000000000000000000000000000000000000000000000000000000000000
tremainder = 0x0000000000000000
tremainder = 0

tremainder == 0, nf is a factor of kf0

kf0 = nf // Replace kf0 with nf
kf1 = tquotient // Append tquotient to known factors list

tquotient = b0000000000000000000000000000000000000000000000000000000101000011
tquotient = 0x0000000000000143
tquotient = x8 + x6 + x + 1

nv1 = b0000000000000000001000101010001100101010101101010001000010010010
nv1 = 0x000022a32ab51092
nv1 = x45 + x41 + x39 + x37 + x33 + x32 + x29 + x27 + x25 + x23 + x21 + x20 + x18 + x16 + x12 + x7 + x4 + x

New factor (nf) = f/gcd(f,nv1)

nf = b0000000000000000000000000000000000000000001001111000101010011001
nf = 0x0000000000278a99
nf = x21 + x18 + x17 + x16 + x15 + x11 + x9 + x7 + x4 + x3 + 1

Search though known factors (kf) for which (nf) factors evenly

kf0 = b0000000000000000000000001100011101000000110100011000111011010101
kf0 = 0x000000c740d18ed5
kf0 = x39 + x38 + x34 + x33 + x32 + x30 + x23 + x22 + x20 + x16 + x15 + x11 + x10 + x9 + x7 + x6 + x4 + x2 + 1

t = kf0/nf

tremainder = b0000000000000000000000000000000000000000000000000000000000000000
tremainder = 0x0000000000000000
tremainder = 0

tremainder == 0, nf is a factor of kf0

kf0 = nf // Replace kf0 with nf
kf2 = tquotient // Append tquotient to known factors list

tquotient = b0000000000000000000000000000000000000000000001101010101111101101
tquotient = 0x000000000006abed
tquotient = x18 + x17 + x15 + x13 + x11 + x9 + x8 + x7 + x6 + x5 + x3 + x2 + 1

nv2 = b0000000000000000000100011011101100010010111000110111101000001100
nv2 = 0x000011bb12e37a0c
nv2 = x44 + x40 + x39 + x37 + x36 + x35 + x33 + x32 + x28 + x25 + x23 + x22 + x21 + x17 + x16 + x14 + x13 + x12 + x11 + x9 + x3 + x2

New factor (nf) = f/gcd(f,nv2)

nf = b0000000000000000000000000000000000000000000000000000000011000001
nf = 0x00000000000000c1
nf = x7 + x6 + 1

Search though known factors (kf) for which (nf) factors evenly

kf0 = b0000000000000000000000000000000000000000001001111000101010011001
kf0 = 0x0000000000278a99
kf0 = x21 + x18 + x17 + x16 + x15 + x11 + x9 + x7 + x4 + x3 + 1

t = kf0/nf

tremainder = b0000000000000000000000000000000000000000000000000000000000001100
tremainder = 0x000000000000000c
tremainder = x3 + x2

tremainder != 0, nf is not a factor.

kf1 = b0000000000000000000000000000000000000000000000000000000101000011
kf1 = 0x0000000000000143
kf1 = x8 + x6 + x + 1

t = kf1/nf

tremainder = b0000000000000000000000000000000000000000000000000000000000000000
tremainder = 0x0000000000000000
tremainder = 0

tremainder == 0, nf is a factor of kf1

kf1 = nf // Replace kf1 with nf
kf3 = tquotient // Append tquotient to known factors list

tquotient = b0000000000000000000000000000000000000000000000000000000000000011
tquotient = 0x0000000000000003
tquotient = x + 1

nv3 = b0000000000000000000010001011001011101101101010110001011000000000
nv3 = 0x000008b2edab1600
nv3 = x43 + x39 + x37 + x36 + x33 + x31 + x30 + x29 + x27 + x26 + x24 + x23 + x21 + x19 + x17 + x16 + x12 + x10 + x9

New factor (nf) = f/gcd(f,nv3)

nf = b0000000000000000000000000000000000001111010011001101011001101001
nf = 0x000000000f4cd669
nf = x27 + x26 + x25 + x24 + x22 + x19 + x18 + x15 + x14 + x12 + x10 + x9 + x6 + x5 + x3 + 1

Search though known factors (kf) for which (nf) factors evenly

kf0 = b0000000000000000000000000000000000000000001001111000101010011001
kf0 = 0x0000000000278a99
kf0 = x21 + x18 + x17 + x16 + x15 + x11 + x9 + x7 + x4 + x3 + 1

t = kf0/nf

tremainder = b0000000000000000000000000000000000000000001001111000101010011001
tremainder = 0x0000000000278a99
tremainder = x21 + x18 + x17 + x16 + x15 + x11 + x9 + x7 + x4 + x3 + 1

tremainder != 0, nf is not a factor.

kf1 = b0000000000000000000000000000000000000000000000000000000011000001
kf1 = 0x00000000000000c1
kf1 = x7 + x6 + 1

t = kf1/nf

tremainder = b0000000000000000000000000000000000000000000000000000000011000001
tremainder = 0x00000000000000c1
tremainder = x7 + x6 + 1

tremainder != 0, nf is not a factor.

kf2 = b0000000000000000000000000000000000000000000001101010101111101101
kf2 = 0x000000000006abed
kf2 = x18 + x17 + x15 + x13 + x11 + x9 + x8 + x7 + x6 + x5 + x3 + x2 + 1

t = kf2/nf

tremainder = b0000000000000000000000000000000000000000000001101010101111101101
tremainder = 0x000000000006abed
tremainder = x18 + x17 + x15 + x13 + x11 + x9 + x8 + x7 + x6 + x5 + x3 + x2 + 1

tremainder != 0, nf is not a factor.

kf3 = b0000000000000000000000000000000000000000000000000000000000000011
kf3 = 0x0000000000000003
kf3 = x + 1

t = kf3/nf

tremainder = b0000000000000000000000000000000000000000000000000000000000000011
tremainder = 0x0000000000000003
tremainder = x + 1

tremainder != 0, nf is not a factor.

nv4 = b0000000000000000000001111001111000100100100010101110100111101100
nv4 = 0x0000079e248ae9ec
nv4 = x42 + x41 + x40 + x39 + x36 + x35 + x34 + x33 + x29 + x26 + x23 + x19 + x17 + x15 + x14 + x13 + x11 + x8 + x7 + x6 + x5 + x3 + x2

New factor (nf) = f/gcd(f,nv4)

nf = b0000000000000000000000000000000000000000000000000000001110010011
nf = 0x0000000000000393
nf = x9 + x8 + x7 + x4 + x + 1

Search though known factors (kf) for which (nf) factors evenly

kf0 = b0000000000000000000000000000000000000000001001111000101010011001
kf0 = 0x0000000000278a99
kf0 = x21 + x18 + x17 + x16 + x15 + x11 + x9 + x7 + x4 + x3 + 1

t = kf0/nf

tremainder = b0000000000000000000000000000000000000000000000000000000010000000
tremainder = 0x0000000000000080
tremainder = x7

tremainder != 0, nf is not a factor.

kf1 = b0000000000000000000000000000000000000000000000000000000011000001
kf1 = 0x00000000000000c1
kf1 = x7 + x6 + 1

t = kf1/nf

tremainder = b0000000000000000000000000000000000000000000000000000000011000001
tremainder = 0x00000000000000c1
tremainder = x7 + x6 + 1

tremainder != 0, nf is not a factor.

kf2 = b0000000000000000000000000000000000000000000001101010101111101101
kf2 = 0x000000000006abed
kf2 = x18 + x17 + x15 + x13 + x11 + x9 + x8 + x7 + x6 + x5 + x3 + x2 + 1

t = kf2/nf

tremainder = b0000000000000000000000000000000000000000000000000000000101110001
tremainder = 0x0000000000000171
tremainder = x8 + x6 + x5 + x4 + 1

tremainder != 0, nf is not a factor.

kf3 = b0000000000000000000000000000000000000000000000000000000000000011
kf3 = 0x0000000000000003
kf3 = x + 1

t = kf3/nf

tremainder = b0000000000000000000000000000000000000000000000000000000000000011
tremainder = 0x0000000000000003
tremainder = x + 1

tremainder != 0, nf is not a factor.

Known factors:

kf0 = b0000000000000000000000000000000000000000001001111000101010011001
kf0 = 0x0000000000278a99
kf0 = x21 + x18 + x17 + x16 + x15 + x11 + x9 + x7 + x4 + x3 + 1

kf1 = b0000000000000000000000000000000000000000000000000000000011000001
kf1 = 0x00000000000000c1
kf1 = x7 + x6 + 1

kf2 = b0000000000000000000000000000000000000000000001101010101111101101
kf2 = 0x000000000006abed
kf2 = x18 + x17 + x15 + x13 + x11 + x9 + x8 + x7 + x6 + x5 + x3 + x2 + 1

kf3 = b0000000000000000000000000000000000000000000000000000000000000011
kf3 = 0x0000000000000003
kf3 = x + 1

Current factorization of f:

f = (b1001111000101010011001)(b11000001)(b1101010101111101101)(b11)
f = (0x278a99)(0xc1)(0x6abed)(0x3)
f = (x21 + x18 + x17 + x16 + x15 + x11 + x9 + x7 + x4 + x3 + 1)(x7 + x6 + 1)(x18 + x17 + x15 + x13 + x11 + x9 + x8 + x7 + x6 + x5 + x3 + x2 + 1)(x + 1)

See also: