a
    lº”h¢;  ã                   @   s”  d Z ddlmZm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 ddlmZmZmZm Z m!Z!m"Z" ddl#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ddlm1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8 ddl9m:Z: dd„ Z;dd„ Z<dd„ Z=dd„ Z>dd„ Z?d d!„ Z@d"d#„ ZAd$d%„ ZBd&d'„ ZCd(d)„ ZDd*S )+z6Tests for solvers of systems of polynomial equations. é    )ÚZZÚQQ_I)ÚIÚIntegerÚRational)ÚS)Úsymbols)Úsqrt)ÚQQ)ÚUnsolvableFactorError)ÚOptions)ÚPoly)ÚCRootOf)Úsolve)Úflatten)ÚaÚbÚcÚxÚyÚz)ÚPolynomialError)Úsolve_poly_systemÚsolve_triangulatedÚsolve_biquadraticÚSolveFailedÚsolve_genericÚfactor_system_boolÚfactor_system_condÚfactor_system_polyÚfactor_systemÚ_factor_setsÚ_factor_sets_slow)Úparallel_poly_from_expr)Úraises)ÚEq)ÚsinÚcos)Úexpc                  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 sBJ ‚t ttd  ttd  gttƒtjtjfgkstJ ‚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ÈJ ‚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J ‚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srJ ‚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þJ ‚ddg}t ttd td  ƒttd ƒgƒ|ks4J ‚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sºJ ‚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(J ‚ttdd„ ƒ t td td t d  td d gttgddddgksvJ ‚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   © r8   r8   úN/var/www/auris/lib/python3.9/site-packages/sympy/solvers/tests/test_polysys.pyÚ<lambda>@   ó    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 )Nr6   r*   r4   )r   r   r   r   r8   r8   r8   r9   r:   A   s   6ÿc                   S   s   t dt gtƒS ©Nr)   ©r   r   r8   r8   r8   r9   r:   C   r;   c                   S   s   t td gttfƒS r<   r7   r8   r8   r8   r9   r:   E   s   ÿc                   S   s   t td gttfƒS r<   )r   r   r   r8   r8   r8   r9   r:   G   s   ÿF©Ústrictc                   S   s   t td t d gtgddS )Nr,   r)   Tr>   r=   r8   r8   r8   r9   r:   M   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>   r7   r8   r8   r8   r9   r:   S   s   $ÿ)r   r   r   ZOner   ZZeror   r   r   r	   r   ÚHalfr   r$   ÚNotImplementedErrorr   r   )Úf_1Úf_2Úf_3r   r   Zsolutionr8   r8   r9   Útest_solve_poly_system   sV    $24ÿ*ÿ
