zeros_poles.sage 598 B

123456789101112131415161718192021222324252627
  1. K.<x, y> = GF(11)[]
  2. EC_A, EC_B = 4, 0
  3. C = y^2 - x^3 - EC_A*x - EC_B
  4. S = K.quotient(C).fraction_field()
  5. X, Y = S(x), S(y)
  6. foo = (X^2 - Y) / (X - 2)
  7. f, g = foo.numerator().lift(), foo.denominator().lift()
  8. I = ideal(C, f)
  9. J = ideal(C, g)
  10. load("ordp.sage")
  11. total_k = 0
  12. for info in I.variety():
  13. Px, Py = P = info[x], info[y]
  14. k = ordp(P, f)
  15. print(f"ordp(({Px}, {Py}), {f}) = {k}")
  16. total_k += k
  17. for info in J.variety():
  18. Px, Py = P = info[x], info[y]
  19. k = ordp(P, g)
  20. print(f"ordp(({Px}, {Py}), 1/({g})) = -{k}")
  21. total_k -= k
  22. print(f"ordp(∞, ({f})/({g}) = -{total_k}")