U
    ZÊ¹jÙ  ã                   @   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sÈt‚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�sþt‚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�s„t‚t ttt  d ttt  d gttƒddgk�sºt‚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(   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/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   6ÿc                   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søt‚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s¢t‚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�rÎtdd„ |
D ƒƒ�sÒt‚t‡fd	d„t	|
ƒD ƒƒ�sòt‚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 ƒƒ�sˆt‚tt t td t f}t
|ƒtditdtdigk�sÂt‚tt t td t f}t
|ƒtditdtdigk�süt‚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�s”t‚ddg}td td  d td d f}t|f|žŽ \\‰ ‰‰tˆ ˆˆƒ|k�sèt‚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s¾t‚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sªt‚| d d dks¾t‚| d d  	d
d¡sÖt‚| d d dksêt‚| d d  	dd¡�st‚d S )Nr   r   i�Ð r   r   r   é   iW  g      à?gÌÑñ˜™7Àg   ¢”mBgÌÑñ˜™G@)
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