1 | initial version |
First of all, your have a mismatch between the code and the out as the printed valuations have wrong signs (e.g., it should be root -9
rather than root 9
).
Your statement that "the valuation of the roots should be the same" is not quite correct. The correct statement is that the valuations of the roots for $m=52$ form a subset of those for $m=53$, but not necessarily vice versa! And you do see this in your example.
One can verify explicitly that it does not work in the other direction here by taking a root with $\nu=-5$ for $m=53$ and plugging it in the polynomial for $m=52$:
p = 5
F=Qp(p, prec=200) # prec=200 is quite enough here
v=valuations.pAdicValuation(F, 5)
h52 = hecke_series(p, 2, 2, 52).change_ring(QQ) # a polynomial over QQ for m=52
h53 = hecke_series(p, 2, 2, 53).change_ring(QQ) # a polynomial over QQ for m=53
r = next(root for root,_ in h53.roots(ring=F) if v(root)==-5)
print('root with v=-5:', r)
print('h53(r) over F:', h53.change_ring(F)(r))
print('h52(r) over F:', h52.change_ring(F)(r))
A shortened output here looks like
root with v=-5: 2*5^-5 + 3*5^-4 + 5^-3 + [...skipped...] + O(5^190)
h53(r) over F: O(5^171)
h52(r) over F: 5^-13 + 4*5^-11 + 2*5^-10 + [...skipped...] + O(5^171)
2 | No.2 Revision |
First of all, your have a mismatch between the code and the out output as the printed valuations have wrong signs (e.g., it should be root -9
rather than root 9
).
Your statement that "the valuation of the roots should be the same" is not quite correct. The correct statement is that the valuations of the roots for $m=52$ form a subset of those for $m=53$, but not necessarily vice versa! And you do see this in your example.
One can verify explicitly that it does not work in the other direction here by taking a root with $\nu=-5$ for $m=53$ and plugging it in the polynomial for $m=52$:
p = 5
F=Qp(p, prec=200) # prec=200 is quite enough here
v=valuations.pAdicValuation(F, 5)
h52 = hecke_series(p, 2, 2, 52).change_ring(QQ) # a polynomial over QQ for m=52
h53 = hecke_series(p, 2, 2, 53).change_ring(QQ) # a polynomial over QQ for m=53
r = next(root for root,_ in h53.roots(ring=F) if v(root)==-5)
print('root with v=-5:', r)
print('h53(r) over F:', h53.change_ring(F)(r))
print('h52(r) over F:', h52.change_ring(F)(r))
A shortened output here looks like
root with v=-5: 2*5^-5 + 3*5^-4 + 5^-3 + [...skipped...] + O(5^190)
h53(r) over F: O(5^171)
h52(r) over F: 5^-13 + 4*5^-11 + 2*5^-10 + [...skipped...] + O(5^171)