Hi again,
Things are a bit better now, but I still can't get as far as I'd like with
the polys8 branch (as of a few days ago). I didn't rigorously benchmark the
attached, but just a rough impression from looking at top implies that
thing = first * second - third.sqr()
where first, second, and third are of class Poly with many terms takes about
15 minutes and 1.3 GB of RAM on my office machine. But using the Poly class
is much better than using basic SymPy like Ondrej suggested upthread.
In comparison, the equivalent thing in Sage
thing = expand(first * second - third^2)
takes about 10 minutes and 0.25 GB of RAM on the same machine (using basic
Sage variables rather than their multivariate polynomial ring class). That
much of a difference I don't really understand because in both cases this is
really just addition, subtraction, and multiplication of Python symbols.
However, in Mathematica
thing = Expand[first * second - third^2]
takes only a few seconds and very little RAM. That is on a different
machine, so it is not an apples to apples comparison, but it is still a big
difference.
Is anyone able to reproduce these resource intensities and / or tell me if
there is anything I can do to mitigate them?
Thanks,
Ben
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sympy?hl=en.
a,b,c,d,e,f,g,h,i,j,k,l,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A = symbols('abcdefghijklkmnopqrstuvwxyzA')
first = Poly(-2*a*b*h*k*p*r - 2*a*b*h*m*o*r - 2*a*b*i*l*p*r - 2*a*b*i*m*o*p - 2*a*b*j*k*o*p - 2*a*b*j*l*o*r - 2*a*c*g*k*p*r - 2*a*c*g*m*o*r - 2*a*c*i*k*m*p - 2*a*c*i*l*m*r - 2*a*c*j*k*l*r - 2*a*c*j*k*m*o - 2*a*d*g*l*p*r - 2*a*d*g*m*o*p - 2*a*d*h*k*m*p - 2*a*d*h*l*m*r - 2*a*d*j*k*l*p - 2*a*d*j*l*m*o - 2*a*e*g*k*o*p - 2*a*e*g*l*o*r - 2*a*e*h*k*l*r - 2*a*e*h*k*m*o - 2*a*e*i*k*l*p - 2*a*e*i*l*m*o - 2*b*c*g*i*p*r - 2*b*c*g*j*o*r - 2*b*c*h*i*m*r - 2*b*c*h*j*k*r - 2*b*c*i*j*k*p - 2*b*c*i*j*m*o - 2*b*d*g*h*p*r - 2*b*d*g*j*o*p - 2*b*d*h*i*m*p - 2*b*d*h*j*l*r - 2*b*d*h*j*m*o - 2*b*d*i*j*l*p - 2*b*e*g*h*o*r - 2*b*e*g*i*o*p - 2*b*e*h*i*k*p - 2*b*e*h*i*l*r - 2*b*e*h*j*k*o - 2*b*e*i*j*l*o - 2*c*d*g*h*m*r - 2*c*d*g*i*m*p - 2*c*d*g*j*k*p - 2*c*d*g*j*l*r - 2*c*d*h*j*k*m - 2*c*d*i*j*l*m - 2*c*e*g*h*k*r - 2*c*e*g*i*l*r - 2*c*e*g*i*m*o - 2*c*e*g*j*k*o - 2*c*e*h*i*k*m - 2*c*e*i*j*k*l - 2*d*e*g*h*k*p - 2*d*e*g*h*m*o - 2*d*e*g*i*l*p - 2*d*e*g*j*l*o - 2*d*e*h*i*l*m - 2*d*e*h*j*k*l + 4*a*b*g*o*p*r + 4*a*c*h*k*m*r + 4*a*d*i*l*m*p + 4*a*e*j*k*l*o + 4*b*c*i*j*l*r + 4*b*d*h*j*k*p + 4*b*e*h*i*m*o + 4*c*d*g*j*m*o + 4*c*e*g*i*k*p + 4*d*e*g*h*l*r - a**2*k**2*p**2 - a**2*l**2*r**2 - a**2*m**2*o**2 - b**2*h**2*r**2 - b**2*i**2*p**2 - b**2*j**2*o**2 - c**2*g**2*r**2 - c**2*i**2*m**2 - c**2*j**2*k**2 - d**2*g**2*p**2 - d**2*h**2*m**2 - d**2*j**2*l**2 - e**2*g**2*o**2 - e**2*h**2*k**2 - e**2*i**2*l**2 + a**2*k**2*x**2*z**2 + a**2*l**2*y**2*z**2 + a**2*m**2*x**2*y**2 + a**2*o**2*w**2*z**2 + a**2*p**2*w**2*y**2 + a**2*r**2*w**2*x**2 + b**2*h**2*y**2*z**2 + b**2*i**2*x**2*z**2 + b**2*j**2*x**2*y**2 + b**2*o**2*v**2*z**2 + b**2*p**2*v**2*y**2 + b**2*r**2*v**2*x**2 + c**2*g**2*y**2*z**2 + c**2*i**2*w**2*z**2 + c**2*j**2*w**2*y**2 + c**2*k**2*v**2*z**2 + c**2*m**2*v**2*y**2 + c**2*r**2*v**2*w**2 + d**2*g**2*x**2*z**2 + d**2*h**2*w**2*z**2 + d**2*j**2*w**2*x**2 + d**2*l**2*v**2*z**2 + d**2*m**2*v**2*x**2 + d**2*p**2*v**2*w**2 + e**2*g**2*x**2*y**2 + e**2*h**2*w**2*y**2 + e**2*i**2*w**2*x**2 + e**2*k**2*v**2*x**2 + e**2*l**2*v**2*y**2 + e**2*o**2*v**2*w**2 + g**2*o**2*u**2*z**2 + g**2*p**2*u**2*y**2 + g**2*r**2*u**2*x**2 + h**2*k**2*u**2*z**2 + h**2*m**2*u**2*y**2 + h**2*r**2*u**2*w**2 + i**2*l**2*u**2*z**2 + i**2*m**2*u**2*x**2 + i**2*p**2*u**2*w**2 + j**2*k**2*u**2*x**2 + j**2*l**2*u**2*y**2 + j**2*o**2*u**2*w**2 + k**2*p**2*u**2*v**2 + l**2*r**2*u**2*v**2 + m**2*o**2*u**2*v**2 - a**2*w**2*x**2*y**2*z**2 - b**2*v**2*x**2*y**2*z**2 - c**2*v**2*w**2*y**2*z**2 - d**2*v**2*w**2*x**2*z**2 - e**2*v**2*w**2*x**2*y**2 - g**2*u**2*x**2*y**2*z**2 - h**2*u**2*w**2*y**2*z**2 - i**2*u**2*w**2*x**2*z**2 - j**2*u**2*w**2*x**2*y**2 - k**2*u**2*v**2*x**2*z**2 - l**2*u**2*v**2*y**2*z**2 - m**2*u**2*v**2*x**2*y**2 - o**2*u**2*v**2*w**2*z**2 - p**2*u**2*v**2*w**2*y**2 - r**2*u**2*v**2*w**2*x**2 - 2*a*b*g*o**2*z**2 - 2*a*b*g*p**2*y**2 - 2*a*b*g*r**2*x**2 - 2*a*c*h*k**2*z**2 - 2*a*c*h*m**2*y**2 - 2*a*c*h*r**2*w**2 - 2*a*d*i*l**2*z**2 - 2*a*d*i*m**2*x**2 - 2*a*d*i*p**2*w**2 - 2*a*e*j*k**2*x**2 - 2*a*e*j*l**2*y**2 - 2*a*e*j*o**2*w**2 - 2*b*c*l*i**2*z**2 - 2*b*c*l*j**2*y**2 - 2*b*c*l*r**2*v**2 - 2*b*d*k*h**2*z**2 - 2*b*d*k*j**2*x**2 - 2*b*d*k*p**2*v**2 - 2*b*e*m*h**2*y**2 - 2*b*e*m*i**2*x**2 - 2*b*e*m*o**2*v**2 - 2*c*d*o*g**2*z**2 - 2*c*d*o*j**2*w**2 - 2*c*d*o*m**2*v**2 - 2*c*e*p*g**2*y**2 - 2*c*e*p*i**2*w**2 - 2*c*e*p*k**2*v**2 - 2*d*e*r*g**2*x**2 - 2*d*e*r*h**2*w**2 - 2*d*e*r*l**2*v**2 - 2*g*h*l*d**2*z**2 - 2*g*h*l*e**2*y**2 - 2*g*h*l*r**2*u**2 - 2*g*i*k*c**2*z**2 - 2*g*i*k*e**2*x**2 - 2*g*i*k*p**2*u**2 - 2*g*j*m*c**2*y**2 - 2*g*j*m*d**2*x**2 - 2*g*j*m*o**2*u**2 - 2*h*i*o*b**2*z**2 - 2*h*i*o*e**2*w**2 - 2*h*i*o*m**2*u**2 - 2*h*j*p*b**2*y**2 - 2*h*j*p*d**2*w**2 - 2*h*j*p*k**2*u**2 - 2*i*j*r*b**2*x**2 - 2*i*j*r*c**2*w**2 - 2*i*j*r*l**2*u**2 - 2*k*l*o*a**2*z**2 - 2*k*l*o*e**2*v**2 - 2*k*l*o*j**2*u**2 - 2*k*m*r*a**2*x**2 - 2*k*m*r*c**2*v**2 - 2*k*m*r*h**2*u**2 - 2*l*m*p*a**2*y**2 - 2*l*m*p*d**2*v**2 - 2*l*m*p*i**2*u**2 - 2*o*p*r*a**2*w**2 - 2*o*p*r*b**2*v**2 - 2*o*p*r*g**2*u**2 + 2*a*b*h*l*r**2 + 2*a*b*i*k*p**2 + 2*a*b*j*m*o**2 + 2*a*c*g*l*r**2 + 2*a*c*i*o*m**2 + 2*a*c*j*p*k**2 + 2*a*d*g*k*p**2 + 2*a*d*h*o*m**2 + 2*a*d*j*r*l**2 + 2*a*e*g*m*o**2 + 2*a*e*h*p*k**2 + 2*a*e*i*r*l**2 + 2*b*c*g*h*r**2 + 2*b*c*k*o*j**2 + 2*b*c*m*p*i**2 + 2*b*d*g*i*p**2 + 2*b*d*l*o*j**2 + 2*b*d*m*r*h**2 + 2*b*e*g*j*o**2 + 2*b*e*k*r*h**2 + 2*b*e*l*p*i**2 + 2*c*d*h*i*m**2 + 2*c*d*k*l*j**2 + 2*c*d*p*r*g**2 + 2*c*e*h*j*k**2 + 2*c*e*l*m*i**2 + 2*c*e*o*r*g**2 + 2*d*e*i*j*l**2 + 2*d*e*k*m*h**2 + 2*d*e*o*p*g**2 + 2*g*h*k*o*e**2 + 2*g*h*m*p*d**2 + 2*g*i*l*o*e**2 + 2*g*i*m*r*c**2 + 2*g*j*k*r*c**2 + 2*g*j*l*p*d**2 + 2*h*i*k*l*e**2 + 2*h*i*p*r*b**2 + 2*h*j*l*m*d**2 + 2*h*j*o*r*b**2 + 2*i*j*k*m*c**2 + 2*i*j*o*p*b**2 + 2*k*l*p*r*a**2 + 2*k*m*o*p*a**2 + 2*l*m*o*r*a**2 + u**2*v**2*w**2*x**2*y**2*z**2 - 2*a*b*h*l*y**2*z**2 - 2*a*b*i*k*x**2*z**2 - 2*a*b*j*m*x**2*y**2 - 2*a*c*g*l*y**2*z**2 - 2*a*c*i*o*w**2*z**2 - 2*a*c*j*p*w**2*y**2 - 2*a*d*g*k*x**2*z**2 - 2*a*d*h*o*w**2*z**2 - 2*a*d*j*r*w**2*x**2 - 2*a*e*g*m*x**2*y**2 - 2*a*e*h*p*w**2*y**2 - 2*a*e*i*r*w**2*x**2 - 2*b*c*g*h*y**2*z**2 - 2*b*c*k*o*v**2*z**2 - 2*b*c*m*p*v**2*y**2 - 2*b*d*g*i*x**2*z**2 - 2*b*d*l*o*v**2*z**2 - 2*b*d*m*r*v**2*x**2 - 2*b*e*g*j*x**2*y**2 - 2*b*e*k*r*v**2*x**2 - 2*b*e*l*p*v**2*y**2 - 2*c*d*h*i*w**2*z**2 - 2*c*d*k*l*v**2*z**2 - 2*c*d*p*r*v**2*w**2 - 2*c*e*h*j*w**2*y**2 - 2*c*e*l*m*v**2*y**2 - 2*c*e*o*r*v**2*w**2 - 2*d*e*i*j*w**2*x**2 - 2*d*e*k*m*v**2*x**2 - 2*d*e*o*p*v**2*w**2 - 2*g*h*k*o*u**2*z**2 - 2*g*h*m*p*u**2*y**2 - 2*g*i*l*o*u**2*z**2 - 2*g*i*m*r*u**2*x**2 - 2*g*j*k*r*u**2*x**2 - 2*g*j*l*p*u**2*y**2 - 2*h*i*k*l*u**2*z**2 - 2*h*i*p*r*u**2*w**2 - 2*h*j*l*m*u**2*y**2 - 2*h*j*o*r*u**2*w**2 - 2*i*j*k*m*u**2*x**2 - 2*i*j*o*p*u**2*w**2 - 2*k*l*p*r*u**2*v**2 - 2*k*m*o*p*u**2*v**2 - 2*l*m*o*r*u**2*v**2 + 2*a*b*g*x**2*y**2*z**2 + 2*a*b*h*k*o*z**2 + 2*a*b*h*m*p*y**2 + 2*a*b*i*l*o*z**2 + 2*a*b*i*m*r*x**2 + 2*a*b*j*k*r*x**2 + 2*a*b*j*l*p*y**2 + 2*a*c*g*k*o*z**2 + 2*a*c*g*m*p*y**2 + 2*a*c*h*w**2*y**2*z**2 + 2*a*c*i*k*l*z**2 + 2*a*c*i*p*r*w**2 + 2*a*c*j*l*m*y**2 + 2*a*c*j*o*r*w**2 + 2*a*d*g*l*o*z**2 + 2*a*d*g*m*r*x**2 + 2*a*d*h*k*l*z**2 + 2*a*d*h*p*r*w**2 + 2*a*d*i*w**2*x**2*z**2 + 2*a*d*j*k*m*x**2 + 2*a*d*j*o*p*w**2 + 2*a*e*g*k*r*x**2 + 2*a*e*g*l*p*y**2 + 2*a*e*h*l*m*y**2 + 2*a*e*h*o*r*w**2 + 2*a*e*i*k*m*x**2 + 2*a*e*i*o*p*w**2 + 2*a*e*j*w**2*x**2*y**2 + 2*b*c*g*i*o*z**2 + 2*b*c*g*j*p*y**2 + 2*b*c*h*i*k*z**2 + 2*b*c*h*j*m*y**2 + 2*b*c*k*p*r*v**2 + 2*b*c*l*v**2*y**2*z**2 + 2*b*c*m*o*r*v**2 + 2*b*d*g*h*o*z**2 + 2*b*d*g*j*r*x**2 + 2*b*d*h*i*l*z**2 + 2*b*d*i*j*m*x**2 + 2*b*d*k*v**2*x**2*z**2 + 2*b*d*l*p*r*v**2 + 2*b*d*m*o*p*v**2 + 2*b*e*g*h*p*y**2 + 2*b*e*g*i*r*x**2 + 2*b*e*h*j*l*y**2 + 2*b*e*i*j*k*x**2 + 2*b*e*k*o*p*v**2 + 2*b*e*l*o*r*v**2 + 2*b*e*m*v**2*x**2*y**2 + 2*c*d*g*h*k*z**2 + 2*c*d*g*i*l*z**2 + 2*c*d*h*j*r*w**2 + 2*c*d*i*j*p*w**2 + 2*c*d*k*m*p*v**2 + 2*c*d*l*m*r*v**2 + 2*c*d*o*v**2*w**2*z**2 + 2*c*e*g*h*m*y**2 + 2*c*e*g*j*l*y**2 + 2*c*e*h*i*r*w**2 + 2*c*e*i*j*o*w**2 + 2*c*e*k*l*r*v**2 + 2*c*e*k*m*o*v**2 + 2*c*e*p*v**2*w**2*y**2 + 2*d*e*g*i*m*x**2 + 2*d*e*g*j*k*x**2 + 2*d*e*h*i*p*w**2 + 2*d*e*h*j*o*w**2 + 2*d*e*k*l*p*v**2 + 2*d*e*l*m*o*v**2 + 2*d*e*r*v**2*w**2*x**2 + 2*g*h*k*p*r*u**2 + 2*g*h*l*u**2*y**2*z**2 + 2*g*h*m*o*r*u**2 + 2*g*i*k*u**2*x**2*z**2 + 2*g*i*l*p*r*u**2 + 2*g*i*m*o*p*u**2 + 2*g*j*k*o*p*u**2 + 2*g*j*l*o*r*u**2 + 2*g*j*m*u**2*x**2*y**2 + 2*h*i*k*m*p*u**2 + 2*h*i*l*m*r*u**2 + 2*h*i*o*u**2*w**2*z**2 + 2*h*j*k*l*r*u**2 + 2*h*j*k*m*o*u**2 + 2*h*j*p*u**2*w**2*y**2 + 2*i*j*k*l*p*u**2 + 2*i*j*l*m*o*u**2 + 2*i*j*r*u**2*w**2*x**2 + 2*k*l*o*u**2*v**2*z**2 + 2*k*m*r*u**2*v**2*x**2 + 2*l*m*p*u**2*v**2*y**2 + 2*o*p*r*u**2*v**2*w**2, domain = 'QQ')
second = Poly(-2*a*b*h*k*q*s - 2*a*b*h*n*o*s - 2*a*b*i*l*q*s - 2*a*b*i*n*o*q - 2*a*b*k*l*o*s - 2*a*c*g*k*q*s - 2*a*c*g*n*o*s - 2*a*c*i*k*n*q - 2*a*c*i*l*n*s - 2*a*d*g*l*q*s - 2*a*d*g*n*o*q - 2*a*d*h*k*n*q - 2*a*d*h*l*n*s - 2*a*d*k*l*n*o - 2*a*f*g*k*o*q - 2*a*f*g*l*o*s - 2*a*f*h*k*l*s - 2*a*f*h*k*n*o - 2*a*f*i*k*l*q - 2*a*f*i*l*n*o - 2*b*c*g*i*q*s - 2*b*c*g*k*o*s - 2*b*c*h*i*n*s - 2*b*c*i*k*n*o - 2*b*d*g*h*q*s - 2*b*d*g*k*o*q - 2*b*d*h*i*n*q - 2*b*d*h*k*l*s - 2*b*d*h*k*n*o - 2*b*d*i*k*l*q - 2*b*f*g*h*o*s - 2*b*f*g*i*o*q - 2*b*f*h*i*k*q - 2*b*f*h*i*l*s - 2*b*f*i*k*l*o - 2*c*d*g*h*n*s - 2*c*d*g*i*n*q - 2*c*d*g*k*l*s - 2*c*d*i*k*l*n - 2*c*f*g*h*k*s - 2*c*f*g*i*l*s - 2*c*f*g*i*n*o - 2*c*f*h*i*k*n - 2*d*f*g*h*k*q - 2*d*f*g*h*n*o - 2*d*f*g*i*l*q - 2*d*f*g*k*l*o - 2*d*f*h*i*l*n + 4*a*b*g*o*q*s + 4*a*c*h*k*n*s + 4*a*d*i*l*n*q + 4*b*c*i*k*l*s + 4*b*f*h*i*n*o + 4*c*d*g*k*n*o + 4*c*f*g*i*k*q + 4*d*f*g*h*l*s + k**4*u**2*x**2 - a**2*k**2*q**2 - a**2*l**2*s**2 - a**2*n**2*o**2 - b**2*h**2*s**2 - b**2*i**2*q**2 - b**2*k**2*o**2 - c**2*g**2*s**2 - c**2*i**2*n**2 - d**2*g**2*q**2 - d**2*h**2*n**2 - d**2*k**2*l**2 - f**2*g**2*o**2 - f**2*h**2*k**2 - f**2*i**2*l**2 + A**2*a**2*k**2*x**2 + A**2*a**2*l**2*y**2 + A**2*a**2*o**2*w**2 + A**2*b**2*h**2*y**2 + A**2*b**2*i**2*x**2 + A**2*b**2*o**2*v**2 + A**2*c**2*g**2*y**2 + A**2*c**2*i**2*w**2 + A**2*c**2*k**2*v**2 + A**2*d**2*g**2*x**2 + A**2*d**2*h**2*w**2 + A**2*d**2*l**2*v**2 + A**2*g**2*o**2*u**2 + A**2*h**2*k**2*u**2 + A**2*i**2*l**2*u**2 + a**2*n**2*x**2*y**2 + a**2*q**2*w**2*y**2 + a**2*s**2*w**2*x**2 + b**2*k**2*x**2*y**2 + b**2*q**2*v**2*y**2 + b**2*s**2*v**2*x**2 + c**2*k**2*w**2*y**2 + c**2*n**2*v**2*y**2 + c**2*s**2*v**2*w**2 + d**2*k**2*w**2*x**2 + d**2*n**2*v**2*x**2 + d**2*q**2*v**2*w**2 + f**2*g**2*x**2*y**2 + f**2*h**2*w**2*y**2 + f**2*i**2*w**2*x**2 + f**2*k**2*v**2*x**2 + f**2*l**2*v**2*y**2 + f**2*o**2*v**2*w**2 + g**2*q**2*u**2*y**2 + g**2*s**2*u**2*x**2 + h**2*n**2*u**2*y**2 + h**2*s**2*u**2*w**2 + i**2*n**2*u**2*x**2 + i**2*q**2*u**2*w**2 + k**2*l**2*u**2*y**2 + k**2*o**2*u**2*w**2 + k**2*q**2*u**2*v**2 + l**2*s**2*u**2*v**2 + n**2*o**2*u**2*v**2 - 2*a*f*k**3*x**2 - 2*b*d*k**3*x**2 - 2*h*q*k**3*u**2 - 2*l*o*k**3*u**2 + 2*g*s*c**2*k**2 + 2*i*n*c**2*k**2 - A**2*a**2*w**2*x**2*y**2 - A**2*b**2*v**2*x**2*y**2 - A**2*c**2*v**2*w**2*y**2 - A**2*d**2*v**2*w**2*x**2 - A**2*g**2*u**2*x**2*y**2 - A**2*h**2*u**2*w**2*y**2 - A**2*i**2*u**2*w**2*x**2 - A**2*k**2*u**2*v**2*x**2 - A**2*l**2*u**2*v**2*y**2 - A**2*o**2*u**2*v**2*w**2 - f**2*v**2*w**2*x**2*y**2 - k**2*u**2*w**2*x**2*y**2 - n**2*u**2*v**2*x**2*y**2 - q**2*u**2*v**2*w**2*y**2 - s**2*u**2*v**2*w**2*x**2 - 2*a*b*g*A**2*o**2 - 2*a*b*g*q**2*y**2 - 2*a*b*g*s**2*x**2 - 2*a*b*o*q*k**2 - 2*a*c*h*A**2*k**2 - 2*a*c*h*n**2*y**2 - 2*a*c*h*s**2*w**2 - 2*a*c*l*s*k**2 - 2*a*c*n*o*k**2 - 2*a*d*i*A**2*l**2 - 2*a*d*i*n**2*x**2 - 2*a*d*i*q**2*w**2 - 2*a*d*l*q*k**2 - 2*a*f*k*l**2*y**2 - 2*a*f*k*o**2*w**2 - 2*b*c*h*s*k**2 - 2*b*c*i*q*k**2 - 2*b*c*l*A**2*i**2 - 2*b*c*l*k**2*y**2 - 2*b*c*l*s**2*v**2 - 2*b*d*k*A**2*h**2 - 2*b*d*k*q**2*v**2 - 2*b*f*h*o*k**2 - 2*b*f*n*h**2*y**2 - 2*b*f*n*i**2*x**2 - 2*b*f*n*o**2*v**2 - 2*c*d*g*q*k**2 - 2*c*d*h*n*k**2 - 2*c*d*o*A**2*g**2 - 2*c*d*o*k**2*w**2 - 2*c*d*o*n**2*v**2 - 2*c*f*g*o*k**2 - 2*c*f*i*l*k**2 - 2*c*f*q*g**2*y**2 - 2*c*f*q*i**2*w**2 - 2*c*f*q*k**2*v**2 - 2*d*f*h*l*k**2 - 2*d*f*s*g**2*x**2 - 2*d*f*s*h**2*w**2 - 2*d*f*s*l**2*v**2 - 2*g*h*l*A**2*d**2 - 2*g*h*l*f**2*y**2 - 2*g*h*l*s**2*u**2 - 2*g*i*k*A**2*c**2 - 2*g*i*k*f**2*x**2 - 2*g*i*k*q**2*u**2 - 2*g*k*n*c**2*y**2 - 2*g*k*n*d**2*x**2 - 2*g*k*n*o**2*u**2 - 2*g*s*k**2*u**2*x**2 - 2*h*i*o*A**2*b**2 - 2*h*i*o*f**2*w**2 - 2*h*i*o*n**2*u**2 - 2*h*k*q*b**2*y**2 - 2*h*k*q*d**2*w**2 - 2*i*k*s*b**2*x**2 - 2*i*k*s*c**2*w**2 - 2*i*k*s*l**2*u**2 - 2*i*n*k**2*u**2*x**2 - 2*k*l*o*A**2*a**2 - 2*k*l*o*f**2*v**2 - 2*k*n*s*a**2*x**2 - 2*k*n*s*c**2*v**2 - 2*k*n*s*h**2*u**2 - 2*l*n*q*a**2*y**2 - 2*l*n*q*d**2*v**2 - 2*l*n*q*i**2*u**2 - 2*o*q*s*a**2*w**2 - 2*o*q*s*b**2*v**2 - 2*o*q*s*g**2*u**2 + 2*a*b*h*l*s**2 + 2*a*b*i*k*q**2 + 2*a*b*k*n*o**2 + 2*a*b*s*k**2*x**2 + 2*a*c*g*l*s**2 + 2*a*c*i*o*n**2 + 2*a*d*g*k*q**2 + 2*a*d*h*o*n**2 + 2*a*d*k*s*l**2 + 2*a*d*n*k**2*x**2 + 2*a*f*g*n*o**2 + 2*a*f*h*q*k**2 + 2*a*f*i*s*l**2 + 2*b*c*g*h*s**2 + 2*b*c*n*q*i**2 + 2*b*d*g*i*q**2 + 2*b*d*l*o*k**2 + 2*b*d*n*s*h**2 + 2*b*f*g*k*o**2 + 2*b*f*i*k**2*x**2 + 2*b*f*k*s*h**2 + 2*b*f*l*q*i**2 + 2*c*d*h*i*n**2 + 2*c*d*q*s*g**2 + 2*c*f*l*n*i**2 + 2*c*f*o*s*g**2 + 2*d*f*g*k**2*x**2 + 2*d*f*i*k*l**2 + 2*d*f*k*n*h**2 + 2*d*f*o*q*g**2 + 2*g*h*k*o*f**2 + 2*g*h*n*q*d**2 + 2*g*i*l*o*f**2 + 2*g*i*n*s*c**2 + 2*g*k*l*q*d**2 + 2*g*o*q*k**2*u**2 + 2*h*i*k*l*f**2 + 2*h*i*q*s*b**2 + 2*h*k*l*n*d**2 + 2*h*k*o*s*b**2 + 2*h*l*s*k**2*u**2 + 2*h*n*o*k**2*u**2 + 2*i*k*o*q*b**2 + 2*i*l*q*k**2*u**2 + 2*k*l*q*s*a**2 + 2*k*n*o*q*a**2 + 2*l*n*o*s*a**2 + 4*a*f*l*o*k**2 + 4*b*d*h*q*k**2 + A**2*u**2*v**2*w**2*x**2*y**2 - 2*a*b*h*l*A**2*y**2 - 2*a*b*i*k*A**2*x**2 - 2*a*b*k*n*x**2*y**2 - 2*a*c*g*l*A**2*y**2 - 2*a*c*i*o*A**2*w**2 - 2*a*c*k*q*w**2*y**2 - 2*a*d*g*k*A**2*x**2 - 2*a*d*h*o*A**2*w**2 - 2*a*d*k*s*w**2*x**2 - 2*a*f*g*n*x**2*y**2 - 2*a*f*h*q*w**2*y**2 - 2*a*f*i*s*w**2*x**2 - 2*b*c*g*h*A**2*y**2 - 2*b*c*k*o*A**2*v**2 - 2*b*c*n*q*v**2*y**2 - 2*b*d*g*i*A**2*x**2 - 2*b*d*l*o*A**2*v**2 - 2*b*d*n*s*v**2*x**2 - 2*b*f*g*k*x**2*y**2 - 2*b*f*k*s*v**2*x**2 - 2*b*f*l*q*v**2*y**2 - 2*c*d*h*i*A**2*w**2 - 2*c*d*k*l*A**2*v**2 - 2*c*d*q*s*v**2*w**2 - 2*c*f*h*k*w**2*y**2 - 2*c*f*l*n*v**2*y**2 - 2*c*f*o*s*v**2*w**2 - 2*d*f*i*k*w**2*x**2 - 2*d*f*k*n*v**2*x**2 - 2*d*f*o*q*v**2*w**2 - 2*g*h*k*o*A**2*u**2 - 2*g*h*n*q*u**2*y**2 - 2*g*i*l*o*A**2*u**2 - 2*g*i*n*s*u**2*x**2 - 2*g*k*l*q*u**2*y**2 - 2*h*i*k*l*A**2*u**2 - 2*h*i*q*s*u**2*w**2 - 2*h*k*l*n*u**2*y**2 - 2*h*k*o*s*u**2*w**2 - 2*i*k*o*q*u**2*w**2 - 2*k*l*q*s*u**2*v**2 - 2*k*n*o*q*u**2*v**2 - 2*l*n*o*s*u**2*v**2 + 2*a*b*g*A**2*x**2*y**2 + 2*a*b*h*k*o*A**2 + 2*a*b*h*n*q*y**2 + 2*a*b*i*l*o*A**2 + 2*a*b*i*n*s*x**2 + 2*a*b*k*l*q*y**2 + 2*a*c*g*k*o*A**2 + 2*a*c*g*n*q*y**2 + 2*a*c*h*A**2*w**2*y**2 + 2*a*c*i*k*l*A**2 + 2*a*c*i*q*s*w**2 + 2*a*c*k*l*n*y**2 + 2*a*c*k*o*s*w**2 + 2*a*d*g*l*o*A**2 + 2*a*d*g*n*s*x**2 + 2*a*d*h*k*l*A**2 + 2*a*d*h*q*s*w**2 + 2*a*d*i*A**2*w**2*x**2 + 2*a*d*k*o*q*w**2 + 2*a*f*g*k*s*x**2 + 2*a*f*g*l*q*y**2 + 2*a*f*h*l*n*y**2 + 2*a*f*h*o*s*w**2 + 2*a*f*i*k*n*x**2 + 2*a*f*i*o*q*w**2 + 2*a*f*k*w**2*x**2*y**2 + 2*b*c*g*i*o*A**2 + 2*b*c*g*k*q*y**2 + 2*b*c*h*i*k*A**2 + 2*b*c*h*k*n*y**2 + 2*b*c*k*q*s*v**2 + 2*b*c*l*A**2*v**2*y**2 + 2*b*c*n*o*s*v**2 + 2*b*d*g*h*o*A**2 + 2*b*d*g*k*s*x**2 + 2*b*d*h*i*l*A**2 + 2*b*d*i*k*n*x**2 + 2*b*d*k*A**2*v**2*x**2 + 2*b*d*l*q*s*v**2 + 2*b*d*n*o*q*v**2 + 2*b*f*g*h*q*y**2 + 2*b*f*g*i*s*x**2 + 2*b*f*h*k*l*y**2 + 2*b*f*k*o*q*v**2 + 2*b*f*l*o*s*v**2 + 2*b*f*n*v**2*x**2*y**2 + 2*c*d*g*h*k*A**2 + 2*c*d*g*i*l*A**2 + 2*c*d*h*k*s*w**2 + 2*c*d*i*k*q*w**2 + 2*c*d*k*n*q*v**2 + 2*c*d*l*n*s*v**2 + 2*c*d*o*A**2*v**2*w**2 + 2*c*f*g*h*n*y**2 + 2*c*f*g*k*l*y**2 + 2*c*f*h*i*s*w**2 + 2*c*f*i*k*o*w**2 + 2*c*f*k*l*s*v**2 + 2*c*f*k*n*o*v**2 + 2*c*f*q*v**2*w**2*y**2 + 2*d*f*g*i*n*x**2 + 2*d*f*h*i*q*w**2 + 2*d*f*h*k*o*w**2 + 2*d*f*k*l*q*v**2 + 2*d*f*l*n*o*v**2 + 2*d*f*s*v**2*w**2*x**2 + 2*g*h*k*q*s*u**2 + 2*g*h*l*A**2*u**2*y**2 + 2*g*h*n*o*s*u**2 + 2*g*i*k*A**2*u**2*x**2 + 2*g*i*l*q*s*u**2 + 2*g*i*n*o*q*u**2 + 2*g*k*l*o*s*u**2 + 2*g*k*n*u**2*x**2*y**2 + 2*h*i*k*n*q*u**2 + 2*h*i*l*n*s*u**2 + 2*h*i*o*A**2*u**2*w**2 + 2*h*k*q*u**2*w**2*y**2 + 2*i*k*l*n*o*u**2 + 2*i*k*s*u**2*w**2*x**2 + 2*k*l*o*A**2*u**2*v**2 + 2*k*n*s*u**2*v**2*x**2 + 2*l*n*q*u**2*v**2*y**2 + 2*o*q*s*u**2*v**2*w**2 + 2*a*c*q*k**3 + 2*b*c*o*k**3 + 2*c*d*l*k**3 + 2*c*f*h*k**3 - c**2*k**4, domain = 'QQ')
third = Poly(-a*b*h*k*p*s - a*b*h*k*q*r - a*b*h*m*o*s - a*b*h*n*o*r - a*b*i*l*p*s - a*b*i*l*q*r - a*b*i*m*o*q - a*b*i*n*o*p - a*b*j*k*o*q - a*b*j*l*o*s - a*b*k*l*o*r - a*c*g*k*p*s - a*c*g*k*q*r - a*c*g*m*o*s - a*c*g*n*o*r - a*c*i*k*m*q - a*c*i*k*n*p - a*c*i*l*m*s - a*c*i*l*n*r - a*c*j*k*l*s - a*c*j*k*n*o - a*d*g*l*p*s - a*d*g*l*q*r - a*d*g*m*o*q - a*d*g*n*o*p - a*d*h*k*m*q - a*d*h*k*n*p - a*d*h*l*m*s - a*d*h*l*n*r - a*d*j*k*l*q - a*d*j*l*n*o - a*d*k*l*m*o - a*e*g*k*o*q - a*e*g*l*o*s - a*e*h*k*l*s - a*e*h*k*n*o - a*e*i*k*l*q - a*e*i*l*n*o - a*f*g*k*o*p - a*f*g*l*o*r - a*f*h*k*l*r - a*f*h*k*m*o - a*f*i*k*l*p - a*f*i*l*m*o - b*c*g*i*p*s - b*c*g*i*q*r - b*c*g*j*o*s - b*c*g*k*o*r - b*c*h*i*m*s - b*c*h*i*n*r - b*c*h*j*k*s - b*c*i*j*k*q - b*c*i*j*n*o - b*c*i*k*m*o - b*d*g*h*p*s - b*d*g*h*q*r - b*d*g*j*o*q - b*d*g*k*o*p - b*d*h*i*m*q - b*d*h*i*n*p - b*d*h*j*l*s - b*d*h*j*n*o - b*d*h*k*l*r - b*d*h*k*m*o - b*d*i*j*l*q - b*d*i*k*l*p - b*e*g*h*o*s - b*e*g*i*o*q - b*e*h*i*k*q - b*e*h*i*l*s - b*e*i*k*l*o - b*f*g*h*o*r - b*f*g*i*o*p - b*f*h*i*k*p - b*f*h*i*l*r - b*f*h*j*k*o - b*f*i*j*l*o - c*d*g*h*m*s - c*d*g*h*n*r - c*d*g*i*m*q - c*d*g*i*n*p - c*d*g*j*k*q - c*d*g*j*l*s - c*d*g*k*l*r - c*d*h*j*k*n - c*d*i*j*l*n - c*d*i*k*l*m - c*e*g*h*k*s - c*e*g*i*l*s - c*e*g*i*n*o - c*e*h*i*k*n - c*f*g*h*k*r - c*f*g*i*l*r - c*f*g*i*m*o - c*f*g*j*k*o - c*f*h*i*k*m - c*f*i*j*k*l - d*e*g*h*k*q - d*e*g*h*n*o - d*e*g*i*l*q - d*e*g*k*l*o - d*e*h*i*l*n - d*f*g*h*k*p - d*f*g*h*m*o - d*f*g*i*l*p - d*f*g*j*l*o - d*f*h*i*l*m - d*f*h*j*k*l + 2*a*b*g*o*p*s + 2*a*b*g*o*q*r + 2*a*b*h*k*o*t + 2*a*b*h*l*r*s + 2*a*b*i*k*p*q + 2*a*b*i*l*o*t + 2*a*c*g*k*o*t + 2*a*c*g*l*r*s + 2*a*c*h*k*m*s + 2*a*c*h*k*n*r + 2*a*c*i*k*l*t + 2*a*c*i*m*n*o + 2*a*d*g*k*p*q + 2*a*d*g*l*o*t + 2*a*d*h*k*l*t + 2*a*d*h*m*n*o + 2*a*d*i*l*m*q + 2*a*d*i*l*n*p + 2*a*f*j*k*l*o + 2*b*c*g*h*r*s + 2*b*c*g*i*o*t + 2*b*c*h*i*k*t + 2*b*c*i*j*l*s + 2*b*c*i*k*l*r + 2*b*d*g*h*o*t + 2*b*d*g*i*p*q + 2*b*d*h*i*l*t + 2*b*d*h*j*k*q + 2*b*d*j*k*l*o + 2*b*e*h*i*n*o + 2*b*f*h*i*m*o + 2*c*d*g*h*k*t + 2*c*d*g*i*l*t + 2*c*d*g*j*n*o + 2*c*d*g*k*m*o + 2*c*d*h*i*m*n + 2*c*e*g*i*k*q + 2*c*f*g*i*k*p + 2*d*e*g*h*l*s + 2*d*f*g*h*l*r + 2*e*f*g*h*k*o + 2*e*f*g*i*l*o + 2*e*f*h*i*k*l + g*r*c**2*k**2 + i*m*c**2*k**2 + j*k**3*u**2*x**2 + t*a**2*k**2*x**2 + t*a**2*l**2*y**2 + t*a**2*o**2*w**2 + t*b**2*h**2*y**2 + t*b**2*i**2*x**2 + t*b**2*o**2*v**2 + t*c**2*g**2*y**2 + t*c**2*i**2*w**2 + t*c**2*k**2*v**2 + t*d**2*g**2*x**2 + t*d**2*h**2*w**2 + t*d**2*l**2*v**2 + t*g**2*o**2*u**2 + t*h**2*k**2*u**2 + t*i**2*l**2*u**2 - a*e*k**3*x**2 - e*f*g**2*o**2 - e*f*h**2*k**2 - e*f*i**2*l**2 - h*p*k**3*u**2 - j*k*b**2*o**2 - j*k*d**2*l**2 - m*n*a**2*o**2 - m*n*c**2*i**2 - m*n*d**2*h**2 - p*q*a**2*k**2 - p*q*b**2*i**2 - p*q*d**2*g**2 - r*s*a**2*l**2 - r*s*b**2*h**2 - r*s*c**2*g**2 + a*b*j*n*o**2 + a*b*k*m*o**2 + a*b*r*k**2*x**2 + a*c*j*q*k**2 + a*d*j*s*l**2 + a*d*k*r*l**2 + a*d*m*k**2*x**2 + a*e*g*n*o**2 + a*e*h*q*k**2 + a*e*i*s*l**2 + a*f*g*m*o**2 + a*f*h*p*k**2 + a*f*i*r*l**2 + b*c*m*q*i**2 + b*c*n*p*i**2 + b*d*m*s*h**2 + b*d*n*r*h**2 + b*e*g*k*o**2 + b*e*i*k**2*x**2 + b*e*k*s*h**2 + b*e*l*q*i**2 + b*f*g*j*o**2 + b*f*k*r*h**2 + b*f*l*p*i**2 + c*d*p*s*g**2 + c*d*q*r*g**2 + c*e*l*n*i**2 + c*e*o*s*g**2 + c*f*h*j*k**2 + c*f*l*m*i**2 + c*f*o*r*g**2 + d*e*g*k**2*x**2 + d*e*i*k*l**2 + d*e*k*n*h**2 + d*e*o*q*g**2 + d*f*i*j*l**2 + d*f*k*m*h**2 + d*f*o*p*g**2 + e*f*g**2*x**2*y**2 + e*f*h**2*w**2*y**2 + e*f*i**2*w**2*x**2 + e*f*k**2*v**2*x**2 + e*f*l**2*v**2*y**2 + e*f*o**2*v**2*w**2 + g*h*m*q*d**2 + g*h*n*p*d**2 + g*i*m*s*c**2 + g*i*n*r*c**2 + g*j*k*s*c**2 + g*j*l*q*d**2 + g*k*l*p*d**2 + g*o*p*k**2*u**2 + h*i*p*s*b**2 + h*i*q*r*b**2 + h*j*l*n*d**2 + h*j*o*s*b**2 + h*k*l*m*d**2 + h*k*o*r*b**2 + h*l*r*k**2*u**2 + h*m*o*k**2*u**2 + i*j*k*n*c**2 + i*j*o*q*b**2 + i*k*o*p*b**2 + i*l*p*k**2*u**2 + j*k*b**2*x**2*y**2 + j*k*c**2*w**2*y**2 + j*k*d**2*w**2*x**2 + j*k*l**2*u**2*y**2 + j*k*o**2*u**2*w**2 + k*l*p*s*a**2 + k*l*q*r*a**2 + k*m*o*q*a**2 + k*n*o*p*a**2 + l*m*o*s*a**2 + l*n*o*r*a**2 + m*n*a**2*x**2*y**2 + m*n*c**2*v**2*y**2 + m*n*d**2*v**2*x**2 + m*n*h**2*u**2*y**2 + m*n*i**2*u**2*x**2 + m*n*o**2*u**2*v**2 + p*q*a**2*w**2*y**2 + p*q*b**2*v**2*y**2 + p*q*d**2*v**2*w**2 + p*q*g**2*u**2*y**2 + p*q*i**2*u**2*w**2 + p*q*k**2*u**2*v**2 + r*s*a**2*w**2*x**2 + r*s*b**2*v**2*x**2 + r*s*c**2*v**2*w**2 + r*s*g**2*u**2*x**2 + r*s*h**2*u**2*w**2 + r*s*l**2*u**2*v**2 - a*b*o*p*k**2 - a*c*l*r*k**2 - a*c*m*o*k**2 - a*d*l*p*k**2 - a*e*k*l**2*y**2 - a*e*k*o**2*w**2 - a*f*j*k**2*x**2 - a*f*j*l**2*y**2 - a*f*j*o**2*w**2 - b*c*h*r*k**2 - b*c*i*p*k**2 - b*e*h*o*k**2 - b*e*n*h**2*y**2 - b*e*n*i**2*x**2 - b*e*n*o**2*v**2 - b*f*m*h**2*y**2 - b*f*m*i**2*x**2 - b*f*m*o**2*v**2 - c*d*g*p*k**2 - c*d*h*m*k**2 - c*e*g*o*k**2 - c*e*i*l*k**2 - c*e*q*g**2*y**2 - c*e*q*i**2*w**2 - c*e*q*k**2*v**2 - c*f*p*g**2*y**2 - c*f*p*i**2*w**2 - c*f*p*k**2*v**2 - d*e*h*l*k**2 - d*e*s*g**2*x**2 - d*e*s*h**2*w**2 - d*e*s*l**2*v**2 - d*f*r*g**2*x**2 - d*f*r*h**2*w**2 - d*f*r*l**2*v**2 - g*j*n*c**2*y**2 - g*j*n*d**2*x**2 - g*j*n*o**2*u**2 - g*k*m*c**2*y**2 - g*k*m*d**2*x**2 - g*k*m*o**2*u**2 - g*r*k**2*u**2*x**2 - h*j*q*b**2*y**2 - h*j*q*d**2*w**2 - h*j*q*k**2*u**2 - h*k*p*b**2*y**2 - h*k*p*d**2*w**2 - i*j*s*b**2*x**2 - i*j*s*c**2*w**2 - i*j*s*l**2*u**2 - i*k*r*b**2*x**2 - i*k*r*c**2*w**2 - i*k*r*l**2*u**2 - i*m*k**2*u**2*x**2 - k*m*s*a**2*x**2 - k*m*s*c**2*v**2 - k*m*s*h**2*u**2 - k*n*r*a**2*x**2 - k*n*r*c**2*v**2 - k*n*r*h**2*u**2 - l*m*q*a**2*y**2 - l*m*q*d**2*v**2 - l*m*q*i**2*u**2 - l*n*p*a**2*y**2 - l*n*p*d**2*v**2 - l*n*p*i**2*u**2 - o*p*s*a**2*w**2 - o*p*s*b**2*v**2 - o*p*s*g**2*u**2 - o*q*r*a**2*w**2 - o*q*r*b**2*v**2 - o*q*r*g**2*u**2 - t*a**2*w**2*x**2*y**2 - t*b**2*v**2*x**2*y**2 - t*c**2*v**2*w**2*y**2 - t*d**2*v**2*w**2*x**2 - t*g**2*u**2*x**2*y**2 - t*h**2*u**2*w**2*y**2 - t*i**2*u**2*w**2*x**2 - t*k**2*u**2*v**2*x**2 - t*l**2*u**2*v**2*y**2 - t*o**2*u**2*v**2*w**2 - 2*a*b*g*t*o**2 - 2*a*c*h*t*k**2 - 2*a*d*i*t*l**2 - 2*b*c*l*t*i**2 - 2*b*d*j*k**2*x**2 - 2*b*d*k*t*h**2 - 2*c*d*o*t*g**2 - 2*g*h*l*t*d**2 - 2*g*i*k*t*c**2 - 2*h*i*o*t*b**2 - 2*j*l*o*k**2*u**2 - 2*k*l*o*t*a**2 + 2*a*e*l*o*k**2 + 2*b*c*j*o*k**2 + 2*b*d*h*p*k**2 + 2*c*d*j*l*k**2 + a*b*h*m*q*y**2 + a*b*h*n*p*y**2 + a*b*i*m*s*x**2 + a*b*i*n*r*x**2 + a*b*j*k*s*x**2 + a*b*j*l*q*y**2 + a*b*k*l*p*y**2 + a*c*g*m*q*y**2 + a*c*g*n*p*y**2 + a*c*i*p*s*w**2 + a*c*i*q*r*w**2 + a*c*j*l*n*y**2 + a*c*j*o*s*w**2 + a*c*k*l*m*y**2 + a*c*k*o*r*w**2 + a*d*g*m*s*x**2 + a*d*g*n*r*x**2 + a*d*h*p*s*w**2 + a*d*h*q*r*w**2 + a*d*j*k*n*x**2 + a*d*j*o*q*w**2 + a*d*k*o*p*w**2 + a*e*g*k*s*x**2 + a*e*g*l*q*y**2 + a*e*h*l*n*y**2 + a*e*h*o*s*w**2 + a*e*i*k*n*x**2 + a*e*i*o*q*w**2 + a*e*k*w**2*x**2*y**2 + a*f*g*k*r*x**2 + a*f*g*l*p*y**2 + a*f*h*l*m*y**2 + a*f*h*o*r*w**2 + a*f*i*k*m*x**2 + a*f*i*o*p*w**2 + a*f*j*w**2*x**2*y**2 + b*c*g*j*q*y**2 + b*c*g*k*p*y**2 + b*c*h*j*n*y**2 + b*c*h*k*m*y**2 + b*c*k*p*s*v**2 + b*c*k*q*r*v**2 + b*c*m*o*s*v**2 + b*c*n*o*r*v**2 + b*d*g*j*s*x**2 + b*d*g*k*r*x**2 + b*d*i*j*n*x**2 + b*d*i*k*m*x**2 + b*d*l*p*s*v**2 + b*d*l*q*r*v**2 + b*d*m*o*q*v**2 + b*d*n*o*p*v**2 + b*e*g*h*q*y**2 + b*e*g*i*s*x**2 + b*e*h*k*l*y**2 + b*e*k*o*q*v**2 + b*e*l*o*s*v**2 + b*e*n*v**2*x**2*y**2 + b*f*g*h*p*y**2 + b*f*g*i*r*x**2 + b*f*h*j*l*y**2 + b*f*i*j*k*x**2 + b*f*k*o*p*v**2 + b*f*l*o*r*v**2 + b*f*m*v**2*x**2*y**2 + c*d*h*j*s*w**2 + c*d*h*k*r*w**2 + c*d*i*j*q*w**2 + c*d*i*k*p*w**2 + c*d*k*m*q*v**2 + c*d*k*n*p*v**2 + c*d*l*m*s*v**2 + c*d*l*n*r*v**2 + c*e*g*h*n*y**2 + c*e*g*k*l*y**2 + c*e*h*i*s*w**2 + c*e*i*k*o*w**2 + c*e*k*l*s*v**2 + c*e*k*n*o*v**2 + c*e*q*v**2*w**2*y**2 + c*f*g*h*m*y**2 + c*f*g*j*l*y**2 + c*f*h*i*r*w**2 + c*f*i*j*o*w**2 + c*f*k*l*r*v**2 + c*f*k*m*o*v**2 + c*f*p*v**2*w**2*y**2 + d*e*g*i*n*x**2 + d*e*h*i*q*w**2 + d*e*h*k*o*w**2 + d*e*k*l*q*v**2 + d*e*l*n*o*v**2 + d*e*s*v**2*w**2*x**2 + d*f*g*i*m*x**2 + d*f*g*j*k*x**2 + d*f*h*i*p*w**2 + d*f*h*j*o*w**2 + d*f*k*l*p*v**2 + d*f*l*m*o*v**2 + d*f*r*v**2*w**2*x**2 + g*h*k*p*s*u**2 + g*h*k*q*r*u**2 + g*h*m*o*s*u**2 + g*h*n*o*r*u**2 + g*i*l*p*s*u**2 + g*i*l*q*r*u**2 + g*i*m*o*q*u**2 + g*i*n*o*p*u**2 + g*j*k*o*q*u**2 + g*j*l*o*s*u**2 + g*j*n*u**2*x**2*y**2 + g*k*l*o*r*u**2 + g*k*m*u**2*x**2*y**2 + h*i*k*m*q*u**2 + h*i*k*n*p*u**2 + h*i*l*m*s*u**2 + h*i*l*n*r*u**2 + h*j*k*l*s*u**2 + h*j*k*n*o*u**2 + h*j*q*u**2*w**2*y**2 + h*k*p*u**2*w**2*y**2 + i*j*k*l*q*u**2 + i*j*l*n*o*u**2 + i*j*s*u**2*w**2*x**2 + i*k*l*m*o*u**2 + i*k*r*u**2*w**2*x**2 + k*m*s*u**2*v**2*x**2 + k*n*r*u**2*v**2*x**2 + l*m*q*u**2*v**2*y**2 + l*n*p*u**2*v**2*y**2 + o*p*s*u**2*v**2*w**2 + o*q*r*u**2*v**2*w**2 + t*u**2*v**2*w**2*x**2*y**2 - a*b*j*n*x**2*y**2 - a*b*k*m*x**2*y**2 - a*c*j*q*w**2*y**2 - a*c*k*p*w**2*y**2 - a*d*j*s*w**2*x**2 - a*d*k*r*w**2*x**2 - a*e*g*n*x**2*y**2 - a*e*h*q*w**2*y**2 - a*e*i*s*w**2*x**2 - a*f*g*m*x**2*y**2 - a*f*h*p*w**2*y**2 - a*f*i*r*w**2*x**2 - b*c*m*q*v**2*y**2 - b*c*n*p*v**2*y**2 - b*d*m*s*v**2*x**2 - b*d*n*r*v**2*x**2 - b*e*g*k*x**2*y**2 - b*e*k*s*v**2*x**2 - b*e*l*q*v**2*y**2 - b*f*g*j*x**2*y**2 - b*f*k*r*v**2*x**2 - b*f*l*p*v**2*y**2 - c*d*p*s*v**2*w**2 - c*d*q*r*v**2*w**2 - c*e*h*k*w**2*y**2 - c*e*l*n*v**2*y**2 - c*e*o*s*v**2*w**2 - c*f*h*j*w**2*y**2 - c*f*l*m*v**2*y**2 - c*f*o*r*v**2*w**2 - d*e*i*k*w**2*x**2 - d*e*k*n*v**2*x**2 - d*e*o*q*v**2*w**2 - d*f*i*j*w**2*x**2 - d*f*k*m*v**2*x**2 - d*f*o*p*v**2*w**2 - e*f*v**2*w**2*x**2*y**2 - g*h*m*q*u**2*y**2 - g*h*n*p*u**2*y**2 - g*i*m*s*u**2*x**2 - g*i*n*r*u**2*x**2 - g*j*k*s*u**2*x**2 - g*j*l*q*u**2*y**2 - g*k*l*p*u**2*y**2 - h*i*p*s*u**2*w**2 - h*i*q*r*u**2*w**2 - h*j*l*n*u**2*y**2 - h*j*o*s*u**2*w**2 - h*k*l*m*u**2*y**2 - h*k*o*r*u**2*w**2 - i*j*k*n*u**2*x**2 - i*j*o*q*u**2*w**2 - i*k*o*p*u**2*w**2 - j*k*u**2*w**2*x**2*y**2 - k*l*p*s*u**2*v**2 - k*l*q*r*u**2*v**2 - k*m*o*q*u**2*v**2 - k*n*o*p*u**2*v**2 - l*m*o*s*u**2*v**2 - l*n*o*r*u**2*v**2 - m*n*u**2*v**2*x**2*y**2 - p*q*u**2*v**2*w**2*y**2 - r*s*u**2*v**2*w**2*x**2 - 2*a*b*g*p*q*y**2 - 2*a*b*g*r*s*x**2 - 2*a*b*h*l*t*y**2 - 2*a*b*i*k*t*x**2 - 2*a*c*g*l*t*y**2 - 2*a*c*h*m*n*y**2 - 2*a*c*h*r*s*w**2 - 2*a*c*i*o*t*w**2 - 2*a*d*g*k*t*x**2 - 2*a*d*h*o*t*w**2 - 2*a*d*i*m*n*x**2 - 2*a*d*i*p*q*w**2 - 2*b*c*g*h*t*y**2 - 2*b*c*j*k*l*y**2 - 2*b*c*k*o*t*v**2 - 2*b*c*l*r*s*v**2 - 2*b*d*g*i*t*x**2 - 2*b*d*k*p*q*v**2 - 2*b*d*l*o*t*v**2 - 2*c*d*h*i*t*w**2 - 2*c*d*j*k*o*w**2 - 2*c*d*k*l*t*v**2 - 2*c*d*m*n*o*v**2 - 2*e*f*g*h*l*y**2 - 2*e*f*g*i*k*x**2 - 2*e*f*h*i*o*w**2 - 2*e*f*k*l*o*v**2 - 2*g*h*k*o*t*u**2 - 2*g*h*l*r*s*u**2 - 2*g*i*k*p*q*u**2 - 2*g*i*l*o*t*u**2 - 2*h*i*k*l*t*u**2 - 2*h*i*m*n*o*u**2 + 2*a*b*g*t*x**2*y**2 + 2*a*c*h*t*w**2*y**2 + 2*a*d*i*t*w**2*x**2 + 2*b*c*l*t*v**2*y**2 + 2*b*d*k*t*v**2*x**2 + 2*c*d*o*t*v**2*w**2 + 2*g*h*l*t*u**2*y**2 + 2*g*i*k*t*u**2*x**2 + 2*h*i*o*t*u**2*w**2 + 2*k*l*o*t*u**2*v**2 - j*c**2*k**3 + a*c*p*k**3 + c*e*h*k**3, domain = 'QQ')
thing = first * second - third.sqr()