np.linalg.matrix_power

np.linalg.matrix_power(x)

Raises a square Galois field matrix to an integer power.

References

Examples

In [1]: GF = galois.GF(31)

In [2]: A = GF.Random((3,3)); A
Out[2]: 
GF([[ 9, 14, 12],
    [24,  1, 27],
    [ 7, 10,  5]], order=31)

In [3]: np.linalg.matrix_power(A, 3)
Out[3]: 
GF([[ 1, 24, 14],
    [ 3, 15, 10],
    [ 1,  0, 18]], order=31)

In [4]: A @ A @ A
Out[4]: 
GF([[ 1, 24, 14],
    [ 3, 15, 10],
    [ 1,  0, 18]], order=31)
In [5]: GF = galois.GF(31)

# Ensure A is full rank and invertible
In [6]: while True:
   ...:     A = GF.Random((3,3))
   ...:     if np.linalg.matrix_rank(A) == 3:
   ...:         break
   ...: 

In [7]: A
Out[7]: 
GF([[30, 14, 18],
    [15, 11, 29],
    [24, 14, 21]], order=31)

In [8]: np.linalg.matrix_power(A, -3)
Out[8]: 
GF([[27, 11,  7],
    [ 1,  3,  9],
    [16, 28, 17]], order=31)

In [9]: A_inv = np.linalg.inv(A)

In [10]: A_inv @ A_inv @ A_inv
Out[10]: 
GF([[27, 11,  7],
    [ 1,  3,  9],
    [16, 28, 17]], order=31)