
    sg%                     &   d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZ  ed      \  ZZ ed      \  ZZeez  ez   Zeeez  z   Z e
eegeeg	      Z eeegeeg	      Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"y)z*Tests for Dixon's and Macaulay's classes.     )Matrix)factor)symbols)IndexedBase)DixonResultantMacaulayResultantza, bx, ypolynomials	variablesc                  $   t        d      } t        j                  t        t        gk(  sJ t        j
                  t        t        gk(  sJ t        j                  dk(  sJ t        j                  dk(  sJ t        j                  | d   | d   gk(  sJ y)z#Test init method of DixonResultant.alpha   r      N)r   dixonr   pqr   xynmdummy_variables)as    a/var/www/html/venv/lib/python3.12/site-packages/sympy/polys/tests/test_multivariate_resultants.pytest_dixon_resultant_initr      sz    GAA&&&??q!f$$$77a<<77a<<  QqT1Q4L000    c                     t        d      } t        t        z   }t        dz  t        dz  z   }t        dz  t        z   }t        |||gt        t        g      }t         t        dz  z  | d   z  t        t        dz  z  | d   z  z
  t        t        z  | d   z  | d   z  z
  t        t        z  | d   dz  z  z
  t        | d   z  | d   dz  z  z
  t        | d   z  z   t        dz  | d   z  | d   z  z
  t        dz  | d   z  z   t        | d   z  | d   dz  z  z
  t        | d   dz  z  z   }|j	                         j                         j                         |k(  sJ y)z0Test Dixon's polynomial for a numerical example.r   r      r   r   N)r   r   r   r   get_dixon_polynomialas_exprexpand)r   r   r   hr   
polynomials         r   #test_get_dixon_polynomial_numericalr$      sp   GA	AA	QQA	Q
AAq!9q!f-Ea1fqt#a!q&j1Q4&77!a%!A$,d; UQqTQY!"QqTAaDAI!5689AaDAFQqTMAaD6AaD=)+,qt8adai+?@BCaDAICJ
 %%'//188:jHHHr   c                      t         t        z   } t         dz  t        dz  z   }t         dz  t        z   }t        | ||gt         t        g      }|j                         }|j	                  |      ddgk(  sJ y)zTests max degrees function.r   r   r
   r   N)r   r   r   r   get_max_degrees)r   r   r"   r   dixon_polynomials        r   test_get_max_degreesr(   .   sn     	
AA	QQA	Q
A1ayQFCE113  !12q!f<<<r   c                      t        d      \  } }| |z   }| dz  |dz  z   }| dz  |z   }t        |||g| |g      }|j                         }|j                  |      j	                         dk(  sJ y)z/Test Dixon's resultant for a numerical example.r	   r   r   r   N)r   r   r   get_dixon_matrixdet)r   r   r   r   r"   r   r#   s          r   test_get_dixon_matrixr,   :   s~     6?DAq	AA	QaA	Q
AAq!9q!f-E++-J!!*-113q888r   c                     t        d      \  } }}| dz  |dz  z   dz
  |dz  z   }| dz  |dz  z   dz
  |dz  z   }|dz  |dz  z   dz
  }t        |||g||g      }|j                         }|j                  |      }dd| dz  z  z
  d| dz  z  z   d| d	z  z  z
  d
| dz  z  z   }	|j	                         |	z
  j                         dk(  sJ y)z2Test Dixon's matrix for example from [Palancz08]_.x, y, zr   r   r                      N)r   r   r   r*   r+   r!   )
r   r   zfgr"   example_twopolymatrixexprs
             r   !test_get_dixon_matrix_example_twor<   H   s    i GAq!	Qa!a!e#A	Qa!a!e#A	Qa!A !QQF3K++-D))$/Fq16z>BaK'"qAv+5Q!VCDJJL4'')Q...r   c                     t        d      \  } }}t        g dg dg dg      }t        d|dz  gd|z  |dz   gg      }t        ddgddgg      }t        | dz  ddg| dd| z  gg      }t        d	dgd|gddgddgg      }t        j                  |      d
k(  sJ t        j                  |      dk(  sJ t        j                  |      dk(  sJ t        j                  |      d
k(  sJ t        j                  |      dk(  sJ y)z%Tests precondition for KSY Resultant.A, B, Cr   r   r   )r1         )r3         r   r   r   r@   FTN)r   r   r   KSY_precondition)ABCm1m2m3m4m5s           r   test_KSY_preconditionrN   W   sI   i GAq!	 
B 
!QTq&16'"$ 
%B 
!QQ 
B 
!Q$1QA  
!B 
!QQQQ 
B
 !!"%...!!"%---!!"%---!!"%...!!"%---r   c                     t        d      \  } }}t        ddgddgddgg      }t        g dg dg dg      }t        g dg d	g d