"0ÿ
ÿ
.*&"ÿÿ
(*ÿÿ
ÿrE   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øJ ‚tdt t td td t d  gˆ dd	tddƒdfgks<J ‚tt‡ fd
d„ƒ d S )NÚdomainr   r*   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   r8   ©Z	NewOptionr8   r9   r:   d   s   &ÿz$test_solve_generic.<locals>.<lambda>)	r   r   r   r   r	   r   r   r$   r   r8   r8   rG   r9   Útest_solve_genericW   s    (.,.,ýÿ&ÿþ
rH   c                     sH  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¢J ‚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sTJ ‚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ÒJ ‚t‡fd	d„t|
ƒD ƒƒsòJ ‚t|  d t| d  |d  }t| d t| d  |d  }t||gttƒ}
t|
ƒdkrdtd
d„ |
D ƒƒshJ ‚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süJ ‚ttf}||fD ]4}t
|g|¢R Ž \\‰ ‰‰tt‡ ‡‡fdd„ƒ qtd td  d td d f}t
|g|¢R Ž \\‰ ‰‰tˆ ˆˆƒg d¢ks”J ‚ddg}td td  d td d f}t
|g|¢R Ž \\‰ ‰‰tˆ ˆˆƒ|ksêJ ‚td td  d td t td  d f}t
|g|¢R Ž \\‰ ‰‰tˆ ˆˆƒ|ksDJ ‚d S )Nzx0 y0 x1 y1 rr)   r*   r+   c                 S   s   | j o| jtju S ©N)Zis_Powr(   r   r@   )Úexprr8   r8   r9   r:   y   r;   z(test_solve_biquadratic.<locals>.<lambda>c                 s   s   | ]}t |ƒd kV  qdS ©r*   N©Úlen©Ú.0Úrr8   r8   r9   Ú	<genexpr>€   r;   z)test_solve_biquadratic.<locals>.<genexpr>c                 3   s   | ]}|  ˆ ¡d kV  qdS ©r)   N)ÚcountrN   ©Úqueryr8   r9   rQ      r;   c                 s   s   | ]}t |ƒd kV  qdS rK   rL   rN   r8   r8   r9   rQ   ˆ   r;   c                 3   s    | ]}t | ˆ ¡ƒd kV  qdS rR   )rM   ÚfindrN   rT   r8   r9   rQ   ‰   r;   r   c                      s   t ˆ ˆˆƒS rI   )r   r8   )ÚfÚgÚoptr8   r9   r:   ’   r;   ))r.   r.   )r.   r)   r2   r3   )r   r.   )r   r)   )r   r   r   r	   r   r   rM   Úallr   r   r#   r$   r   r   )Zx0Zy0Úx1Úy1rP   rB   rC   Úsr   r   ÚresultÚs1Ús2ZgensÚseqZansr8   )rW   rX   rY   rU   r9   Útest_solve_biquadratich   sV      $  ,,ÿÿ
  &   & ""  ,rb   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sxJ ‚t tdƒ¡}t| ||gt tt|dddd|||f|||fgks¼J ‚ttd dt  d dƒttd dt  d dƒ }}t| ||gt ttd	d
ddd|||f|||fgks*J ‚d S )Nr*   r)   )r/   r0   r1   ©rF   r/   r0   r1   r   T©Ú	extension)r   r   r   r	   r   r
   Zalgebraic_fieldr   )rB   rC   rD   r   r   Údomr8   r8   r9   Útest_solve_triangulated    s    ÿÿ6ÿrg   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sjJ ‚t td d d td	 d d  d tgttƒ} t| ƒdksªJ ‚| d d dks¾J ‚| d d  d
d¡sÖJ ‚| d d dksêJ ‚| d d  dd¡sJ ‚d S )Nr,   r*   iÐ r-   r)   r   é   iW  g      à?gÌÑñ˜™7Àg   ¢”mBgÌÑñ˜™G@)	r   r   r   r   r   r@   r	   rM   Z
epsilon_eq)Úrootsr8   r8   r9   Útest_solve_issue_3686´   s    640rj   c                   C   s¸  t td dt  d gƒtd ggks*J ‚t td dt  d td dt  d gƒtd td ggkslJ ‚t td d gƒtd d ggks’J ‚t g ƒg gks¤J ‚t td td  dt t  td d gtdƒdtt ttdƒ gtt ttdƒ ggksJ ‚t td d td d gddtt tt gtt tt gtt tt gtt tt ggkshJ ‚t td d td d gtdtt tt gtt tt gtt tt gtt tt ggksÊJ ‚t dgƒg gksàJ ‚t dgƒg ksôJ ‚t dtgƒtggksJ ‚t ddtgƒg ks&J ‚t td d td	 d gƒtd d td t d gtd d td t d gtd d td gtd d td gtd td t d gtd td t d gtd td t d gtd td t d gtd td gtd td gtd td gtd td ggks4J ‚t td td  td td
  gƒtd td
 gtd ggksxJ ‚t ttƒd ttƒd  d tgƒtttƒd ttƒd  d ggksÄJ ‚t ttƒd ttƒd  d gƒttƒd ttƒd  d ggksJ ‚t ttƒd ttƒd  gƒttƒd ttƒd  ggksLJ ‚t t	t tt	gƒtt	ggksnJ ‚t t	t tt	gttgƒg ksJ ‚t t	d t tgttgƒttggksºJ ‚t t	t td  t
