| Hosted by CoCalc | Download
# Visualización de curvas elípticas. Prueba de asociatividad de la suma
E = EllipticCurve([-1, 10]) E
Elliptic Curve defined by y^2 = x^3 - x + 10 over Rational Field
P = E.plot(thickness=7,rgbcolor=(0.0,0.0,0.1))
P.show(figsize=[6,8])
E = EllipticCurve(GF(37), [1,0]) E
Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 37
E.plot(pointsize=45)
E = EllipticCurve([-5,4]) P = E([1,0]); Q = E([0,2]) P + Q
(3 : 4 : 1)
P + P
(0 : 1 : 0)
P + P + P
(1 : 0 : 1)
Q + Q
(25/16 : -3/64 : 1)
Q + Q + Q
(96/625 : -28106/15625 : 1)
(352225/576 : 209039023/13824 : 1)
R.<x1,y1,x2,y2,x3,y3,a,b> = QQ[] R
Multivariate Polynomial Ring in x1, y1, x2, y2, x3, y3, a, b over Rational Field
b = [y1^2 - (x1^3 + a*x1 + b), y2^2 - (x2^3 + a*x2 + b), y3^2 - (x3^3 + a*x3 + b)] Q = R.quotient(rels) def op(P1,P2): x1,y1 = P1; x2,y2 = P2 lam = (y1 - y2)/(x1 - x2); nu = y1 - lam*x1 x3 = lam^2 - x1 - x2; y3 = -lam*x3 - nu return (x3, y3)
P1 = (x1,y1); P2 = (x2,y2); P3 = (x3,y3) Z = op(P1, op(P2,P3)); W = op(op(P1,P2),P3) Z W
((-x1^3*x2^4 - x1^2*x2^5 + x1*x2^6 + x2^7 + 4*x1^3*x2^3*x3 + 3*x1^2*x2^4*x3 - 2*x1*x2^5*x3 - x2^6*x3 - 6*x1^3*x2^2*x3^2 - 2*x1^2*x2^3*x3^2 - x1*x2^4*x3^2 - 3*x2^5*x3^2 + 4*x1^3*x2*x3^3 - 2*x1^2*x2^2*x3^3 + 4*x1*x2^3*x3^3 + 3*x2^4*x3^3 - x1^3*x3^4 + 3*x1^2*x2*x3^4 - x1*x2^2*x3^4 + 3*x2^3*x3^4 - x1^2*x3^5 - 2*x1*x2*x3^5 - 3*x2^2*x3^5 + x1*x3^6 - x2*x3^6 + x3^7 + y1^2*x2^4 - 2*y1*x2^4*y2 + x1^2*x2^2*y2^2 - 2*x1*x2^3*y2^2 - 2*x2^4*y2^2 - 4*y1^2*x2^3*x3 + 2*y1*x2^3*y2*x3 - 2*x1^2*x2*y2^2*x3 + 2*x1*x2^2*y2^2*x3 + 2*x2^3*y2^2*x3 + 6*y1^2*x2^2*x3^2 + 6*y1*x2^2*y2*x3^2 + x1^2*y2^2*x3^2 + 2*x1*x2*y2^2*x3^2 + 3*x2^2*y2^2*x3^2 - 4*y1^2*x2*x3^3 - 10*y1*x2*y2*x3^3 - 2*x1*y2^2*x3^3 - 4*x2*y2^2*x3^3 + y1^2*x3^4 + 4*y1*y2*x3^4 + y2^2*x3^4 + 4*y1*x2^4*y3 - 2*x1^2*x2^2*y2*y3 + 4*x1*x2^3*y2*y3 + 2*x2^4*y2*y3 - 10*y1*x2^3*x3*y3 + 4*x1^2*x2*y2*x3*y3 - 4*x1*x2^2*y2*x3*y3 - 2*x2^3*y2*x3*y3 + 6*y1*x2^2*x3^2*y3 - 2*x1^2*y2*x3^2*y3 - 4*x1*x2*y2*x3^2*y3 + 2*y1*x2*x3^3*y3 + 4*x1*y2*x3^3*y3 - 2*x2*y2*x3^3*y3 - 2*y1*x3^4*y3 + 2*y2*x3^4*y3 + x1^2*x2^2*y3^2 - 2*x1*x2^3*y3^2 + x2^4*y3^2 - 2*x1^2*x2*x3*y3^2 + 2*x1*x2^2*x3*y3^2 - 4*x2^3*x3*y3^2 + x1^2*x3^2*y3^2 + 2*x1*x2*x3^2*y3^2 + 3*x2^2*x3^2*y3^2 - 2*x1*x3^3*y3^2 + 2*x2*x3^3*y3^2 - 2*x3^4*y3^2 + 2*y1*x2*y2^3 + x1*y2^4 + x2*y2^4 - 2*y1*y2^3*x3 - y2^4*x3 - 6*y1*x2*y2^2*y3 - 4*x1*y2^3*y3 - 2*x2*y2^3*y3 + 6*y1*y2^2*x3*y3 + 2*y2^3*x3*y3 + 6*y1*x2*y2*y3^2 + 6*x1*y2^2*y3^2 - 6*y1*y2*x3*y3^2 - 2*y1*x2*y3^3 - 4*x1*y2*y3^3 + 2*x2*y2*y3^3 + 2*y1*x3*y3^3 - 2*y2*x3*y3^3 + x1*y3^4 - x2*y3^4 + x3*y3^4)/(x1^2*x2^4 + 2*x1*x2^5 + x2^6 - 4*x1^2*x2^3*x3 - 6*x1*x2^4*x3 - 2*x2^5*x3 + 6*x1^2*x2^2*x3^2 + 4*x1*x2^3*x3^2 - x2^4*x3^2 - 4*x1^2*x2*x3^3 + 4*x1*x2^2*x3^3 + 4*x2^3*x3^3 + x1^2*x3^4 - 6*x1*x2*x3^4 - x2^2*x3^4 + 2*x1*x3^5 - 2*x2*x3^5 + x3^6 - 2*x1*x2^2*y2^2 - 2*x2^3*y2^2 + 4*x1*x2*y2^2*x3 + 2*x2^2*y2^2*x3 - 2*x1*y2^2*x3^2 + 2*x2*y2^2*x3^2 - 2*y2^2*x3^3 + 4*x1*x2^2*y2*y3 + 4*x2^3*y2*y3 - 8*x1*x2*y2*x3*y3 - 4*x2^2*y2*x3*y3 + 4*x1*y2*x3^2*y3 - 4*x2*y2*x3^2*y3 + 4*y2*x3^3*y3 - 2*x1*x2^2*y3^2 - 2*x2^3*y3^2 + 4*x1*x2*x3*y3^2 + 2*x2^2*x3*y3^2 - 2*x1*x3^2*y3^2 + 2*x2*x3^2*y3^2 - 2*x3^3*y3^2 + y2^4 - 4*y2^3*y3 + 6*y2^2*y3^2 - 4*y2*y3^3 + y3^4), (-x1^3*y1*x2^6 + 3*x1*y1*x2^8 + 2*y1*x2^9 + 2*x1^3*x2^6*y2 + 3*x1^2*x2^7*y2 - x2^9*y2 + 6*x1^3*y1*x2^5*x3 - 12*x1*y1*x2^7*x3 - 6*y1*x2^8*x3 - 6*x1^3*x2^5*y2*x3 - 6*x1^2*x2^6*y2*x3 - 15*x1^3*y1*x2^4*x3^2 + 12*x1*y1*x2^6*x3^2 - 9*x1^2*x2^5*y2*x3^2 + 6*x2^7*y2*x3^2 + 20*x1^3*y1*x2^3*x3^3 + 12*x1*y1*x2^5*x3^3 + 16*y1*x2^6*x3^3 + 20*x1^3*x2^3*y2*x3^3 + 30*x1^2*x2^4*y2*x3^3 - 2*x2^6*y2*x3^3 - 15*x1^3*y1*x2^2*x3^4 - 30*x1*y1*x2^4*x3^4 - 12*y1*x2^5*x3^4 - 30*x1^3*x2^2*y2*x3^4 - 15*x1^2*x2^3*y2*x3^4 - 12*x2^5*y2*x3^4 + 6*x1^3*y1*x2*x3^5 + 12*x1*y1*x2^3*x3^5 - 12*y1*x2^4*x3^5 + 18*x1^3*x2*y2*x3^5 - 18*x1^2*x2^2*y2*x3^5 + 6*x2^4*y2*x3^5 - x1^3*y1*x3^6 + 12*x1*y1*x2^2*x3^6 + 16*y1*x2^3*x3^6 - 4*x1^3*y2*x3^6 + 21*x1^2*x2*y2*x3^6 + 10*x2^3*y2*x3^6 - 12*x1*y1*x2*x3^7 - 6*x1^2*y2*x3^7 - 6*x2^2*y2*x3^7 + 3*x1*y1*x3^8 - 6*y1*x2*x3^8 - 3*x2*y2*x3^8 + 2*y1*x3^9 + 2*y2*x3^9 - 4*x1^3*x2^6*y3 - 6*x1^2*x2^7*y3 + 2*x2^9*y3 + 18*x1^3*x2^5*x3*y3 + 21*x1^2*x2^6*x3*y3 - 3*x2^8*x3*y3 - 30*x1^3*x2^4*x3^2*y3 - 18*x1^2*x2^5*x3^2*y3 - 6*x2^7*x3^2*y3 + 20*x1^3*x2^3*x3^3*y3 - 15*x1^2*x2^4*x3^3*y3 + 10*x2^6*x3^3*y3 + 30*x1^2*x2^3*x3^4*y3 + 6*x2^5*x3^4*y3 - 6*x1^3*x2*x3^5*y3 - 9*x1^2*x2^2*x3^5*y3 - 12*x2^4*x3^5*y3 + 2*x1^3*x3^6*y3 - 6*x1^2*x2*x3^6*y3 - 2*x2^3*x3^6*y3 + 3*x1^2*x3^7*y3 + 6*x2^2*x3^7*y3 - x3^9*y3 + y1^3*x2^6 - 3*y1^2*x2^6*y2 - 6*x1*y1*x2^5*y2^2 - 3*y1*x2^6*y2^2 - 2*x1^3*x2^3*y2^3 - 6*x1^2*x2^4*y2^3 + 3*x2^6*y2^3 - 6*y1^3*x2^5*x3 + 9*y1^2*x2^5*y2*x3 + 18*x1*y1*x2^4*y2^2*x3 + 12*y1*x2^5*y2^2*x3 + 6*x1^3*x2^2*y2^3*x3 + 9*x1^2*x2^3*y2^3*x3 + 15*y1^3*x2^4*x3^2 - 12*x1*y1*x2^3*y2^2*x3^2 - 12*y1*x2^4*y2^2*x3^2 - 6*x1^3*x2*y2^3*x3^2 + 9*x1^2*x2^2*y2^3*x3^2 - 12*x2^4*y2^3*x3^2 - 20*y1^3*x2^3*x3^3 - 30*y1^2*x2^3*y2*x3^3 - 12*x1*y1*x2^2*y2^2*x3^3 - 12*y1*x2^3*y2^2*x3^3 + 2*x1^3*y2^3*x3^3 - 21*x1^2*x2*y2^3*x3^3 + 5*x2^3*y2^3*x3^3 + 15*y1^3*x2^2*x3^4 + 45*y1^2*x2^2*y2*x3^4 + 18*x1*y1*x2*y2^2*x3^4 + 33*y1*x2^2*y2^2*x3^4 + 9*x1^2*y2^3*x3^4 + 12*x2^2*y2^3*x3^4 - 6*y1^3*x2*x3^5 - 27*y1^2*x2*y2*x3^5 - 6*x1*y1*y2^2*x3^5 - 24*y1*x2*y2^2*x3^5 - 9*x2*y2^3*x3^5 + y1^3*x3^6 + 6*y1^2*y2*x3^6 + 6*y1*y2^2*x3^6 + y2^3*x3^6 + 6*y1^2*x2^6*y3 + 12*x1*y1*x2^5*y2*y3 + 6*x1^3*x2^3*y2^2*y3 + 21*x1^2*x2^4*y2^2*y3 - 9*x2^6*y2^2*y3 - 27*y1^2*x2^5*x3*y3 - 36*x1*y1*x2^4*y2*x3*y3 - 6*y1*x2^5*y2*x3*y3 - 18*x1^3*x2^2*y2^2*x3*y3 - 39*x1^2*x2^3*y2^2*x3*y3 + 6*x2^5*y2^2*x3*y3 + 45*y1^2*x2^4*x3^2*y3 + 24*x1*y1*x2^3*y2*x3^2*y3 + 24*y1*x2^4*y2*x3^2*y3 + 18*x1^3*x2*y2^2*x3^2*y3 - 9*x1^2*x2^2*y2^2*x3^2*y3 + 21*x2^4*y2^2*x3^2*y3 - 30*y1^2*x2^3*x3^3*y3 + 24*x1*y1*x2^2*y2*x3^3*y3 - 36*y1*x2^3*y2*x3^3*y3 - 6*x1^3*y2^2*x3^3*y3 + 51*x1^2*x2*y2^2*x3^3*y3 - 15*x2^3*y2^2*x3^3*y3 - 36*x1*y1*x2*y2*x3^4*y3 + 24*y1*x2^2*y2*x3^4*y3 - 24*x1^2*y2^2*x3^4*y3 - 6*x2^2*y2^2*x3^4*y3 + 9*y1^2*x2*x3^5*y3 + 12*x1*y1*y2*x3^5*y3 - 6*y1*x2*y2*x3^5*y3 - 3*x2*y2^2*x3^5*y3 - 3*y1^2*x3^6*y3 + 6*y2^2*x3^6*y3 - 6*x1*y1*x2^5*y3^2 + 6*y1*x2^6*y3^2 - 6*x1^3*x2^3*y2*y3^2 - 24*x1^2*x2^4*y2*y3^2 + 6*x2^6*y2*y3^2 + 18*x1*y1*x2^4*x3*y3^2 - 24*y1*x2^5*x3*y3^2 + 18*x1^3*x2^2*y2*x3*y3^2 + 51*x1^2*x2^3*y2*x3*y3^2 - 3*x2^5*y2*x3*y3^2 - 12*x1*y1*x2^3*x3^2*y3^2 + 33*y1*x2^4*x3^2*y3^2 - 18*x1^3*x2*y2*x3^2*y3^2 - 9*x1^2*x2^2*y2*x3^2*y3^2 - 6*x2^4*y2*x3^2*y3^2 - 12*x1*y1*x2^2*x3^3*y3^2 - 12*y1*x2^3*x3^3*y3^2 + 6*x1^3*y2*x3^3*y3^2 - 39*x1^2*x2*y2*x3^3*y3^2 - 15*x2^3*y2*x3^3*y3^2 + 18*x1*y1*x2*x3^4*y3^2 - 12*y1*x2^2*x3^4*y3^2 + 21*x1^2*y2*x3^4*y3^2 + 21*x2^2*y2*x3^4*y3^2 - 6*x1*y1*x3^5*y3^2 + 12*y1*x2*x3^5*y3^2 + 6*x2*y2*x3^5*y3^2 - 3*y1*x3^6*y3^2 - 9*y2*x3^6*y3^2 + 2*x1^3*x2^3*y3^3 + 9*x1^2*x2^4*y3^3 + x2^6*y3^3 - 6*x1^3*x2^2*x3*y3^3 - 21*x1^2*x2^3*x3*y3^3 - 9*x2^5*x3*y3^3 + 6*x1^3*x2*x3^2*y3^3 + 9*x1^2*x2^2*x3^2*y3^3 + 12*x2^4*x3^2*y3^3 - 2*x1^3*x3^3*y3^3 + 9*x1^2*x2*x3^3*y3^3 + 5*x2^3*x3^3*y3^3 - 6*x1^2*x3^4*y3^3 - 12*x2^2*x3^4*y3^3 + 3*x3^6*y3^3 + 3*y1^2*x2^3*y2^3 + 3*x1*y1*x2^2*y2^4 + 3*x1^2*x2*y2^5 - 3*x2^3*y2^5 - 9*y1^2*x2^2*y2^3*x3 - 6*x1*y1*x2*y2^4*x3 - 6*y1*x2^2*y2^4*x3 - 3*x1^2*y2^5*x3 + 9*y1^2*x2*y2^3*x3^2 + 3*x1*y1*y2^4*x3^2 + 12*y1*x2*y2^4*x3^2 + 6*x2*y2^5*x3^2 - 3*y1^2*y2^3*x3^3 - 6*y1*y2^4*x3^3 - 3*y2^5*x3^3 - 9*y1^2*x2^3*y2^2*y3 - 12*x1*y1*x2^2*y2^3*y3 + 6*y1*x2^3*y2^3*y3 - 15*x1^2*x2*y2^4*y3 + 12*x2^3*y2^4*y3 + 27*y1^2*x2^2*y2^2*x3*y3 + 24*x1*y1*x2*y2^3*x3*y3 + 6*y1*x2^2*y2^3*x3*y3 + 15*x1^2*y2^4*x3*y3 - 3*x2^2*y2^4*x3*y3 - 27*y1^2*x2*y2^2*x3^2*y3 - 12*x1*y1*y2^3*x3^2*y3 - 30*y1*x2*y2^3*x3^2*y3 - 15*x2*y2^4*x3^2*y3 + 9*y1^2*y2^2*x3^3*y3 + 18*y1*y2^3*x3^3*y3 + 6*y2^4*x3^3*y3 + 9*y1^2*x2^3*y2*y3^2 + 18*x1*y1*x2^2*y2^2*y3^2 - 18*y1*x2^3*y2^2*y3^2 + 30*x1^2*x2*y2^3*y3^2 - 15*x2^3*y2^3*y3^2 - 27*y1^2*x2^2*y2*x3*y3^2 - 36*x1*y1*x2*y2^2*x3*y3^2 + 18*y1*x2^2*y2^2*x3*y3^2 - 30*x1^2*y2^3*x3*y3^2 + 3*x2^2*y2^3*x3*y3^2 + 27*y1^2*x2*y2*x3^2*y3^2 + 18*x1*y1*y2^2*x3^2*y3^2 + 18*y1*x2*y2^2*x3^2*y3^2 + 9*x2*y2^3*x3^2*y3^2 - 9*y1^2*y2*x3^3*y3^2 - 18*y1*y2^2*x3^3*y3^2 + 3*y2^3*x3^3*y3^2 - 3*y1^2*x2^3*y3^3 - 12*x1*y1*x2^2*y2*y3^3 + 18*y1*x2^3*y2*y3^3 - 30*x1^2*x2*y2^2*y3^3 + 3*x2^3*y2^2*y3^3 + 9*y1^2*x2^2*x3*y3^3 + 24*x1*y1*x2*y2*x3*y3^3 - 30*y1*x2^2*y2*x3*y3^3 + 30*x1^2*y2^2*x3*y3^3 + 9*x2^2*y2^2*x3*y3^3 - 9*y1^2*x2*x3^2*y3^3 - 12*x1*y1*y2*x3^2*y3^3 + 6*y1*x2*y2*x3^2*y3^3 + 3*x2*y2^2*x3^2*y3^3 + 3*y1^2*x3^3*y3^3 + 6*y1*y2*x3^3*y3^3 - 15*y2^2*x3^3*y3^3 + 3*x1*y1*x2^2*y3^4 - 6*y1*x2^3*y3^4 + 15*x1^2*x2*y2*y3^4 + 6*x2^3*y2*y3^4 - 6*x1*y1*x2*x3*y3^4 + 12*y1*x2^2*x3*y3^4 - 15*x1^2*y2*x3*y3^4 - 15*x2^2*y2*x3*y3^4 + 3*x1*y1*x3^2*y3^4 - 6*y1*x2*x3^2*y3^4 - 3*x2*y2*x3^2*y3^4 + 12*y2*x3^3*y3^4 - 3*x1^2*x2*y3^5 - 3*x2^3*y3^5 + 3*x1^2*x3*y3^5 + 6*x2^2*x3*y3^5 - 3*x3^3*y3^5 + y1*y2^6 + y2^7 - 6*y1*y2^5*y3 - 5*y2^6*y3 + 15*y1*y2^4*y3^2 + 9*y2^5*y3^2 - 20*y1*y2^3*y3^3 - 5*y2^4*y3^3 + 15*y1*y2^2*y3^4 - 5*y2^3*y3^4 - 6*y1*y2*y3^5 + 9*y2^2*y3^5 + y1*y3^6 - 5*y2*y3^6 + y3^7)/(-x1^3*x2^6 - 3*x1^2*x2^7 - 3*x1*x2^8 - x2^9 + 6*x1^3*x2^5*x3 + 15*x1^2*x2^6*x3 + 12*x1*x2^7*x3 + 3*x2^8*x3 - 15*x1^3*x2^4*x3^2 - 27*x1^2*x2^5*x3^2 - 12*x1*x2^6*x3^2 + 20*x1^3*x2^3*x3^3 + 15*x1^2*x2^4*x3^3 - 12*x1*x2^5*x3^3 - 8*x2^6*x3^3 - 15*x1^3*x2^2*x3^4 + 15*x1^2*x2^3*x3^4 + 30*x1*x2^4*x3^4 + 6*x2^5*x3^4 + 6*x1^3*x2*x3^5 - 27*x1^2*x2^2*x3^5 - 12*x1*x2^3*x3^5 + 6*x2^4*x3^5 - x1^3*x3^6 + 15*x1^2*x2*x3^6 - 12*x1*x2^2*x3^6 - 8*x2^3*x3^6 - 3*x1^2*x3^7 + 12*x1*x2*x3^7 - 3*x1*x3^8 + 3*x2*x3^8 - x3^9 + 3*x1^2*x2^4*y2^2 + 6*x1*x2^5*y2^2 + 3*x2^6*y2^2 - 12*x1^2*x2^3*y2^2*x3 - 18*x1*x2^4*y2^2*x3 - 6*x2^5*y2^2*x3 + 18*x1^2*x2^2*y2^2*x3^2 + 12*x1*x2^3*y2^2*x3^2 - 3*x2^4*y2^2*x3^2 - 12*x1^2*x2*y2^2*x3^3 + 12*x1*x2^2*y2^2*x3^3 + 12*x2^3*y2^2*x3^3 + 3*x1^2*y2^2*x3^4 - 18*x1*x2*y2^2*x3^4 - 3*x2^2*y2^2*x3^4 + 6*x1*y2^2*x3^5 - 6*x2*y2^2*x3^5 + 3*y2^2*x3^6 - 6*x1^2*x2^4*y2*y3 - 12*x1*x2^5*y2*y3 - 6*x2^6*y2*y3 + 24*x1^2*x2^3*y2*x3*y3 + 36*x1*x2^4*y2*x3*y3 + 12*x2^5*y2*x3*y3 - 36*x1^2*x2^2*y2*x3^2*y3 - 24*x1*x2^3*y2*x3^2*y3 + 6*x2^4*y2*x3^2*y3 + 24*x1^2*x2*y2*x3^3*y3 - 24*x1*x2^2*y2*x3^3*y3 - 24*x2^3*y2*x3^3*y3 - 6*x1^2*y2*x3^4*y3 + 36*x1*x2*y2*x3^4*y3 + 6*x2^2*y2*x3^4*y3 - 12*x1*y2*x3^5*y3 + 12*x2*y2*x3^5*y3 - 6*y2*x3^6*y3 + 3*x1^2*x2^4*y3^2 + 6*x1*x2^5*y3^2 + 3*x2^6*y3^2 - 12*x1^2*x2^3*x3*y3^2 - 18*x1*x2^4*x3*y3^2 - 6*x2^5*x3*y3^2 + 18*x1^2*x2^2*x3^2*y3^2 + 12*x1*x2^3*x3^2*y3^2 - 3*x2^4*x3^2*y3^2 - 12*x1^2*x2*x3^3*y3^2 + 12*x1*x2^2*x3^3*y3^2 + 12*x2^3*x3^3*y3^2 + 3*x1^2*x3^4*y3^2 - 18*x1*x2*x3^4*y3^2 - 3*x2^2*x3^4*y3^2 + 6*x1*x3^5*y3^2 - 6*x2*x3^5*y3^2 + 3*x3^6*y3^2 - 3*x1*x2^2*y2^4 - 3*x2^3*y2^4 + 6*x1*x2*y2^4*x3 + 3*x2^2*y2^4*x3 - 3*x1*y2^4*x3^2 + 3*x2*y2^4*x3^2 - 3*y2^4*x3^3 + 12*x1*x2^2*y2^3*y3 + 12*x2^3*y2^3*y3 - 24*x1*x2*y2^3*x3*y3 - 12*x2^2*y2^3*x3*y3 + 12*x1*y2^3*x3^2*y3 - 12*x2*y2^3*x3^2*y3 + 12*y2^3*x3^3*y3 - 18*x1*x2^2*y2^2*y3^2 - 18*x2^3*y2^2*y3^2 + 36*x1*x2*y2^2*x3*y3^2 + 18*x2^2*y2^2*x3*y3^2 - 18*x1*y2^2*x3^2*y3^2 + 18*x2*y2^2*x3^2*y3^2 - 18*y2^2*x3^3*y3^2 + 12*x1*x2^2*y2*y3^3 + 12*x2^3*y2*y3^3 - 24*x1*x2*y2*x3*y3^3 - 12*x2^2*y2*x3*y3^3 + 12*x1*y2*x3^2*y3^3 - 12*x2*y2*x3^2*y3^3 + 12*y2*x3^3*y3^3 - 3*x1*x2^2*y3^4 - 3*x2^3*y3^4 + 6*x1*x2*x3*y3^4 + 3*x2^2*x3*y3^4 - 3*x1*x3^2*y3^4 + 3*x2*x3^2*y3^4 - 3*x3^3*y3^4 + y2^6 - 6*y2^5*y3 + 15*y2^4*y3^2 - 20*y2^3*y3^3 + 15*y2^2*y3^4 - 6*y2*y3^5 + y3^6)) ((x1^7 - x1^6*x2 - 3*x1^5*x2^2 + 3*x1^4*x2^3 + 3*x1^3*x2^4 - 3*x1^2*x2^5 - x1*x2^6 + x2^7 + x1^6*x3 - 2*x1^5*x2*x3 - x1^4*x2^2*x3 + 4*x1^3*x2^3*x3 - x1^2*x2^4*x3 - 2*x1*x2^5*x3 + x2^6*x3 - x1^5*x3^2 + 3*x1^4*x2*x3^2 - 2*x1^3*x2^2*x3^2 - 2*x1^2*x2^3*x3^2 + 3*x1*x2^4*x3^2 - x2^5*x3^2 - x1^4*x3^3 + 4*x1^3*x2*x3^3 - 6*x1^2*x2^2*x3^3 + 4*x1*x2^3*x3^3 - x2^4*x3^3 - 2*x1^4*y1^2 + 2*x1^3*y1^2*x2 + 3*x1^2*y1^2*x2^2 - 4*x1*y1^2*x2^3 + y1^2*x2^4 + 2*x1^4*y1*y2 - 2*x1^3*y1*x2*y2 - 2*x1*y1*x2^3*y2 + 2*y1*x2^4*y2 + x1^4*y2^2 - 4*x1^3*x2*y2^2 + 3*x1^2*x2^2*y2^2 + 2*x1*x2^3*y2^2 - 2*x2^4*y2^2 - 2*x1^3*y1^2*x3 + 2*x1^2*y1^2*x2*x3 + 2*x1*y1^2*x2^2*x3 - 2*y1^2*x2^3*x3 + 4*x1^3*y1*y2*x3 - 4*x1^2*y1*x2*y2*x3 - 4*x1*y1*x2^2*y2*x3 + 4*y1*x2^3*y2*x3 - 2*x1^3*y2^2*x3 + 2*x1^2*x2*y2^2*x3 + 2*x1*x2^2*y2^2*x3 - 2*x2^3*y2^2*x3 + x1^2*y1^2*x3^2 - 2*x1*y1^2*x2*x3^2 + y1^2*x2^2*x3^2 - 2*x1^2*y1*y2*x3^2 + 4*x1*y1*x2*y2*x3^2 - 2*y1*x2^2*y2*x3^2 + x1^2*y2^2*x3^2 - 2*x1*x2*y2^2*x3^2 + x2^2*y2^2*x3^2 - 2*x1^4*y1*y3 + 2*x1^3*y1*x2*y3 + 6*x1^2*y1*x2^2*y3 - 10*x1*y1*x2^3*y3 + 4*y1*x2^4*y3 + 4*x1^4*y2*y3 - 10*x1^3*x2*y2*y3 + 6*x1^2*x2^2*y2*y3 + 2*x1*x2^3*y2*y3 - 2*x2^4*y2*y3 + x1^4*y3^2 - 4*x1^3*x2*y3^2 + 6*x1^2*x2^2*y3^2 - 4*x1*x2^3*y3^2 + x2^4*y3^2 + x1*y1^4 - y1^4*x2 - 2*x1*y1^3*y2 + 2*y1^3*x2*y2 + 2*x1*y1*y2^3 - 2*y1*x2*y2^3 - x1*y2^4 + x2*y2^4 + y1^4*x3 - 4*y1^3*y2*x3 + 6*y1^2*y2^2*x3 - 4*y1*y2^3*x3 + y2^4*x3 + 2*x1*y1^3*y3 - 2*y1^3*x2*y3 - 6*x1*y1^2*y2*y3 + 6*y1^2*x2*y2*y3 + 6*x1*y1*y2^2*y3 - 6*y1*x2*y2^2*y3 - 2*x1*y2^3*y3 + 2*x2*y2^3*y3)/(x1^6 - 2*x1^5*x2 - x1^4*x2^2 + 4*x1^3*x2^3 - x1^2*x2^4 - 2*x1*x2^5 + x2^6 + 2*x1^5*x3 - 6*x1^4*x2*x3 + 4*x1^3*x2^2*x3 + 4*x1^2*x2^3*x3 - 6*x1*x2^4*x3 + 2*x2^5*x3 + x1^4*x3^2 - 4*x1^3*x2*x3^2 + 6*x1^2*x2^2*x3^2 - 4*x1*x2^3*x3^2 + x2^4*x3^2 - 2*x1^3*y1^2 + 2*x1^2*y1^2*x2 + 2*x1*y1^2*x2^2 - 2*y1^2*x2^3 + 4*x1^3*y1*y2 - 4*x1^2*y1*x2*y2 - 4*x1*y1*x2^2*y2 + 4*y1*x2^3*y2 - 2*x1^3*y2^2 + 2*x1^2*x2*y2^2 + 2*x1*x2^2*y2^2 - 2*x2^3*y2^2 - 2*x1^2*y1^2*x3 + 4*x1*y1^2*x2*x3 - 2*y1^2*x2^2*x3 + 4*x1^2*y1*y2*x3 - 8*x1*y1*x2*y2*x3 + 4*y1*x2^2*y2*x3 - 2*x1^2*y2^2*x3 + 4*x1*x2*y2^2*x3 - 2*x2^2*y2^2*x3 + y1^4 - 4*y1^3*y2 + 6*y1^2*y2^2 - 4*y1*y2^3 + y2^4), (x1^9*y1 - 6*x1^7*y1*x2^2 + 2*x1^6*y1*x2^3 + 12*x1^5*y1*x2^4 - 6*x1^4*y1*x2^5 - 10*x1^3*y1*x2^6 + 6*x1^2*y1*x2^7 + 3*x1*y1*x2^8 - 2*y1*x2^9 - 2*x1^9*y2 + 3*x1^8*x2*y2 + 6*x1^7*x2^2*y2 - 10*x1^6*x2^3*y2 - 6*x1^5*x2^4*y2 + 12*x1^4*x2^5*y2 + 2*x1^3*x2^6*y2 - 6*x1^2*x2^7*y2 + x2^9*y2 - 3*x1^7*y1*x3^2 + 6*x1^6*y1*x2*x3^2 + 9*x1^5*y1*x2^2*x3^2 - 30*x1^4*y1*x2^3*x3^2 + 15*x1^3*y1*x2^4*x3^2 + 18*x1^2*y1*x2^5*x3^2 - 21*x1*y1*x2^6*x3^2 + 6*y1*x2^7*x3^2 + 6*x1^7*y2*x3^2 - 21*x1^6*x2*y2*x3^2 + 18*x1^5*x2^2*y2*x3^2 + 15*x1^4*x2^3*y2*x3^2 - 30*x1^3*x2^4*y2*x3^2 + 9*x1^2*x2^5*y2*x3^2 + 6*x1*x2^6*y2*x3^2 - 3*x2^7*y2*x3^2 - 2*x1^6*y1*x3^3 + 6*x1^5*y1*x2*x3^3 - 20*x1^3*y1*x2^3*x3^3 + 30*x1^2*y1*x2^4*x3^3 - 18*x1*y1*x2^5*x3^3 + 4*y1*x2^6*x3^3 + 4*x1^6*y2*x3^3 - 18*x1^5*x2*y2*x3^3 + 30*x1^4*x2^2*y2*x3^3 - 20*x1^3*x2^3*y2*x3^3 + 6*x1*x2^5*y2*x3^3 - 2*x2^6*y2*x3^3 - 2*x1^9*y3 + 6*x1^8*x2*y3 - 16*x1^6*x2^3*y3 + 12*x1^5*x2^4*y3 + 12*x1^4*x2^5*y3 - 16*x1^3*x2^6*y3 + 6*x1*x2^8*y3 - 2*x2^9*y3 - 3*x1^8*x3*y3 + 12*x1^7*x2*x3*y3 - 12*x1^6*x2^2*x3*y3 - 12*x1^5*x2^3*x3*y3 + 30*x1^4*x2^4*x3*y3 - 12*x1^3*x2^5*x3*y3 - 12*x1^2*x2^6*x3*y3 + 12*x1*x2^7*x3*y3 - 3*x2^8*x3*y3 + x1^6*x3^3*y3 - 6*x1^5*x2*x3^3*y3 + 15*x1^4*x2^2*x3^3*y3 - 20*x1^3*x2^3*x3^3*y3 + 15*x1^2*x2^4*x3^3*y3 - 6*x1*x2^5*x3^3*y3 + x2^6*x3^3*y3 - 3*x1^6*y1^3 + 12*x1^4*y1^3*x2^2 - 5*x1^3*y1^3*x2^3 - 12*x1^2*y1^3*x2^4 + 9*x1*y1^3*x2^5 - y1^3*x2^6 + 9*x1^6*y1^2*y2 - 6*x1^5*y1^2*x2*y2 - 21*x1^4*y1^2*x2^2*y2 + 15*x1^3*y1^2*x2^3*y2 + 6*x1^2*y1^2*x2^4*y2 + 3*x1*y1^2*x2^5*y2 - 6*y1^2*x2^6*y2 - 6*x1^6*y1*y2^2 + 3*x1^5*y1*x2*y2^2 + 6*x1^4*y1*x2^2*y2^2 + 15*x1^3*y1*x2^3*y2^2 - 21*x1^2*y1*x2^4*y2^2 - 6*x1*y1*x2^5*y2^2 + 9*y1*x2^6*y2^2 - x1^6*y2^3 + 9*x1^5*x2*y2^3 - 12*x1^4*x2^2*y2^3 - 5*x1^3*x2^3*y2^3 + 12*x1^2*x2^4*y2^3 - 3*x2^6*y2^3 + 6*x1^4*y1^3*x3^2 - 9*x1^3*y1^3*x2*x3^2 - 9*x1^2*y1^3*x2^2*x3^2 + 21*x1*y1^3*x2^3*x3^2 - 9*y1^3*x2^4*x3^2 - 21*x1^4*y1^2*y2*x3^2 + 39*x1^3*y1^2*x2*y2*x3^2 + 9*x1^2*y1^2*x2^2*y2*x3^2 - 51*x1*y1^2*x2^3*y2*x3^2 + 24*y1^2*x2^4*y2*x3^2 + 24*x1^4*y1*y2^2*x3^2 - 51*x1^3*y1*x2*y2^2*x3^2 + 9*x1^2*y1*x2^2*y2^2*x3^2 + 39*x1*y1*x2^3*y2^2*x3^2 - 21*y1*x2^4*y2^2*x3^2 - 9*x1^4*y2^3*x3^2 + 21*x1^3*x2*y2^3*x3^2 - 9*x1^2*x2^2*y2^3*x3^2 - 9*x1*x2^3*y2^3*x3^2 + 6*x2^4*y2^3*x3^2 + 2*x1^3*y1^3*x3^3 - 6*x1^2*y1^3*x2*x3^3 + 6*x1*y1^3*x2^2*x3^3 - 2*y1^3*x2^3*x3^3 - 6*x1^3*y1^2*y2*x3^3 + 18*x1^2*y1^2*x2*y2*x3^3 - 18*x1*y1^2*x2^2*y2*x3^3 + 6*y1^2*x2^3*y2*x3^3 + 6*x1^3*y1*y2^2*x3^3 - 18*x1^2*y1*x2*y2^2*x3^3 + 18*x1*y1*x2^2*y2^2*x3^3 - 6*y1*x2^3*y2^2*x3^3 - 2*x1^3*y2^3*x3^3 + 6*x1^2*x2*y2^3*x3^3 - 6*x1*x2^2*y2^3*x3^3 + 2*x2^3*y2^3*x3^3 + 3*x1^6*y1^2*y3 - 12*x1^5*y1^2*x2*y3 + 12*x1^4*y1^2*x2^2*y3 + 12*x1^3*y1^2*x2^3*y3 - 33*x1^2*y1^2*x2^4*y3 + 24*x1*y1^2*x2^5*y3 - 6*y1^2*x2^6*y3 + 6*x1^5*y1*x2*y2*y3 - 24*x1^4*y1*x2^2*y2*y3 + 36*x1^3*y1*x2^3*y2*y3 - 24*x1^2*y1*x2^4*y2*y3 + 6*x1*y1*x2^5*y2*y3 - 6*x1^6*y2^2*y3 + 24*x1^5*x2*y2^2*y3 - 33*x1^4*x2^2*y2^2*y3 + 12*x1^3*x2^3*y2^2*y3 + 12*x1^2*x2^4*y2^2*y3 - 12*x1*x2^5*y2^2*y3 + 3*x2^6*y2^2*y3 + 6*x1^5*y1^2*x3*y3 - 18*x1^4*y1^2*x2*x3*y3 + 12*x1^3*y1^2*x2^2*x3*y3 + 12*x1^2*y1^2*x2^3*x3*y3 - 18*x1*y1^2*x2^4*x3*y3 + 6*y1^2*x2^5*x3*y3 - 12*x1^5*y1*y2*x3*y3 + 36*x1^4*y1*x2*y2*x3*y3 - 24*x1^3*y1*x2^2*y2*x3*y3 - 24*x1^2*y1*x2^3*y2*x3*y3 + 36*x1*y1*x2^4*y2*x3*y3 - 12*y1*x2^5*y2*x3*y3 + 6*x1^5*y2^2*x3*y3 - 18*x1^4*x2*y2^2*x3*y3 + 12*x1^3*x2^2*y2^2*x3*y3 + 12*x1^2*x2^3*y2^2*x3*y3 - 18*x1*x2^4*y2^2*x3*y3 + 6*x2^5*y2^2*x3*y3 + 3*x1^6*y1*y3^2 - 9*x1^5*y1*x2*y3^2 + 30*x1^3*y1*x2^3*y3^2 - 45*x1^2*y1*x2^4*y3^2 + 27*x1*y1*x2^5*y3^2 - 6*y1*x2^6*y3^2 - 6*x1^6*y2*y3^2 + 27*x1^5*x2*y2*y3^2 - 45*x1^4*x2^2*y2*y3^2 + 30*x1^3*x2^3*y2*y3^2 - 9*x1*x2^5*y2*y3^2 + 3*x2^6*y2*y3^2 - x1^6*y3^3 + 6*x1^5*x2*y3^3 - 15*x1^4*x2^2*y3^3 + 20*x1^3*x2^3*y3^3 - 15*x1^2*x2^4*y3^3 + 6*x1*x2^5*y3^3 - x2^6*y3^3 + 3*x1^3*y1^5 - 6*x1*y1^5*x2^2 + 3*y1^5*x2^3 - 12*x1^3*y1^4*y2 + 3*x1^2*y1^4*x2*y2 + 15*x1*y1^4*x2^2*y2 - 6*y1^4*x2^3*y2 + 15*x1^3*y1^3*y2^2 - 3*x1^2*y1^3*x2*y2^2 - 9*x1*y1^3*x2^2*y2^2 - 3*y1^3*x2^3*y2^2 - 3*x1^3*y1^2*y2^3 - 9*x1^2*y1^2*x2*y2^3 - 3*x1*y1^2*x2^2*y2^3 + 15*y1^2*x2^3*y2^3 - 6*x1^3*y1*y2^4 + 15*x1^2*y1*x2*y2^4 + 3*x1*y1*x2^2*y2^4 - 12*y1*x2^3*y2^4 + 3*x1^3*y2^5 - 6*x1^2*x2*y2^5 + 3*x2^3*y2^5 - 3*x1*y1^5*x3^2 + 3*y1^5*x2*x3^2 + 15*x1*y1^4*y2*x3^2 - 15*y1^4*x2*y2*x3^2 - 30*x1*y1^3*y2^2*x3^2 + 30*y1^3*x2*y2^2*x3^2 + 30*x1*y1^2*y2^3*x3^2 - 30*y1^2*x2*y2^3*x3^2 - 15*x1*y1*y2^4*x3^2 + 15*y1*x2*y2^4*x3^2 + 3*x1*y2^5*x3^2 - 3*x2*y2^5*x3^2 + 6*x1^2*y1^4*x2*y3 - 12*x1*y1^4*x2^2*y3 + 6*y1^4*x2^3*y3 - 6*x1^3*y1^3*y2*y3 - 6*x1^2*y1^3*x2*y2*y3 + 30*x1*y1^3*x2^2*y2*y3 - 18*y1^3*x2^3*y2*y3 + 18*x1^3*y1^2*y2^2*y3 - 18*x1^2*y1^2*x2*y2^2*y3 - 18*x1*y1^2*x2^2*y2^2*y3 + 18*y1^2*x2^3*y2^2*y3 - 18*x1^3*y1*y2^3*y3 + 30*x1^2*y1*x2*y2^3*y3 - 6*x1*y1*x2^2*y2^3*y3 - 6*y1*x2^3*y2^3*y3 + 6*x1^3*y2^4*y3 - 12*x1^2*x2*y2^4*y3 + 6*x1*x2^2*y2^4*y3 - 3*x1^2*y1^4*x3*y3 + 6*x1*y1^4*x2*x3*y3 - 3*y1^4*x2^2*x3*y3 + 12*x1^2*y1^3*y2*x3*y3 - 24*x1*y1^3*x2*y2*x3*y3 + 12*y1^3*x2^2*y2*x3*y3 - 18*x1^2*y1^2*y2^2*x3*y3 + 36*x1*y1^2*x2*y2^2*x3*y3 - 18*y1^2*x2^2*y2^2*x3*y3 + 12*x1^2*y1*y2^3*x3*y3 - 24*x1*y1*x2*y2^3*x3*y3 + 12*y1*x2^2*y2^3*x3*y3 - 3*x1^2*y2^4*x3*y3 + 6*x1*x2*y2^4*x3*y3 - 3*x2^2*y2^4*x3*y3 - 3*x1^3*y1^3*y3^2 + 9*x1^2*y1^3*x2*y3^2 - 9*x1*y1^3*x2^2*y3^2 + 3*y1^3*x2^3*y3^2 + 9*x1^3*y1^2*y2*y3^2 - 27*x1^2*y1^2*x2*y2*y3^2 + 27*x1*y1^2*x2^2*y2*y3^2 - 9*y1^2*x2^3*y2*y3^2 - 9*x1^3*y1*y2^2*y3^2 + 27*x1^2*y1*x2*y2^2*y3^2 - 27*x1*y1*x2^2*y2^2*y3^2 + 9*y1*x2^3*y2^2*y3^2 + 3*x1^3*y2^3*y3^2 - 9*x1^2*x2*y2^3*y3^2 + 9*x1*x2^2*y2^3*y3^2 - 3*x2^3*y2^3*y3^2 - y1^7 + 5*y1^6*y2 - 9*y1^5*y2^2 + 5*y1^4*y2^3 + 5*y1^3*y2^4 - 9*y1^2*y2^5 + 5*y1*y2^6 - y2^7 - y1^6*y3 + 6*y1^5*y2*y3 - 15*y1^4*y2^2*y3 + 20*y1^3*y2^3*y3 - 15*y1^2*y2^4*y3 + 6*y1*y2^5*y3 - y2^6*y3)/(x1^9 - 3*x1^8*x2 + 8*x1^6*x2^3 - 6*x1^5*x2^4 - 6*x1^4*x2^5 + 8*x1^3*x2^6 - 3*x1*x2^8 + x2^9 + 3*x1^8*x3 - 12*x1^7*x2*x3 + 12*x1^6*x2^2*x3 + 12*x1^5*x2^3*x3 - 30*x1^4*x2^4*x3 + 12*x1^3*x2^5*x3 + 12*x1^2*x2^6*x3 - 12*x1*x2^7*x3 + 3*x2^8*x3 + 3*x1^7*x3^2 - 15*x1^6*x2*x3^2 + 27*x1^5*x2^2*x3^2 - 15*x1^4*x2^3*x3^2 - 15*x1^3*x2^4*x3^2 + 27*x1^2*x2^5*x3^2 - 15*x1*x2^6*x3^2 + 3*x2^7*x3^2 + x1^6*x3^3 - 6*x1^5*x2*x3^3 + 15*x1^4*x2^2*x3^3 - 20*x1^3*x2^3*x3^3 + 15*x1^2*x2^4*x3^3 - 6*x1*x2^5*x3^3 + x2^6*x3^3 - 3*x1^6*y1^2 + 6*x1^5*y1^2*x2 + 3*x1^4*y1^2*x2^2 - 12*x1^3*y1^2*x2^3 + 3*x1^2*y1^2*x2^4 + 6*x1*y1^2*x2^5 - 3*y1^2*x2^6 + 6*x1^6*y1*y2 - 12*x1^5*y1*x2*y2 - 6*x1^4*y1*x2^2*y2 + 24*x1^3*y1*x2^3*y2 - 6*x1^2*y1*x2^4*y2 - 12*x1*y1*x2^5*y2 + 6*y1*x2^6*y2 - 3*x1^6*y2^2 + 6*x1^5*x2*y2^2 + 3*x1^4*x2^2*y2^2 - 12*x1^3*x2^3*y2^2 + 3*x1^2*x2^4*y2^2 + 6*x1*x2^5*y2^2 - 3*x2^6*y2^2 - 6*x1^5*y1^2*x3 + 18*x1^4*y1^2*x2*x3 - 12*x1^3*y1^2*x2^2*x3 - 12*x1^2*y1^2*x2^3*x3 + 18*x1*y1^2*x2^4*x3 - 6*y1^2*x2^5*x3 + 12*x1^5*y1*y2*x3 - 36*x1^4*y1*x2*y2*x3 + 24*x1^3*y1*x2^2*y2*x3 + 24*x1^2*y1*x2^3*y2*x3 - 36*x1*y1*x2^4*y2*x3 + 12*y1*x2^5*y2*x3 - 6*x1^5*y2^2*x3 + 18*x1^4*x2*y2^2*x3 - 12*x1^3*x2^2*y2^2*x3 - 12*x1^2*x2^3*y2^2*x3 + 18*x1*x2^4*y2^2*x3 - 6*x2^5*y2^2*x3 - 3*x1^4*y1^2*x3^2 + 12*x1^3*y1^2*x2*x3^2 - 18*x1^2*y1^2*x2^2*x3^2 + 12*x1*y1^2*x2^3*x3^2 - 3*y1^2*x2^4*x3^2 + 6*x1^4*y1*y2*x3^2 - 24*x1^3*y1*x2*y2*x3^2 + 36*x1^2*y1*x2^2*y2*x3^2 - 24*x1*y1*x2^3*y2*x3^2 + 6*y1*x2^4*y2*x3^2 - 3*x1^4*y2^2*x3^2 + 12*x1^3*x2*y2^2*x3^2 - 18*x1^2*x2^2*y2^2*x3^2 + 12*x1*x2^3*y2^2*x3^2 - 3*x2^4*y2^2*x3^2 + 3*x1^3*y1^4 - 3*x1^2*y1^4*x2 - 3*x1*y1^4*x2^2 + 3*y1^4*x2^3 - 12*x1^3*y1^3*y2 + 12*x1^2*y1^3*x2*y2 + 12*x1*y1^3*x2^2*y2 - 12*y1^3*x2^3*y2 + 18*x1^3*y1^2*y2^2 - 18*x1^2*y1^2*x2*y2^2 - 18*x1*y1^2*x2^2*y2^2 + 18*y1^2*x2^3*y2^2 - 12*x1^3*y1*y2^3 + 12*x1^2*y1*x2*y2^3 + 12*x1*y1*x2^2*y2^3 - 12*y1*x2^3*y2^3 + 3*x1^3*y2^4 - 3*x1^2*x2*y2^4 - 3*x1*x2^2*y2^4 + 3*x2^3*y2^4 + 3*x1^2*y1^4*x3 - 6*x1*y1^4*x2*x3 + 3*y1^4*x2^2*x3 - 12*x1^2*y1^3*y2*x3 + 24*x1*y1^3*x2*y2*x3 - 12*y1^3*x2^2*y2*x3 + 18*x1^2*y1^2*y2^2*x3 - 36*x1*y1^2*x2*y2^2*x3 + 18*y1^2*x2^2*y2^2*x3 - 12*x1^2*y1*y2^3*x3 + 24*x1*y1*x2*y2^3*x3 - 12*y1*x2^2*y2^3*x3 + 3*x1^2*y2^4*x3 - 6*x1*x2*y2^4*x3 + 3*x2^2*y2^4*x3 - y1^6 + 6*y1^5*y2 - 15*y1^4*y2^2 + 20*y1^3*y2^3 - 15*y1^2*y2^4 + 6*y1*y2^5 - y2^6))
(Q(Z[0].numerator()*W[0].denominator() - Z[0].denominator()*W[0].numerator())) == 0
True
(Q(Z[1].numerator()*W[1].denominator() - Z[1].denominator()*W[1].numerator())) == 0
True
def ecm(N, B=10^3, trials=10): m = prod([p^int(math.log(B)/math.log(p)) for p in prime_range(B+1)]) R = Integers(N) # Hacer creer a Sage creer que R es un cuerpo: R.is_field = lambda : True for _ in range(trials): while True: a = R.random_element() if gcd(4*a.lift()^3 + 27, N) == 1: break try: m * EllipticCurve([a, 1])([0,1]) except ZeroDivisionError, msg: # msg: "Inversa de <int> no existe" return gcd(Integer(str(msg).split()[2]), N) return 1
{"done":true} set_random_seed(2) ecm(5959, B=20)
{'done': True} 101
just_a_number_real = 1203823882390383868658742297994980589419874460389646554165385612803071867135129479658 sys.stdout.write('Testing {}\n'.format(just_a_number)) def faqtrz(number, b): """Written by mleon""" tmp_factor = ecm(number, B = b) if tmp_factor == 1 : sys.stdout.write('PRIME.\n') return sys.stdout.write('COMPOSITE: ') fcts = [] while tmp_factor != 1 : sys.stdout.write('{} '.format(tmp_factor)) number = number // tmp_factor fcts.append(tmp_factor) tmp_factor = ecm(number, B = b) sys.stdout.write("{} ".format(number)) fcts.append(number) sys.stdout.write('end of factorization\n') return fcts from time import time start = time() faqtrz(just_a_number, 10^5) sys.stdout.write("Time elapsed: {}\n".format(time() - start))
Testing 30 COMPOSITE: 2 5 3 end of factorization [2, 5, 3] Time elapsed: 28.9239828587
def factorize(n, b = 10^3): primes = [n] ans = [] while primes: u = primes.pop() factor = ecm(u,B = b) if factor == 1: ans.append(u) else: primes.append(u // factor) primes.append(factor) for x in ans: print("{}".format(x)) factorize(30)
a = 224403517704336969924557513090674863160948472041 b = 178246645378577191176051070357934327140032961660 X = 16 * a^4 - 314 * 314 * b^4 print(X)