Ticket #1400: 1400-quadratic_field_order.patch
| File 1400-quadratic_field_order.patch, 2.6 kB (added by AlexGhitza, 9 months ago) |
|---|
-
a/sage/rings/number_field/class_group.py
old new 190 190 """ 191 191 return self.parent()(self.__ideal.reduce_equiv()) 192 192 193 #def multiplicative_order(self): 194 # try: 195 # return self.__multiplicative_order 196 # except AttributeError: 193 def order(self): 194 """ 195 Return the (multiplicative) order of the class group element self. 196 197 EXAMPLES: 198 sage: QF.<x> = QuadraticField(-39) 199 sage: CF = QF.class_group() 200 sage: I = CF.gen(0) 201 sage: I.order() 202 4 203 sage: (I^2).order() 204 2 205 sage: (I^4).order() 206 1 207 sage: CF(QF.ideal(1+x)).order() 208 1 209 """ 210 return self.ideal().order() 211 212 multiplicative_order = order 197 213 198 214 def ideal(self): 199 215 """ -
a/sage/rings/number_field/number_field_ideal.py
old new 1090 1090 return ZZ(self._pari_prime.getattr('f')) 1091 1091 raise ValueError, "the ideal (= %s) is not prime"%self 1092 1092 1093 def order(self): 1094 """ 1095 Return the (multiplicative) order of the fractional ideal self 1096 viewed as an element of the underlying class group. 1097 1098 EXAMPLES: 1099 sage: QF.<x> = QuadraticField(-39) 1100 sage: QF.ideal(1+x).order() 1101 1 1102 sage: QF.ideal(2, 1/2*x - 1/2).order() 1103 4 1104 """ 1105 try: 1106 return self.__order 1107 except AttributeError: 1108 k = 1 1109 I = self.reduce_equiv() 1110 J = I 1111 while True: 1112 if J.is_principal(): 1113 self.__order = k 1114 return k 1115 else: 1116 J = (J*I).reduce_equiv() 1117 k = k + 1 1118 1119 multiplicative_order = order 1120 1121 1122 1093 1123 def is_NumberFieldFractionalIdeal(x): 1094 1124 """ 1095 1125 Return True if x is a fractional ideal of a number field.