t tgttgƒg ksèJ ‚t t	t td  t
t tgtttgƒtd ttgtttggks,J ‚t t	t td  t
t tgƒtd ttgtttgtd t
tgtt
tgtt	tgt	t
tggksŒJ ‚t td d gtgƒg ks¬J ‚t td d gtgƒtd d ggksØJ ‚t ttƒd ttƒd  ttƒd ttƒd  d gƒttƒd ttƒd  d ttƒttƒ gttƒd ttƒd  d ttƒ ttƒ ggkspJ ‚t ttƒttƒ d d ttƒd ttƒd  tdt ƒ gƒttƒd ttƒd  tdt ƒ ttƒttƒ d gttƒd ttƒd  tdt ƒ ttƒttƒ d ggks&J ‚t ttƒttƒ ttƒ d ttƒttƒ ttƒ d gƒttƒttƒ ttƒttƒ  d ttƒ ttƒ ttƒttƒ  d ggks´J ‚d S )Nr*   r)   rd   T)Zgaussianrc   r   r4   é   r+   )r    r   r   r	   r   r   r   r&   r'   r   r   r   r(   r8   r8   r8   r9   Útest_factor_systemÁ   s     *B&2þüüô"þ"ÿ ÿÿ""*.$þú	 ,6*,þ>66þ:Hÿrl   c                  C   sº  dd„ } dd„ }dd„ }dd„ }t | td d ƒ| td d ƒgƒ| td ƒ| td ƒg| td ƒ| td ƒg| td ƒ| td ƒg| td ƒ| td ƒggks¤J ‚t | td d ƒgƒ| td ƒg| td ƒggksÚJ ‚t |td t t ƒ|td t t ƒgƒ|td ƒg|td ƒg|tƒ|tƒggks6J ‚t | td td d  ƒ| ttd  ƒgƒ| tƒg| td ƒggks€J ‚t |td tt  ƒ|td tt  ƒgƒ|tt ƒ|tt ƒg|tƒggksÔJ ‚t |td td  ƒ|td	 td  ƒgƒ|td ƒg|td ƒ|td	 ƒggks,J ‚t |td d ƒgƒ|tt ƒg|tt ƒggksdJ ‚t g ƒg gksxJ ‚t | dƒgƒg ksJ ‚t | d
ƒ| tƒgƒ| tƒggks¶J ‚d S )Nc                 S   s
   t | tƒS rI   )r   r   ©Úer8   r8   r9   r:   +  r;   z)test_factor_system_poly.<locals>.<lambda>c                 S   s   t | ttttf dS ©Nrc   )r   r   r   r   r   rm   r8   r8   r9   r:   ,  r;   c                 S   s   t | ttdS ro   )r   r   r   rm   r8   r8   r9   r:   -  r;   c                 S   s   t | tttfƒS rI   )r   r   r   r   rm   r8   r8   r9   r:   .  r;   r*   r)   r4   r+   r   )r   r   r   r   r   r   r   )ZpxZpxabZpxIZpxyzr8   r8   r9   Útest_factor_system_poly)  s@    "ü