g dg      }t        g dg dg dg      }t        g dg dg dg dg      }t        dd| g|ddgdd|gg      }t        j                  |      t        ddgg      k(  sJ t        j                  |      t        ddgddgddgg      k(  sJ t        j                  |      t        ddgddgg      k(  sJ t        j                  |      t        ddgddgg      k(  sJ t        j                  |      t        dgdgdgdgg      k(  sJ t        j                  |      t        d| g|dgd|gg      k(  sJ y)zATests method for deleting rows and columns containing only zeros.r>   r   r   r   )r   r   r   )r   r   r1   )r   r@   r3   )r   r   r   r   )r   r   r   r   )r   r   r1   r   )r   r   r   r   r   r   )r   r   r1   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r1   r   r1   r@   r3   N)r   r   r   delete_zero_rows_and_columns)	rF   rG   rH   rI   rJ   rK   rL   rM   m6s	            r   !test_delete_zero_rows_and_columnsrS   s   s3   i GAq!	!QQQ 
B 
 
B 
 
 B
 
 
B 
 
 B
 
!QQQ 
B --b1VaVH5EEEE--b1VaV>?V>?V=E 6F F F F --b1VaV>?V=E 6F F F F --b1VaV>?V=E 6F F F F --b1VaS>?S>?S>?S=B 6C C C C
 --b1VaV>?V>?V=E 6F F F Fr   c                     t        d      \  } }t        g dg dg dg      }t        g dg dg      }t        g dg dg dg      }t        dd| gg d|ddgg      }t        j                  |      d	k(  sJ t        j                  |      d
k(  sJ t        j                  |      dk(  sJ t        j                  |      | |z  k(  sJ y)z(Tests product of leading entries method.zA, Br?   )r   r1   r@   )r   r   r3   )r   r   r   )r   r   r   rP   r   r0   r   r   N)r   r   r   product_leading_entries)rF   rG   rI   rJ   rK   rL   s         r   test_product_leading_entriesrV      s    6?DAq	 
B 
 
B 
 
B 
!QQ 
B ((,222((,111((,111((,A555r   c                      t        d      \  } }}| |z  |z  }| dz  |dz  z
  }| |z   |z   }t        |||g| |g      }|j                         }|j                  |      }|j	                  |      }	|	|dz   k(  sJ y)z-Tests the KSY Dixon resultant for example oner.   r   r   N)r   r   r   r*   get_KSY_Dixon_resultant)
r   r   r5   r   r   r"   r   
dixon_polydixon_matrixDs
             r   (test_get_KSY_Dixon_resultant_example_oner\      s    i GAq!	A	A	1q!tA	A	AAq!9q!f-E++-J))*5L%%l3AA::r   c                     t        d      \  } }}| |z  | |z  z   | z   |dz  z
  |z
  |dz  z   |z   }| dz  | |z  z   | z
  | |z  z   ||z  z   |z
  }| dz  | |z  z   d| z  z   | |z  z
  ||z  z
  d|z  z
  }t        |||g| |g      }|j                         }|j                  |      }t	        |j                  |            }	|	d|z  |dz
  z  |dz   z  d|z  dz
  dz  z  k(  sJ y)z-Tests the KSY Dixon resultant for example twozx, y, Ar   ir   N)r   r   r   r*   r   rX   )
