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

Commit

Permalink
Making imports more local in matrices.
Browse files Browse the repository at this point in the history
  • Loading branch information
tscrim committed Apr 24, 2020
1 parent 10ed24e commit eac641b
Show file tree
Hide file tree
Showing 11 changed files with 41 additions and 32 deletions.
4 changes: 3 additions & 1 deletion src/sage/matrix/args.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ from cypari2.gen cimport Gen
from cypari2.types cimport typ, t_MAT, t_VEC, t_COL, t_VECSMALL, t_LIST, t_STR, t_CLOSURE

from .matrix_space import MatrixSpace
from sage.rings.all import ZZ, RDF, CDF
from sage.rings.integer_ring import ZZ
from sage.rings.real_double import RDF
from sage.rings.complex_double import CDF
from sage.structure.coerce cimport (coercion_model,
is_numpy_type, py_scalar_parent)
from sage.structure.element cimport Element, RingElement, Vector
Expand Down
4 changes: 3 additions & 1 deletion src/sage/matrix/benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
from __future__ import absolute_import

from .constructor import random_matrix, Matrix
from sage.rings.all import ZZ, QQ, GF
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF
from sage.misc.misc import cputime
from cysignals.alarm import AlarmInterrupt, alarm, cancel_alarm

Expand Down
3 changes: 2 additions & 1 deletion src/sage/matrix/matrix2.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -13265,7 +13265,8 @@ cdef class Matrix(Matrix1):
sage: len(str(a.det()))
12215
"""
from sage.rings.all import RDF, RealField
from sage.rings.real_double import RDF
from sage.rings.real_mpfr import RealField
try:
A = self.change_ring(RDF)
m1 = A._hadamard_row_bound()
Expand Down
4 changes: 2 additions & 2 deletions src/sage/matrix/matrix_cyclo_dense.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ from .misc import matrix_integer_dense_rational_reconstruction
from sage.rings.rational_field import QQ
from sage.rings.integer_ring import ZZ
from sage.arith.all import previous_prime, binomial
from sage.rings.all import RealNumber
from sage.rings.real_mpfr import create_RealNumber as RealNumber
from sage.rings.integer cimport Integer
from sage.rings.rational cimport Rational
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
Expand Down Expand Up @@ -1499,7 +1499,7 @@ cdef class Matrix_cyclo_dense(Matrix_dense):
pass
K = self.base_ring()
phi = K.defining_polynomial()
from sage.rings.all import GF
from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF
from .constructor import matrix
F = GF(p)
aa = [a for a, _ in phi.change_ring(F).roots()]
Expand Down
2 changes: 1 addition & 1 deletion src/sage/matrix/matrix_gf2e_dense.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ from sage.structure.element cimport Matrix, Vector
from sage.structure.element cimport ModuleElement, Element, RingElement
from sage.structure.richcmp cimport rich_to_bool

from sage.rings.all import FiniteField as GF
from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF
from sage.misc.randstate cimport randstate, current_randstate

from sage.matrix.matrix_mod2_dense cimport Matrix_mod2_dense
Expand Down
5 changes: 4 additions & 1 deletion src/sage/matrix/matrix_integer_dense_hnf.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@
from sage.misc.misc import verbose, cputime
from sage.matrix.constructor import (random_matrix, matrix, identity_matrix)

from sage.rings.all import ZZ, Integer, RR
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.real_mpfr import RR
from sage.rings.integer import Integer
from sage.arith.all import previous_prime, CRT_list


Expand Down
3 changes: 2 additions & 1 deletion src/sage/matrix/matrix_integer_dense_saturation.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
from __future__ import absolute_import
from six.moves import range

from sage.rings.all import ZZ, GF
from sage.rings.integer_ring import ZZ
from sage.rings.finite_rings.finite_field_constructor import FiniteField as GF
from sage.arith.all import binomial, gcd
from sage.matrix.constructor import identity_matrix, random_matrix
from sage.misc.misc import verbose
Expand Down
6 changes: 2 additions & 4 deletions src/sage/matrix/matrix_modn_sparse.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,11 @@ cimport sage.matrix.matrix_sparse as matrix_sparse
cimport sage.matrix.matrix_dense as matrix_dense
from sage.rings.finite_rings.integer_mod cimport IntegerMod_int, IntegerMod_abstract
from sage.rings.integer cimport Integer
from sage.rings.rational_field import QQ
from sage.rings.integer_ring import ZZ

from sage.misc.misc import verbose, get_verbose

import sage.rings.all as rings

from sage.matrix.matrix2 import Matrix as Matrix2
from .args cimport SparseEntry, MatrixArgs_init
from sage.arith.all import is_prime
Expand Down Expand Up @@ -519,7 +518,7 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
for i from 0 <= i < self._nrows:
nonzero_entries += self.rows[i].num_nonzero

return rings.ZZ(nonzero_entries)/rings.ZZ(self._nrows*self._ncols)
return ZZ(nonzero_entries) / ZZ(self._nrows*self._ncols)

def transpose(self):
"""
Expand Down Expand Up @@ -926,7 +925,6 @@ cdef class Matrix_modn_sparse(matrix_sparse.Matrix_sparse):
return Matrix_sparse.solve_right(self, B)
else:
if isinstance(B, sage.structure.element.Matrix):
from sage.rings.rational_field import QQ
from sage.matrix.special import diagonal_matrix
m, d = self._solve_matrix_linbox(B, algorithm)
return m * diagonal_matrix([QQ((1,x)) for x in d])
Expand Down
2 changes: 1 addition & 1 deletion src/sage/matrix/matrix_mpolynomial_dense.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ cdef class Matrix_mpolynomial_dense(Matrix_generic_dense):
for c in xrange(self.ncols()):
self.set_unsafe(r, c, R._zero_element)

