..nodoctest
List of fields¶
x.__init__(...) initializes x; see help(type(x)) for signature
-
recip.list_fields.
DAm_to_DAB
(D, A, m)¶ Given D a fundamental discriminant, A a positive integer, and m a positive integer with m^2 D < A^2 and m^2 * D == A^2 mod 4, returns [D,A,B] with m^2*D = A^2 - 4B
-
recip.list_fields.
iterate_DAB
(stopD, stopA, startD=5, startA=1, prime_D=False)¶ Given a range of positive discriminants D and integers A, returns all minimal triples DAB corresponding to primitive quartic CM-fields with D and A in the range.
The number of such triples is proportional to (maxA^2 - minA^2) * (sqrt(maxD) - sqrt(minD)).
If prime_D is true, restrict to D of the form p for a prime p=1 mod 4 and 4*p for p a prime p!=1 mod 4.
EXAMPLES:
sage: from recip import * sage: list(iterate_DAB(10, 10)) [[5, 5, 5], [5, 7, 11], [5, 9, 19], [8, 4, 2], [8, 6, 7], [8, 8, 14]] sage: list(iterate_DAB(20, 20, prime_D=True)) [[5, 5, 5], [5, 7, 11], [5, 9, 19], [5, 10, 20], [5, 11, 29], [5, 12, 31], [5, 13, 41], [5, 14, 44], [5, 15, 55], [5, 15, 45], [5, 16, 59], [5, 17, 71], [5, 17, 61], [5, 18, 76], [5, 19, 89], [5, 19, 79], [8, 4, 2], [8, 6, 7], [8, 8, 14], [8, 10, 23], [8, 10, 17], [8, 12, 34], [8, 12, 18], [8, 14, 47], [8, 14, 41], [8, 14, 31], [8, 16, 62], [8, 16, 46], [8, 18, 79], [8, 18, 73], [8, 18, 63], [12, 6, 6], [12, 8, 13], [12, 10, 22], [12, 10, 13], [12, 12, 33], [12, 14, 46], [12, 14, 37], [12, 14, 22], [12, 16, 61], [12, 16, 37], [12, 18, 78], [12, 18, 69], [12, 18, 33], [13, 5, 3], [13, 9, 17], [13, 10, 12], [13, 12, 23], [13, 13, 39], [13, 13, 13], [13, 15, 53], [13, 16, 51], [13, 17, 69], [13, 17, 43], [13, 18, 68], [13, 18, 29], [13, 19, 87], [13, 19, 61], [17, 5, 2], [17, 11, 26], [17, 12, 19], [17, 13, 38], [17, 15, 52], [17, 15, 18], [17, 16, 47], [17, 17, 68], [17, 17, 34], [17, 19, 86]] sage: l = list(iterate_DAB(30, 30)) sage: l = [(DAB, CM_Field(DAB)) for DAB in l] sage: l = [(DAB, K, K.ideal(2).factor()) for (DAB, K) in l] sage: l = [(DAB, K) for (DAB, K, f) in l if len(f) == 1 and f[0][1] == 1] sage: l = [(DAB, K.class_number()/K.real_field().class_number()) for (DAB, K) in l] sage: [(DAB, h) for (DAB, h) in l if h > 3] [([21, 25, 109], 4), ([29, 25, 149], 5)]
-
recip.list_fields.
iterate_DAB_given_D
(D, stopA, startA=1, K0=None)¶ Given a real quadratic discriminant and a range of integers A, returns all minimal triples DAB corresponding to primitive quartic CM-fields with this D and in the A-range.
The number of such triples is proportional to 1/2 (maxA^2 - minA^2) / sqrt(D).
K0, if given, should be the quadratic field with discriminant D.
-
recip.list_fields.
iterate_DAB_given_DA
(D, A, K0)¶ Given a real quadratic discriminant and a positive integer A, returns all minimal triples DAB corresponding to primitive quartic CM-fields with this D and in the A-range.
The number of such triples is proportional to A/sqrt(D).
K0, if given, should be the quadratic field with discriminant D.
-
recip.list_fields.
wamelen_curves
()¶ Returns van Wamelen’s CM curves (taken from https://www.math.lsu.edu/~wamelen/CMcurves.txt) in such a way that wamelen_curves()[i] corresponds to wamelen_dab_list()[i]
-
recip.list_fields.
wamelen_dab_list
()¶ Returns the list of triples DAB from Paul van Wamelen’s list of CM curves.
EXAMPLE:
sage: from recip import * sage: lst = wamelen_dab_list(); lst [[5, 5, 5], [8, 4, 2], [13, 13, 13], [5, 10, 20], [5, 65, 845], [29, 29, 29], [5, 85, 1445], [37, 37, 333], [8, 20, 50], [13, 65, 325], [13, 26, 52], [53, 53, 53], [61, 61, 549]]
We check that this list contains of 13 cyclic Galois CM-fields, and that there are 19 curves corresponding to these 13 fields.:
sage: len(lst) 13 sage: flds = [CM_Field(DAB) for DAB in lst] sage: all([K.is_galois() for K in flds]) True sage: sum([K.class_number()/K.real_field().class_number() for K in flds]) 19