1 | initial version |
I would expect that you mainly need this for irreducible polynomials. In that case it's the multiplicative order of one of its roots in an appropriate extension:
L = GF(p^f.degree(),name='b')
[a[1].multiplicative_order() for a in f.roots(L)]
(all those numbers should be equal and you only need to compute one of them)
If your polynomial is square-free, you'd have to do this for each of the irreducible factors and take the LCM.
If your polynomial has higher multiplicity factors, you have to take the appropriate powers before taking LCMs