from sage.rings.all import ZZ
from sage.rings.integer_ring import ZZ
l = [ZZ(e-1) for e in l]

self.cache('in_echelon_form_bareiss',True)
Expand Down
37 changes: 19 additions & 18 deletions src/sage/matrix/special.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,13 @@
from six.moves import range
from six import integer_types

import sage.rings.all as rings
from sage.rings.ring import is_Ring
import sage.matrix.matrix_space as matrix_space
from sage.modules.free_module_element import vector
from sage.structure.element import is_Matrix
from sage.rings.all import ZZ, QQ
from sage.rings.integer_ring import ZZ
from sage.rings.rational_field import QQ
from sage.rings.integer import Integer
from sage.misc.misc_c import running_total
from copy import copy
from .constructor import matrix
Expand Down Expand Up @@ -801,7 +802,7 @@ def diagonal_matrix(arg0=None, arg1=None, arg2=None, sparse=True):
# Size of matrix specified?
# Formats 2, 4
nrows = None
if isinstance(arg0, integer_types + (rings.Integer,)):
if isinstance(arg0, integer_types + (Integer,)):
nrows = arg0
arg0 = arg1
# Object holding entries
Expand All @@ -826,7 +827,7 @@ def diagonal_matrix(arg0=None, arg1=None, arg2=None, sparse=True):

# provide a default ring for an empty list
if not len(entries) and ring is None:
ring = rings.ZZ
ring = ZZ

# Convert entries to a list v over a common ring
from sage.modules.free_module_element import prepare
Expand Down Expand Up @@ -876,9 +877,9 @@ def identity_matrix(ring, n=0, sparse=False):
sage: M.is_mutable()
True
"""
if isinstance(ring, integer_types + (rings.Integer,)):
if isinstance(ring, integer_types + (Integer,)):
n = ring
ring = rings.ZZ
ring = ZZ
return matrix_space.MatrixSpace(ring, n, n, sparse)(1)

@matrix_method
Expand All @@ -902,9 +903,9 @@ def lehmer(ring, n=0):
"""
from sage.sets.integer_range import IntegerRange

