Changeset 7728:a186b1eeb481
- Timestamp:
- 12/14/07 03:41:23 (5 years ago)
- Branch:
- default
- Location:
- sage
- Files:
-
- 2 edited
-
modules/quotient_module.py (modified) (2 diffs)
-
rings/residue_field.pyx (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/modules/quotient_module.py
r7527 r7728 173 173 An element coerces in if it can be coerced into V, or if not at least if 174 174 if it can be made sense of as a list of length the dimension of self. 175 176 175 177 176 EXAMPLES: 178 177 We create a 2-dimensional quotient of a 3-dimension ambient vector space. … … 193 192 """ 194 193 try: 195 return self._coerce_impl(x) 196 except TypeError: 194 if x.parent() is self: 195 return x 196 except AttributeError: 197 197 pass 198 198 try: -
sage/rings/residue_field.pyx
r7727 r7728 56 56 residue_field_cache = {} 57 57 58 def ResidueField(p, names = None, check = True ):58 def ResidueField(p, names = None, check = True, trygen=False): 59 59 """ 60 60 A function that returns the residue class field of a prime ideal p … … 62 62 63 63 INPUT: 64 p -- a prime integer or prime ideal of an order in a number 65 field. 64 p -- a prime ideal of an order in a number field. 66 65 names -- the variable name for the finite field created. 67 66 Defaults to the name of the number field variable but … … 77 76 sage: ResidueField(P) 78 77 Residue field in abar of Fractional ideal (2*a^2 + 3*a - 10) 78 79 The result is cached: 80 sage: ResidueField(P) is ResidueField(P) 81 True 79 82 sage: k = K.residue_field(P); k 80 83 Residue field in abar of Fractional ideal (2*a^2 + 3*a - 10) … … 124 127 else: 125 128 names = None 126 key = (p, names )129 key = (p, names, trygen) 127 130 if residue_field_cache.has_key(key): 128 131 k = residue_field_cache[key]() … … 149 152 gen_ok = False 150 153 from sage.matrix.constructor import matrix 151 try: 152 x = K.gen() 153 M = matrix(k, n+1, n, [to_vs(x**i).list() for i in range(n+1)]) 154 W = M.transpose().echelon_form() 155 if M.rank() == n: 156 PB = M.matrix_from_rows(range(n)) 157 gen_ok = True 158 f = R((-W.column(n)).list() + [1]) 159 except TypeError: 160 pass 154 if trygen: 155 # This optimization not ready yet. 156 try: 157 x = K.gen() 158 M = matrix(k, n+1, n, [to_vs(x**i).list() for i in range(n+1)]) 159 print M 160 W = M.transpose().echelon_form() 161 if M.rank() == n: 162 PB = M.matrix_from_rows(range(n)) 163 gen_ok = True 164 f = R((-W.column(n)).list() + [1]) 165 except (TypeError, ZeroDivisionError): 166 pass 161 167 if not gen_ok: 162 168 bad = True … … 420 426 421 427 EXAMPLES: 422 sage: k = ResidueField(17); k423 Residue field of 17424 sage: type(k )425 <class 'sage.rings.residue_field.ResidueFiniteField_prime_modn'> 428 sage: K.<i> = QuadraticField(-1) 429 sage: kk = ResidueField(K.factor_integer(5)[0][0]) 430 sage: type(kk) 431 <class 'sage.rings.residue_field.ResidueFiniteField_prime_modn'> 426 432 """ 427 433 self.p = p # Here because we have to create a NFResidueFieldHomomorphism before calling ResidueField_generic.__init__(self,...)
Note: See TracChangeset
for help on using the changeset viewer.
