From 1a9d1d0629d9683052585f7a7dc98de25ab8688e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iy=C3=A1n=20M=C3=A9ndez=20Veiga?= Date: Wed, 18 Jan 2023 17:41:53 +0100 Subject: [PATCH] Modify primitive_poly() to use the database --- src/galois/_polys/_primitive.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/galois/_polys/_primitive.py b/src/galois/_polys/_primitive.py index 4159a3858..fd905c87b 100644 --- a/src/galois/_polys/_primitive.py +++ b/src/galois/_polys/_primitive.py @@ -9,7 +9,7 @@ from typing_extensions import Literal -from .._databases import ConwayPolyDatabase +from .._databases import ConwayPolyDatabase, PrimitivePolyDatabase from .._domains import _factory from .._helper import export, verify_isinstance from .._prime import is_prime, is_prime_power @@ -96,8 +96,15 @@ def primitive_poly(order: int, degree: int, method: Literal["min", "max", "rando if not method in ["min", "max", "random"]: raise ValueError(f"Argument 'method' must be in ['min', 'max', 'random'], not {method!r}.") + field = _factory.FIELD_FACTORY(order) + if method == "min": - poly = next(primitive_polys(order, degree)) + try: + db = PrimitivePolyDatabase() + degrees, coeffs = db.fetch(order, degree) + poly = Poly.Degrees(degrees, coeffs, field=field) + except LookupError: + poly = next(primitive_polys(order, degree)) elif method == "max": poly = next(primitive_polys(order, degree, reverse=True)) else: