o
    à8VaÍN  ã                   @   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mZmZmZmZmZmZmZmZmZmZmZmZ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&m'Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3 ddl4m5Z5 dd	l6m7Z7m8Z8 e 9¡ 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d„ ZEd d!„ ZFd"d#„ ZGd$d%„ ZHd&d'„ ZId(d)„ ZJe8d*d+„ ƒZKd,d-„ ZLd.d/„ ZMd0d1„ ZNd2d3„ ZOd4d5„ ZPe8d6d7„ ƒZQd8d9„ ZRd:d;„ ZSd<d=„ ZTd>d?„ ZUd@S )AzFTests for tools for solving inequalities and systems of inequalities. é    ) ÚAndÚEqÚ	FiniteSetÚGeÚGtÚIntervalÚLeÚLtÚNeÚooÚIÚOrÚSÚsinÚcosÚtanÚsqrtÚSymbolÚUnionÚIntegralÚSumÚFunctionÚPolyÚPurePolyÚpiÚrootÚlogÚexpÚDummyÚAbsÚ	PiecewiseÚRational)Úreduce_inequalitiesÚsolve_poly_inequalityÚreduce_rational_inequalitiesÚsolve_univariate_inequalityÚreduce_abs_inequalityÚ_solve_inequality)Úrootof)Úsolve)Úsolveset)ÚxÚy)ÚMod)ÚraisesÚXFAILc                   C   sd   t tdtƒdƒtjgksJ ‚t tdtƒdƒtjgksJ ‚t ttd tƒdƒtdtddƒgks0J ‚d S )Nr   z==é   ú>éÿÿÿÿTF)	Úpsolver   r+   r   ÚRealsÚEmptySetr   r   r   © r6   r6   úG/usr/lib/python3/dist-packages/sympy/solvers/tests/test_inequalities.pyÚtest_solve_poly_inequality   s   ,r8   c               	   C   sÔ  t ttd dƒggtddtdƒksJ ‚t ttd dƒggtddtdƒks(J ‚t ttd dƒggtddtjks;J ‚tjrQt t	td dƒggtddtj
ksYJ ‚tt tƒsYJ ‚t ttd dƒggtddtdƒ tj
¡ksqJ ‚t ttd dƒggtddtdƒ tj
¡ks‰J ‚t ttd dƒggtddtddƒksžJ ‚t ttd dƒggtddtddƒks³J ‚t ttd dƒggtddtddddƒksÊJ ‚t t	td dƒggtddttt dƒtdtƒƒksæJ ‚t ttd dƒggtddtddƒ tj
¡ksÿJ ‚t ttd dƒggtddtddƒ tj
¡ksJ ‚t ttd dƒggtddtd	dƒ ¡ ks1J ‚t ttd dƒggtddtd	dƒksGJ ‚t ttd dƒggtddtd	dddƒks_J ‚t t	td dƒggtddttt d	ƒtdtƒƒks|J ‚t ttd dƒggtddttt d	dd
tdtddƒksJ ‚t ttd dƒggtddtd	dƒ tj
¡ks·J ‚tdƒ} t ttd d dƒttd d dƒggtddtjksÙJ ‚t ttd d dƒt	td d dƒggtddtddƒksùJ ‚t ttd d dƒt	td d dƒggtddtt|  dddƒtd| ddƒƒks$J ‚t ttd d dƒttd d dƒggtddtt|  dddƒtd| ddƒƒksOJ ‚t ttd d dƒt	td d dƒggtddtt|  dddƒtd| ddƒƒkszJ ‚t ttd d dƒttd d dƒggtddtt|  dddƒtd| ddƒƒks¥J ‚t ttd d dƒttd d dƒggtddtt|  dddƒtddddƒtd| ddƒƒksÖJ ‚t ttd d	ƒggtƒtju sèJ ‚d S )Né   r   F©Z
relationalr0   r2   Tç      ð?g      ð¿)Z
right_open)Z	left_open)r$   r   r+   r   r   r	   r   r5   Zis_realr   r4   r   r   r   Z
complementr
   r   ÚevalfÚinfr   Zfalse)Úsr6   r6   r7   Ú+test_reduce_poly_inequalities_real_interval    s$  ÿÿÿÿÿÿþÿþ
þÿþÿþÿÿÿÿÿÿÿþÿþÿ
þÿÿ
ÿÿ
ÿÿÿ
ÿÿ
þÿÿ
þÿÿ
þÿÿÿ
ÿÿÿ
ÿ(ÿ
þ(ÿ
þ(ÿ
þ(ÿ
þ(ÿÿ
þ(r?   c               
   C   s  t ttd dƒggtddttdƒksJ ‚t ttd dƒggtddttdƒks*J ‚t ttd dƒggtdddks<J ‚t ttd dƒggtddttt tƒtttƒƒksXJ ‚t ttd dƒggtddtttt ƒtttƒt	tdƒƒksxJ ‚t t	td dƒggtddtttt ƒtttƒt	tdƒƒks˜J ‚t
jt
dƒfD ]ë} | t }t ttd | ƒggtddttt|  ƒtt| ƒƒksÁJ ‚t ttd | ƒggtddttt|  tƒtt| ƒƒƒksßJ ‚t ttd | ƒggtddttt|  tƒtt| ƒƒƒksýJ ‚t ttd | ƒggtddtttt| tƒtt|ƒƒttt|  ƒt| tƒƒƒƒks)J ‚t ttd | ƒggtddtttt| tƒtt|  ƒƒtt| tƒtt|ƒƒƒƒksUJ ‚t t	td | ƒggtddttt| tƒtt|  ƒƒtt|  tƒtt| ƒƒtt| tƒtt|ƒƒƒksŠJ ‚qŸd S )Nr9   r   Tr:   Fr;   )r$   r   r+   r   r	   r   r   r   r   r
   r   ÚOner   )Zoner=   r6   r6   r7   Ú0test_reduce_poly_inequalities_complex_relationalk   s„   ÿÿÿÿÿÿÿÿÿþÿþÿþÿþÿþÿ4
þÿ4
þÿþþïrA   c                   C   sV  t g tƒdks	J ‚t td dt  d td d  dkggtddtt t d¡tdd	ƒt d
t¡ƒks6J ‚t dt d dt  td d td d   dk ggtddtt dd¡t dd¡ƒksdJ ‚t td td  dkggtddt d	d¡ks}J ‚t td d
t  d td  dkggtddtt dd	¡t dt¡ƒks£J ‚t td d td d  dk ggtddtt dd¡t dd
¡ƒksÇJ ‚t dt d td
  dkggtddtt t d¡t tddƒt¡ƒksíJ ‚t td t dt kggtddtt t d¡t dd
¡ƒksJ ‚t ttk tdkt tk ggtddtdtƒks)J ‚d S )NFr9   é   é   r   r:   éüÿÿÿéþÿÿÿr2   é   é
   é   éûÿÿÿr0   éýÿÿÿé   )	r$   r+   r   r   Úopenr   ÚRopenr!   ÚLopenr6   r6   r6   r7   Ú1test_reduce_rational_inequalities_real_relational“   sT   *ÿ"þ4þýÿ
þ&ÿþ"ÿþÿ þÿ
þÿÿrO   c               	      s¤  t td ƒdk } ttdtƒttdƒƒ}t| ƒ|ksJ ‚t| tƒ|ks$J ‚tt td ƒƒttdƒks3J ‚tt dt d ƒdkƒttttddƒtƒttt	ƒƒttttddƒƒtt	 tƒƒƒks_J ‚tt td ƒt dt d ƒ dk ƒttt
jtƒttdƒƒksJ ‚tt td ƒt dt tƒ d ƒ dk ƒttt
dƒtk td	k ƒtt
jtk tdk ƒƒks«J ‚td
dd‰ tt‡ fdd„ƒ ttdk tˆ gdtt	 tk tdk ƒksÐJ ‚d S )NrH   rB   r9   rK   iõÿÿÿrF   é   rE   r2   ÚnrF)Zextended_realc                      s   t tˆ d ƒdk ƒS )NrH   rB   )r"   Úabsr6   ©rQ   r6   r7   Ú<lambda>Æ   ó    z.test_reduce_abs_inequalities.<locals>.<lambda>©Úsymbols)rR   r+   r   r	   r"   r   r   r   r!   r   r   ÚHalfr   r.   Ú	TypeError)ÚeÚansr6   rS   r7   Útest_reduce_abs_inequalities·   s2   ÿÿÿ
ÿÿÿ&*ÿ0r\   c                   C   s`   t ttdƒt dƒƒttdƒd tkttk ƒksJ ‚t td dkƒttjtk ttk ƒks.J ‚d S )Nr9   r0   r   )r"   r   r   r+   r   r   r   ÚNegativeOner6   r6   r6   r7   Ú test_reduce_inequalities_generalÊ   s   4,r^   c                   C   s`   t ttd dƒdgƒttdƒksJ ‚t ttd dƒdgƒdks!J ‚t td dkƒtju s.J ‚d S )Nr9   r   TF)r"   r   r+   r   Útruer6   r6   r6   r7   Ú test_reduce_inequalities_booleanÏ   s   ÿÿr`   c                
   C   sŽ   t ttd dƒttd dƒgƒtttttjtƒt	tt
ƒƒtttdƒt	t
 tƒƒƒttttjtƒt	tt
ƒƒtttdƒt	t
 tƒƒƒƒksEJ ‚d S )Nr9   r0   r2   )r"   r   r+   r,   r   r   r   r   r@   r	   r   r6   r6   r6   r7   Ú%test_reduce_inequalities_multivariateÖ   s    00þra   c                   C   s    t tdd„ ƒ t tdd„ ƒ d S )Nc                   S   s   t tttƒt dƒƒS )Nr0   )r"   r   r   r+   r6   r6   r6   r7   rT   Ý   ó    z1test_reduce_inequalities_errors.<locals>.<lambda>c                   S   s   t ttd t t dƒƒS ©Nr9   r0   )r"   r   r+   r,   r6   r6   r6   r7   rT   Þ   s    )r.   ÚNotImplementedErrorr6   r6   r6   r7   Útest_reduce_inequalities_errorsÜ   s   re   c                   C   s¦   t tt dk tgdtdt k ksJ ‚t tt dktgdttk tt d k@ ks+J ‚t tdtt ƒtgdtttƒks>J ‚t tdtt ƒtgdtttƒksQJ ‚d S )Nr0   rV   r   )r"   r+   r,   r   r   r
   r6   r6   r6   r7   Útest__solve_inequalitiesá   s   &0&*rf   c                  C   st   dt d  d t tddƒ  tddƒ dk} t| ƒtt tddƒtdƒd  k tdƒ d td	dƒ t k ƒks8J ‚d S )