r   r   rF   r   r   r"   r   rY   rZ   r[   s
             r   (test_get_KSY_Dixon_resultant_example_twor^      s#   i GAq!	AAAqD 1$q!t+a/A	1q1uq1q5 1q5(1,A	1q1uq1uq1u$q1u,q1u4AAq!9q!f-E++-J))*5Lu,,\:;A1a!ea!e$acAg\1111r   c                  ,   t         j                  t        t        gk(  sJ t         j                  t
        t        gk(  sJ t         j                  dk(  sJ t         j                  ddgk(  sJ t         j                  dk(  sJ t         j                  dk(  sJ y)z&Test init method of MacaulayResultant.r   r   N)macaulayr   r   r   r   r   r   r   degreesdegree_mmonomials_size r   r   test_macaulay_resultant_initre      s     Aq6)))!Q'''::??1v%%%!!!""a'''r   c                  6    t         j                         dk(  sJ y )Nr   )r`   _get_degree_mrd   r   r   test_get_degree_mrh      s    !!#q(((r   c                  6    t         j                         dk(  sJ y )Nr   )r`   get_sizerd   r   r   test_get_sizerk      s    !###r   c                     t        d      \  } }}t        d      \  }}}t        d      \  }}}t        d      \  }	}
}t        d      \  }}}t        d      \  }}}|| dz  z  || z  |z  z   || z  |z  z   ||dz  z  z   ||z  |z  z   ||dz  z  z   }|	| dz  z  |
| z  |z  z   || z  |z  z   ||dz  z  z   ||z  |z  z   ||dz  z  z   }|| z  ||z  z   ||z  z   }t        |||g| ||g      }|j                  g dk(  sJ |j                  d	k(  sJ |j                  | d	z  | dz  |z  | dz  |z  | |dz  z  | |z  |z  | |dz  z  |d	z  |dz  |z  ||dz  z  |d	z  g
k(  sJ |j
                  d
k(  sJ |j                         | ||g| ||g| |z  | |z  ||z  |dz  ggk(  sJ |j                         }|j                  |j
                  |j
                  fk(  sJ |j                  |      t        ||g|	|gg      k(  sJ y)z.Tests the Macaulay for example from [Bruce97]_r.   za_1_1, a_1_2, a_1_3za_2_2, a_2_3, a_3_3zb_1_1, b_1_2, b_1_3zb_2_2, b_2_3, b_3_3zc_1, c_2, c_3r   )r   r   r   r   
   N)r   r   ra   rb   monomial_setrc   get_row_coefficients
get_matrixshapeget_submatrixr   )r   r   r5   a_1_1a_1_2a_1_3a_2_2a_2_3a_3_3b_1_1b_1_2b_1_3b_2_2b_2_3b_3_3c_1c_2c_3f_1f_2f_3macr:   s                          r   test_macaulay_example_oner      s    i GAq!!"78E5%!"78E5%!"78E5%!"78E5%O,MCc
!q&.519q=
(519q=
8
!q&. 19q=)+016>:C
!q&.519q=
(519q=
8
!q&. 19q=)+016>:C
'C!G
cAg
%C
S#sOaAY
7C;;)###<<1QQ
AFQJ !AF
 !A	1qAv:qAv !Q	1qAv:qAv ? ? ? ? #####%1a)aAY+,q5!a%QQ*G*I I I I ^^F<<C..0B0BCCCCV$160@ )A A A Ar   c            
         t        d      \  } }}t        d      \  }}}t        d      \  }}}t        d      \  }	}
}}}||z  || z  z
  ||z  z   }|| dz  z  ||dz  z  z   ||dz  z  z
  }|	|z  |
| dz  z  z
  || dz  z  |z  z   || z  |dz  z  z
  ||dz  z  z   }t        |||g| ||g      }|j                  g dk(  sJ |j                  dk(  sJ |j                  d	k(  sJ t        |j                               |j                  k(  sJ |j                         }|j                  |j                  |j                  fk(  sJ |j                  |      t        | ||d
gd
| d
d
gd
d
| d
gd
d
d
| gg      k(  sJ y)z=Tests the Macaulay formulation for example from [Stiller96]_.r.   za_0, a_1, a_2zb_0, b_1, b_2zc_0, c_1, c_2, c_3, c_4r   r   r?   r1      r   N)r   r   ra   rb   rc   lenro   r   rp   rq   rr   r   )r   r   r5   a_0a_1a_2b_0b_1b_2c_0r   r   r   c_4r6   r7   r"   r   r:   s                      r   test_macaulay_example_twor     s    i GAq!O,MCcO,MCc%&?@Cc3a37S1W$Aa1fsQ!V|#cAFl2Aa#Q,qAv!11C!Ga1f4DDa1f	A Q1I1ay
1C;;)###<<1###s'')*cee333^^F<<C..0B0BCCCCV$#sC0C12SD!Q12AtQ12Aq3$0A )B B B Br   N)#__doc__sympy.matrices.denser   sympy.polys.polytoolsr   
sympy.corer   sympy.tensor.indexedr   #sympy.polys.multivariate_resultantsr   r   cdr   r   r   r   r   r`   r   r$   r(   r,   r<   rN   rS   rV   r\   r^   re   rh   rk   r   r   rd   r   r   <module>r      s    0 ' (  ,D v1v1UQYQYAq6aV<!QAq6B1I 
=9/.81Ff602()$ ADBr   