Hi everyone,

I am starting to use both the new polynomials and the new assumptions, and
both are coming along great. They are (almost) allowing me to do a paper
that isn't possible with 0.6.7. The "almost" is because while the
calculations seem to work, I am running into hardware limitations.

Let me try to outline my situation. I have a recursive calculation that
manipulates polynomials in a loop. I would like to get 10 or more
recursions, but at the moment I can only get to 6 or 7. The second to last
thing that each loop does before it starts over is

quo(first * second - third**2, fourth)

where first, second, third, and fourth are multivariate polynomials, each of
which is the sum of a bunch of symbolic terms (but the degrees are small).

This is taking about 5 gigs of RAM for the last successful recursion, and I
was hoping something can be done about that so that I can get a bit farther.
I think the polynomial division may not be the problem per se, but expanding

first * second - third**2

in order to divide it by fourth is memory intensive on its own if I first do
something like

numer = expand(first * second - third**2)

I am attaching a small file that has the actual polynomials involved for the
next recursion after the last successful one. The polynomials are big so
this is going to take a while to manipulate them (particularly third**2) but
they can be written on disk to a 27K attachment, so I was hoping that it
does not really require more than 5 GB of RAM to manipulate them in sympy.

The other thing that might be related is that I have stack overflowed twice
and then had to do something like

sys.setrecursionlimit(10000)

to continue. When it overflows the stack, the error message suggests that it
goes deep into the assumptions stuff, i.e. there are a lot of messages like
this

INFO:stderr:  File "./sympy/core/add.py", line 274, in _eval_is_negative

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 279, in
_what_known_about

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 279, in
_what_known_about

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 279, in
_what_known_about

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 279, in
_what_known_about

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 256, in
_what_known_about

INFO:stderr:  File "./sympy/core/mul.py", line 800, in _eval_is_even

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 279, in
_what_known_about

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 279, in
_what_known_about

INFO:stderr:  File "./sympy/core/assumptions.py", line 366, in getit

INFO:stderr:  File "./sympy/core/assumptions.py", line 282, in
_what_known_about

INFO:stderr:  File "./sympy/core/assumptions.py", line 340, in
_learn_new_facts

INFO:stderr:  File "./sympy/core/facts.py", line 870, in deduce_all_facts

INFO:stderr:RuntimeError
INFO:stderr::
INFO:stderr:maximum recursion depth exceeded in cmp
INFO:stderr:

with similar things repeated over and over (the stderr log is 75K). The only
places where I know that I utilize assumptions is that I create some of the
symbolic variables with positive=True and I also utilize this little
function several times at the top of the loop

def pos_sqrt(x):
    return refine(sqrt(x), Assume(x, Q.positive))

Maybe the assumptions processing is what is eating up the hardware resources
and it doesn't have much left for expanding and dividing the polynomial at
the bottom of the loop? Or it isn't garbage collecting properly? I don't
know that much about memory allocation in python and haven't looked at how
sympy does things. Hopefully someone else can shed some light on this off
the top of their head!

Thanks again,
Ben

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sy...@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
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,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D = symbols('abcdefghijklmnopqrstuvwxyzABCD', positive=True)


