Skip to content

Commit 4ac23e6

Browse files
author
Matthias Koeppe
committed
Merge branch 'ff-constructor' into replace_more_all_imports
2 parents 0234b30 + 63c3ab6 commit 4ac23e6

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/sage/rings/finite_rings/element_pari_ffelt.pyx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,13 +270,19 @@ cdef class FiniteFieldElement_pari_ffelt(FinitePolyExtElement):
270270
sage: k = FiniteField(3^11, 't', impl='pari_ffelt')
271271
sage: k([ 0, 1/2 ])
272272
2*t
273+
sage: k([ 0, 1/2, 0, 0, 0, 0, 0, 0, 0, -1, 0 ])
274+
2*t^9 + 2*t
273275
sage: k([ k(0), k(1) ])
274276
t
275277
sage: k([ GF(3)(2), GF(3^5,'u')(1) ])
276278
t + 2
277279
sage: R.<x> = PolynomialRing(k)
280+
sage: k([ x/x ])
281+
1
278282
sage: k([ R(-1), x/x ])
279283
t + 2
284+
sage: k([ R(-1), R(0), 0 ])
285+
2
280286
281287
Check that zeros are created correctly (:trac:`11685`)::
282288
@@ -496,7 +502,13 @@ cdef class FiniteFieldElement_pari_ffelt(FinitePolyExtElement):
496502
self.construct_from(x.constant_coefficient())
497503

498504
elif isinstance(x, list):
499-
if len(x) == self._parent.degree():
505+
n = len(x)
506+
if n == 0:
507+
self.construct_from(None)
508+
elif n == 1:
509+
Fp = self._parent.base_ring()
510+
self.construct_from(Fp(x[0]))
511+
elif n == self._parent.degree():
500512
self.construct_from(self._parent.vector_space(map=False)(x))
501513
else:
502514
Fp = self._parent.base_ring()

src/sage/rings/finite_rings/finite_field_base.pyx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,8 +1230,6 @@ cdef class FiniteField(Field):
12301230
sage: all(to_V(h(c) * e) == c * to_V(e) for e in E for c in F)
12311231
True
12321232
"""
1233-
from sage.modules.free_module import VectorSpace
1234-
from sage.categories.morphism import is_Morphism
12351233
if subfield is not None:
12361234
if base is not None:
12371235
raise ValueError
@@ -1241,6 +1239,13 @@ cdef class FiniteField(Field):
12411239
deprecation(28481, "The default value for map will be changing to True. To keep the current behavior, explicitly pass map=False.")
12421240
map = False
12431241

1242+
if base is None and self.__vector_space is not None and not map:
1243+
# A very common case: return as early as possible.
1244+
return self.__vector_space
1245+
1246+
from sage.modules.free_module import VectorSpace
1247+
from sage.categories.morphism import is_Morphism
1248+
12441249
if base is None:
12451250
base = self.prime_subfield()
12461251
s = self.degree()

0 commit comments

Comments
 (0)