@@ -3497,9 +3497,6 @@ def irreducible_element(self, n, algorithm=None):
3497
3497
from sage .libs .pari .all import pari
3498
3498
from sage .rings .finite_rings .conway_polynomials import (conway_polynomial ,
3499
3499
exists_conway_polynomial )
3500
- from .polynomial_gf2x import (GF2X_BuildIrred_list ,
3501
- GF2X_BuildSparseIrred_list ,
3502
- GF2X_BuildRandomIrred_list )
3503
3500
3504
3501
p = self .characteristic ()
3505
3502
n = int (n )
@@ -3512,7 +3509,12 @@ def irreducible_element(self, n, algorithm=None):
3512
3509
elif exists_conway_polynomial (p , n ):
3513
3510
algorithm = "conway"
3514
3511
elif p == 2 :
3515
- algorithm = "minimal_weight"
3512
+ try :
3513
+ from .polynomial_gf2x import GF2X_BuildSparseIrred_list
3514
+ except ImportError :
3515
+ algorithm = "adleman-lenstra"
3516
+ else :
3517
+ algorithm = "minimal_weight"
3516
3518
else :
3517
3519
algorithm = "adleman-lenstra"
3518
3520
elif algorithm == "primitive" :
@@ -3527,6 +3529,7 @@ def irreducible_element(self, n, algorithm=None):
3527
3529
return self (conway_polynomial (p , n ))
3528
3530
elif algorithm == "first_lexicographic" :
3529
3531
if p == 2 :
3532
+ from .polynomial_gf2x import GF2X_BuildIrred_list
3530
3533
return self (GF2X_BuildIrred_list (n ))
3531
3534
else :
3532
3535
# Fallback to PolynomialRing_dense_finite_field.irreducible_element
@@ -3535,11 +3538,13 @@ def irreducible_element(self, n, algorithm=None):
3535
3538
return self (pari (p ).ffinit (n ).ffgen ().ffprimroot ().charpoly ())
3536
3539
elif algorithm == "minimal_weight" :
3537
3540
if p == 2 :
3541
+ from .polynomial_gf2x import GF2X_BuildSparseIrred_list
3538
3542
return self (GF2X_BuildSparseIrred_list (n ))
3539
3543
else :
3540
3544
raise NotImplementedError ("'minimal_weight' option only implemented for p = 2" )
3541
3545
elif algorithm == "random" :
3542
3546
if p == 2 :
3547
+ from .polynomial_gf2x import GF2X_BuildRandomIrred_list
3543
3548
return self (GF2X_BuildRandomIrred_list (n ))
3544
3549
else :
3545
3550
pass
0 commit comments