numer = (-2*a*b*h*m*q*s - 2*a*b*h*n*p*s - 2*a*b*i*l*q*s - 2*a*b*i*n*p*q - 2*a*b*j*l*p*s - 2*a*b*j*m*p*q - 2*a*c*g*m*q*s - 2*a*c*g*n*p*s - 2*a*c*i*l*n*s - 2*a*c*i*m*n*q - 2*a*c*j*l*m*s - 2*a*c*j*m*n*p - 2*a*d*g*l*q*s - 2*a*d*g*n*p*q - 2*a*d*h*l*n*s - 2*a*d*h*m*n*q - 2*a*d*j*l*m*q - 2*a*d*j*l*n*p - 2*a*e*g*l*p*s - 2*a*e*g*m*p*q - 2*a*e*h*l*m*s - 2*a*e*h*m*n*p - 2*a*e*i*l*m*q - 2*a*e*i*l*n*p - 2*b*c*g*i*q*s - 2*b*c*g*j*p*s - 2*b*c*h*i*n*s - 2*b*c*h*j*m*s - 2*b*c*i*j*m*q - 2*b*c*i*j*n*p - 2*b*d*g*h*q*s - 2*b*d*g*j*p*q - 2*b*d*h*i*n*q - 2*b*d*h*j*l*s - 2*b*d*h*j*n*p - 2*b*d*i*j*l*q - 2*b*e*g*h*p*s - 2*b*e*g*i*p*q - 2*b*e*h*i*l*s - 2*b*e*h*i*m*q - 2*b*e*h*j*m*p - 2*b*e*i*j*l*p - 2*c*d*g*h*n*s - 2*c*d*g*i*n*q - 2*c*d*g*j*l*s - 2*c*d*g*j*m*q - 2*c*d*h*j*m*n - 2*c*d*i*j*l*n - 2*c*e*g*h*m*s - 2*c*e*g*i*l*s - 2*c*e*g*i*n*p - 2*c*e*g*j*m*p - 2*c*e*h*i*m*n - 2*c*e*i*j*l*m - 2*d*e*g*h*m*q - 2*d*e*g*h*n*p - 2*d*e*g*i*l*q - 2*d*e*g*j*l*p - 2*d*e*h*i*l*n - 2*d*e*h*j*l*m + 4*a*b*g*p*q*s + 4*a*c*h*m*n*s + 4*a*d*i*l*n*q + 4*a*e*j*l*m*p + 4*b*c*i*j*l*s + 4*b*d*h*j*m*q + 4*b*e*h*i*n*p + 4*c*d*g*j*n*p + 4*c*e*g*i*m*q + 4*d*e*g*h*l*s - a**2*l**2*s**2 - a**2*m**2*q**2 - a**2*n**2*p**2 - b**2*h**2*s**2 - b**2*i**2*q**2 - b**2*j**2*p**2 - c**2*g**2*s**2 - c**2*i**2*n**2 - c**2*j**2*m**2 - d**2*g**2*q**2 - d**2*h**2*n**2 - d**2*j**2*l**2 - e**2*g**2*p**2 - e**2*h**2*m**2 - e**2*i**2*l**2 + A**2*a**2*l**2*z**2 + A**2*a**2*m**2*y**2 + A**2*a**2*p**2*x**2 + A**2*b**2*h**2*z**2 + A**2*b**2*i**2*y**2 + A**2*b**2*p**2*w**2 + A**2*c**2*g**2*z**2 + A**2*c**2*i**2*x**2 + A**2*c**2*m**2*w**2 + A**2*d**2*g**2*y**2 + A**2*d**2*h**2*x**2 + A**2*d**2*l**2*w**2 + A**2*g**2*p**2*v**2 + A**2*h**2*m**2*v**2 + A**2*i**2*l**2*v**2 + a**2*n**2*y**2*z**2 + a**2*q**2*x**2*z**2 + a**2*s**2*x**2*y**2 + b**2*j**2*y**2*z**2 + b**2*q**2*w**2*z**2 + b**2*s**2*w**2*y**2 + c**2*j**2*x**2*z**2 + c**2*n**2*w**2*z**2 + c**2*s**2*w**2*x**2 + d**2*j**2*x**2*y**2 + d**2*n**2*w**2*y**2 + d**2*q**2*w**2*x**2 + e**2*g**2*y**2*z**2 + e**2*h**2*x**2*z**2 + e**2*i**2*x**2*y**2 + e**2*l**2*w**2*z**2 + e**2*m**2*w**2*y**2 + e**2*p**2*w**2*x**2 + g**2*q**2*v**2*z**2 + g**2*s**2*v**2*y**2 + h**2*n**2*v**2*z**2 + h**2*s**2*v**2*x**2 + i**2*n**2*v**2*y**2 + i**2*q**2*v**2*x**2 + j**2*l**2*v**2*z**2 + j**2*m**2*v**2*y**2 + j**2*p**2*v**2*x**2 + l**2*s**2*v**2*w**2 + m**2*q**2*v**2*w**2 + n**2*p**2*v**2*w**2 - A**2*a**2*x**2*y**2*z**2 - A**2*b**2*w**2*y**2*z**2 - A**2*c**2*w**2*x**2*z**2 - A**2*d**2*w**2*x**2*y**2 - A**2*g**2*v**2*y**2*z**2 - A**2*h**2*v**2*x**2*z**2 - A**2*i**2*v**2*x**2*y**2 - A**2*l**2*v**2*w**2*z**2 - A**2*m**2*v**2*w**2*y**2 - A**2*p**2*v**2*w**2*x**2 - e**2*w**2*x**2*y**2*z**2 - j**2*v**2*x**2*y**2*z**2 - n**2*v**2*w**2*y**2*z**2 - q**2*v**2*w**2*x**2*z**2 - s**2*v**2*w**2*x**2*y**2 - 2*a*b*g*A**2*p**2 - 2*a*b*g*q**2*z**2 - 2*a*b*g*s**2*y**2 - 2*a*c*h*A**2*m**2 - 2*a*c*h*n**2*z**2 - 2*a*c*h*s**2*x**2 - 2*a*d*i*A**2*l**2 - 2*a*d*i*n**2*y**2 - 2*a*d*i*q**2*x**2 - 2*a*e*j*l**2*z**2 - 2*a*e*j*m**2*y**2 - 2*a*e*j*p**2*x**2 - 2*b*c*l*A**2*i**2 - 2*b*c*l*j**2*z**2 - 2*b*c*l*s**2*w**2 - 2*b*d*m*A**2*h**2 - 2*b*d*m*j**2*y**2 - 2*b*d*m*q**2*w**2 - 2*b*e*n*h**2*z**2 - 2*b*e*n*i**2*y**2 - 2*b*e*n*p**2*w**2 - 2*c*d*p*A**2*g**2 - 2*c*d*p*j**2*x**2 - 2*c*d*p*n**2*w**2 - 2*c*e*q*g**2*z**2 - 2*c*e*q*i**2*x**2 - 2*c*e*q*m**2*w**2 - 2*d*e*s*g**2*y**2 - 2*d*e*s*h**2*x**2 - 2*d*e*s*l**2*w**2 - 2*g*h*l*A**2*d**2 - 2*g*h*l*e**2*z**2 - 2*g*h*l*s**2*v**2 - 2*g*i*m*A**2*c**2 - 2*g*i*m*e**2*y**2 - 2*g*i*m*q**2*v**2 - 2*g*j*n*c**2*z**2 - 2*g*j*n*d**2*y**2 - 2*g*j*n*p**2*v**2 - 2*h*i*p*A**2*b**2 - 2*h*i*p*e**2*x**2 - 2*h*i*p*n**2*v**2 - 2*h*j*q*b**2*z**2 - 2*h*j*q*d**2*x**2 - 2*h*j*q*m**2*v**2 - 2*i*j*s*b**2*y**2 - 2*i*j*s*c**2*x**2 - 2*i*j*s*l**2*v**2 - 2*l*m*p*A**2*a**2 - 2*l*m*p*e**2*w**2 - 2*l*m*p*j**2*v**2 - 2*l*n*q*a**2*z**2 - 2*l*n*q*d**2*w**2 - 2*l*n*q*i**2*v**2 - 2*m*n*s*a**2*y**2 - 2*m*n*s*c**2*w**2 - 2*m*n*s*h**2*v**2 - 2*p*q*s*a**2*x**2 - 2*p*q*s*b**2*w**2 - 2*p*q*s*g**2*v**2 + 2*a*b*h*l*s**2 + 2*a*b*i*m*q**2 + 2*a*b*j*n*p**2 + 2*a*c*g*l*s**2 + 2*a*c*i*p*n**2 + 2*a*c*j*q*m**2 + 2*a*d*g*m*q**2 + 2*a*d*h*p*n**2 + 2*a*d*j*s*l**2 + 2*a*e*g*n*p**2 + 2*a*e*h*q*m**2 + 2*a*e*i*s*l**2 + 2*b*c*g*h*s**2 + 2*b*c*m*p*j**2 + 2*b*c*n*q*i**2 + 2*b*d*g*i*q**2 + 2*b*d*l*p*j**2 + 2*b*d*n*s*h**2 + 2*b*e*g*j*p**2 + 2*b*e*l*q*i**2 + 2*b*e*m*s*h**2 + 2*c*d*h*i*n**2 + 2*c*d*l*m*j**2 + 2*c*d*q*s*g**2 + 2*c*e*h*j*m**2 + 2*c*e*l*n*i**2 + 2*c*e*p*s*g**2 + 2*d*e*i*j*l**2 + 2*d*e*m*n*h**2 + 2*d*e*p*q*g**2 + 2*g*h*m*p*e**2 + 2*g*h*n*q*d**2 + 2*g*i*l*p*e**2 + 2*g*i*n*s*c**2 + 2*g*j*l*q*d**2 + 2*g*j*m*s*c**2 + 2*h*i*l*m*e**2 + 2*h*i*q*s*b**2 + 2*h*j*l*n*d**2 + 2*h*j*p*s*b**2 + 2*i*j*m*n*c**2 + 2*i*j*p*q*b**2 + 2*l*m*q*s*a**2 + 2*l*n*p*s*a**2 + 2*m*n*p*q*a**2 + A**2*v**2*w**2*x**2*y**2*z**2 - 2*a*b*h*l*A**2*z**2 - 2*a*b*i*m*A**2*y**2 - 2*a*b*j*n*y**2*z**2 - 2*a*c*g*l*A**2*z**2 - 2*a*c*i*p*A**2*x**2 - 2*a*c*j*q*x**2*z**2 - 2*a*d*g*m*A**2*y**2 - 2*a*d*h*p*A**2*x**2 - 2*a*d*j*s*x**2*y**2 - 2*a*e*g*n*y**2*z**2 - 2*a*e*h*q*x**2*z**2 - 2*a*e*i*s*x**2*y**2 - 2*b*c*g*h*A**2*z**2 - 2*b*c*m*p*A**2*w**2 - 2*b*c*n*q*w**2*z**2 - 2*b*d*g*i*A**2*y**2 - 2*b*d*l*p*A**2*w**2 - 2*b*d*n*s*w**2*y**2 - 2*b*e*g*j*y**2*z**2 - 2*b*e*l*q*w**2*z**2 - 2*b*e*m*s*w**2*y**2 - 2*c*d*h*i*A**2*x**2 - 2*c*d*l*m*A**2*w**2 - 2*c*d*q*s*w**2*x**2 - 2*c*e*h*j*x**2*z**2 - 2*c*e*l*n*w**2*z**2 - 2*c*e*p*s*w**2*x**2 - 2*d*e*i*j*x**2*y**2 - 2*d*e*m*n*w**2*y**2 - 2*d*e*p*q*w**2*x**2 - 2*g*h*m*p*A**2*v**2 - 2*g*h*n*q*v**2*z**2 - 2*g*i*l*p*A**2*v**2 - 2*g*i*n*s*v**2*y**2 - 2*g*j*l*q*v**2*z**2 - 2*g*j*m*s*v**2*y**2 - 2*h*i*l*m*A**2*v**2 - 2*h*i*q*s*v**2*x**2 - 2*h*j*l*n*v**2*z**2 - 2*h*j*p*s*v**2*x**2 - 2*i*j*m*n*v**2*y**2 - 2*i*j*p*q*v**2*x**2 - 2*l*m*q*s*v**2*w**2 - 2*l*n*p*s*v**2*w**2 - 2*m*n*p*q*v**2*w**2 + 2*a*b*g*A**2*y**2*z**2 + 2*a*b*h*m*p*A**2 + 2*a*b*h*n*q*z**2 + 2*a*b*i*l*p*A**2 + 2*a*b*i*n*s*y**2 + 2*a*b*j*l*q*z**2 + 2*a*b*j*m*s*y**2 + 2*a*c*g*m*p*A**2 + 2*a*c*g*n*q*z**2 + 2*a*c*h*A**2*x**2*z**2 + 2*a*c*i*l*m*A**2 + 2*a*c*i*q*s*x**2 + 2*a*c*j*l*n*z**2 + 2*a*c*j*p*s*x**2 + 2*a*d*g*l*p*A**2 + 2*a*d*g*n*s*y**2 + 2*a*d*h*l*m*A**2 + 2*a*d*h*q*s*x**2 + 2*a*d*i*A**2*x**2*y**2 + 2*a*d*j*m*n*y**2 + 2*a*d*j*p*q*x**2 + 2*a*e*g*l*q*z**2 + 2*a*e*g*m*s*y**2 + 2*a*e*h*l*n*z**2 + 2*a*e*h*p*s*x**2 + 2*a*e*i*m*n*y**2 + 2*a*e*i*p*q*x**2 + 2*a*e*j*x**2*y**2*z**2 + 2*b*c*g*i*p*A**2 + 2*b*c*g*j*q*z**2 + 2*b*c*h*i*m*A**2 + 2*b*c*h*j*n*z**2 + 2*b*c*l*A**2*w**2*z**2 + 2*b*c*m*q*s*w**2 + 2*b*c*n*p*s*w**2 + 2*b*d*g*h*p*A**2 + 2*b*d*g*j*s*y**2 + 2*b*d*h*i*l*A**2 + 2*b*d*i*j*n*y**2 + 2*b*d*l*q*s*w**2 + 2*b*d*m*A**2*w**2*y**2 + 2*b*d*n*p*q*w**2 + 2*b*e*g*h*q*z**2 + 2*b*e*g*i*s*y**2 + 2*b*e*h*j*l*z**2 + 2*b*e*i*j*m*y**2 + 2*b*e*l*p*s*w**2 + 2*b*e*m*p*q*w**2 + 2*b*e*n*w**2*y**2*z**2 + 2*c*d*g*h*m*A**2 + 2*c*d*g*i*l*A**2 + 2*c*d*h*j*s*x**2 + 2*c*d*i*j*q*x**2 + 2*c*d*l*n*s*w**2 + 2*c*d*m*n*q*w**2 + 2*c*d*p*A**2*w**2*x**2 + 2*c*e*g*h*n*z**2 + 2*c*e*g*j*l*z**2 + 2*c*e*h*i*s*x**2 + 2*c*e*i*j*p*x**2 + 2*c*e*l*m*s*w**2 + 2*c*e*m*n*p*w**2 + 2*c*e*q*w**2*x**2*z**2 + 2*d*e*g*i*n*y**2 + 2*d*e*g*j*m*y**2 + 2*d*e*h*i*q*x**2 + 2*d*e*h*j*p*x**2 + 2*d*e*l*m*q*w**2 + 2*d*e*l*n*p*w**2 + 2*d*e*s*w**2*x**2*y**2 + 2*g*h*l*A**2*v**2*z**2 + 2*g*h*m*q*s*v**2 + 2*g*h*n*p*s*v**2 + 2*g*i*l*q*s*v**2 + 2*g*i*m*A**2*v**2*y**2 + 2*g*i*n*p*q*v**2 + 2*g*j*l*p*s*v**2 + 2*g*j*m*p*q*v**2 + 2*g*j*n*v**2*y**2*z**2 + 2*h*i*l*n*s*v**2 + 2*h*i*m*n*q*v**2 + 2*h*i*p*A**2*v**2*x**2 + 2*h*j*l*m*s*v**2 + 2*h*j*m*n*p*v**2 + 2*h*j*q*v**2*x**2*z**2 + 2*i*j*l*m*q*v**2 + 2*i*j*l*n*p*v**2 + 2*i*j*s*v**2*x**2*y**2 + 2*l*m*p*A**2*v**2*w**2 + 2*l*n*q*v**2*w**2*z**2 + 2*m*n*s*v**2*w**2*y**2 + 2*p*q*s*v**2*w**2*x**2)*(-2*a*b*h*m*r*t - 2*a*b*h*o*p*t - 2*a*b*i*l*r*t - 2*a*b*i*o*p*r - 2*a*b*k*l*p*t - 2*a*b*k*m*p*r - 2*a*c*g*m*r*t - 2*a*c*g*o*p*t - 2*a*c*i*l*o*t - 2*a*c*i*m*o*r - 2*a*c*k*l*m*t - 2*a*c*k*m*o*p - 2*a*d*g*l*r*t - 2*a*d*g*o*p*r - 2*a*d*h*l*o*t - 2*a*d*h*m*o*r - 2*a*d*k*l*m*r - 2*a*d*k*l*o*p - 2*a*f*g*l*p*t - 2*a*f*g*m*p*r - 2*a*f*h*l*m*t - 2*a*f*h*m*o*p - 2*a*f*i*l*m*r - 2*a*f*i*l*o*p - 2*b*c*g*i*r*t - 2*b*c*g*k*p*t - 2*b*c*h*i*o*t - 2*b*c*h*k*m*t - 2*b*c*i*k*m*r - 2*b*c*i*k*o*p - 2*b*d*g*h*r*t - 2*b*d*g*k*p*r - 2*b*d*h*i*o*r - 2*b*d*h*k*l*t - 2*b*d*h*k*o*p - 2*b*d*i*k*l*r - 2*b*f*g*h*p*t - 2*b*f*g*i*p*r - 2*b*f*h*i*l*t - 2*b*f*h*i*m*r - 2*b*f*h*k*m*p - 2*b*f*i*k*l*p - 2*c*d*g*h*o*t - 2*c*d*g*i*o*r - 2*c*d*g*k*l*t - 2*c*d*g*k*m*r - 2*c*d*h*k*m*o - 2*c*d*i*k*l*o - 2*c*f*g*h*m*t - 2*c*f*g*i*l*t - 2*c*f*g*i*o*p - 2*c*f*g*k*m*p - 2*c*f*h*i*m*o - 2*c*f*i*k*l*m - 2*d*f*g*h*m*r - 2*d*f*g*h*o*p - 2*d*f*g*i*l*r - 2*d*f*g*k*l*p - 2*d*f*h*i*l*o - 2*d*f*h*k*l*m + 4*a*b*g*p*r*t + 4*a*c*h*m*o*t + 4*a*d*i*l*o*r + 4*a*f*k*l*m*p + 4*b*c*i*k*l*t + 4*b*d*h*k*m*r + 4*b*f*h*i*o*p + 4*c*d*g*k*o*p + 4*c*f*g*i*m*r + 4*d*f*g*h*l*t - a**2*l**2*t**2 - a**2*m**2*r**2 - a**2*o**2*p**2 - b**2*h**2*t**2 - b**2*i**2*r**2 - b**2*k**2*p**2 - c**2*g**2*t**2 - c**2*i**2*o**2 - c**2*k**2*m**2 - d**2*g**2*r**2 - d**2*h**2*o**2 - d**2*k**2*l**2 - f**2*g**2*p**2 - f**2*h**2*m**2 - f**2*i**2*l**2 + B**2*a**2*l**2*z**2 + B**2*a**2*m**2*y**2 + B**2*a**2*p**2*x**2 + B**2*b**2*h**2*z**2 + B**2*b**2*i**2*y**2 + B**2*b**2*p**2*w**2 + B**2*c**2*g**2*z**2 + B**2*c**2*i**2*x**2 + B**2*c**2*m**2*w**2 + B**2*d**2*g**2*y**2 + B**2*d**2*h**2*x**2 + B**2*d**2*l**2*w**2 + B**2*g**2*p**2*v**2 + B**2*h**2*m**2*v**2 + B**2*i**2*l**2*v**2 + a**2*o**2*y**2*z**2 + a**2*r**2*x**2*z**2 + a**2*t**2*x**2*y**2 + b**2*k**2*y**2*z**2 + b**2*r**2*w**2*z**2 + b**2*t**2*w**2*y**2 + c**2*k**2*x**2*z**2 + c**2*o**2*w**2*z**2 + c**2*t**2*w**2*x**2 + d**2*k**2*x**2*y**2 + d**2*o**2*w**2*y**2 + d**2*r**2*w**2*x**2 + f**2*g**2*y**2*z**2 + f**2*h**2*x**2*z**2 + f**2*i**2*x**2*y**2 + f**2*l**2*w**2*z**2 + f**2*m**2*w**2*y**2 + f**2*p**2*w**2*x**2 + g**2*r**2*v**2*z**2 + g**2*t**2*v**2*y**2 + h**2*o**2*v**2*z**2 + h**2*t**2*v**2*x**2 + i**2*o**2*v**2*y**2 + i**2*r**2*v**2*x**2 + k**2*l**2*v**2*z**2 + k**2*m**2*v**2*y**2 + k**2*p**2*v**2*x**2 + l**2*t**2*v**2*w**2 + m**2*r**2*v**2*w**2 + o**2*p**2*v**2*w**2 - B**2*a**2*x**2*y**2*z**2 - B**2*b**2*w**2*y**2*z**2 - B**2*c**2*w**2*x**2*z**2 - B**2*d**2*w**2*x**2*y**2 - B**2*g**2*v**2*y**2*z**2 - B**2*h**2*v**2*x**2*z**2 - B**2*i**2*v**2*x**2*y**2 - B**2*l**2*v**2*w**2*z**2 - B**2*m**2*v**2*w**2*y**2 - B**2*p**2*v**2*w**2*x**2 - f**2*w**2*x**2*y**2*z**2 - k**2*v**2*x**2*y**2*z**2 - o**2*v**2*w**2*y**2*z**2 - r**2*v**2*w**2*x**2*z**2 - t**2*v**2*w**2*x**2*y**2 - 2*a*b*g*B**2*p**2 - 2*a*b*g*r**2*z**2 - 2*a*b*g*t**2*y**2 - 2*a*c*h*B**2*m**2 - 2*a*c*h*o**2*z**2 - 2*a*c*h*t**2*x**2 - 2*a*d*i*B**2*l**2 - 2*a*d*i*o**2*y**2 - 2*a*d*i*r**2*x**2 - 2*a*f*k*l**2*z**2 - 2*a*f*k*m**2*y**2 - 2*a*f*k*p**2*x**2 - 2*b*c*l*B**2*i**2 - 2*b*c*l*k**2*z**2 - 2*b*c*l*t**2*w**2 - 2*b*d*m*B**2*h**2 - 2*b*d*m*k**2*y**2 - 2*b*d*m*r**2*w**2 - 2*b*f*o*h**2*z**2 - 2*b*f*o*i**2*y**2 - 2*b*f*o*p**2*w**2 - 2*c*d*p*B**2*g**2 - 2*c*d*p*k**2*x**2 - 2*c*d*p*o**2*w**2 - 2*c*f*r*g**2*z**2 - 2*c*f*r*i**2*x**2 - 2*c*f*r*m**2*w**2 - 2*d*f*t*g**2*y**2 - 2*d*f*t*h**2*x**2 - 2*d*f*t*l**2*w**2 - 2*g*h*l*B**2*d**2 - 2*g*h*l*f**2*z**2 - 2*g*h*l*t**2*v**2 - 2*g*i*m*B**2*c**2 - 2*g*i*m*f**2*y**2 - 2*g*i*m*r**2*v**2 - 2*g*k*o*c**2*z**2 - 2*g*k*o*d**2*y**2 - 2*g*k*o*p**2*v**2 - 2*h*i*p*B**2*b**2 - 2*h*i*p*f**2*x**2 - 2*h*i*p*o**2*v**2 - 2*h*k*r*b**2*z**2 - 2*h*k*r*d**2*x**2 - 2*h*k*r*m**2*v**2 - 2*i*k*t*b**2*y**2 - 2*i*k*t*c**2*x**2 - 2*i*k*t*l**2*v**2 - 2*l*m*p*B**2*a**2 - 2*l*m*p*f**2*w**2 - 2*l*m*p*k**2*v**2 - 2*l*o*r*a**2*z**2 - 2*l*o*r*d**2*w**2 - 2*l*o*r*i**2*v**2 - 2*m*o*t*a**2*y**2 - 2*m*o*t*c**2*w**2 - 2*m*o*t*h**2*v**2 - 2*p*r*t*a**2*x**2 - 2*p*r*t*b**2*w**2 - 2*p*r*t*g**2*v**2 + 2*a*b*h*l*t**2 + 2*a*b*i*m*r**2 + 2*a*b*k*o*p**2 + 2*a*c*g*l*t**2 + 2*a*c*i*p*o**2 + 2*a*c*k*r*m**2 + 2*a*d*g*m*r**2 + 2*a*d*h*p*o**2 + 2*a*d*k*t*l**2 + 2*a*f*g*o*p**2 + 2*a*f*h*r*m**2 + 2*a*f*i*t*l**2 + 2*b*c*g*h*t**2 + 2*b*c*m*p*k**2 + 2*b*c*o*r*i**2 + 2*b*d*g*i*r**2 + 2*b*d*l*p*k**2 + 2*b*d*o*t*h**2 + 2*b*f*g*k*p**2 + 2*b*f*l*r*i**2 + 2*b*f*m*t*h**2 + 2*c*d*h*i*o**2 + 2*c*d*l*m*k**2 + 2*c*d*r*t*g**2 + 2*c*f*h*k*m**2 + 2*c*f*l*o*i**2 + 2*c*f*p*t*g**2 + 2*d*f*i*k*l**2 + 2*d*f*m*o*h**2 + 2*d*f*p*r*g**2 + 2*g*h*m*p*f**2 + 2*g*h*o*r*d**2 + 2*g*i*l*p*f**2 + 2*g*i*o*t*c**2 + 2*g*k*l*r*d**2 + 2*g*k*m*t*c**2 + 2*h*i*l*m*f**2 + 2*h*i*r*t*b**2 + 2*h*k*l*o*d**2 + 2*h*k*p*t*b**2 + 2*i*k*m*o*c**2 + 2*i*k*p*r*b**2 + 2*l*m*r*t*a**2 + 2*l*o*p*t*a**2 + 2*m*o*p*r*a**2 + B**2*v**2*w**2*x**2*y**2*z**2 - 2*a*b*h*l*B**2*z**2 - 2*a*b*i*m*B**2*y**2 - 2*a*b*k*o*y**2*z**2 - 2*a*c*g*l*B**2*z**2 - 2*a*c*i*p*B**2*x**2 - 2*a*c*k*r*x**2*z**2 - 2*a*d*g*m*B**2*y**2 - 2*a*d*h*p*B**2*x**2 - 2*a*d*k*t*x**2*y**2 - 2*a*f*g*o*y**2*z**2 - 2*a*f*h*r*x**2*z**2 - 2*a*f*i*t*x**2*y**2 - 2*b*c*g*h*B**2*z**2 - 2*b*c*m*p*B**2*w**2 - 2*b*c*o*r*w**2*z**2 - 2*b*d*g*i*B**2*y**2 - 2*b*d*l*p*B**2*w**2 - 2*b*d*o*t*w**2*y**2 - 2*b*f*g*k*y**2*z**2 - 2*b*f*l*r*w**2*z**2 - 2*b*f*m*t*w**2*y**2 - 2*c*d*h*i*B**2*x**2 - 2*c*d*l*m*B**2*w**2 - 2*c*d*r*t*w**2*x**2 - 2*c*f*h*k*x**2*z**2 - 2*c*f*l*o*w**2*z**2 - 2*c*f*p*t*w**2*x**2 - 2*d*f*i*k*x**2*y**2 - 2*d*f*m*o*w**2*y**2 - 2*d*f*p*r*w**2*x**2 - 2*g*h*m*p*B**2*v**2 - 2*g*h*o*r*v**2*z**2 - 2*g*i*l*p*B**2*v**2 - 2*g*i*o*t*v**2*y**2 - 2*g*k*l*r*v**2*z**2 - 2*g*k*m*t*v**2*y**2 - 2*h*i*l*m*B**2*v**2 - 2*h*i*r*t*v**2*x**2 - 2*h*k*l*o*v**2*z**2 - 2*h*k*p*t*v**2*x**2 - 2*i*k*m*o*v**2*y**2 - 2*i*k*p*r*v**2*x**2 - 2*l*m*r*t*v**2*w**2 - 2*l*o*p*t*v**2*w**2 - 2*m*o*p*r*v**2*w**2 + 2*a*b*g*B**2*y**2*z**2 + 2*a*b*h*m*p*B**2 + 2*a*b*h*o*r*z**2 + 2*a*b*i*l*p*B**2 + 2*a*b*i*o*t*y**2 + 2*a*b*k*l*r*z**2 + 2*a*b*k*m*t*y**2 + 2*a*c*g*m*p*B**2 + 2*a*c*g*o*r*z**2 + 2*a*c*h*B**2*x**2*z**2 + 2*a*c*i*l*m*B**2 + 2*a*c*i*r*t*x**2 + 2*a*c*k*l*o*z**2 + 2*a*c*k*p*t*x**2 + 2*a*d*g*l*p*B**2 + 2*a*d*g*o*t*y**2 + 2*a*d*h*l*m*B**2 + 2*a*d*h*r*t*x**2 + 2*a*d*i*B**2*x**2*y**2 + 2*a*d*k*m*o*y**2 + 2*a*d*k*p*r*x**2 + 2*a*f*g*l*r*z**2 + 2*a*f*g*m*t*y**2 + 2*a*f*h*l*o*z**2 + 2*a*f*h*p*t*x**2 + 2*a*f*i*m*o*y**2 + 2*a*f*i*p*r*x**2 + 2*a*f*k*x**2*y**2*z**2 + 2*b*c*g*i*p*B**2 + 2*b*c*g*k*r*z**2 + 2*b*c*h*i*m*B**2 + 2*b*c*h*k*o*z**2 + 2*b*c*l*B**2*w**2*z**2 + 2*b*c*m*r*t*w**2 + 2*b*c*o*p*t*w**2 + 2*b*d*g*h*p*B**2 + 2*b*d*g*k*t*y**2 + 2*b*d*h*i*l*B**2 + 2*b*d*i*k*o*y**2 + 2*b*d*l*r*t*w**2 + 2*b*d*m*B**2*w**2*y**2 + 2*b*d*o*p*r*w**2 + 2*b*f*g*h*r*z**2 + 2*b*f*g*i*t*y**2 + 2*b*f*h*k*l*z**2 + 2*b*f*i*k*m*y**2 + 2*b*f*l*p*t*w**2 + 2*b*f*m*p*r*w**2 + 2*b*f*o*w**2*y**2*z**2 + 2*c*d*g*h*m*B**2 + 2*c*d*g*i*l*B**2 + 2*c*d*h*k*t*x**2 + 2*c*d*i*k*r*x**2 + 2*c*d*l*o*t*w**2 + 2*c*d*m*o*r*w**2 + 2*c*d*p*B**2*w**2*x**2 + 2*c*f*g*h*o*z**2 + 2*c*f*g*k*l*z**2 + 2*c*f*h*i*t*x**2 + 2*c*f*i*k*p*x**2 + 2*c*f*l*m*t*w**2 + 2*c*f*m*o*p*w**2 + 2*c*f*r*w**2*x**2*z**2 + 2*d*f*g*i*o*y**2 + 2*d*f*g*k*m*y**2 + 2*d*f*h*i*r*x**2 + 2*d*f*h*k*p*x**2 + 2*d*f*l*m*r*w**2 + 2*d*f*l*o*p*w**2 + 2*d*f*t*w**2*x**2*y**2 + 2*g*h*l*B**2*v**2*z**2 + 2*g*h*m*r*t*v**2 + 2*g*h*o*p*t*v**2 + 2*g*i*l*r*t*v**2 + 2*g*i*m*B**2*v**2*y**2 + 2*g*i*o*p*r*v**2 + 2*g*k*l*p*t*v**2 + 2*g*k*m*p*r*v**2 + 2*g*k*o*v**2*y**2*z**2 + 2*h*i*l*o*t*v**2 + 2*h*i*m*o*r*v**2 + 2*h*i*p*B**2*v**2*x**2 + 2*h*k*l*m*t*v**2 + 2*h*k*m*o*p*v**2 + 2*h*k*r*v**2*x**2*z**2 + 2*i*k*l*m*r*v**2 + 2*i*k*l*o*p*v**2 + 2*i*k*t*v**2*x**2*y**2 + 2*l*m*p*B**2*v**2*w**2 + 2*l*o*r*v**2*w**2*z**2 + 2*m*o*t*v**2*w**2*y**2 + 2*p*r*t*v**2*w**2*x**2) - (-a*b*h*m*q*t - a*b*h*m*r*s - a*b*h*n*p*t - a*b*h*o*p*s - a*b*i*l*q*t - a*b*i*l*r*s - a*b*i*n*p*r - a*b*i*o*p*q - a*b*j*l*p*t - a*b*j*m*p*r - a*b*k*l*p*s - a*b*k*m*p*q - a*c*g*m*q*t - a*c*g*m*r*s - a*c*g*n*p*t - a*c*g*o*p*s - a*c*i*l*n*t - a*c*i*l*o*s - a*c*i*m*n*r - a*c*i*m*o*q - a*c*j*l*m*t - a*c*j*m*o*p - a*c*k*l*m*s - a*c*k*m*n*p - a*d*g*l*q*t - a*d*g*l*r*s - a*d*g*n*p*r - a*d*g*o*p*q - a*d*h*l*n*t - a*d*h*l*o*s - a*d*h*m*n*r - a*d*h*m*o*q - a*d*j*l*m*r - a*d*j*l*o*p - a*d*k*l*m*q - a*d*k*l*n*p - a*e*g*l*p*t - a*e*g*m*p*r - a*e*h*l*m*t - a*e*h*m*o*p - a*e*i*l*m*r - a*e*i*l*o*p - a*f*g*l*p*s - a*f*g*m*p*q - a*f*h*l*m*s - a*f*h*m*n*p - a*f*i*l*m*q - a*f*i*l*n*p - b*c*g*i*q*t - b*c*g*i*r*s - b*c*g*j*p*t - b*c*g*k*p*s - b*c*h*i*n*t - b*c*h*i*o*s - b*c*h*j*m*t - b*c*h*k*m*s - b*c*i*j*m*r - b*c*i*j*o*p - b*c*i*k*m*q - b*c*i*k*n*p - b*d*g*h*q*t - b*d*g*h*r*s - b*d*g*j*p*r - b*d*g*k*p*q - b*d*h*i*n*r - b*d*h*i*o*q - b*d*h*j*l*t - b*d*h*j*o*p - b*d*h*k*l*s - b*d*h*k*n*p - b*d*i*j*l*r - b*d*i*k*l*q - b*e*g*h*p*t - b*e*g*i*p*r - b*e*h*i*l*t - b*e*h*i*m*r - b*e*h*k*m*p - b*e*i*k*l*p - b*f*g*h*p*s - b*f*g*i*p*q - b*f*h*i*l*s - b*f*h*i*m*q - b*f*h*j*m*p - b*f*i*j*l*p - c*d*g*h*n*t - c*d*g*h*o*s - c*d*g*i*n*r - c*d*g*i*o*q - c*d*g*j*l*t - c*d*g*j*m*r - c*d*g*k*l*s - c*d*g*k*m*q - c*d*h*j*m*o - c*d*h*k*m*n - c*d*i*j*l*o - c*d*i*k*l*n - c*e*g*h*m*t - c*e*g*i*l*t - c*e*g*i*o*p - c*e*g*k*m*p - c*e*h*i*m*o - c*e*i*k*l*m - c*f*g*h*m*s - c*f*g*i*l*s - c*f*g*i*n*p - c*f*g*j*m*p - c*f*h*i*m*n - c*f*i*j*l*m - d*e*g*h*m*r - d*e*g*h*o*p - d*e*g*i*l*r - d*e*g*k*l*p - d*e*h*i*l*o - d*e*h*k*l*m - d*f*g*h*m*q - d*f*g*h*n*p - d*f*g*i*l*q - d*f*g*j*l*p - d*f*h*i*l*n - d*f*h*j*l*m + 2*a*b*g*p*q*t + 2*a*b*g*p*r*s + 2*a*b*h*l*s*t + 2*a*b*h*m*p*u + 2*a*b*i*l*p*u + 2*a*b*i*m*q*r + 2*a*c*g*l*s*t + 2*a*c*g*m*p*u + 2*a*c*h*m*n*t + 2*a*c*h*m*o*s + 2*a*c*i*l*m*u + 2*a*c*i*n*o*p + 2*a*d*g*l*p*u + 2*a*d*g*m*q*r + 2*a*d*h*l*m*u + 2*a*d*h*n*o*p + 2*a*d*i*l*n*r + 2*a*d*i*l*o*q + 2*a*e*k*l*m*p + 2*a*f*j*l*m*p + 2*b*c*g*h*s*t + 2*b*c*g*i*p*u + 2*b*c*h*i*m*u + 2*b*c*i*j*l*t + 2*b*c*i*k*l*s + 2*b*c*j*k*m*p + 2*b*d*g*h*p*u + 2*b*d*g*i*q*r + 2*b*d*h*i*l*u + 2*b*d*h*j*m*r + 2*b*d*h*k*m*q + 2*b*d*j*k*l*p + 2*b*e*h*i*o*p + 2*b*f*h*i*n*p + 2*c*d*g*h*m*u + 2*c*d*g*i*l*u + 2*c*d*g*j*o*p + 2*c*d*g*k*n*p + 2*c*d*h*i*n*o + 2*c*d*j*k*l*m + 2*c*e*g*i*m*r + 2*c*f*g*i*m*q + 2*d*e*g*h*l*t + 2*d*f*g*h*l*s + 2*e*f*g*h*m*p + 2*e*f*g*i*l*p + 2*e*f*h*i*l*m + u*a**2*l**2*z**2 + u*a**2*m**2*y**2 + u*a**2*p**2*x**2 + u*b**2*h**2*z**2 + u*b**2*i**2*y**2 + u*b**2*p**2*w**2 + u*c**2*g**2*z**2 + u*c**2*i**2*x**2 + u*c**2*m**2*w**2 + u*d**2*g**2*y**2 + u*d**2*h**2*x**2 + u*d**2*l**2*w**2 + u*g**2*p**2*v**2 + u*h**2*m**2*v**2 + u*i**2*l**2*v**2 - e*f*g**2*p**2 - e*f*h**2*m**2 - e*f*i**2*l**2 - j*k*b**2*p**2 - j*k*c**2*m**2 - j*k*d**2*l**2 - n*o*a**2*p**2 - n*o*c**2*i**2 - n*o*d**2*h**2 - q*r*a**2*m**2 - q*r*b**2*i**2 - q*r*d**2*g**2 - s*t*a**2*l**2 - s*t*b**2*h**2 - s*t*c**2*g**2 + a*b*j*o*p**2 + a*b*k*n*p**2 + a*c*j*r*m**2 + a*c*k*q*m**2 + a*d*j*t*l**2 + a*d*k*s*l**2 + a*e*g*o*p**2 + a*e*h*r*m**2 + a*e*i*t*l**2 + a*f*g*n*p**2 + a*f*h*q*m**2 + a*f*i*s*l**2 + b*c*n*r*i**2 + b*c*o*q*i**2 + b*d*n*t*h**2 + b*d*o*s*h**2 + b*e*g*k*p**2 + b*e*l*r*i**2 + b*e*m*t*h**2 + b*f*g*j*p**2 + b*f*l*q*i**2 + b*f*m*s*h**2 + c*d*q*t*g**2 + c*d*r*s*g**2 + c*e*h*k*m**2 + c*e*l*o*i**2 + c*e*p*t*g**2 + c*f*h*j*m**2 + c*f*l*n*i**2 + c*f*p*s*g**2 + d*e*i*k*l**2 + d*e*m*o*h**2 + d*e*p*r*g**2 + d*f*i*j*l**2 + d*f*m*n*h**2 + d*f*p*q*g**2 + e*f*g**2*y**2*z**2 + e*f*h**2*x**2*z**2 + e*f*i**2*x**2*y**2 + e*f*l**2*w**2*z**2 + e*f*m**2*w**2*y**2 + e*f*p**2*w**2*x**2 + g*h*n*r*d**2 + g*h*o*q*d**2 + g*i*n*t*c**2 + g*i*o*s*c**2 + g*j*l*r*d**2 + g*j*m*t*c**2 + g*k*l*q*d**2 + g*k*m*s*c**2 + h*i*q*t*b**2 + h*i*r*s*b**2 + h*j*l*o*d**2 + h*j*p*t*b**2 + h*k*l*n*d**2 + h*k*p*s*b**2 + i*j*m*o*c**2 + i*j*p*r*b**2 + i*k*m*n*c**2 + i*k*p*q*b**2 + j*k*b**2*y**2*z**2 + j*k*c**2*x**2*z**2 + j*k*d**2*x**2*y**2 + j*k*l**2*v**2*z**2 + j*k*m**2*v**2*y**2 + j*k*p**2*v**2*x**2 + l*m*q*t*a**2 + l*m*r*s*a**2 + l*n*p*t*a**2 + l*o*p*s*a**2 + m*n*p*r*a**2 + m*o*p*q*a**2 + n*o*a**2*y**2*z**2 + n*o*c**2*w**2*z**2 + n*o*d**2*w**2*y**2 + n*o*h**2*v**2*z**2 + n*o*i**2*v**2*y**2 + n*o*p**2*v**2*w**2 + q*r*a**2*x**2*z**2 + q*r*b**2*w**2*z**2 + q*r*d**2*w**2*x**2 + q*r*g**2*v**2*z**2 + q*r*i**2*v**2*x**2 + q*r*m**2*v**2*w**2 + s*t*a**2*x**2*y**2 + s*t*b**2*w**2*y**2 + s*t*c**2*w**2*x**2 + s*t*g**2*v**2*y**2 + s*t*h**2*v**2*x**2 + s*t*l**2*v**2*w**2 - a*e*k*l**2*z**2 - a*e*k*m**2*y**2 - a*e*k*p**2*x**2 - a*f*j*l**2*z**2 - a*f*j*m**2*y**2 - a*f*j*p**2*x**2 - b*e*o*h**2*z**2 - b*e*o*i**2*y**2 - b*e*o*p**2*w**2 - b*f*n*h**2*z**2 - b*f*n*i**2*y**2 - b*f*n*p**2*w**2 - c*e*r*g**2*z**2 - c*e*r*i**2*x**2 - c*e*r*m**2*w**2 - c*f*q*g**2*z**2 - c*f*q*i**2*x**2 - c*f*q*m**2*w**2 - d*e*t*g**2*y**2 - d*e*t*h**2*x**2 - d*e*t*l**2*w**2 - d*f*s*g**2*y**2 - d*f*s*h**2*x**2 - d*f*s*l**2*w**2 - g*j*o*c**2*z**2 - g*j*o*d**2*y**2 - g*j*o*p**2*v**2 - g*k*n*c**2*z**2 - g*k*n*d**2*y**2 - g*k*n*p**2*v**2 - h*j*r*b**2*z**2 - h*j*r*d**2*x**2 - h*j*r*m**2*v**2 - h*k*q*b**2*z**2 - h*k*q*d**2*x**2 - h*k*q*m**2*v**2 - i*j*t*b**2*y**2 - i*j*t*c**2*x**2 - i*j*t*l**2*v**2 - i*k*s*b**2*y**2 - i*k*s*c**2*x**2 - i*k*s*l**2*v**2 - l*n*r*a**2*z**2 - l*n*r*d**2*w**2 - l*n*r*i**2*v**2 - l*o*q*a**2*z**2 - l*o*q*d**2*w**2 - l*o*q*i**2*v**2 - m*n*t*a**2*y**2 - m*n*t*c**2*w**2 - m*n*t*h**2*v**2 - m*o*s*a**2*y**2 - m*o*s*c**2*w**2 - m*o*s*h**2*v**2 - p*q*t*a**2*x**2 - p*q*t*b**2*w**2 - p*q*t*g**2*v**2 - p*r*s*a**2*x**2 - p*r*s*b**2*w**2 - p*r*s*g**2*v**2 - u*a**2*x**2*y**2*z**2 - u*b**2*w**2*y**2*z**2 - u*c**2*w**2*x**2*z**2 - u*d**2*w**2*x**2*y**2 - u*g**2*v**2*y**2*z**2 - u*h**2*v**2*x**2*z**2 - u*i**2*v**2*x**2*y**2 - u*l**2*v**2*w**2*z**2 - u*m**2*v**2*w**2*y**2 - u*p**2*v**2*w**2*x**2 - 2*a*b*g*u*p**2 - 2*a*c*h*u*m**2 - 2*a*d*i*u*l**2 - 2*b*c*l*u*i**2 - 2*b*d*m*u*h**2 - 2*c*d*p*u*g**2 - 2*g*h*l*u*d**2 - 2*g*i*m*u*c**2 - 2*h*i*p*u*b**2 - 2*l*m*p*u*a**2 + a*b*h*n*r*z**2 + a*b*h*o*q*z**2 + a*b*i*n*t*y**2 + a*b*i*o*s*y**2 + a*b*j*l*r*z**2 + a*b*j*m*t*y**2 + a*b*k*l*q*z**2 + a*b*k*m*s*y**2 + a*c*g*n*r*z**2 + a*c*g*o*q*z**2 + a*c*i*q*t*x**2 + a*c*i*r*s*x**2 + a*c*j*l*o*z**2 + a*c*j*p*t*x**2 + a*c*k*l*n*z**2 + a*c*k*p*s*x**2 + a*d*g*n*t*y**2 + a*d*g*o*s*y**2 + a*d*h*q*t*x**2 + a*d*h*r*s*x**2 + a*d*j*m*o*y**2 + a*d*j*p*r*x**2 + a*d*k*m*n*y**2 + a*d*k*p*q*x**2 + a*e*g*l*r*z**2 + a*e*g*m*t*y**2 + a*e*h*l*o*z**2 + a*e*h*p*t*x**2 + a*e*i*m*o*y**2 + a*e*i*p*r*x**2 + a*e*k*x**2*y**2*z**2 + a*f*g*l*q*z**2 + a*f*g*m*s*y**2 + a*f*h*l*n*z**2 + a*f*h*p*s*x**2 + a*f*i*m*n*y**2 + a*f*i*p*q*x**2 + a*f*j*x**2*y**2*z**2 + b*c*g*j*r*z**2 + b*c*g*k*q*z**2 + b*c*h*j*o*z**2 + b*c*h*k*n*z**2 + b*c*m*q*t*w**2 + b*c*m*r*s*w**2 + b*c*n*p*t*w**2 + b*c*o*p*s*w**2 + b*d*g*j*t*y**2 + b*d*g*k*s*y**2 + b*d*i*j*o*y**2 + b*d*i*k*n*y**2 + b*d*l*q*t*w**2 + b*d*l*r*s*w**2 + b*d*n*p*r*w**2 + b*d*o*p*q*w**2 + b*e*g*h*r*z**2 + b*e*g*i*t*y**2 + b*e*h*k*l*z**2 + b*e*i*k*m*y**2 + b*e*l*p*t*w**2 + b*e*m*p*r*w**2 + b*e*o*w**2*y**2*z**2 + b*f*g*h*q*z**2 + b*f*g*i*s*y**2 + b*f*h*j*l*z**2 + b*f*i*j*m*y**2 + b*f*l*p*s*w**2 + b*f*m*p*q*w**2 + b*f*n*w**2*y**2*z**2 + c*d*h*j*t*x**2 + c*d*h*k*s*x**2 + c*d*i*j*r*x**2 + c*d*i*k*q*x**2 + c*d*l*n*t*w**2 + c*d*l*o*s*w**2 + c*d*m*n*r*w**2 + c*d*m*o*q*w**2 + c*e*g*h*o*z**2 + c*e*g*k*l*z**2 + c*e*h*i*t*x**2 + c*e*i*k*p*x**2 + c*e*l*m*t*w**2 + c*e*m*o*p*w**2 + c*e*r*w**2*x**2*z**2 + c*f*g*h*n*z**2 + c*f*g*j*l*z**2 + c*f*h*i*s*x**2 + c*f*i*j*p*x**2 + c*f*l*m*s*w**2 + c*f*m*n*p*w**2 + c*f*q*w**2*x**2*z**2 + d*e*g*i*o*y**2 + d*e*g*k*m*y**2 + d*e*h*i*r*x**2 + d*e*h*k*p*x**2 + d*e*l*m*r*w**2 + d*e*l*o*p*w**2 + d*e*t*w**2*x**2*y**2 + d*f*g*i*n*y**2 + d*f*g*j*m*y**2 + d*f*h*i*q*x**2 + d*f*h*j*p*x**2 + d*f*l*m*q*w**2 + d*f*l*n*p*w**2 + d*f*s*w**2*x**2*y**2 + g*h*m*q*t*v**2 + g*h*m*r*s*v**2 + g*h*n*p*t*v**2 + g*h*o*p*s*v**2 + g*i*l*q*t*v**2 + g*i*l*r*s*v**2 + g*i*n*p*r*v**2 + g*i*o*p*q*v**2 + g*j*l*p*t*v**2 + g*j*m*p*r*v**2 + g*j*o*v**2*y**2*z**2 + g*k*l*p*s*v**2 + g*k*m*p*q*v**2 + g*k*n*v**2*y**2*z**2 + h*i*l*n*t*v**2 + h*i*l*o*s*v**2 + h*i*m*n*r*v**2 + h*i*m*o*q*v**2 + h*j*l*m*t*v**2 + h*j*m*o*p*v**2 + h*j*r*v**2*x**2*z**2 + h*k*l*m*s*v**2 + h*k*m*n*p*v**2 + h*k*q*v**2*x**2*z**2 + i*j*l*m*r*v**2 + i*j*l*o*p*v**2 + i*j*t*v**2*x**2*y**2 + i*k*l*m*q*v**2 + i*k*l*n*p*v**2 + i*k*s*v**2*x**2*y**2 + l*n*r*v**2*w**2*z**2 + l*o*q*v**2*w**2*z**2 + m*n*t*v**2*w**2*y**2 + m*o*s*v**2*w**2*y**2 + p*q*t*v**2*w**2*x**2 + p*r*s*v**2*w**2*x**2 + u*v**2*w**2*x**2*y**2*z**2 - a*b*j*o*y**2*z**2 - a*b*k*n*y**2*z**2 - a*c*j*r*x**2*z**2 - a*c*k*q*x**2*z**2 - a*d*j*t*x**2*y**2 - a*d*k*s*x**2*y**2 - a*e*g*o*y**2*z**2 - a*e*h*r*x**2*z**2 - a*e*i*t*x**2*y**2 - a*f*g*n*y**2*z**2 - a*f*h*q*x**2*z**2 - a*f*i*s*x**2*y**2 - b*c*n*r*w**2*z**2 - b*c*o*q*w**2*z**2 - b*d*n*t*w**2*y**2 - b*d*o*s*w**2*y**2 - b*e*g*k*y**2*z**2 - b*e*l*r*w**2*z**2 - b*e*m*t*w**2*y**2 - b*f*g*j*y**2*z**2 - b*f*l*q*w**2*z**2 - b*f*m*s*w**2*y**2 - c*d*q*t*w**2*x**2 - c*d*r*s*w**2*x**2 - c*e*h*k*x**2*z**2 - c*e*l*o*w**2*z**2 - c*e*p*t*w**2*x**2 - c*f*h*j*x**2*z**2 - c*f*l*n*w**2*z**2 - c*f*p*s*w**2*x**2 - d*e*i*k*x**2*y**2 - d*e*m*o*w**2*y**2 - d*e*p*r*w**2*x**2 - d*f*i*j*x**2*y**2 - d*f*m*n*w**2*y**2 - d*f*p*q*w**2*x**2 - e*f*w**2*x**2*y**2*z**2 - g*h*n*r*v**2*z**2 - g*h*o*q*v**2*z**2 - g*i*n*t*v**2*y**2 - g*i*o*s*v**2*y**2 - g*j*l*r*v**2*z**2 - g*j*m*t*v**2*y**2 - g*k*l*q*v**2*z**2 - g*k*m*s*v**2*y**2 - h*i*q*t*v**2*x**2 - h*i*r*s*v**2*x**2 - h*j*l*o*v**2*z**2 - h*j*p*t*v**2*x**2 - h*k*l*n*v**2*z**2 - h*k*p*s*v**2*x**2 - i*j*m*o*v**2*y**2 - i*j*p*r*v**2*x**2 - i*k*m*n*v**2*y**2 - i*k*p*q*v**2*x**2 - j*k*v**2*x**2*y**2*z**2 - l*m*q*t*v**2*w**2 - l*m*r*s*v**2*w**2 - l*n*p*t*v**2*w**2 - l*o*p*s*v**2*w**2 - m*n*p*r*v**2*w**2 - m*o*p*q*v**2*w**2 - n*o*v**2*w**2*y**2*z**2 - q*r*v**2*w**2*x**2*z**2 - s*t*v**2*w**2*x**2*y**2 - 2*a*b*g*q*r*z**2 - 2*a*b*g*s*t*y**2 - 2*a*b*h*l*u*z**2 - 2*a*b*i*m*u*y**2 - 2*a*c*g*l*u*z**2 - 2*a*c*h*n*o*z**2 - 2*a*c*h*s*t*x**2 - 2*a*c*i*p*u*x**2 - 2*a*d*g*m*u*y**2 - 2*a*d*h*p*u*x**2 - 2*a*d*i*n*o*y**2 - 2*a*d*i*q*r*x**2 - 2*b*c*g*h*u*z**2 - 2*b*c*j*k*l*z**2 - 2*b*c*l*s*t*w**2 - 2*b*c*m*p*u*w**2 - 2*b*d*g*i*u*y**2 - 2*b*d*j*k*m*y**2 - 2*b*d*l*p*u*w**2 - 2*b*d*m*q*r*w**2 - 2*c*d*h*i*u*x**2 - 2*c*d*j*k*p*x**2 - 2*c*d*l*m*u*w**2 - 2*c*d*n*o*p*w**2 - 2*e*f*g*h*l*z**2 - 2*e*f*g*i*m*y**2 - 2*e*f*h*i*p*x**2 - 2*e*f*l*m*p*w**2 - 2*g*h*l*s*t*v**2 - 2*g*h*m*p*u*v**2 - 2*g*i*l*p*u*v**2 - 2*g*i*m*q*r*v**2 - 2*h*i*l*m*u*v**2 - 2*h*i*n*o*p*v**2 - 2*j*k*l*m*p*v**2 + 2*a*b*g*u*y**2*z**2 + 2*a*c*h*u*x**2*z**2 + 2*a*d*i*u*x**2*y**2 + 2*b*c*l*u*w**2*z**2 + 2*b*d*m*u*w**2*y**2 + 2*c*d*p*u*w**2*x**2 + 2*g*h*l*u*v**2*z**2 + 2*g*i*m*u*v**2*y**2 + 2*h*i*p*u*v**2*x**2 + 2*l*m*p*u*v**2*w**2)**2


