U
    0e                     @   s  d Z ddlmZmZm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 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mZ ddlmZ ddlmZmZm Z m!Z!m"Z" ddlm#Z# ddl$m%Z% dd Z&dd Z'dd Z(dd Z)dd Z*dS )z6Tests for solvers of systems of polynomial equations.     )IIntegerRational)S)symbols)sqrt)QQ)UnsolvableFactorError)Options)Poly)solve)flatten)xyz)PolynomialError)solve_poly_systemsolve_triangulatedsolve_biquadraticSolveFailedsolve_generic)parallel_poly_from_expr)raisesc                  C   s  t td gttjfgkstt tt tt d gttd ksBtt ttd  ttd  gtttjtjfgksttt dt d ttdd dt  tdt  gttttddt	dt	dfgkstt tt dt  dtd  td  gttddt
d fdt
dfgkstt ttd  ttd  d gttt t
tj tddftt
tj tddfgksrttd t t d } ttd  t d }tt td  d }t
dd t
d d  }}t | ||gtttdd	d
|||f|||fgkstddg}t ttd td  ttd g|ks4tt td td  td gtt|ks^tt td td  td g|kstt ttt  d ttt  d gttddgkstttdd  ttdd  ttdd  ttdd  ttdd  t td t d gtgddg ks(tttdd  t td td t d  td d gttgddddgksvtttdd  d S )N            
   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      ))r   r   c                   S   s   t td td  gttS )Nr   r   r   r    r(   r(   D/tmp/pip-unpacked-wheel-_6tpq7m6/sympy/solvers/tests/test_polysys.py<lambda>8       z(test_solve_poly_system.<locals>.<lambda>c                   S   s<   t tdt td  t td t  td t d  d gS )Nr&   r   r$   )r   r   r   r   r(   r(   r(   r)   r*   9   s   6c                   S   s   t dt gtS Nr   r   r   r(   r(   r(   r)   r*   ;   r+   c                   S   s   t td gttfS r,   r'   r(   r(   r(   r)   r*   =   s    c                   S   s   t td gttfS r,   )r   r   r   r(   r(   r(   r)   r*   ?   s    Fstrictc                   S   s   t td t d gtgddS )Nr   r   Tr.   r-   r(   r(   r(   r)   r*   E   s     c                   S   s2   t td td t d  td d gttgddS )Nr   r   r   Tr.   r'   r(   r(   r(   r)   r*   K   s   $ )r   r   r   ZOneAssertionErrorr   ZZeror   r   r   r   r   Halfr   r   NotImplementedErrorr   r	   )f_1f_2f_3abZsolutionr(   r(   r)   test_solve_poly_system   sZ    $24*
"0

.*&  
(*
r8   c                      sR  t ttfddi ttd dtd   td t d g tdtdt   tddtdt d  ftdtdt  tddtdt d  ftdtdt   tddtdt d  ftdtdt  tddtdt d  fgksttdt t td td t d  g dd	tdddfgks<ttt	 fd
d d S )NdomainZZZr   r   r   r   r   Fr.   c                      s.   t dt t td td t d  g ddS )Nr   r   r   Tr.   )r   r   r   r(   Z	NewOptionr(   r)   r*   \   s   "  z$test_solve_generic.<locals>.<lambda>)
r
   r   r   r   r   r   r   r0   r   r	   r(   r(   r:   r)   test_solve_genericO   s     (.,.,"  
r;   c                     sD  t d\} }}}}td d td d  |d  }td d td d  |d  }td|d  d }d| d }d| d }	t||gtt||	f|	|fgksttd d td d  |d  }td d td d  |d  }t||gttdtd| d d| d  d  tddfdtd| d d| d  d  tddfgksTtdd td d td d  |d  }t| d td d  |d  }t||gtt}
t|
dkrtdd |
D sttfd	dt	|
D stt|  d t| d  |d  }t| d t| d  |d  }t||gtt}
t|
dkrdtd
d |
D shttfddt	|
D sttt t td t f}t
|tditdtdigksttt t td t f}t
|tditdtdigkstttf}||fD ]2}t|f| \\ tt fdd qtd td  d td d f}t|f| \\ t ddddgkstddg}td td  d td d f}t|f| \\ t |ksttd td  d td t td  d f}t|f| \\ t |ks@td S )Nzx0 y0 x1 y1 rr   r   r   c                 S   s   | j o| jtjkS N)Zis_Powexpr   r1   )exprr(   r(   r)   r*   q   r+   z(test_solve_biquadratic.<locals>.<lambda>c                 s   s   | ]}t |d kV  qdS r   Nlen.0rr(   r(   r)   	<genexpr>x   s     z)test_solve_biquadratic.<locals>.<genexpr>c                 3   s   | ]}|  d kV  qdS r   N)countrB   queryr(   r)   rE   y   s     c                 s   s   | ]}t |d kV  qdS r?   r@   rB   r(   r(   r)   rE      s     c                 3   s    | ]}t | d kV  qdS rF   )rA   findrB   rH   r(   r)   rE      s     r   c                      s   t  S r<   )r   r(   )fgoptr(   r)   r*      r+   )r   r   )r   r   r"   r#   )r   r   )r   r   )r   r   r   r   r   r0   r   rA   allr   r   r   r   r   r   )Zx0Zy0x1y1rD   r3   r4   sr6   r7   results1s2ZgensseqZansr(   )rK   rL   rM   rI   r)   test_solve_biquadratic`   s`      $  ,,
  &   & "" 
    ,rV   c                  C   s   t d t t d } t td  t d }t t td  d }tdd td d  }}t| ||gt ttdddgksztttd}t| ||gt tt|dddd|||f|||fgkstd S )Nr   r   r   r    r!   )r9   )r   r   r   r   r   r0   r   Zalgebraic_field)r3   r4   r5   r6   r7   domr(   r(   r)   test_solve_triangulated   s    rX   c                  C   s  t td d d ttdd d d  d tgtt} | dtjdtd  fdtjdtd  fgksjtt td d d td	 d d  d tgtt} t| dkst| d d dkst| d d 	d
dst| d d dkst| d d 	ddstd S )Nr   r   i r   r   r      iW  g      ?g7g   mBgG@)
r   r   r   r   r   r1   r   r0   rA   Z
epsilon_eq)rootsr(   r(   r)   test_solve_issue_3686   s    640r[   N)+__doc__Zsympy.core.numbersr   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z!sympy.polys.domains.rationalfieldr   Zsympy.polys.polyerrorsr	   Zsympy.polys.polyoptionsr
   Zsympy.polys.polytoolsr   Zsympy.solvers.solversr   Zsympy.utilities.iterablesr   Z	sympy.abcr   r   r   Zsympy.polysr   Zsympy.solvers.polysysr   r   r   r   r   r   Zsympy.testing.pytestr   r8   r;   rV   rX   r[   r(   r(   r(   r)   <module>   s(   98