
    g%                     @   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"dS )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 dS )z#Test init method of DixonResultant.alpha   r      N)r   dixonr   pqr   xynmdummy_variables)as    j/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/polys/tests/test_multivariate_resultants.pytest_dixon_resultant_initr      s    GAA&&&&?q!f$$$$7a<<<<7a<<<< QqT1Q4L000000    c                  V   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   }|                                                                                                |k    sJ dS )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$      s   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188::jHHHHHHr   c                     t           t          z   } t           dz  t          dz  z   }t           dz  t          z   }t          | ||gt           t          g          }|                                }|                    |          ddgk    sJ dS )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(   .   s     	
AA	QQA	Q
A1ayQFCCCE1133  !122q!f<<<<<<r   c                     t          d          \  } }| |z   }| dz  |dz  z   }| dz  |z   }t          |||g| |g          }|                                }|                    |                                          dk    sJ dS )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33q888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          }|                                }|                    |          }dd| dz  z  z
  d| dz  z  z   d| d	z  z  z
  d
| dz  z  z   }	|                                |	z
                                  dk    sJ dS )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33K++--D))$//Fq16z>BaK'"qAv+5Q!VCDJJLL4''))Q......r   c                  t   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                              |          d
k    sJ t                              |          dk    sJ t                              |          dk    sJ t                              |          d
k    sJ t                              |          dk    sJ dS )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   s   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                              |          t          ddgg          k    sJ t                              |          t          ddgddgddgg          k    sJ t                              |          t          ddgddgg          k    sJ t                              |          t          ddgddgg          k    sJ t                              |          t          dgdgdgdgg          k    sJ t                              |          t          d| g|dgd|gg          k    sJ dS )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   s   i  GAq!	!QQQ 
 
B 
 
 
B 
 
  
 B
 
 
 
B 
 
  
 B
 
!QQQ 
 
B --b11VaVH5E5EEEEE--b11VaV>?V>?V=E 6F 6F F F F F --b11VaV>?V=E 6F 6F F F F F --b11VaV>?V=E 6F 6F F F F F --b11VaS>?S>?S>?S=B 6C 6C C C C C
 --b11VaV>?V>?V=E 6F 6F F F F 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                              |          d	k    sJ t                              |          d
k    sJ t                              |          dk    sJ t                              |          | |z  k    sJ dS )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2((,,1111((,,1111((,,A555555r   c                      t          d          \  } }}| |z  |z  }| dz  |dz  z
  }| |z   |z   }t          |||g| |g          }|                                }|                    |          }|                    |          }	|	|dz   k    sJ dS )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))*55L%%l3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          }|                                }|                    |          }t	          |                    |                    }	|	d|z  |dz
  z  |dz   z  d|z  dz
  dz  z  k    sJ dS )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))*55Lu,,\::;;A1a!ea!e$acAg\111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 dS )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                  D    t                                           dk    sJ d S )Nr   )r`   _get_degree_mrd   r   r   test_get_degree_mrh      s%    !!##q((((((r   c                  D    t                                           dk    sJ d S )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 |                                | ||g| ||g| |z  | |z  ||z  |dz  ggk    sJ |                                }|j        |j        |j        fk    sJ |	                    |          t          ||g|	|gg          k    sJ dS )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8E5%!"788E5%!"788E5%!"78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
7
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 I ^^F<C.0BCCCCCV$$160@ )A )A A A 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        k    sJ |                                }|j	        |j        |j        fk    sJ |
                    |          t          | ||d
gd
| d
d
gd
d
| d
gd
d
d
| gg          k    sJ dS )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
1
1C;)))####<1####s''))**ce3333^^F<C.0BCCCCCV$$#sC0C12SD!Q12AtQ12Aq3$0A )B )B B B 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 0 ' ' ' ' ' ' ( ( ( ( ( (       , , , , , ,D D D D D D D D wv1wv1UQYQYAq6aV<<<!QAq6BBB1 1 1I I I 
= 
= 
=9 9 9/ / /. . .81F 1F 1Ff6 6 60  2 2 2( ( () ) )$ $ $ A  A  ADB B B B Br   