denom = 2*a*b*h*m*p + 2*a*b*i*l*p + 2*a*c*g*m*p + 2*a*c*i*l*m + 2*a*d*g*l*p + 2*a*d*h*l*m + 2*b*c*g*i*p + 2*b*c*h*i*m + 2*b*d*g*h*p + 2*b*d*h*i*l + 2*c*d*g*h*m + 2*c*d*g*i*l + a**2*l**2*z**2 + a**2*m**2*y**2 + a**2*p**2*x**2 + b**2*h**2*z**2 + b**2*i**2*y**2 + b**2*p**2*w**2 + c**2*g**2*z**2 + c**2*i**2*x**2 + c**2*m**2*w**2 + d**2*g**2*y**2 + d**2*h**2*x**2 + d**2*l**2*w**2 + g**2*p**2*v**2 + h**2*m**2*v**2 + i**2*l**2*v**2 - a**2*x**2*y**2*z**2 - b**2*w**2*y**2*z**2 - c**2*w**2*x**2*z**2 - d**2*w**2*x**2*y**2 - g**2*v**2*y**2*z**2 - h**2*v**2*x**2*z**2 - i**2*v**2*x**2*y**2 - l**2*v**2*w**2*z**2 - m**2*v**2*w**2*y**2 - p**2*v**2*w**2*x**2 - 2*a*b*g*p**2 - 2*a*c*h*m**2 - 2*a*d*i*l**2 - 2*b*c*l*i**2 - 2*b*d*m*h**2 - 2*c*d*p*g**2 - 2*g*h*l*d**2 - 2*g*i*m*c**2 - 2*h*i*p*b**2 - 2*l*m*p*a**2 + v**2*w**2*x**2*y**2*z**2 - 2*a*b*h*l*z**2 - 2*a*b*i*m*y**2 - 2*a*c*g*l*z**2 - 2*a*c*i*p*x**2 - 2*a*d*g*m*y**2 - 2*a*d*h*p*x**2 - 2*b*c*g*h*z**2 - 2*b*c*m*p*w**2 - 2*b*d*g*i*y**2 - 2*b*d*l*p*w**2 - 2*c*d*h*i*x**2 - 2*c*d*l*m*w**2 - 2*g*h*m*p*v**2 - 2*g*i*l*p*v**2 - 2*h*i*l*m*v**2 + 2*a*b*g*y**2*z**2 + 2*a*c*h*x**2*z**2 + 2*a*d*i*x**2*y**2 + 2*b*c*l*w**2*z**2 + 2*b*d*m*w**2*y**2 + 2*c*d*p*w**2*x**2 + 2*g*h*l*v**2*z**2 + 2*g*i*m*v**2*y**2 + 2*h*i*p*v**2*x**2 + 2*l*m*p*v**2*w**2


test = quo(numer, denom)

Reply via email to