# Elementary divisors of a matrix

Hi,

I need to compute elementary divisors of a matrix (xI-A), where A is a matrix defined over GF(2). So, i try to define a univariate polynomial ring (R) over GF(2) and compute the elementary divisors of (xI-A) using the elementary_divisors() procedure. But as the size of the matrix increases, the algorithm is too slow. My matrices are of dimension 100.

Can anyone suggest an alternative approach to solve the problem.