..nodoctest
Class polynomials¶
x.__init__(...) initializes x; see help(type(x)) for signature
-
recip.class_polynomials.
class_polynomials
(K, factor=False, prec=None, D=None, verbose=False)¶ Returns the Igusa class polynomials of K (proven!).
INPUT:
- \(K\) – a CM-field
- \(factor\) – whether the output consists of sets of irreducible factors
- (currently not supported)
- \(prec\) – starting precision (will be increased until it is enough)
- \(D\) – known multiple of the denominator (if omitted, computes one)
- \(verbose\) – whether to print specific verbose output for this function.
OUTPUT:
Igusa class polynomials H_1, Hhat_2, Hhat3 of K with respect to the absolute Igusa invariants of the author’s thesis.
EXAMPLES:
We compute proven class polynomials for some of the entries of van Wamelen’s table. With these class polynomials, it is trivial to check correctness of the table entries. The full list, and more, is proven in [BouyerS].:
sage: from recip import * sage: K = CM_Field([5,5,5]) sage: class_polynomials(K) # long time: 6 seconds [x, 0, 0] sage: class_polynomials(CM_Field((x^2+2)^2-2), verbose=True) # long time: 10 seconds starting with precision 50 output has 40.8562309773420 too few bits of precision increasing precision to 95 output has 3.47594808128218 more bits of precision than needed Denominator: 1 out of 2^46 [x + 7290, 437400, 2952450000] sage: class_polynomials(CM_Field((x^2+13)^2-2^2*13), verbose=True) # long time: 10 seconds starting with precision 50 output has 8.62029143144967 too few bits of precision increasing precision to 63 output has 4.68096300785080 more bits of precision than needed Denominator: 1 out of 2^14 [x + 7840, 102400, -204800000] sage: class_polynomials(CM_Field((x^2+5)^2-5)) # long time: 22 seconds [x^2 - 183708000*x, 37826743837500/14641*x - 601817074425000000/14641, 1994141034144140625000/14641*x - 423741159843750000000/14641] sage: class_polynomials(CM_Field((x^2+65)^2-26^2*5)) # long time: 30 seconds [x^2 - 209024611260948000/1615441*x + 739519963620480000000/1615441, 1923741818956270886400000/2609649624481*x - 3630281807913088204800000000/2609649624481, 174715258193111891291126400000000000/2609649624481*x - 618134989860658268345733120000000000000/2609649624481] sage: bruinier_yang_applies(CM_Field((x^2+29)^2-4*29)) True sage: class_polynomials(CM_Field((x^2+29)^2-2^2*29), verbose=True) # long time: 10 seconds starting with precision 50 output has 35.4684649508012 too few bits of precision increasing precision to 90 output has 4.50158705782075 more bits of precision than needed Denominator: 1 out of 2^14 * 5^4 [x + 2589408, 131383296, -60466176000000] sage: bruinier_yang_applies(CM_Field((x^2+61)^2-6^2*61)) True sage: class_polynomials(CM_Field((x^2+61)^2-6^2*61), verbose=True) # long time: 11 seconds starting with precision 50 output has 54.2686150981159 too few bits of precision increasing precision to 109 output has 4.58030311169402 more bits of precision than needed Denominator: 3^3 * 41^4 out of 2^14 * 3^8 * 5^4 * 41^4 [x - 88833024/1681, -14055214415872/76295547, 9663676416000000/2825761]