NrJ   r9   é-   rF   é!   r   iñÿÿÿi‘  é   )r+   r!   r"   r   r   )Úeqr6   r6   r7   Útest_issue_6343è   s   ,6ÿrk   c                  C   sn  t td d dk ƒttjtk tdk ƒksJ ‚t td d dkƒttjtktdkƒks,J ‚t td d dkƒttt tk tdk ƒtttk tjtk ƒƒksMJ ‚t td d dkƒttt tk tdkƒttjtkttk ƒƒksnJ ‚td t d } t| dkƒ}ttt	| dƒtkttk ƒtt tk tt	| dƒkƒƒ}||ksœJ ‚tt
t d d ƒdk ƒttjtk tdk ƒksµJ ‚d S )Nr9   r0   r   r2   rK   é	   )r"   r+   r   r   r]   r   r   r@   r)   r(   r   ÚZero)rj   ZsolZtrur6   r6   r7   Útest_issue_8235î   s"   ÿÿ(ÿ(ÿ46rn   c                  C   s¬   t dtttd tddfƒ d ktgƒtttd tddfƒ d kks%J ‚tdƒ} t| tƒtddfƒ}t dt| td  ktgƒttd  t| tƒtddfƒ kksTJ ‚d S )Nr   r9   r0   rB   Úf)r"   r+   r   r,   r   r   )ro   rZ   r6   r6   r7   Útest_issue_5526  s   ÿÿþ ÿrp   c                     sü  t td dktddttt dƒtdtƒƒksJ ‚t td dktƒtttdtƒtttƒƒtttdƒtt tƒƒƒks<J ‚t td td  td  dktddttddƒtdtƒƒks\J ‚t td td  td  dktƒtttdtƒttdƒƒttdtƒtttƒƒƒks†J ‚t td td  td  dk tt	ddƒd	tt
tdƒt
tdƒƒks©J ‚t td dt  d dktddttd
tdƒ d tj ddƒttjtdƒd  tddƒƒksÚJ ‚t td td  t d dktddtdtdƒksõJ ‚t tt tdt   dk tƒt
tdƒksJ ‚t td td  t td td  dt   dk tƒtt
tdƒt
tdƒƒks5J ‚t td td  t td td  dt   td  dktƒt
tdƒks\J ‚ttdd„ ƒ t td t d dktƒtttd t d dƒtk ttk ƒks…J ‚t dtd  dktƒttdƒtk ttk ƒksžJ ‚td td   ¡ } t td |  dktƒtt ktdk @ ttdƒ@ ksÄJ ‚tdƒ‰tt‡fdd„ƒ tddd‰ tt‡ ‡fdd„ƒ tddd‰t ˆˆ  dkˆ ƒˆ d ˆ k ksúJ ‚t ˆˆ  dk ˆ ƒdksJ ‚t ˆˆ  dkˆ ƒdksJ ‚tdƒd tdƒd  d ‰tt‡fdd„ƒ tt‡fdd„ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ td t ttd   ‰t ˆdk tddtju sfJ ‚t ˆdktddtju suJ ‚ttdd„ ƒ d S )Nr9   rF   Fr:   rE   r0   rB   r   ©Údomainr2   rH   Tc                   S   s&   t td dt t  d t dk tƒS )Nr9   rB   r   ©Úisolver+   r   r6   r6   r6   r7   rT   !  s   & z2test_solve_univariate_inequality.<locals>.<lambda>rP   Únc                      s   t ttƒˆ ktddS )NFr:   )rt   r   r+   r6   ©ru   r6   r7   rT   0  rb   Úc1©Zpositivec                      s   t ˆˆ  dk ˆ ƒS ©Nr   )rt   r6   )rw   ru   r6   r7   rT   2  ó    )Únegativec                      s   t td ˆ k tƒS ©Nr9   )rt   r+   r6   ©Úzeror6   r7   rT   9  rz   c                      s   t td ˆ t k tƒS r|   rs   r6   r}   r6   r7   rT   :  s    ÿc                   S   ó   t dtt  dk tƒS )Nr0   r9   ©rt   r+   r,   r6   r6   r6   r7   rT   <  rb   c                   S   r   )Nr0   r   r€   r6   r6   r6   r7   rT   =  rb   c                   S   s   t tt dk tƒS ry   rs   r6   r6   r6   r7   rT   >  rz   c                   S   s$   t tttƒd ttƒd  dƒtƒS rc   )rt   r   r   r+   r   r6   r6   r6   r7   rT   E  s    ÿ)rt   r+   r   r   r   r   r   r   r	   r   r   r   r   rX   r   r.   Ú
ValueErrorr(   Úexpandr
   r   rd   r   r   rY   r5   r4   )Zdenr6   )rw   ru   r~   r7   Ú test_solve_univariate_inequality  sj    
