o
    8Va                     @   s   d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
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 ddlmZ ddlmZ dd	 Zd
d Zdd Zdd ZdS )z6Tests for solvers of systems of polynomial equations.     )
flattenIIntegerPolyQQRationalSsqrtsolvesymbols)xyz)PolynomialError)solve_poly_systemsolve_triangulatedsolve_biquadraticSolveFailed)parallel_poly_from_expr)raisesc                  C   s  t td gttjfgksJ t tt tt d gttd u s!J t ttd  ttd  gtttjtjfgks:J 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sdJ t tt dt  dtd  td  gttddt	d fdt	dfgksJ 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sJ 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sJ ddg}t ttd td  ttd g|ksJ t td td  td gtt|ks,J t td td  td g|ks?J t ttt  d ttt  d gttddgksZJ ttdd  ttdd  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$   B/usr/lib/python3/dist-packages/sympy/solvers/tests/test_polysys.py<lambda>/   s    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&   0   s    6c                   S   s   t dt gtS )Nr   )r   r   r$   r$   r$   r%   r&   2   s    )r   r   r   ZOner   ZZeror   r   r   r	   r   Halfr   r   NotImplementedErrorr   )f_1f_2f_3abZsolutionr$   r$   r%   test_solve_poly_system   s>   $24*"0.*&"
r.   c                     s@  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sQJ 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sJ 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 sJ tfd	dt|
D sJ t|  d t| d  |d  }t| d t| d  |d  }t||gtt}
t|
dkr.td
d |
D s0J tfddt|
D s@J tt t td t f}t	|tditdtdigks]J tt t td t f}t	|tditdtdigkszJ ttf}||fD ]}t
|g|R  \\ tt fdd qtd td  d td d f}t
|g|R  \\ t g dksJ ddg}td td  d td d f}t
|g|R  \\ t |ksJ td td  d td t td  d f}t
|g|R  \\ t |ksJ d S )Nzx0 y0 x1 y1 rr   r   r   c                 S   s   | j o| jtju S N)Zis_PowZexpr   r'   )exprr$   r$   r%   r&   F   s    z(test_solve_biquadratic.<locals>.<lambda>c                 s       | ]	}t |d kV  qdS r   Nlen.0rr$   r$   r%   	<genexpr>M       z)test_solve_biquadratic.<locals>.<genexpr>c                 3   s    | ]
}|  d kV  qdS r   N)countr5   queryr$   r%   r8   N   s    c                 s   r1   r2   r3   r5   r$   r$   r%   r8   U   r9   c                 3   s"    | ]}t | d kV  qdS r:   )r4   findr5   r<   r$   r%   r8   V   s     r   c                      s   t  S r/   )r   r$   )fgoptr$   r%   r&   _   s    ))r   r   )r   r   r   r    )r   r   )r   r   )r   r   r   r	   r   r   r4   allr   r
   r   r   r   r   )Zx0Zy0Zx1Zy1r7   r)   r*   sr,   r-   results1s2ZgensseqZansr$   )r?   r@   rA   r=   r%   test_solve_biquadratic5   sV     $  ,,  "  & ""  ,rH   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g dks<J ttd}t| ||gt tt|dddd|||f|||fgks^J d S )Nr   r   )r   r   r   )domainr   r   r   )r   r   r   r	   r   r   Zalgebraic_field)r)   r*   r+   r,   r-   Zdomr$   r$   r%   test_solve_triangulatedm   s   rJ   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s5J t td d d td	 d d  d tgtt} t| dksUJ | d d dks_J | d d d
dskJ | d d dksuJ | d d ddsJ d S )Nr   r   i r   r   r      iW  g      ?g7g   mBgG@)	r   r   r   r   r   r'   r	   r4   Z
epsilon_eq)rootsr$   r$   r%   test_solve_issue_3686}   s   640rM   N)__doc__Zsympyr   r   r   r   r   r   r   r	   r
   r   Z	sympy.abcr   r   r   Zsympy.polysr   Zsympy.solvers.polysysr   r   r   r   Zsympy.polys.polytoolsr   Zsympy.testing.pytestr   r.   rH   rJ   rM   r$   r$   r$   r%   <module>   s    0(8