diff --git a/src/sage/algebras/clifford_algebra.py b/src/sage/algebras/clifford_algebra.py index 04d9b3f0cae..220a2eb27a5 100644 --- a/src/sage/algebras/clifford_algebra.py +++ b/src/sage/algebras/clifford_algebra.py @@ -571,8 +571,8 @@ def _coerce_map_from_(self, V): Q = self._quadratic_form try: return (V.variable_names() == self.variable_names() and - V._quadratic_form.base_change_to(self.base_ring()) == Q) - except Exception: + V._quadratic_form.change_ring(self.base_ring()) == Q) + except (TypeError, AttributeError): return False if self.free_module().has_coerce_map_from(V): diff --git a/src/sage/quadratic_forms/count_local_2.pyx b/src/sage/quadratic_forms/count_local_2.pyx index 299554de655..3eb0f712cf1 100644 --- a/src/sage/quadratic_forms/count_local_2.pyx +++ b/src/sage/quadratic_forms/count_local_2.pyx @@ -88,10 +88,6 @@ def count_modp__by_gauss_sum(n, p, m, Qdet): return count - - - - cdef CountAllLocalTypesNaive_cdef(Q, p, k, m, zvec, nzvec): """ This Cython routine is documented in its Python wrapper method @@ -102,26 +98,21 @@ cdef CountAllLocalTypesNaive_cdef(Q, p, k, m, zvec, nzvec): cdef long ptr # Used to increment the vector cdef long solntype # Used to store the kind of solution we find - # Some shortcuts and definitions n = Q.dim() R = p ** k - Q1 = Q.base_change_to(IntegerModRing(R)) - + Q1 = Q.change_ring(IntegerModRing(R)) # Cython Variables cdef IntegerMod_gmp zero, one zero = IntegerMod_gmp(IntegerModRing(R), 0) one = IntegerMod_gmp(IntegerModRing(R), 1) - - # Initialize the counting vector - count_vector = [0 for i in range(6)] + count_vector = [0 for i in range(6)] # Initialize v = (0, ... , 0) - v = [Mod(0, R) for i in range(n)] - + v = [Mod(0, R) for i in range(n)] # Some declarations to speed up the loop R_n = R ** n @@ -140,7 +131,6 @@ cdef CountAllLocalTypesNaive_cdef(Q, p, k, m, zvec, nzvec): if (ptr > 0): v[ptr-1] += 1 - # Evaluate Q(v) quickly tmp_val = Mod(0, R) for a from 0 <= a < n: @@ -154,7 +144,6 @@ cdef CountAllLocalTypesNaive_cdef(Q, p, k, m, zvec, nzvec): if (solntype != 0): count_vector[solntype] += 1 - # Generate the Bad-type and Total counts count_vector[3] = count_vector[4] + count_vector[5] count_vector[0] = count_vector[1] + count_vector[2] + count_vector[3] diff --git a/src/sage/quadratic_forms/quadratic_form.py b/src/sage/quadratic_forms/quadratic_form.py index 84c94766828..7e58c48fb36 100644 --- a/src/sage/quadratic_forms/quadratic_form.py +++ b/src/sage/quadratic_forms/quadratic_form.py @@ -41,6 +41,8 @@ from sage.quadratic_forms.quadratic_form__evaluate import QFEvaluateVector, QFEvaluateMatrix from sage.structure.sage_object import SageObject from sage.combinat.integer_lists.invlex import IntegerListsLex +from sage.misc.superseded import deprecated_function_alias + def QuadraticForm__constructor(R, n=None, entries=None): """ @@ -1542,7 +1544,7 @@ def Gram_det(self): """ return self.det() / ZZ(2**self.dim()) - def base_change_to(self, R): + def change_ring(self, R): """ Alters the quadratic form to have all coefficients defined over the new base_ring R. Here R must be @@ -1555,10 +1557,12 @@ def base_change_to(self, R): arithmetic evaluations. INPUT: - R -- a ring + + - R -- a ring OUTPUT: - quadratic form + + quadratic form EXAMPLES:: @@ -1567,16 +1571,13 @@ def base_change_to(self, R): [ 1 0 ] [ * 1 ] - :: - - sage: Q1 = Q.base_change_to(IntegerModRing(5)); Q1 + sage: Q1 = Q.change_ring(IntegerModRing(5)); Q1 Quadratic form in 2 variables over Ring of integers modulo 5 with coefficients: [ 1 0 ] [ * 1 ] sage: Q1([35,11]) 1 - """ # Check that a canonical coercion is possible if not is_Ring(R): @@ -1586,6 +1587,8 @@ def base_change_to(self, R): # Return the coerced form return QuadraticForm(R, self.dim(), [R(x) for x in self.coefficients()]) + base_change_to = deprecated_function_alias(35248, change_ring) + def level(self): r""" Determines the level of the quadratic form over a PID, which is a diff --git a/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py b/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py index 07cdfc41646..7920578508c 100644 --- a/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py +++ b/src/sage/quadratic_forms/quadratic_form__local_field_invariants.py @@ -223,7 +223,7 @@ def _rational_diagonal_form_and_transformation(self): """ n = self.dim() K = self.base_ring().fraction_field() - Q = self.base_change_to(K) + Q = self.change_ring(K) MS = MatrixSpace(K, n, n) try: diff --git a/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py b/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py index 7ac9b7cb15c..16d18f12341 100644 --- a/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py +++ b/src/sage/quadratic_forms/quadratic_form__mass__Siegel_densities.py @@ -10,7 +10,7 @@ # Copyright by Jonathan Hanke 2007 ######################################################################## -import copy +from copy import deepcopy from sage.arith.misc import kronecker, legendre_symbol, prime_divisors from sage.functions.all import sgn @@ -191,7 +191,7 @@ def Watson_mass_at_2(self): """ # Make a 0-dim'l quadratic form (for initialization purposes) - Null_Form = copy.deepcopy(self) + Null_Form = deepcopy(self) Null_Form.__init__(ZZ, 0) # Step 0: Compute Jordan blocks and bounds of the scales to keep track of @@ -230,7 +230,7 @@ def Watson_mass_at_2(self): eps_dict = {} for j in range(s_min, s_max+3): two_form = (diag_dict[j-2] + diag_dict[j] + dim2_dict[j]).scale_by_factor(2) - j_form = (two_form + diag_dict[j-1]).base_change_to(IntegerModRing(4)) + j_form = (two_form + diag_dict[j-1]).change_ring(IntegerModRing(4)) if j_form.dim() == 0: eps_dict[j] = 1 @@ -279,7 +279,7 @@ def Kitaoka_mass_at_2(self): """ # Make a 0-dim'l quadratic form (for initialization purposes) - Null_Form = copy.deepcopy(self) + Null_Form = deepcopy(self) Null_Form.__init__(ZZ, 0) # Step 0: Compute Jordan blocks and bounds of the scales to keep track of @@ -372,7 +372,7 @@ def mass_at_two_by_counting_mod_power(self, k): 4 """ R = IntegerModRing(2**k) - Q1 = self.base_change_to(R) + Q1 = self.change_ring(R) n = self.dim() MS = MatrixSpace(R, n)