Processing math: 100%

First time here? Check out the FAQ!

Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

answered 3 years ago

Max Alekseyev gravatar image

Here a code that for a given elliptic curve E and n returns polynomials fn1,gn1,fn2,gn2:

def get_poly(E, n):
  P.<s,t> = PolynomialRing(E.base_ring())
  a = E.a_invariants()
  R = P.quotient_ring(t^2 + (a[0]*x + a[2])*t - (s^3 + a[1]*s^2 + a[3]*s + a[4])).fraction_field()
  Q = E.change_ring(R)(s,t) * n
  return Q[0].numerator().lift(), Q[0].denominator().lift(), Q[1].numerator().lift(), Q[1].denominator().lift()

For example, get_poly( EllipticCurve(QQ,[1,2]), 2) gives:

(s*t^2 - 3*s^2 - 18*s + 1,  4*t^2,  t^4 + 3*s*t^2 - 9*s^2 + 36*t^2 - 54*s - 109,  8*t^3)
click to hide/show revision 2
No.2 Revision

Here a code that for a given elliptic curve E and an integer n returns polynomials fn1,gn1,fn2,gn2:

def get_poly(E, n):
  P.<s,t> = PolynomialRing(E.base_ring())
  a = E.a_invariants()
  R = P.quotient_ring(t^2 + (a[0]*x + a[2])*t - (s^3 + a[1]*s^2 + a[3]*s + a[4])).fraction_field()
  Q = E.change_ring(R)(s,t) * n
  return Q[0].numerator().lift(), Q[0].denominator().lift(), Q[1].numerator().lift(), Q[1].denominator().lift()

For example, get_poly( EllipticCurve(QQ,[1,2]), 2)2 ) gives:

(s*t^2 - 3*s^2 - 18*s + 1,  4*t^2,  t^4 + 3*s*t^2 - 9*s^2 + 36*t^2 - 54*s - 109,  8*t^3)
click to hide/show revision 3
No.3 Revision

Here a code that for a given elliptic curve E and an integer n returns polynomials fn1,gn1,fn2,gn2:

def get_poly(E, n):
  P.<s,t> = PolynomialRing(E.base_ring())
  a = E.a_invariants()
  R = P.quotient_ring(t^2 + (a[0]*x (a[0]*s + a[2])*t - (s^3 + a[1]*s^2 + a[3]*s + a[4])).fraction_field()
  Q = E.change_ring(R)(s,t) * n
  return Q[0].numerator().lift(), Q[0].denominator().lift(), Q[1].numerator().lift(), Q[1].denominator().lift()

For example, get_poly( EllipticCurve(QQ,[1,2]), 2 ) gives:

(s*t^2 - 3*s^2 - 18*s + 1,  4*t^2,  t^4 + 3*s*t^2 - 9*s^2 + 36*t^2 - 54*s - 109,  8*t^3)