if isinstance(ring, integer_types + (rings.Integer,)):
if isinstance(ring, integer_types + (Integer,)):
n = ring
ring = rings.QQ
ring = QQ
return matrix_space.MatrixSpace(ring, n, n).matrix([[min(i, j)/max(i, j) for i in IntegerRange(1, n+1)] for j in IntegerRange(1, n+1)])

@matrix_method
Expand Down Expand Up @@ -945,9 +946,9 @@ def zero_matrix(ring, nrows=None, ncols=None, sparse=False):
[0 0 0 0 0]

"""
if isinstance(ring, integer_types + (rings.Integer,)):
if isinstance(ring, integer_types + (Integer,)):
nrows, ncols = (ring, nrows)
ring = rings.ZZ
ring = ZZ
return matrix_space.MatrixSpace(ring, nrows, ncols, sparse)(0)

@matrix_method
Expand Down Expand Up @@ -1030,9 +1031,9 @@ def ones_matrix(ring, nrows=None, ncols=None, sparse=False):
...
ValueError: constructing an all ones matrix requires at least one dimension
"""
if isinstance(ring, integer_types + (rings.Integer,)):
if isinstance(ring, integer_types + (Integer,)):
nrows, ncols = (ring, nrows)
ring = rings.ZZ
ring = ZZ
if nrows is None:
raise ValueError("constructing an all ones matrix requires at least one dimension")
if ncols is None:
Expand Down Expand Up @@ -1363,11 +1364,11 @@ def elementary_matrix(arg0, arg1=None, **kwds):
raise TypeError('scale must be an element of some ring, not {0}'.format(scale))
R = scale.parent()
else:
R = rings.ZZ
R = ZZ
if arg0 is None:
raise ValueError('size of elementary matrix must be given')
try:
n = rings.Integer(arg0)
n = Integer(arg0)
except TypeError:
raise TypeError('size of elementary matrix must be an integer, not {0}'.format(arg0))
if n <= 0:
Expand Down Expand Up @@ -1395,14 +1396,14 @@ def elementary_matrix(arg0, arg1=None, **kwds):

# analyze parameters to determine matrix type
try:
row1 = rings.Integer(row1)
row1 = Integer(row1)
except TypeError:
raise TypeError('{0} of elementary matrix must be an integer, not {1}'.format(opstring, row1))
if row1 < 0 or row1 >= n :
raise ValueError('{0} of elementary matrix must be positive and smaller than {1}, not {2}'.format(opstring, n, row1))
if not row2 is None:
try:
row2 = rings.Integer(row2)
row2 = Integer(row2)
except TypeError:
raise TypeError('{0} of elementary matrix must be an integer, not {1}'.format(opstring, row2))
if row2 < 0 or row2 >= n :
Expand Down Expand Up @@ -1884,9 +1885,9 @@ def block_matrix(*args, **kwds):

if not args:
if sparse is not None:
return matrix_space.MatrixSpace(rings.ZZ, 0, 0, sparse=sparse)([])
return matrix_space.MatrixSpace(ZZ, 0, 0, sparse=sparse)([])
else:
return matrix_space.MatrixSpace(rings.ZZ, 0, 0)([])
return matrix_space.MatrixSpace(ZZ, 0, 0)([])

if len(args) >= 1 and is_Ring(args[0]):
# A ring is specified
Expand Down
3 changes: 2 additions & 1 deletion src/sage/matrix/symplectic_basis.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@
# https://www.gnu.org/licenses/
######################################################################

from sage.rings.all import ZZ, Infinity
from sage.rings.integer_ring import ZZ
from sage.rings.infinity import Infinity


def _inplace_move_to_positive_pivot(G, row, col, B, pivot):
Expand Down

0 comments on commit eac641b

Please sign in to comment.