o
    ª3Ih¢;  ã                   @   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 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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s·J ‚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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„ ƒ 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s¸J ‚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   ú`/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-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 )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   ó    c                   S   s   t td gttfƒS r;   r7   r8   r8   r8   r9   r:   E   ó    ÿc                   S   s   t td gttfƒS r;   )r   r   r   r8   r8   r8   r9   r:   G   r>   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   ÚOner   ÚZeror   r   r   r	   r   ÚHalfr   r$   ÚNotImplementedErrorr   r   )Úf_1Úf_2Úf_3r   r   Úsolutionr8   r8   r9   Útest_solve_poly_system   sV   $24ÿ*ÿ"0ÿÿ.*&"ÿ
ÿ(*ÿ
ÿÿrI   c                      sP  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sJ ‚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   ©Ú	NewOptionr8   r9   r:   d   s    &ÿz$test_solve_generic.<locals>.<lambda>)	r   r   r   r   r	   r   r   r$   r   r8   r8   rK   r9   Útest_solve_genericW   s   (.,.,ýÿ&ÿþrM   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s©J ‚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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„ƒ 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sJ ‚d S )Nzx0 y0 x1 y1 rr)   r*   r+   c                 S   s   | j o| jtju S ©N)Úis_Powr(   r   rC   )Úexprr8   r8   r9   r:   y   s    z(test_solve_biquadratic.<locals>.<lambda>c                 s   ó    | ]	}t |ƒd kV  qdS ©r*   N©Úlen©Ú.0Úrr8   r8   r9   Ú	<genexpr>€   ó   € z)test_solve_biquadratic.<locals>.<genexpr>c                 3   s    | ]
}|  ˆ ¡d kV  qdS ©r)   N)ÚcountrU   ©Úqueryr8   r9   rX      s   € c                 s   rQ   rR   rS   rU   r8   r8   r9   rX   ˆ   rY   c                 3   s"    | ]}t | ˆ ¡ƒd kV  qdS rZ   )rT   ÚfindrU   r\   r8   r9   rX   ‰   s   €  r   c                      s   t ˆ ˆˆƒS rN   )r   r8   )ÚfÚgÚoptr8   r9   r:   ’   s    ))r.   r.   )r.   r)   r2   r3   )r   r.   )r   r)   )r   r   r   r	   r   r   rT   Úallr   r   r#   r$   r   r   )Úx0Úy0Úx1Úy1rW   rE   rF   Úsr   r   ÚresultÚs1Ús2ÚgensÚseqÚansr8   )r_   r`   ra   r]   r9   Útest_solve_biquadratich   sV     $  ,,ÿÿ  "  & ""  ,rn   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 ‚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   ©rJ   r/   r0   r1   r   T©Ú	extension)r   r   r   r	   r   r
   Úalgebraic_fieldr   )rE   rF   rG   r   r   Údomr8   r8   r9   Útest_solve_triangulated    s   ÿÿ6ÿrt   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      à?gÌÑñ˜™7Àg   ¢”mBgÌÑñ˜™G@)	r   r   r   r   r   rC   r	   rT   Ú
epsilon_eq)Úrootsr8   r8   r9   Útest_solve_issue_3686´   s   640rx   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s6J ‚t td d gƒtd d ggksIJ ‚t g ƒg gksRJ ‚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s²J ‚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s•J ‚t td td  td td
  gƒtd td
 gtd ggks·J ‚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s!J ‚t t	t tt	gƒtt	ggks2J ‚t t	t tt	gttgƒg ksCJ ‚t t	d t tgttgƒttggksXJ ‚t t	t td  t