ÿ0
ÿ$ÿ ,ÿ*ÿ ÿÿ$
ÿ.RN"
ÿ2
ÿ&rƒ   c                	   C   s  t ttƒtjk tddttdtd ddƒt tt	ddƒ dt ¡ƒks%J ‚t ttƒtjktddttd tt	ddƒ ddƒksAJ ‚t t
tƒtjk tddttd tt	ddƒ ddƒks]J ‚t t
tƒtjktddttdtd ƒt tt	ddƒ dt ¡ƒks€J ‚t ttƒtjk tddtt dtd	 ¡t td t¡ƒksŸJ ‚t ttƒtjktddtttjƒt tdt ¡ƒks»J ‚t ttƒtjktddtjksÌJ ‚t t
tƒtd
ƒk tddtjksÞJ ‚t ttƒtjktddtjksïJ ‚t t
tƒtjktddtjksJ ‚d S )NFr:   r   é   TrH   r9   rB   rF   rE   )rt   r   r+   r   rX   r   r   r   rL   r!   r   rm   rM   r   r@   r   r4   r5   r]   r6   r6   r6   r7   Útest_trig_inequalitiesI  s,   ,ÿÿÿ(ÿ ÿÿ"$"(r…   c                   C   s   t td dktddtjksJ ‚t td dktddtj t¡ks#J ‚t td dk tddtjks3J ‚t td dk tddtj t¡ksFJ ‚d S )Nr9   r   Fr:   T)rt   r+   r   r4   Zas_relationalr5   r6   r6   r6   r7   Útest_issue_9954`  s    & *r†   c                  C   sn   t td td  d dƒ} tttƒdttdƒ  dkƒttdtk t| d k ƒt| d tk ttk ƒƒks5J ‚d S )NrH   r9   r0   r   rB   r„   )r(   r+   r)   r   r   r   r   r   )Úrr6   r6   r7   Útest_slow_general_univariateg  s   ,ÿrˆ   c                  C   sn   dt  tdt  ƒ } ttdt ƒtt tƒƒ}t| dt ƒ|ksJ ‚dt  tdt  d ƒ } t| dk ƒ|ks5J ‚d S )Nr0   ú<r9   r   )r+   rR   r   r	   r   r&   r   r"   )rj   r[   r6   r6   r7   Útest_issue_8545n  s
   rŠ   c                   C   sR   t t tk tƒtt tk ttk ƒksJ ‚t ttktƒtt tk ttk ƒks'J ‚d S )N)rt   r   r+   r   r6   r6   r6   r7   Útest_issue_8974v  s   (*r‹   c                	   C   sä   t ddtdt d ƒ  dk ƒtt ktdk @ ttdƒ@ ks J ‚t tdttƒ ƒd tƒttdƒks4J ‚tddtddt  ƒ  dtƒtt	t tk tdk ƒt	t
jtk ttddƒk ƒt	tdd	ƒtk ttk ƒƒksiJ ‚ttd
d„ ƒ d S )Nr2   r0   r   g      à?rJ   r‰   rB   rF   r9   c                   S   s$   t ddtddttƒ  ƒ  dtƒS )NrJ   r0   r‰   )r&   rR   r   r+   r6   r6   r6   r7   rT   ƒ  s
    ÿÿz"test_issue_10198.<locals>.<lambda>)r"   rR   r+   r   r
   r   r   r&   r   r   r   rm   r!   r.   r   r6   r6   r6   r7   Útest_issue_10198{  s   ÿÿ(.ÿÿrŒ   c                   C   s<   t ttƒdk ƒdksJ ‚tttƒdk tjdtjksJ ‚d S )Nr9   Trq   )r)   r   r+   r*   r   r4   r6   r6   r6   r7   Útest_issue_10047‡  s   $r   c                   C   s0   t ttƒdk ƒttjtk ttdƒk ƒksJ ‚d S )Niè  )r)   r   r+   r   r   rm   r   r6   r6   r6   r7   Útest_issue_10268’  s   0rŽ   c                  C   sF   t dƒ} tttƒ| ktddttj| dk ft|  | ƒdfƒks!J ‚d S )Nru   Fr:   r   T)r   rt   r   r+   r    r   r5   r   rv   r6   r6   r7   Útest_isolve_Sets–  s   ÿr   c                  C   s†  t ddƒ} tddd}t|d |d  |d  dk || d	t|dƒks%J ‚tdƒ}t|d dk |tjd	|d
k|t k@ tt|dƒdƒ@ ksHJ ‚td| d dk|tjd	|dk|tk @ tt|dƒdƒ@ kshJ ‚t|d d|  d dk |tjd	|d
k|dk@ tt|dƒdƒ@ ksŒJ ‚t|d d|  d dk|tjd	|dk|tk @ tt|dƒdƒ@ |dk|t k@ tt|dƒdƒ@ B ksÁJ ‚d S )Nr   rB   r+   Fr}   r0   r9   rF   rq   rJ   r2   rD   )r   r   rt   r   r   ZIntegersr   r-   )Zdomr+   r6   r6   r7   Ú%test_integer_domain_relational_isolve  s$   
4 ÿÿ"ÿ" ÿÿr   c                  C   s‚   t ttƒttdtƒƒtdtƒksJ ‚tddƒ} t dt  t¡dk t| ƒ| ks(J ‚t ttd ƒt dktt	j
ƒt dd¡ks?J ‚d S )Nr   r0   rG   r„   rP   )r*   r   r,   r   r   r   r+   Zdiffr   r   r4   rN   )Úir6   r6   r7   Útest_issue_10671_12466¯  s   $
"
ÿr’   c                  C   s|  t tttttfD ]} t| tdƒtƒjtksJ ‚t| t	j
tƒtƒjtks%J ‚qttdt d tƒtƒttdƒks9J ‚tt	j
tƒ}t|tƒ|ksHJ ‚td ttƒttƒttƒ tdt  fD ] }dD ]}d| | dk}t|tdd||t	dƒ kks{J ‚q`q\tdtd  dt  d dk tddttd  t	jk ks›J ‚tttt dƒtƒttt dƒks®J ‚tddd}ttt| dƒtƒttd| ƒksÇJ ‚tt| dk tƒt| dk ksØJ ‚td	dd
}t|t dktƒt	jtk t|k @ ksòJ ‚t|t dktdddt d| kksJ ‚tdt tdt d  ƒ}t|tƒttdƒks"J ‚tttdt d  k tƒtt	jk ttdƒ@ ks<J ‚d S )Nr0   r9   )r   r0   r   T)ZlinearÚnz)ZnonzeroÚarx   )r   r	   r   r   r   r
   r'   r+   Zlhsr   r@   r,   r   r   r   rX   r   rm   )ÚopZieZfxÚcrZ   r“   r”   r6   r6   r7   Útest__solve_inequality·  s4   &,
ÿþ$ÿ&&"(,8r—   c                      sj  ddl m‰  ˆ t tƒdksJ ‚ˆ tjtdƒƒdksJ ‚ˆ tjtƒˆ ttjƒ  kr/dks2J ‚ J ‚ˆ tjt ƒˆ t tjƒ  krHtjksKJ ‚ J ‚ˆ tjtƒˆ ttjƒ  kratddƒksdJ ‚ J ‚ˆ tjt ƒˆ t tjƒ  krydks|J ‚ J ‚ˆ ttƒˆ ttƒ  krtd ks’J ‚ J ‚ˆ tt ƒˆ t tƒ  kr§td ksªJ ‚ J ‚t	t
‡ fdd	„ƒ d S )
Nr   ©Ú_ptrB   r9   r2   rE   r0   c                      s   ˆ t dddtjƒS )Nr‘   T)Zinfinite)r   r   r@   r6   r˜   r6   r7   rT   Ý  rU   ztest__pt.<locals>.<lambda>)Úsympy.solvers.inequalitiesr™   r   r   r@   rX   r]   r!   r+   r.   r   r6   r6   r˜   r7   Útest__ptÓ  s   ,220,0r›   N)VÚ__doc__Zsympyr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   rš   r"   r#   r3   r$   r%   rt   r&   r'   Zsympy.polys.rootoftoolsr(   Zsympy.solvers.solversr)   Zsympy.solvers.solvesetr*   Z	sympy.abcr+   r,   Zsympy.core.modr-   Zsympy.testing.pytestr.   r/   r<   r=   r8   r?   rA   rO   r\   r^   r`   ra   re   rf   rk   rn   rp   rƒ   r…   r†   rˆ   rŠ   r‹   rŒ   r   rŽ   r   r   r’   r—   r›   r6   r6   r6   r7   Ú<module>   sN    ˆ K($
>

