CoCalc Public Files2017-11-24-151057.sagews
Views : 299
Compute Environment: Ubuntu 18.04 (Deprecated)
# 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)