t tgttgƒg ksoJ ‚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s3J ‚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)   rp   T)Úgaussianro   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ÿr{   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sRJ ‚t | td d ƒgƒ| td ƒg| td ƒggksmJ ‚t |td t t ƒ|td t t ƒgƒ|td ƒg|td ƒg|tƒ|tƒggksšJ ‚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s/J ‚t g ƒg gks9J ‚t | dƒgƒg ksEJ ‚t | d
ƒ| tƒgƒ| tƒggksXJ ‚d S )Nc                 S   s
   t | tƒS rN   )r   r   ©Úer8   r8   r9   r:   +  s   
 z)test_factor_system_poly.<locals>.<lambda>c                 S   s   t | ttttf dS ©Nro   )r   r   r   r   r   r|   r8   r8   r9   r:   ,  ó    c                 S   s   t | ttdS r~   )r   r   r   r|   r8   r8   r9   r:   -  s    c                 S   s   t | tttfƒS rN   )r   r   r   r   r|   r8   r8   r9   r:   .  r=   r*   r)   r4   r+   r   )r   r   r   r   r   r   r   )ÚpxÚpxabÚpxIÚpxyzr8   r8   r9   Útest_factor_system_poly)  s@   "
ü6*
ý*
þ*
þ*þ8*r„   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s7J ‚t dgƒg gksAJ ‚t dtgƒg ksKJ ‚t dtgƒtggksWJ ‚t g ƒg gks`J ‚t td tt  gƒtt gtggksuJ ‚t td td  td td  gtgƒtd gtd td ggks˜J ‚t ttd  tgtgƒtd tgttggks°J ‚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s&J ‚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sXJ ‚t td t tgttgƒttgttggkspJ ‚d S )Nr*   r)   r4   r   r+   )r   r   r   r   r   r   r8   r8   r8   r9   Útest_factor_system_condV  s>   
ü*&
þ0"
ú2	(.404r…   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srJ ‚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s¡J ‚tg tgƒdks«J ‚tdgtgƒdks¶J ‚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s7J ‚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sJ ‚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   )Úeqsr8   r8   r9   Útest_factor_system_boolƒ  sp   0ÿþýüûúÿ$
:0þý ÿþþ"ÿþýü
ÿÿÿr‡   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s3J ‚q'td
ƒD ]}| ƒ }t|ƒt|ƒksGJ ‚q8d 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   ©rV   Ú_)Úmax_valr‰   r8   r9   Ú
<listcomp>¿  r   zOtest_factor_sets.<locals>.generate_random_system.<locals>.<listcomp>.<listcomp>r)   ©ÚrangerŠ   )rŒ   Ú	n_factorsr‰   r8   r9   r   ¾  s    ÿÿzDtest_factor_sets.<locals>.generate_random_system.<locals>.<listcomp>rŽ   )Ún_eqsr   rŒ   rˆ   )rŒ   r   r9   Úgenerate_random_system½  s   þz0test_factor_sets.<locals>.generate_random_systemr)   r4   éd   )r+   r*   r-   )Úrandomr‰   r!   r"   r   )r’   Ú
test_casesÚcaser‹   Úsystemr8   rˆ   r9   Útest_factor_sets¹  s   ýþr˜   N)EÚ__doc__Úsympy.polys.domainsr   r   Úsympy.core.numbersr   r   r   Úsympy.core.singletonr   Úsympy.core.symbolr   Ú(sympy.functions.elementary.miscellaneousr	   Ú!sympy.polys.domains.rationalfieldr
   Úsympy.polys.polyerrorsr   Úsympy.polys.polyoptionsr   Úsympy.polys.polytoolsr   Úsympy.polys.rootoftoolsr   Úsympy.solvers.solversr   Úsympy.utilities.iterablesr   Ú	sympy.abcr   r   r   r   r   r   Úsympy.polysr   Úsympy.solvers.polysysr   r   r   r   r   r   r   r   r    r!   r"   r#   Úsympy.testing.pytestr$   Úsympy.core.relationalr%   Ú(sympy.functions.elementary.trigonometricr&   r'   Ú&sympy.functions.elementary.exponentialr(   rI   rM   rn   rt   rx   r{   r„   r…   r‡   r˜   r8   r8   r8   r9   Ú<module>   s>     498h--6