gd0 = 8677; w=quadgen(gd0) \\ Minimal model for X0(37)+ e1 = initell([0,0,1,-1,0]) \\ Convenient model for X0(37)+ e2 = initell([1,0,0,-1/24,-5/6912]) \\ Change to go from e1 to e2 c12 = [2,1/3,1,-1/2] \\ Change to go from e2 to e1 c21 = [1/2,-1/12,-1/2,5/48] \\ Now, we compute the Tate model for X0(37)+ \\ The p-adic precision that is desired. acc = 3; \\ The prime p. p = 37; \\ coefficients for getting q from j. b2 = 744; b3 = 750420; b4 = 872769632; b5 = 1102652742882; b6 = 1470561136292880; b7 = 2037518752496883080; b8 = 2904264865530359889600; b9 = 4231393254051181981976079; \\ j-invariant of X_0(37)+. j = 110592/37; jj = (1/j) % p^acc; \\ Computing Tate's q-parameter to the desired precision. q = (jj + b2*jj^2 + b3*jj^3 + b4*jj^4 + b5*jj^5 + b6*jj^6 ) % p^acc; \\ The coefficients in the Tate model of X_0(37)+ a4=0; for(n=1,acc, a4 = (a4 -5*sigmak(3,n)*q^n) % p^acc); a6 = 0; for(n=1,acc, a6 = (a6 -(5/12*sigmak(3,n)+7/12*sigmak(5,n))*q^n) % p^acc); \\ Tate model for X0(37)+ (NOTE: this is a twisted form). e3 = smallinitell([1,0,0,a4,a6]) \\ change of coordinates to go from e3 to e2. a = (5/gd0) % 37; r=factmod(x^2-a,37) r=compo(r,1) r=compo(r,1) r=compo(r,1) r=compo(r,2) sqrt5 = r*(2*w-1) goldenratio = ( (1+sqrt5)/2 ) % 37 s = 18573 + 13506*goldenratio: univchange = [2*s+1,(s^2+s)/3, s, -1/6*(s^2+s)] c32 = eval(univchange) % 37; kill(s); kill(r); kill(sqrt5); kill(univchange); \\ Uniformize(u) returns the value of u in K*/q^Z, on the Tate curve \\ e3:y^2 + xy = x^3 + a4 x + a6. uniformize(u,temp,n,x,uu,y) = \ temp = 0;\ for(n=1,acc,temp=(temp+sigma(n)*q^n) % p^acc);\ x=0;\ for(n=1,acc, x = (x + q^n*u/(1-q^n*u)^2)%p^acc);\ uu = 1/u % p^acc;\ for(n=1,acc, x = (x + q^n*uu/(1-q^n*uu)^2)%p^acc);\ x = (x + 1/(u+uu-2) - 2*temp) % p^acc ;\ y=0;\ for(n=1,acc, y = (y + q^(2*n)*u^2/(1-q^n*u)^3)%p^acc);\ for(n=1,acc, y = (y - q^n*uu/(1-q^n*uu)^3)%p^acc);\ y = (y + u^2/(1-u)^3 + temp) % p^acc ;\ [x,y] \\ This function takes a point on e3 and returns a point on e1, at least \\ with a precision of 7^11. c31(pt) = pt = chptell(pt,c32);\ pt = chptell(pt,c21);\ pt % 37 \\ function tate(u) takes an x in K*/q^Z and returns a mod 37 point \\ on the minimal Weierstrass model for E = X0(37)+. tate(u) = c31(uniformize(u)) \\ search searches to see if the point [105, 93 + 51 w] is in an interesting \\ place. search() = \ for(n=1, 8*49,\ pp = addell(e,pp,g);\ if(n% 8 ==0,print(n,pp),pp=pp%343;\ if(pp[1]==105,print(" FOUND: IT is ",n," without b"),\ print(n,pp))))