6*ý*þ*þ*þ8rp   c                	   C   sì  t td d td d gƒtd td gtd td gtd td gtd td ggks\J ‚t dgƒg ksnJ ‚t dgƒg gks‚J ‚t dtgƒg ks–J ‚t dtgƒtggks®J ‚t g ƒg gksÀJ ‚t td tt  gƒtt gtggksêJ ‚t td td  td td  gtgƒtd gtd td ggks2J ‚t ttd  tgtgƒtd tgttggksdJ ‚t tt td  tt tgttgƒtd ttgtttgtd ttgtttgtttgtttggksÊJ ‚t ttd  tgttgƒtd tgttggksþJ ‚t tt ttgttgƒttggks&J ‚t tt tt gttgƒtgttggksTJ ‚t tt t tgttgƒttgttt ggksˆJ ‚t tt t tgƒttgttgttggks¸J ‚t td t tgttgƒttgttggksèJ ‚d S )Nr*   r)   r4   r   r+   )r   r   r   r   r   r   r8   r8   r8   r9   Útest_factor_system_condV  s>    ü
*&þ2"ú	4(.40rq   c                  C   sâ  t td  td  ttd  td  td  g} t| ttgƒttd dƒtt dƒttdƒ@ B tt dƒttd dƒ@ B tt dƒttd dƒ@ B ttdƒttd dƒ@ B ttd dƒttd dƒ@ B ttd dƒttd dƒ@ B ksäJ ‚ttd gtgƒttd dƒks
J ‚ttd td  gtgƒttd dƒttd dƒB ksFJ ‚tg tgƒdks\J ‚tdgtgƒdkstJ ‚tdgtgƒdksŒJ ‚tt gtgƒtt dƒksªJ ‚tt t tt gttgƒtt dƒttdƒ@ ksÜJ ‚tt t tt t t gttgƒtt dƒttdƒ@ tt dƒttdƒ@ B tt dƒttdƒ@ B ks>J ‚tt t tt gttgƒttdƒtt dƒttdƒ@ B ks|J ‚tt t t tgttgƒttdƒttdƒ@ ttdƒtt t dƒ@ B ksÈJ ‚tt d t tgttgƒtt dƒttdƒ@ ttdƒttdƒ@ B ksJ ‚tt t t tt t gtttgƒttdƒtt dƒttdƒ@ B tt dƒttdƒ@ B ttdƒttdƒ@ B ttdƒttdƒ@ B ks”J ‚tt td  tgtgƒtt dƒttdƒ@ ttd dƒttdƒ@ B ksÞJ ‚d S )Nr)   r*   r   TF)r   r   r   r   r   r%   r   )Zeqsr8   r8   r9   Útest_factor_system_boolƒ  sp    0ÿþýüûúÿ
&<2þý ÿþþ"ÿþýüÿ
ÿÿrr   c                     s”   ddl m‰  d‡ fdd„	} ddgddggddgdd	ggdgddgdggg}|D ]}t|ƒt|ƒksNJ ‚qNtd
ƒD ]}| ƒ }t|ƒt|ƒkspJ ‚qpd S )Nr   ©Úrandintr+   r*   r-   c                    s   ‡ ‡‡fdd„t | ƒD ƒS )Nc                    s*   g | ]"}‡ ‡fd d„t ˆdˆƒƒD ƒ‘qS )c                    s   g | ]}ˆd ˆ ƒ‘qS )r   r8   ©rO   Ú_)Úmax_valrt   r8   r9   Ú
<listcomp>¿  r;   zOtest_factor_sets.<locals>.generate_random_system.<locals>.<listcomp>.<listcomp>r)   ©Úrangeru   )rw   Ú	n_factorsrt   r8   r9   rx   ¾  s   ÿzDtest_factor_sets.<locals>.generate_random_system.<locals>.<listcomp>ry   )Zn_eqsr{   rw   rs   )rw   r{   r9   Úgenerate_random_system½  s    þz0test_factor_sets.<locals>.generate_random_systemr)   r4   éd   )r+   r*   r-   )Úrandomrt   r!   r"   rz   )r|   Z
test_casesZcaserv   Úsystemr8   rs   r9   Útest_factor_sets¹  s    ýr€   N)EÚ__doc__Zsympy.polys.domainsr   r   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.polys.rootoftoolsr   Zsympy.solvers.solversr   Zsympy.utilities.iterablesr   Z	sympy.abcr   r   r   r   r   r   Zsympy.polysr   Zsympy.solvers.polysysr   r   r   r   r   r   r   r   r    r!   r"   r#   Zsympy.testing.pytestr$   Zsympy.core.relationalr%   Z(sympy.functions.elementary.trigonometricr&   r'   Z&sympy.functions.elementary.exponentialr(   rE   rH   rb   rg   rj   rl   rp   rq   rr   r€   r8   r8   r8   r9   Ú<module>   s<    498h--6