gf(2) Square-free factorization (sff)
Find and remove all squared factors from f.
f = b0000110010101110101000111111010001111111111000000000000000110011
f = 0x0caea3f47fe00033
f = x59 + x58 + x55 + x53 + x51 + x50 + x49 + x47 + x45 + x41 + x40 + x39 + x38 + x37 + x36 + x34 + x30 + x29 + x28 + x27 + x26 + x25 + x24 + x23 + x22 + x21 + x5 + x4 + x + 1
Find the derivative of f (f')
f' = b0000010001010101010100010101000000010101010100000000000000010001
f' = 0x0455515015500011
f' = x58 + x54 + x52 + x50 + x48 + x46 + x44 + x40 + x38 + x36 + x28 + x26 + x24 + x22 + x20 + x4 + 1
Since f' does not equal zero, find g=gcd(f,f')
g = b0000000000000000000000000000000000000000000000000001010000010101
g = 0x0000000000001415
g = x12 + x10 + x4 + x2 + 1
Since g does not equal one, g is a factor of f.
f = gh
h = f/g
Find h=f/g
h = b0000000000000000111101111101100100100100100111111111001100111111
h = 0x0000f7d9249ff33f
h = 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
In case either g or h are not square-free...
Result (f factored into square-free factors)
f = (b0000000000000000000000000000000000000000000000000000000001100111)2(b0000000000000000111101111101100100100100100111111111001100111111)
f = (0x0000000000000067)2(0x0000f7d9249ff33f)
f = (x6 + x5 + x2 + x + 1)2(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)
See also: