Skip to content
This repository was archived by the owner on Jan 30, 2023. It is now read-only.

Commit 8ef2b35

Browse files
author
Matthias Koeppe
committedOct 1, 2021
sage.structure, sage.rings, sage.matrix: Use sage.rings.abc for IntegerModRing
1 parent 9e74b6a commit 8ef2b35

File tree

4 files changed

+11
-10
lines changed

4 files changed

+11
-10
lines changed
 

‎src/sage/matrix/matrix2.pyx

+5-4
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ from sage.rings.real_mpfr import RealField
9595
from sage.rings.complex_mpfr import ComplexField
9696
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
9797
from sage.misc.derivative import multi_derivative
98+
import sage.rings.abc
9899
from sage.arith.numerical_approx cimport digits_to_bits
99100
from copy import copy
100101

@@ -822,8 +823,7 @@ cdef class Matrix(Matrix1):
822823
if not K.is_integral_domain():
823824
# The non-integral-domain case is handled almost entirely
824825
# separately.
825-
from sage.rings.finite_rings.integer_mod_ring import is_IntegerModRing
826-
if is_IntegerModRing(K):
826+
if isinstance(K, sage.rings.abc.IntegerModRing):
827827
from sage.libs.pari import pari
828828
A = pari(self.lift())
829829
b = pari(B).lift()
@@ -1985,7 +1985,6 @@ cdef class Matrix(Matrix1):
19851985
sage: A.determinant() == B.determinant()
19861986
True
19871987
"""
1988-
from sage.rings.finite_rings.integer_mod_ring import is_IntegerModRing
19891988
from sage.symbolic.ring import is_SymbolicExpressionRing
19901989

19911990
cdef Py_ssize_t n
@@ -2031,7 +2030,7 @@ cdef class Matrix(Matrix1):
20312030
return d
20322031

20332032
# Special case for Z/nZ or GF(p):
2034-
if is_IntegerModRing(R) and self.is_dense():
2033+
if isinstance(R, sage.rings.abc.IntegerModRing) and self.is_dense():
20352034
import sys
20362035
# If the characteristic is prime and smaller than a machine
20372036
# word, use PARI.
@@ -14723,6 +14722,8 @@ cdef class Matrix(Matrix1):
1472314722
for i from 0 <= i < size:
1472414723
PyList_Append(M,<object>f(<object>PyList_GET_ITEM(L,i)))
1472514724

14725+
from sage.rings.finite_rings.integer_mod_ring import IntegerModRing
14726+
1472614727
return MatrixSpace(IntegerModRing(2),
1472714728
nrows=self._nrows,ncols=self._ncols).matrix(M)
1472814729

‎src/sage/matrix/matrix_space.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ def get_matrix_class(R, nrows, ncols, sparse, implementation):
236236
except ImportError:
237237
pass
238238

239-
if sage.rings.finite_rings.integer_mod_ring.is_IntegerModRing(R):
239+
if isinstance(R, sage.rings.abc.IntegerModRing):
240240
from . import matrix_modn_dense_double, matrix_modn_dense_float
241241
if R.order() < matrix_modn_dense_float.MAX_MODULUS:
242242
return matrix_modn_dense_float.Matrix_modn_dense_float
@@ -326,7 +326,7 @@ def get_matrix_class(R, nrows, ncols, sparse, implementation):
326326
if implementation is not None:
327327
raise ValueError("cannot choose an implementation for sparse matrices")
328328

329-
if sage.rings.finite_rings.integer_mod_ring.is_IntegerModRing(R) and R.order() < matrix_modn_sparse.MAX_MODULUS:
329+
if isinstance(R, sage.rings.abc.IntegerModRing) and R.order() < matrix_modn_sparse.MAX_MODULUS:
330330
return matrix_modn_sparse.Matrix_modn_sparse
331331

332332
if sage.rings.rational_field.is_RationalField(R):

‎src/sage/rings/finite_rings/finite_field_base.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ from sage.misc.persist import register_unpickle_override
4040
from sage.misc.cachefunc import cached_method
4141
from sage.misc.prandom import randrange
4242
from sage.rings.integer cimport Integer
43+
import sage.rings.abc
4344
from sage.misc.superseded import deprecation_cython as deprecation
4445

4546
# Copied from sage.misc.fast_methods, used in __hash__() below.
@@ -1342,10 +1343,9 @@ cdef class FiniteField(Field):
13421343
False
13431344
"""
13441345
from sage.rings.integer_ring import ZZ
1345-
from sage.rings.finite_rings.integer_mod_ring import is_IntegerModRing
13461346
if R is int or R is long or R is ZZ:
13471347
return True
1348-
if is_IntegerModRing(R) and self.characteristic().divides(R.characteristic()):
1348+
if isinstance(R, sage.rings.abc.IntegerModRing) and self.characteristic().divides(R.characteristic()):
13491349
return R.hom((self.one(),), check=False)
13501350
if is_FiniteField(R):
13511351
if R is self:

‎src/sage/structure/parent.pyx

+2-2
Original file line numberDiff line numberDiff line change
@@ -2642,8 +2642,8 @@ cdef class Parent(sage.structure.category_object.CategoryObject):
26422642
elif self_on_left and op is operator.pow:
26432643
S_is_int = parent_is_integers(S)
26442644
if not S_is_int:
2645-
from sage.rings.finite_rings.integer_mod_ring import is_IntegerModRing
2646-
if is_IntegerModRing(S):
2645+
from sage.rings.abc import IntegerModRing
2646+
if isinstance(S, IntegerModRing):
26472647
# We allow powering by an IntegerMod by treating it
26482648
# as an integer.
26492649
#

0 commit comments

Comments
 (0)
This repository has been archived.