o
    à8Va¼  ã                   @   s°  d dl mZ d dlmZmZmZmZ d dlmZ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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+ d dl,m-Z-m.Z. d d	l/m0Z0m1Z1m2Z2m3Z3 d d
l4m5Z5 d dl6Z6dd„ Z7dd„ Z8dd„ Z9dd„ 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/„ ZHd0d1„ ZId2d3„ ZJd4d5„ ZKd6d7„ ZLd8d9„ ZMd:d;„ ZNd<d=„ ZOd>d?„ ZPd@dA„ ZQdBdC„ ZRdDdE„ ZSdFdG„ ZTdHdI„ ZUdJdK„ ZVdLdM„ ZWdNdO„ ZXdPdQ„ ZYdRdS„ ZZdTdU„ Z[dVdW„ Z\dXdY„ Z]dZd[„ Z^d\d]„ Z_d^d_„ Z`d`da„ Zadbdc„ Zbddde„ Zce-dfdg„ ƒZddhdi„ Zedjdk„ Zfdldm„ Zgdndo„ Zhdpdq„ Zidrds„ ZjdS )té    )Ú	unchanged)ÚImageSetÚRangeÚnormalize_theta_setÚComplexRegion)Ú	FiniteSetÚIntervalÚUnionÚimagesetÚIntersectionÚ
ProductSetÚContains)ÚConditionSet)Úsimplify)ÚSÚSymbolÚLambdaÚsymbolsÚcosÚsinÚpiÚooÚBasicÚRationalÚsqrtÚtanÚlogÚexpÚAbsÚIÚTupleÚeyeÚDummyÚfloorÚAndÚEq)Úcartes)ÚXFAILÚraises)ÚxÚyÚtÚz)ÚModNc                  C   sr  t j} d| v s	J ‚d| vsJ ‚d| vsJ ‚t| ƒ}t|ƒt|ƒt|ƒt|ƒf\}}}}||||fdks5J ‚t|tƒs<J ‚|  tddƒ¡tddƒksKJ ‚|  tddddƒ¡tddƒks\J ‚| j	| kscJ ‚| j
dksjJ ‚| jdksqJ ‚| jdksxJ ‚| jtu sJ ‚|  t¡r†J ‚t jt jfD ]}| t j¡|u s˜J ‚| t j¡s J ‚qŒ|  t¡ttttƒtƒtdkttk ƒks·J ‚d S )	Né   éûÿÿÿç      @)é   é   é   é   r1   é   TF)r   ÚNaturalsÚiterÚnextÚ
isinstancer   Ú	intersectr   r   ÚboundaryÚis_openÚ	is_closedÚinfÚsupr   ÚcontainsÚ	Naturals0ÚintersectionÚRealsÚ	is_subsetÚas_relationalr)   r$   r%   r#   )ÚNÚniÚaÚbÚcÚdÚs© rM   úA/usr/lib/python3/dist-packages/sympy/sets/tests/test_fancysets.pyÚtest_naturals   s(   $"0rO   c                  C   sd   t j} d| v s	J ‚d| vsJ ‚tt| ƒƒdksJ ‚|  t¡r J ‚|  ttƒ¡tttƒ| ƒks0J ‚d S ©Nr   éÿÿÿÿ)	r   rA   r8   r7   r@   r   r   r)   r   )rF   rM   rM   rN   Útest_naturals0/   s   $rR   c                  C   s–  t j} d| v s	J ‚d| v sJ ‚d| vsJ ‚|  t¡rJ ‚|  t ¡r$J ‚t| ƒ}t|ƒt|ƒt|ƒt|ƒf\}}}}||||fdksDJ ‚t|tƒsKJ ‚|  t	ddƒ¡t
ddƒksZJ ‚|  t	ddddƒ¡t
ddƒkskJ ‚|  t	dt jƒ¡t
dt jƒks|J ‚|  t	 dt j¡¡t
dt jƒksŽJ ‚| jt u s–J ‚| jtu sJ ‚| j| ks¤J ‚| jdks«J ‚| jdks²J ‚|  t¡ttttƒtƒt tk ttk ƒksÉJ ‚d S )	Nr.   r/   r0   )r   r1   rQ   r2   r5   TéüÿÿÿF)r   ÚIntegersr@   r   r7   r8   r9   r   r:   r   r   ÚInfinityÚLopenr>   r?   r;   r<   r=   rE   r)   r$   r%   r#   )ÚZZzirH   rI   rJ   rK   rM   rM   rN   Útest_integers8   s(   $""$2rX   c                  C   sò  t tdd„ ƒ tttdƒtjƒtdƒksJ ‚ttttƒtjƒthks$J ‚tttdƒtj	ƒtj	ks2J ‚t
ttdƒt ƒtjƒ} ttttdƒ| ƒsIJ ‚ttttd ƒtjƒ}d|v sZJ ‚d|vs`J ‚ttdƒŽ  |¡tdddƒksqJ ‚d	| td
dƒ¡vs}J ‚t|ƒ}t|ƒt|ƒt|ƒt|ƒf\}}}}||||fdksJ ‚tttdt ƒtjƒ}tddƒ|v s±J ‚tdƒ|v s¹J ‚d|vs¿J ‚tdƒ|vsÇJ ‚d|vsÍJ ‚|jsÒJ ‚ttt td
dƒƒtdd
ƒksãJ ‚ttttd ƒtd
dƒƒ ¡ td
dƒksùJ ‚ttttfdt ƒdhdhƒ ¡ tdƒksJ ‚ttttftt ƒh d£h d£ƒ ¡ tdddddddddƒ	ks3J ‚tddƒtddƒ }tddƒttttfftdt fƒ|ƒv sTJ ‚tdtjƒttttfftdt fƒ|ƒv slJ ‚tddƒttttffttd fƒ|ƒvsƒJ ‚tddƒttttfftdfƒ|ƒv s˜J ‚ttddƒtddƒtddƒƒ}tdddƒtttttfftttfƒ|ƒv s¿J ‚ttddƒddƒtttttffdt ttfƒ|ƒv sÜJ ‚dt ttttffdt ƒ|ƒvsðJ ‚dtd ƒ ttttffdt ƒ|ƒvsJ ‚tddƒttttffdt ƒ|ƒv sJ ‚td!d„ tjtjƒ}	|	jttjtjƒks2J ‚|	jtjtjfks>J ‚tttttd ƒh d£ƒsNJ ‚ttttfftt ƒdd"hƒ}
d|
 ¡ v sfJ ‚|
 d¡d u spJ ‚t td#d„ ƒ d S )$Nc                   S   s   t ttjƒS ©N)r   r)   r   rT   rM   rM   rM   rN   Ú<lambda>U   ó    ztest_ImageSet.<locals>.<lambda>r1   r2   r4   r.   é
   é	   é   r   )r1   r4   r]   r^   g      Ð?g333333Ó?)r1   r2   rQ   r3   é   >   r1   r2   r3   >   r\   é   é   é   é   é   é   é   é   é   é    é!   r5   éþÿÿÿé   éd   c                 S   s   | | S rY   rM   )r)   r*   rM   rM   rN   rZ   ‚   ó    )r3   r4   c                   S   s   t tttd ƒdƒS )Nr2   r1   )r   r   r)   rM   rM   rM   rN   rZ      ó    ) r(   Ú
ValueErrorr   r   r)   r   rT   r   r*   ÚEmptySetr   r   r   r   r6   Úranger:   r   r7   r8   r   Úis_iterabler
   Zdoitr    ÚHalfr   r+   Z	base_psetZ	base_setsÚ	_containsÚ	TypeError)ÚemptyZsquaresÚsirH   rI   rJ   rK   Z	harmonicsÚc3ZS1ZS2rM   rM   rN   Útest_ImageSetT   s\   "$
",0$
ÿ.0.*0:(,* rz   c                   C   s&   t tttttƒƒtdƒƒtƒsJ ‚d S )Nr.   )r9   r
   r)   r   r   r   r   rM   rM   rM   rN   Útest_image_is_ImageSet’   ó   &r{   c                  C   s–   t ddd\} }t| |ff| t|ƒ | t|ƒ fƒ}t|tddƒtdtƒ ƒ}d|v s-J ‚d|vs3J ‚d|v s9J ‚| | df¡d u sDJ ‚|jrIJ ‚d S )	Nzr, thetaT©Úrealr   r1   )r1   r   )r   rQ   )r   r   )	r   r   r   r   r   r   r   ru   rs   )ÚrÚthÚLZ
halfcirclerM   rM   rN   Útest_halfcircle–   s   $r‚   c                  C   sN   t tttd  ƒ} t| tjƒ}t|ƒ}t|ƒt|ƒt|ƒt|ƒfdks%J ‚d S )Nr2   )r   r2   r4   r5   )r   r)   r   r   r6   r7   r8   )r   ZevensÚirM   rM   rN   Ú$test_ImageSet_iterator_not_injective¥   s   (r„   c                   C   sv   t tdd„ ƒ tdtdƒjtju sJ ‚tdt dƒjtju s J ‚ttddƒjtju s,J ‚tt ddƒjtju s9J ‚d S )Nc                   S   s   t tdtdƒƒS )Nr   r2   )Úlenr   r   rM   rM   rM   rN   rZ   ®   ó    z$test_inf_Range_len.<locals>.<lambda>r   r2   rk   )r(   rp   r   r   Úsizer   rU   rM   rM   rM   rN   Útest_inf_Range_len­   s
   rˆ   c               
      s  t dƒ‰t dƒt ddƒ  krt dddƒksJ ‚ J ‚t dddƒ} d| v s'J ‚d| vs-J ‚d	| vs3J ‚d
| vs9J ‚tt ddƒƒttdƒƒksHJ ‚tt dddƒƒttdddƒƒksZJ ‚t ddƒjdksdJ ‚t ddƒjdksnJ ‚t dddƒjdksyJ ‚t dddƒjdks„J ‚t dddƒjdksJ ‚t dddƒjdksšJ ‚tt dddƒƒdks¦J ‚t dddƒˆks°J ‚t ttdƒˆksºJ ‚t tddƒˆksÄJ ‚t t ddƒˆksÏJ ‚t dtdƒˆksÙJ ‚t dt dƒˆksäJ ‚t ddtƒˆksîJ ‚tddd}t d|dƒˆksþJ ‚t d| dƒˆks
J ‚t ddt ƒt ddƒksJ ‚t ddtƒt ddƒks'J ‚t t tƒjtks3J ‚t tt dƒjtks@J ‚t	t
dd„ ƒ t	t
dd„ ƒ t	t
dd„ ƒ dt dtdƒv s`J ‚dt t ddƒv slJ ‚tt dtƒvsvJ ‚tdd d!}|t tƒvs…J ‚td"d d!}t tƒ |¡d us—J ‚td#dd$}|t t tƒvs¨J ‚t	t
d%d„ ƒ t	t
d&d„ ƒ t t ddƒd tju sÅJ ‚t tddƒd dksÒJ ‚|t tƒvsÛJ ‚t dddƒd d'ksèJ ‚td(d)„ t dddƒD ƒƒsøJ ‚tt t ddƒƒ‰t	t‡fd*d„ƒ ˆ tj¡ˆksJ ‚t dddƒ tj¡t dddƒks(J ‚t dddƒ tj¡t dddƒks;J ‚t dddƒ tj¡t dddƒksNJ ‚t dddƒd dks[J ‚t dddƒd d	kshJ ‚t dddƒd d'ksuJ ‚t dddƒd d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d0d„ ƒ t	t
d1d„ ƒ t dt d2ƒddd… ˆksÄJ ‚t dt d2ƒd dd… t dd2dƒksÙJ ‚t	t
d3d„ ƒ t t ddƒd d d2… t dt dƒksöJ ‚t	t
d4d„ ƒ t tdd2ƒd d … t tdd2ƒksJ ‚t t ddƒd d2d2… t dddƒks%J ‚t t ddƒd d2d… t t ddƒks;J ‚t	t
d5d„ ƒ t	t
d6d„ ƒ t t ddƒd2d d2… t dt dƒks_J ‚t	t
d7d„ ƒ t	t
d8d„ ƒ t tdd2ƒdd … t tdd2ƒks€J ‚t	t
d9d„ ƒ t tdd2ƒdd2… t tdd2ƒksšJ ‚t	t
d:d„ ƒ t	t
d;d„ ƒ t t ddƒd2d d… t dddƒks½J ‚t tdd2ƒddd… ˆksÍJ ‚t	t
d<d„ ƒ t	t
d=d„ ƒ t	t
d>d„ ƒ t tdd2ƒddd2… ˆksòJ ‚t tdd2ƒd dd… ˆksJ ‚t	t
d?d„ ƒ t tttƒˆksJ ‚ˆjˆksJ ‚dˆvs#J ‚tˆƒg ks,J ‚tˆƒdks5J ‚ˆjtju s>J ‚ˆ tdƒ¡tju sKJ ‚tˆƒd u sTJ ‚t	t‡fd@d„ƒ ˆd d… ˆkshJ ‚t	t‡fdAd„ƒ t	t‡fdBd„ƒ ˆ t¡tju s…J ‚d gttdƒƒ }t ddƒt dddƒfD ]L}t|ƒ} t||g dC¢ƒD ]<\}}}	tdƒD ]1}
tt| ƒƒ} |j}t||||	… ƒ}| |||	… }dD||||	||f }||k}|sàJ |ƒ‚q°q§q™t dddƒj t dddƒksöJ ‚t dddƒt dtdƒfD ] } | j}| j|jkr| j|jksJ ‚| j!|j! ks!J ‚qt‰ t	t‡ fdEd„ƒ tˆ dƒƒt dƒks;J ‚tˆ dFƒƒt dFƒksHJ ‚t ddƒ t¡tdktdk@ t"t#tdƒdƒ@ kscJ ‚t tdd2ƒ t¡tdkttk @ t"t#td d2ƒdƒ@ ksJ ‚d S )GNr   r.   r1   r\   r`   r2   rc   r_   rb   ra   rQ   é   é   r5   éC   é<   rl   éöÿÿÿé&   r3   rS   ÚipT©Úpositiver4   c                   S   s   t t tdƒS ©Nr2   ©r   r   rM   rM   rM   rN   rZ   Û   ó    z test_Range_set.<locals>.<lambda>c                   S   s   t tttƒS rY   )r   r)   r   r*   rM   rM   rM   rN   rZ   Ü   r[   c                   S   s   t ttdƒS ©Nr   )r   r)   r*   rM   rM   rM   rN   rZ   Ý   r[   r/   rG   F©ÚintegerÚur>   ©Zinfinitec                   S   s   t dtdƒd S )Nr   r2   rQ   r“   rM   rM   rM   rN   rZ   è   r†   c                   S   s   t dt dƒd S )Nr   rk   rQ   r“   rM   rM   rM   rN   rZ   é   ó    r]   c                 s   ó    | ]}|j V  qd S rY   ©Z
is_Integer©Ú.0rƒ   rM   rM   rN   Ú	<genexpr>î   s   € z!test_Range_set.<locals>.<genexpr>c                      ó   t ˆ ƒS rY   ©r8   rM   ©ÚitrM   rN   rZ   ð   rn   c                   S   s   t tddƒddd… S )Nr   rQ   r1   r3   r“   rM   rM   rM   rN   rZ   ü   ó    c                   S   s   t tddƒd d… S )Nr   rQ   r1   r“   rM   rM   rM   rN   rZ   ý   ro   c                   S   s   t dtƒd S )Nr1   rk   r“   rM   rM   rM   rN   rZ   þ   r”   c                   S   s   t t dƒd S ©Nr1   r2   r“   rM   rM   rM   rN   rZ   ÿ   r†   c                   S   ó   t dƒd S )Nr\   iìÿÿÿ©r   rM   rM   rM   rN   rZ      r[   c                   S   r¦   )Nr\   r`   r§   rM   rM   rM   rN   rZ     r[   c                   S   s   t dt dƒddd… S ©Nr2   rk   r   r“   rM   rM   rM   rN   rZ     ó    rk   c                   S   s   t t ddƒd dd… S ©Nr4   r2   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t t ddƒd d d… S rª   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t t ddƒd dd… S ©Nr4   r2   r   rk   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t t ddƒd dd… S )Nr4   r2   rk   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t t ddƒddd… S )Nr4   r2   rk   r   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t t ddƒdd d… S )Nr4   r2   r   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t t ddƒddd… S r«   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t tddƒdd… S r¨   r“   rM   rM   rM   rN   rZ     ro   c                   S   s   t t ddƒdd d… S )Nr4   r2   rQ   r“   rM   rM   rM   rN   rZ     r©   c                   S   s   t tddƒd S ©Nr   rk   r“   rM   rM   rM   rN   rZ     r†   c                   S   s   t tddƒddd… S )Nr   rk   r   r\   r2   r“   rM   rM   rM   rN   rZ     r¤   c                   S   s   t tddƒdd d… S r¬   r“   rM   rM   rM   rN   rZ     r¤   c                   S   s   t tddƒd dd… S )Nr   rk   r1   rQ   r“   rM   rM   rM   rN   rZ     r¤   c                      ó   ˆ d S r•   rM   rM   ©rw   rM   rN   rZ   '  rn   c                      ó   ˆ j S rY   ©r>   rM   r®   rM   rN   rZ   )  ó    c                      r¯   rY   ©r?   rM   r®   rM   rN   rZ   *  r±   )éýÿÿÿrQ   Nr1   r3   z
%s[%s:%s:%s] = %s -> %sc                      s   t ˆ dƒƒS ©Nr1   r§   rM   )Úbuiltin_rangerM   rN   rZ   G  r[   l    J)£)$r   Úlistrr   r?   r>   r…   r   r   r‡   r(   rp   r@   r   ÚZeroÚallr7   rv   r:   rT   r6   rA   Ú
IndexErrorr)   r*   Úreversedr   rq   ÚboolÚNotImplementedErrorrE   Zfalser&   r;   Ústepr%   r-   )r   r   rG   r˜   r>   ZABÚRrH   rI   rJ   ÚreverseÚresultÚansZtxtÚcheckZrevrM   )rµ   rw   r£   rN   Útest_Range_setµ   s  .$ &&&"*,&*,,&&*   
þÿøÿ  6@rÃ   c                     s¸
  t ttd dƒ‰t tttƒ‰tddd‰ tdddd} t | ƒ‰t d|  dƒ‰t ˆ ˆ d	 d
ƒ}t ˆ ˆ d dˆ  ƒ‰tddd‰ tddd‰tt‡fdd„ƒ tt‡fdd„ƒ tt‡fdd„ƒ tt‡fdd„ƒ ˆjttd dfkstJ ‚ˆjtttfks~J ‚|jˆ ˆ d d
fksŠJ ‚ˆjˆ dˆ  dˆ  fks˜J ‚tt‡fdd„ƒ tt‡fdd„ƒ ˆj	j| d ddfks·J ‚ˆj	j|  d ddfksÅJ ‚|j	jˆ d ˆ d
 dfksÔJ ‚ˆj	jdˆ  dˆ  dˆ  fksåJ ‚ˆˆvsëJ ‚ˆ|vsñJ ‚dˆv s÷J ‚dˆv sýJ ‚tt
‡fdd„ƒ tt
‡fdd„ƒ dˆvsJ ‚d|vsJ ‚ˆ d |vs&J ‚ˆ d
 |v s/J ‚tt
‡fd d„ƒ tt
‡fd!d„ƒ tt‡fd"d„ƒ tt‡fd#d„ƒ tt|ƒƒˆ ks^J ‚ttˆƒƒˆ ksiJ ‚ˆ tj¡ˆkstJ ‚ˆ ttƒ¡tthˆƒks„J ‚tt‡fd$d„ƒ tt‡fd%d„ƒ tt‡fd&d„ƒ t|ƒ|j  kr¯dks²J ‚ J ‚tˆƒˆj  krÂdksÅJ ‚ J ‚tt‡fd'd„ƒ tt‡fd(d„ƒ tt‡fd)d„ƒ tt‡fd*d„ƒ tt dƒƒd+ksôJ ‚tˆƒsûJ ‚t|ƒsJ ‚tˆƒs	J ‚tˆƒsJ ‚tt‡fd,d„ƒ tt‡fd-d„ƒ tt‡fd.d„ƒ tt‡fd/d„ƒ ˆjdks<J ‚ˆj|  d ksGJ ‚|jˆ ksOJ ‚tt‡fd0d„ƒ tt‡fd1d„ƒ tt‡fd2d„ƒ ˆj| d kstJ ‚ˆjdks|J ‚|jˆ ks„J ‚tt‡fd3d„ƒ tt‡fd4d„ƒ tt‡fd5d„ƒ tt‡fd6d„ƒ tt‡fd7d„ƒ |d d
… t ˆ ˆ d d
ƒksÂJ ‚|d ˆ ksËJ ‚|d ˆ d8 ksÖJ ‚|d ˆ d ksáJ ‚ˆd d
… t ˆ dˆ  dˆ  ƒksôJ ‚ˆd ˆ ksýJ ‚ˆd dˆ  ksJ ‚ˆd dˆ  ksJ ‚tt‡ fd9d„ƒ ˆd ˆj  kr,dks/J ‚ J ‚ˆd ˆj  krA| d ksDJ ‚ J ‚ˆd ˆj  krTdksWJ ‚ J ‚ˆd ˆj  krj|  d ksmJ ‚ J ‚tt‡fd:d„ƒ |jˆ ks~J ‚|jˆ d ksˆJ ‚tt‡ fd;d„ƒ | t¡tˆ ktˆ d k@ ttˆ  t d
ƒdƒ@ ks®J ‚ˆ t¡ttˆ  t dˆ  ƒdƒtˆ ktdˆ  k@ dˆ  dk@ tˆ ktdˆ  k@ dˆ  dk@ B @ ksãJ ‚t ˆ ˆ d ƒ t¡ttˆ ƒksõJ ‚ˆ t¡tttdƒdƒtttdƒdƒ@ ttt t tƒdƒ@ ttktt t k@ tdk@ ttktt t k@ tdk@ B @ ks6J ‚ˆ t¡tttƒtttdƒdƒ@ ksKJ ‚ˆ t¡tttdƒdƒks[J ‚td<ddd=}td>ddd?}t dƒ ˆ ¡tˆ dkˆ dkƒks|J ‚t dƒ ˆ ¡tˆ dƒks‹J ‚t t ddƒ ˆ ¡ˆ dkksœJ ‚t t tƒ ˆ ¡dksªJ ‚t ddd
ƒ ˆ ¡tˆ t ddd
ƒƒks¿J ‚t ddd
ƒ |¡t|dk|d@kƒksÔJ ‚t ddd
ƒ d
ˆ  ¡td
ˆ  dkd
ˆ  d@kƒksïJ ‚t ddd
ƒ |¡d+ksýJ ‚t ddAd
ƒ |¡d+ksJ ‚t ddAd
ƒ |¡t|dk|dkƒks J ‚t dddƒ |¡d+ks.J ‚t dAddƒ |¡t|dk|dAkƒksCJ ‚t t dd
ƒ ˆ ¡tˆ t t dd
ƒƒksZJ ‚d S )BNr4   r.   rƒ   Tr–   ©r—   r‘   r   rQ   é   r2   r_   r3   r>   r™   c                      r    rY   r§   rM   r°   rM   rN   rZ   \  rn   z%test_Range_symbolic.<locals>.<lambda>c                      s   t ˆ ddƒS rP   r§   rM   r°   rM   rN   rZ   ]  r[   c                      s   t ˆ ˆ dƒS r´   r§   rM   r°   rM   rN   rZ   ^  r[   c                      s   t ddˆ ƒS r´   r§   rM   r°   rM   rN   rZ   _  r[   r`   r\   c                      r¯   rY   ©rº   rM   ©ÚxrrM   rN   rZ   f  r±   c                      r¯   rY   rÆ   rM   ©ÚsrrM   rN   rZ   g  r±   r1   é   rk   rl   r³   c                      ó   dˆ v S r´   rM   rM   ©ÚiprrM   rN   rZ   q  rn   c                      rÌ   ©NrQ   rM   rM   )ÚinrrM   rN   rZ   r  rn   çš™™™™™¹?c                      s   t ˆ v S rY   ©r)   rM   rÇ   rM   rN   rZ   w  rn   c                      rÌ   r´   rM   rM   rÉ   rM   rN   rZ   x  rn   c                      ó   t tˆ ƒƒS rY   ©r8   r7   rM   rÇ   rM   rN   rZ   z  r[   c                      rÓ   rY   rÔ   rM   rÉ   rM   rN   rZ   {  r[   c                      ó   ˆ d d… S r’   rM   rM   rÉ   rM   rN   rZ   €  r[   c                      r­   r•   rM   rM   rÇ   rM   rN   rZ     rn   c                      r­   r•   rM   rM   rÉ   rM   rN   rZ   ‚  rn   c                      r    rY   ©r…   rM   rÇ   rM   rN   rZ   †  rn   c                      r¯   rY   ©r‡   rM   rÇ   rM   rN   rZ   ‡  r±   c                      r    rY   rÖ   rM   rÉ   rM   rN   rZ   ˆ  rn   c                      r¯   rY   r×   rM   rÉ   rM   rN   rZ   ‰  r±   Fc                      r    rY   ©r»   rM   rÉ   rM   rN   rZ     rn   c                      r    rY   rØ   rM   ©Úir2rM   rN   rZ   ‘  rn   c                      r¯   rY   r°   rM   rÇ   rM   rN   rZ   “  r±   c                      r¯   rY   r°   rM   rÉ   rM   rN   rZ   ”  r±   c                      r¯   rY   r°   rM   rÙ   rM   rN   rZ   ˜  r±   c                      r¯   rY   r²   rM   rÇ   rM   rN   rZ   š  r±   c                      r¯   rY   r²   rM   rÉ   rM   rN   rZ   ›  r±   c                      r¯   rY   r²   rM   rÙ   rM   rN   rZ   Ÿ  r±   c                      r­   r•   rM   rM   rÇ   rM   rN   rZ   ¡  rn   c                      r­   r•   rM   rM   rÉ   rM   rN   rZ   ¢  rn   c                      r­   rÏ   rM   rM   rÉ   rM   rN   rZ   £  rn   c                      rÕ   r’   rM   rM   rÉ   rM   rN   rZ   ¤  r[   r^   c                      ó   t ˆ ƒd S rÏ   r§   rM   ©rƒ   rM   rN   rZ   ­  r[   c                      r­   ©Nrk   rM   rM   rÍ   rM   rN   rZ   ²  rn   c                      ó
   t ˆ ƒjS rY   )r   r>   rM   rÜ   rM   rN   rZ   µ  ó   
 Úe)r—   ÚevenÚo)r—   Zoddr5   r]   )r   r)   r*   r+   r   r   r(   rp   Úargsrº   rv   r8   r7   r:   r   rT   r   r   r…   r‡   r»   r>   r?   rE   r%   r-   r,   r@   r$   r   r   )r   Zirrà   râ   rM   )rƒ   r>   rÐ   rÎ   rÚ   rÊ   rÈ   rN   Útest_Range_symbolicP  s  " &&"&&*&,ÿ
ÿÿÿ$

ÿÿÿÿþ* &"**6**2rä   c                  C   s,  t dƒt dƒtjft dƒt dtƒtjft dƒt ddƒtjft ddƒt ddƒt ddƒft ddƒt ddƒt ddƒft dtdƒt dtdƒtjft dtdƒt tƒt dtdƒft dtdƒt dƒt dddƒft dtdƒt tƒt dtdƒft dtdƒt d	d
ƒtjft dddƒt dddƒt dddƒft dd
dƒt t d	dƒtjft dtdƒt d	tdƒt dtd
ƒft dd
dƒt dddƒtjffD ]\\} }}|  |¡|ksÅJ ‚|  |j¡|ksÏJ ‚| j |¡|ksÙJ ‚| j |j¡|ksäJ ‚|| } }|  |¡|ksòJ ‚|  |j¡|ksüJ ‚| j |¡|ksJ ‚| j |j¡|ksJ ‚q·d S )Nr   r1   r3   r4   r³   rQ   r2   rm   r.   r5   éP   é7   éG   r_   r^   rl   )r   r   rq   r   r:   rº   )rH   rI   r   rM   rM   rN   Útest_range_range_intersectionÖ  s2     ò
érè   c                  C   s~  t ddd} ttdƒ t| | d ƒ¡tƒsJ ‚tdƒ tddƒ¡tdƒks'J ‚tdƒ tt tƒ¡tdƒks8J ‚tdƒ tdtƒ¡tddƒksIJ ‚tdƒ td	tƒ¡tddƒksZJ ‚tdƒ td
dƒ¡tddƒkskJ ‚tdƒ td
dƒ¡tddƒks|J ‚tdƒ t dd¡¡tddƒksŽJ ‚tdƒ t d
d¡¡tj	u sžJ ‚tdƒ tddƒ¡tj	u s­J ‚tdƒ tt tƒ¡tj	u s½J ‚d S )NÚpTr   r3   r2   r4   r   r1   gš™™™™™ñ?rÑ   gÍÌÌÌÌÌ@ç      à?gš™™™™™É?gš™™™™™é?)
r   r9   r   r:   r   r   r   Úopenr   rq   )ré   rM   rM   rN   Ú test_range_interval_intersectionñ  s   " """""$ $rì   c                  C   s€  t ddƒjdu s
J ‚t dtƒjdu sJ ‚t t dƒjdu sJ ‚t t tƒjdu s*J ‚t tt ƒjdu s5J ‚t ddƒjdu s?J ‚t ttƒjdu sIJ ‚t t t ƒjdu sUJ ‚tddd	} td
dd	}t | | d ƒjdu smJ ‚t | dƒjdu swJ ‚t d| d ƒjdu sƒJ ‚t | |ƒjdu sJ ‚t | | ||  ƒjdu s›J ‚t | | | |  ƒjdu s©J ‚t | tƒjdu s³J ‚t t | ƒjdu s¾J ‚d S )Niœÿÿÿrm   Tr2   Fé2   r   Únr–   Úmé1   r³   rl   )r   Zis_finite_setr   r   ©rî   rï   rM   rM   rN   Útest_range_is_finite_set  s$   rò   c            	      C   s”  t ttdt tddƒ ƒtjƒ} tttdt tddƒ ƒtjƒ}|| ks&J ‚tttdt tddƒ ƒtjƒ}|| ks<J ‚tdƒ}ttdt | tjƒ}|d |v sSJ ‚d\}}}|tt||t  tjƒv sgJ ‚|tt||t  tjƒv svJ ‚td	d
d}|d | d }t||tjƒj	j
|d | d ks—J ‚d| d }t||tjƒj	j
d| d ks®J ‚tttdt ftjƒt tttdt fƒtjƒksÈJ ‚d S )Nr2   r3   rl   rk   rb   r*   r4   )gZd;ßO·?gƒÀÊ¡E¶Û?gmçû©ñÒÕ?r)   T)Únegativer1   )r   r   r)   r   r   rT   r
   r   r   ÚlamdaÚexpr)	rÁ   Úimr*   r   rH   rI   rJ   Z_xÚeqrM   rM   rN   Útest_Integers_eval_imageset  s&      
&"ÿrø   c                     sÔ   t dƒ\} }}tt| t|  | tdƒƒtt| t | |  | tdƒƒks'J ‚td d ‰ ttˆ tdƒƒjjˆ ks;J ‚| t|  | ‰ tdddƒ}ttˆ |ƒ}|jjˆ ksWJ ‚t|ƒ‡ fdd„t|ƒD ƒkshJ ‚d S )	Nza b cr3   r1   r2   r³   rk   c                    s   g | ]
}ˆ   t|¡ ¡ ‘qS rM   )Úsubsr)   Úexpandr   ©r÷   rM   rN   Ú
<listcomp>9  s    z,test_Range_eval_imageset.<locals>.<listcomp>)r   r
   r)   r   rô   rõ   r¶   )rH   rI   rJ   r   ZimsetrM   rû   rN   Útest_Range_eval_imageset/  s   ÿ&rý   c                   C   sP   t tttttt d ƒƒtddƒƒŽ t dtdƒ d dtdƒd dƒks&J ‚d S )Nr4   r   rb   rQ   r2   r   r1   )r   r   r   r)   r   r   r   r   rM   rM   rM   rN   Útest_fun<  s
   ÿ ÿrþ   c                   C   s¼   dt jv sJ ‚t jt jv sJ ‚tdƒ t jv sJ ‚dt jvs J ‚tdƒt jvs)J ‚t jtt tƒks4J ‚t jtdtƒks>J ‚t j tt tƒ¡sJJ ‚t j tt tƒ¡tt tƒks\J ‚d S )Nr.   r2   )r2   r.   rQ   r   )	r   rC   ÚPir   r   r   rD   r:   r   rM   rM   rM   rN   Ú
test_RealsA  s   (r   c                   C   s  dt jv sJ ‚ddt  t jv sJ ‚t jt jv sJ ‚tdƒ t jv s$J ‚t t jv s,J ‚tdƒt jv s5J ‚t j t j¡t jksAJ ‚t j t j¡t jksMJ ‚t jtt jt j ƒksZJ ‚t jtt	ddƒt	ddƒ ƒkdksmJ ‚t
t jƒdksvJ ‚tt jƒdksJ ‚d S )	Nr.   r4   r2   rQ   r1   r3   FzS.Complexes)r   Ú	Complexesr   rÿ   r   r:   rC   Úunionr   r   ÚstrÚreprrM   rM   rM   rN   Útest_ComplexM  s   &r  c                 C   s   t t || ¡ƒS )z.Return first n items of the iterable as a list)r¶   Ú	itertoolsÚislice)rî   ÚiterablerM   rM   rN   Útake\  s   r	  c                	   C   sÔ   t j t j¡t jksJ ‚dt j t j¡v sJ ‚dt j t j¡v s"J ‚dt j t j¡vs-J ‚dt j t j¡vs8J ‚dt j tdtƒ¡v sEJ ‚dt j tt dƒ¡v sSJ ‚tdd„ tdt j tdtƒ¡ƒD ƒƒshJ ‚d S )Nr.   r/   r0   r3   c                 s   r›   rY   rœ   )rž   r)   rM   rM   rN   rŸ   i  s   € ÿz%test_intersections.<locals>.<genexpr>r\   )	r   rT   r:   rC   r6   r   r   r¸   r	  rM   rM   rM   rN   Útest_intersectionsa  s   ÿr
  c                  C   sˆ  ddl m} m}m} tt| | ƒtjƒtt||ƒtjƒksJ ‚tt| d|  ƒtjƒ tt|d| d ƒtjƒ¡tj	u s<J ‚tt| d|  ƒtjƒ tt| d|  d ƒtjƒ¡tj	u sZJ ‚tt|d| ƒtjƒ tt| d|  ƒtjƒ¡ 
tt|d| ƒtjƒ¡sJ ‚tttd tddƒ tjƒ tj¡tj	u s–J ‚tttd tj tjƒ tj¡tju s«J ‚tt| d|  d ƒtjƒ}| tj¡|ksÂJ ‚d S )Nr   ©rî   rï   r+   r2   r1   r3   r5   r.   )Ú	sympy.abcrî   rï   r+   r
   r   r   rT   r:   rq   Údummy_eqr   r)   r   rt   )rî   rï   r+   ZS53rM   rM   rN   Útest_infinitely_indexed_set_1m  s.   (ÿÿÿÿÿÿÿ.*r  c                  C   s  ddl m}  tddd}tt| | ƒtjƒtt| | | ƒtjƒks"J ‚tt| | t ƒtjƒtt| | | t ƒtjƒks<J ‚tt| | ƒtjƒtt| |  | ƒtjƒksSJ ‚tt| d|  ƒtjƒtt| d|  ƒtjƒkskJ ‚tt| d|  t ƒtjƒtt| d|  t d ƒtjƒks‰J ‚d S )	Nr   ©rî   rH   Tr–   iúÿÿÿr5   r2   )	r  rî   r   r
   r   r   rT   r   r   )rî   rH   rM   rM   rN   Útest_infinitely_indexed_set_2ƒ  s"   ÿÿÿÿÿr  c               	   C   sÄ  ddl m}  ddlm} tt|||d |d  |   ƒtjƒ tj	¡t
ddƒks*J ‚|d |tj  }tt||||   ƒtjƒ tj	¡t
dƒksJJ ‚tt||||d  |   ƒtjƒ tj	¡t
dƒkseJ ‚tt||d | ¡ |   ƒtjƒ tj	¡ttttd ƒt|t|d |d  tdƒd  dƒtjƒƒksšJ ‚tt||d| d  ||d  |   ƒtjƒ tj	¡t
tjƒks¼J ‚tt|||d  |d |d  |  d| d   ƒtjƒ tj	¡t
dƒksãJ ‚tt|||d d	  |d |d  |  d| d   ƒtjƒ tj	¡tju sJ ‚tt||  | dt | td
   ttt|  ƒƒƒ  ƒtjƒ}| tj	¡tt|d| t td
  ƒtjƒ  kr]tt|dt | ttdd
ƒ  ƒtjƒks`J ‚ J ‚d S )Nr   )r   r  r1   rQ   r2   r5   r3   r]   r4   rl   )Úsympyr   r  rî   r
   r   r   rT   r:   rC   r   rt   rA   rú   r   r)   r   r%   rq   r   r   r   r   r   )r   rî   rö   rL   rM   rM   rN   Útest_imageset_intersect_real’  sb   <ÿ ÿ &ÿÿ,ÿÿÿÿþÿÿÿ
þ4þÿ"ÿÿr  c            
      C   sˆ  ddl m}  tt| | t ƒtjƒ}tt| d|  ƒtdtƒƒ}tt| d|  t td  ƒtjƒ}tt| | t t ƒtjƒ}tt| dt |  t td  ƒtjƒ}tt| t	| ƒƒtjƒ}tt| | d ƒtjƒ}tt| t
| ƒƒtjƒ}tt| t| ƒƒtjƒ}	| tddƒ¡tdƒks‰J ‚| tddt ddƒ¡tdtƒksœJ ‚| tddƒ¡tddƒks«J ‚| tddƒ¡tjks¸J ‚| tdd	ƒ¡tttd
dƒ td ƒksÎJ ‚| tddƒ¡tdƒksÜJ ‚| tddƒ¡tjkséJ ‚| tddƒ¡tjksöJ ‚| tddƒ¡ttjt	dƒƒks	J ‚| tddƒ¡t|tddƒƒksJ ‚| tddƒ¡t|tddƒƒks/J ‚|	 tddƒ¡t|	tddƒƒksBJ ‚d S )Nr   r  r2   rQ   r1   FTr/   r.   r³   r\   )r  rî   r   r   r   r   rT   r   r   r   r   r   rA   r:   r   rq   r   r·   r   )
rî   Úf1Úf2Zf3Zf4Zf5Zf6Zf7Zf8Zf9rM   rM   rN   Ú test_imageset_intersect_interval°  s,   "&&,&&&*r  c               	   C   s¦  ddl m} m} tt|d| d ƒtjƒ}tt|d| d ƒtjƒ}| |¡|ks+J ‚tt|d| ƒtjƒ tt|d| d ƒtjƒ¡tjksIJ ‚tt|d| d| d  ƒtjƒ tj¡t	d	d
ddƒksgJ ‚tt||d d ƒtjƒ tt||d d  ƒtjƒ¡t	dƒks‰J ‚tt||d d ƒtjƒ tt| d|  ƒtjƒ¡ 
tt|d|d  d|  d ƒtjƒ¡s¸J ‚tt||d d ƒtjƒ tt| | d  ƒtjƒ¡t	ddƒksÙJ ‚tt| | d d ƒtjƒ tt|d| ƒtjƒ¡ 
ttt| | d d ƒtjƒtt|d| ƒtjƒƒ¡sJ ‚tt||d d ƒtjƒ tt| | d  d ƒtjƒ¡t	ddƒks3J ‚tt|td |d t d  ƒtjƒ tt|dt d |d t d  ƒtjƒ¡ 
tt|dt | d dt d  ƒtjƒ¡suJ ‚tt||tdƒ ƒtjƒ tj¡ 
ttt||tdƒ ƒtjƒtjƒ¡s›J ‚tt||d d ƒtjƒ tt||d ƒtjƒ¡ 
ttt||d d ƒtjƒtt||d ƒtjƒƒ¡sÑJ ‚d S )Nr   )rï   rî   r2   r1   r4   r]   r`   r3   iÃÿÿÿiéÿÿÿrg   é=   r.   r5   i÷ÿÿÿé(   é)   r^   éQ   éA   rc   rl   rb   ræ   é   )r  rï   rî   r   r   r   rT   r:   rq   r   r  r   r   r   rB   )rï   rî   Zimg1Zimg2rM   rM   rN   Ú#test_imageset_intersect_diophantineÌ  sˆ   ÿÿ"ÿÿÿÿÿ ÿÿÿÿÿþÿÿ
ÿ&(ÿ$ÿÿÿÿÿÿÿþÿr  c                  C   sÞ   ddl m} m}m} tt|dt | ƒtjƒ 	tt| dt |  ƒtjƒ¡ 
tt|dt | ƒtjƒ¡s5J ‚tt| d|  d ƒtjƒtt| d|  d ƒtjƒksQJ ‚tt| d|  d ƒtjƒtt| d|  d ƒtjƒksmJ ‚d S )Nr   r  r2   r3   r5   r1   )r  rî   rï   r+   r
   r   r   r   rT   r:   r  r   r  rM   rM   rN   Útest_infinitely_indexed_set_3ø  s   ÿÿÿÿÿr  c                  C   sè   ddl m} m} tt| | ƒtjƒtjksJ ‚tt| t| ƒƒtt|t|ƒƒtjƒƒtt|tt|ƒƒƒtjƒks8J ‚t| dd|   tj	ƒt
dtdƒksKJ ‚t| dd|   tjƒt
dtdƒks^J ‚t| dd|   tj	ƒt
dt dƒksrJ ‚d S )Nr   rñ   r1   r2   r3   rQ   rk   )r  rî   rï   r
   r   r   rT   r   r   r6   r   r   rA   rñ   rM   rM   rN   Útest_ImageSet_simplification  s   ÿþ&&,r  c                  C   sL  ddl m}  dtjft| | d|  ftjƒv sJ ‚t| | td  tjƒ tj¡tj	u s,J ‚t
dd}t| | tt  tjƒ tj¡}| tt| ¡ tj¡tju sQJ ‚t| | tt |   tjƒ tj¡}| td¡tju smJ ‚| tt| |  ¡ tj¡tju s€J ‚tdƒd tdƒd  d }t| | t|  tjƒ tj¡}|tj	us¤J ‚d S )Nr   rÒ   r2   r1   r3   Tr–   )r  r)   r   rt   r
   rT   r   rB   rC   rq   r"   r*   rù   r   r   )r)   rƒ   Úqr,   rM   rM   rN   Útest_ImageSet_contains  s   $(
""&r   c            
         s¤  t ddd} tddƒ}tddƒ}tdd	ƒ}t|| ƒ}tt|| || ƒƒ}d
dt  |v s0J ‚ddt  |v s:J ‚ddt  |v sDJ ‚dd
t  |v sNJ ‚d
dt  |vsXJ ‚ddt  |vsbJ ‚| t¡tt|ddkspJ ‚| | ¡dksyJ ‚| t¡tt|ddks‡J ‚| | ¡dksJ ‚tddƒ‰ tddtj	 ƒ‰tˆ ˆ dd}dtt
ddƒ  |v s²J ‚tjtt
ddƒ  |v sÀJ ‚tjdt  |v sËJ ‚ddt  |v sÕJ ‚t|v sÛJ ‚d|v sáJ ‚d|v sçJ ‚dt |vsïJ ‚dt |vs÷J ‚| t¡tt|ddksJ ‚| | dt  ¡t| dt  |ddksJ ‚| dd| d   ¡tdd| d   |ddks8J ‚tddƒ}ttdt dd}t|| dd}	|	 d¡dksXJ ‚|	 dt ¡dksdJ ‚|	 dt ¡dkspJ ‚|	 dt ¡dks|J ‚|	 dt ¡dksˆJ ‚|	 d¡dks’J ‚|	 d¡dksœJ ‚|	 t¡tt|	ddks«J ‚|	 dd| d   ¡tdd| d   |	ddksÆJ ‚tt‡ ‡fdd„ƒ d S )Nr   Tr}   r2   r3   r4   r5   rl   r]   g      @g      @r_   gffffff@gš™™™™™	@F©Zevaluater   r1   ©Zpolarrê   r\   g333333ã?)Z	left_openrk   c                      s   t ˆ ˆ ddS )Nr2   r"  )r   rM   ©Zr1Útheta1rM   rN   rZ   P  r†   z-test_ComplexRegion_contains.<locals>.<lambda>)r   r   r   r	   r   r@   r)   r   r   rÿ   r   rt   r   r(   rp   )
r   rH   rI   rJ   Úc1Úc2ry   Zr2Útheta2Úc4rM   r#  rN   Útest_ComplexRegion_contains  sd   



ÿÿ
ÿr)  c                     s†  t dƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t ddd‰ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tˆ ˆ d ƒd ˆ ksMJ ‚tt‡ fdd„ƒ tˆ ˆ d ƒjdksbJ ‚t dddd‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tˆ d ƒd dks‡J ‚tˆ ˆ d ƒd ˆ ks”J ‚tˆ ƒjˆ ksJ ‚tˆ d ƒjˆ d ksªJ ‚tˆ ˆ d ƒjdks¶J ‚t dddd‰ tˆ ƒd dksÇJ ‚tˆ ˆ d ƒd ˆ ksÔJ ‚tˆ ƒjˆ ksÝJ ‚tˆ ˆ d ƒjdkséJ ‚t dddd} tˆ ˆ |  ƒd ˆ ksýJ ‚tˆ ˆ |  ƒj| ks
J ‚tˆ ˆ d ƒjdksJ ‚tˆ ˆ |  dƒjt| d ƒks)J ‚t ddddd} tˆ ˆ |  dƒj| d ksAJ ‚d S )Nrî   c                      rÛ   r•   r§   rM   r  rM   rN   rZ   U  r[   z%test_symbolic_Range.<locals>.<lambda>c                      ó   t ˆ ˆ ƒd S r•   r§   rM   r  rM   rN   rZ   V  r”   c                      s   t ˆ ˆ d ƒd S )Nr1   r   r§   rM   r  rM   rN   rZ   W  rš   c                      rÞ   rY   ©r   r‡   rM   r  rM   rN   rZ   X  rß   Tr–   c                      rÛ   r•   r§   rM   r  rM   rN   rZ   [  r[   c                      r*  r•   r§   rM   r  rM   rN   rZ   \  r”   r1   r   c                      rÞ   rY   r+  rM   r  rM   rN   rZ   ^  rß   )r—   Znonnegativec                      rÛ   r•   r§   rM   r  rM   rN   rZ   b  r[   c                      r*  r•   r§   rM   r  rM   rN   rZ   c  r”   rÄ   rï   r2   )r—   r‘   rá   )r   r(   rp   r¹   r   r‡   r#   )rï   rM   r  rN   Útest_symbolic_RangeS  s>   $$r,  c                      sX   t ddd‰ tt‡ fdd„ƒ t dddd‰ tdd„ tˆ ƒƒtdd„ tˆ ƒƒks*J ‚d S )Nrî   Tr–   c                      s   t dd„ tˆ ƒƒS )Nc                 S   ó   | d S r’   rM   rÒ   rM   rM   rN   rZ   }  rn   z4test_issue_18400.<locals>.<lambda>.<locals>.<lambda>)r
   r   rM   r  rM   rN   rZ   }  rš   z"test_issue_18400.<locals>.<lambda>rÄ   c                 S   r-  r’   rM   rÒ   rM   rM   rN   rZ     rn   )r   r(   rp   r
   r   rM   rM   r  rN   Útest_issue_18400{  s   ,r.  c                  C   sx  t tdtƒtdtjƒ dd} t tddƒtddtj ƒ dd}t tddƒtdtjƒ dd}t tdtƒtdtjƒ dd}t tdtƒttjdtj ƒ dd}t tdtƒttj d tjd ƒ dd}t tdtƒtdtjd ƒ dd}| |¡|ksJ ‚| |¡|ksˆJ ‚| |¡|ks‘J ‚| |¡| ksšJ ‚t tddƒtddtj ƒ dd}| tddƒ¡tddƒksºJ ‚| tddƒ¡tdƒksÈJ ‚| tdd	ƒ¡tju sÕJ ‚t tt tƒtdƒ ƒ} t td
dƒtd
dƒ ƒ}t td
dƒtddƒ ƒ}	t tt tƒtdtƒ ƒ}
t tt tƒtt dƒ ƒ}t tdtƒtt tƒ ƒ}t tdtƒtdtƒ ƒ}|
 |¡|	ks7J ‚| |¡|ksAJ ‚|
 |¡|ksKJ ‚|
 |¡| ksUJ ‚t tddƒtddƒ ƒ}| tddƒ¡tddƒksqJ ‚| tddƒ¡tdƒks€J ‚| tddƒ¡tju sŽJ ‚t tddƒtddtj ƒ dd}t td
dƒtd
dƒ ƒ}| |¡t||ddksºJ ‚d S )Nr   Tr"  r1   r2   r4   r.   r]   rc   rQ   r/   r   r\   rl   r5   Fr!  )	r   r   r   r   r   rÿ   r:   rq   r   )ZX_axisZ	unit_diskZupper_half_unit_diskZupper_half_diskZlower_half_diskZright_half_diskZfirst_quad_diskr%  Zunit_squareZupper_half_unit_squareZupper_half_planeZlower_half_planeZright_half_planeZfirst_quad_planeZC1ZC2rM   rM   rN   Útest_ComplexRegion_intersect„  sB   "$*"" ""r/  c                  C   sV  t tddƒtddtj ƒ dd} t tddƒtdtjƒ dd}t tdtƒtdtjƒ dd}t tdtƒttjdtj ƒ dd}ttddƒtddtj ƒ tddƒtdtjƒ ƒ}ttdtƒtdtjƒ tdtƒttjdtj ƒ ƒ}|  |¡t |ddksJ ‚| |¡t |ddksŽJ ‚t tddƒtddƒ ƒ}t td	dƒtd
dƒ ƒ}t tdd
ƒtddƒ ƒ}t tddƒtddƒ ƒ}	ttddƒtddƒ td	dƒtd
dƒ ƒ}
ttdd
ƒtddƒ tddƒtddƒ ƒ}| |¡t |
ƒksóJ ‚| |	¡t |ƒksþJ ‚|  tdd	ƒ¡t| tdd	ƒddksJ ‚| tdd	ƒ¡t|t  tdd	ƒ¡ƒks)J ‚d S )Nr   r1   r2   Tr"  r.   r5   r]   r4   r\   rc   r   r^   rŠ   r`   Fr!  )r   r   r   rÿ   r   r	   r  Ú	from_real)r%  r&  ry   r(  Zp1Zp2Zc5Zc6Zc7Zc8Zp3Zp4rM   rM   rN   Útest_ComplexRegion_union³  s$   "$24***0r1  c                      sd   t tddƒtddtj ƒ dd‰ tt‡ fdd„ƒ ˆ  tddƒ¡t tddƒtdƒ d	ƒks0J ‚d S )
Nr   r1   r2   Tr"  c                      s
   ˆ   ˆ ¡S rY   )r0  rM   ©r%  rM   rN   rZ   Ó  rß   z.test_ComplexRegion_from_real.<locals>.<lambda>rQ   F)r   r   r   rÿ   r(   rp   r0  r   rM   rM   r2  rN   Útest_ComplexRegion_from_realÐ  s   "0r3  c                  C   s~   t ddƒt ddƒ} }t ddtj ƒt dtjƒ}}t| | ƒ}tt| | || ƒdd}|jdks4J ‚|jd	t ks=J ‚d S )
Nr2   r.   r4   r_   r   Tr"  rc   r]   )r   r   rÿ   r   r	   Zmeasurer   )rH   rI   r$  r'  r%  r&  rM   rM   rN   Útest_ComplexRegion_measure×  s   r4  c                	   C   sœ  t ttdt ƒƒttdƒt tdt ¡ƒksJ ‚t tttddƒ dt ƒƒttd tƒks/J ‚t tttddƒ td ƒƒt ddt ¡ksGJ ‚t t ttddƒ td ¡ƒtt dtd ¡t td dt ¡ƒkskJ ‚t t ttddƒ ttddƒ ¡ƒtt dtd ¡t td dt ¡ƒks’J ‚t tt d td ƒƒttdtd ƒt ttddƒ dt ¡ƒksµJ ‚t t t d td ¡ƒtt dtd ¡t ttddƒ dt ¡ƒksÚJ ‚t tdt dt ƒƒt ddt ¡ksïJ ‚t tttddƒ t d ƒƒttd ttddƒ ƒksJ ‚t t ddt ¡ƒt ddt ¡ks"J ‚t t t d td ¡ƒtt dtd ¡t ttddƒ dt ¡ƒksHJ ‚t t t d td ¡ƒttdtd ƒt ttddƒ dt ¡ƒksmJ ‚t tt d td ƒƒttdtd ƒt ttddƒ dt ¡ƒks‘J ‚t t d	t ttddƒ ¡ƒt dtd ¡ks«J ‚t t d	t ttddƒ ¡ƒt dtd ¡ksÅJ ‚t t d	t ttddƒ ¡ƒt dtd ¡ksßJ ‚t t dt dt ¡ƒtt dt¡t tdt ¡ƒksýJ ‚t tdtdt ƒƒtdtƒksJ ‚t tdtd tdt ƒƒtdtd tƒks'J ‚t tdt d t d
t ƒƒtdtttddƒ ƒksDJ ‚t tttddƒ td ƒƒttd ƒks[J ‚t tdt ƒƒtdƒksjJ ‚t ttdtd ƒttd tƒƒƒttdtd ƒttd tƒƒksJ ‚t ttdtƒtdt ttddƒ ƒƒƒtdtƒks©J ‚t	t
dd„ ƒ t	tdd„ ƒ t	tdd„ ƒ t	tdd„ ƒ t	tdd„ ƒ d S )Nr2   r   r]   r.   r³   iùÿÿÿr3   rS   r4   rk   rl   c                   S   s
   t tjƒS rY   )r   r   r  rM   rM   rM   rN   rZ     rß   z*test_normalize_theta_set.<locals>.<lambda>c                   S   s   t tddƒƒS )Nr   r1   )r   r   rM   rM   rM   rN   rZ     r”   c                   S   s   t tddt ƒƒS r¥   ©r   r   r   rM   rM   rM   rN   rZ     rš   c                   S   s   t tdt dƒƒS )Nr2   r\   r5  rM   rM   rM   rN   rZ     rš   c                   S   s   t tdddt ƒƒS )Nr   r3   )r   r   r   rM   rM   rM   rN   rZ     ro   )r   r   r   r	   r   ZRopenr   rë   rV   r(   rp   r¼   rM   rM   rM   rN   Útest_normalize_theta_setá  sj   ÿ.0$ÿ"$ÿ(ÿ*ÿ*<**
ÿ(
ÿ(
ÿ444
ÿ$0:

ÿ 
ÿ&
ÿr6  c                  C   sÀ   t dƒ\} }}}}}tt|||ƒt| ||ƒ ƒt|t|   |t|  |t|  |t|   |t|  |t|  |t|   |t|  |t|  ƒ	ksJJ ‚ttdƒtdƒ ƒtddt  ƒks^J ‚d S )Nzx y z a b cr2   r3   )r   r   r   r   )r)   r*   r,   rH   rI   rJ   rM   rM   rN   Útest_ComplexRegion_FiniteSet  s   4(ÿÿ,r7  c                   C   s8   t j tddƒ¡t jksJ ‚t j t j¡t jksJ ‚d S r¥   )r   r  r  r   rT   rM   rM   rM   rN   Útest_union_RealSubSet"  s   r8  c                  C   s¢   t tddƒtddƒ ƒ} t tddƒtddƒ ƒ}t| |ƒ}t|ƒt ttddƒtddƒ tddƒtddƒ ƒdƒks;J ‚| j| jŽ | ksEJ ‚|j|jŽ |ksOJ ‚d S )Nr1   r2   r3   r.   F)r   r   r	   r   Úfuncrã   )r%  r&  r¾   rM   rM   rN   Útest_issue_9980'  s   
ÿ
ÿr:  c                  C   sþ   t ddƒ} tddddƒ}tddƒ}| tjv dksJ ‚| tjv dks#J ‚| tjv dks,J ‚| tjv dks5J ‚|tjv dks>J ‚|tjv dksGJ ‚|tjv dksPJ ‚|tjv dksYJ ‚|tjv dksbJ ‚|tjv dkskJ ‚|tjv dkstJ ‚|tjv dks}J ‚d S )Nr1   r2   r3   r4   r.   FT)r   r   r    r   r6   rA   rT   r  )Z
interval12Zfiniteset1234ZpointComplexrM   rM   rN   Útest_issue_117321  s   

r;  c                  C   sx   t ddƒ} t| d ƒ}ttjttƒƒtjksJ ‚ttjttdƒƒƒtjks'J ‚t| |ƒ|ks0J ‚ttj	|ƒ| ks:J ‚d S )Nr   r1   r2   r4   )
r   r   r	   r   r  r   r   r!   r   rC   )ÚunitZsquarerM   rM   rN   Útest_issue_11730F  s   
r=  c            	      C   sú   t ddƒ} t ddƒ}t||  ƒ}t|tjƒ|ksJ ‚t|| ƒtdƒks%J ‚t dtjƒ}ttjƒ}t tjd dtj d ƒ}t| | dd}t| | dd}t| | dd}t|tjƒt ddƒksbJ ‚t|tjƒt ddƒksoJ ‚t|tjƒtdƒks{J ‚d S )	Nr   r1   r2   r4   r3   Tr"  rQ   )r   r   r   r   rC   r   rÿ   )	r<  ZivalZcr1Zarg1Zarg2Zarg3Úcp1Úcp2Zcp3rM   rM   rN   Útest_issue_11938P  s   


r@  c                  C   sŽ   t ddƒt dtƒ} }t ddƒt tdt d ƒ}}t| | dd}t|| dd}d| |¡v s3J ‚d| |¡v s<J ‚d| |¡vsEJ ‚d S )	Nr   r1   r2   r3   Tr"  r³   r/   )r   r   r   r  )rH   rI   rJ   rK   r>  r?  rM   rM   rN   Útest_issue_11914d  s   rA  c                   C   s&   t tttd ƒtjƒ tj¡sJ ‚d S r’   )r   r   r)   r   r6   rD   rC   rM   rM   rM   rN   Útest_issue_9543o  r|   rB  c                   C   sJ   t tttƒtdƒƒdhksJ ‚t tttd ƒtjƒ tj¡tju s#J ‚d S )Nr1   r3   )r   r   r)   r   r   rT   rB   rM   rM   rM   rN   Útest_issue_16871s  s   ÿrC  c                   C   s&   t tttd ƒtjƒ tj¡sJ ‚d S )Nr3   )r   r   r)   r   rT   rD   rM   rM   rM   rN   Útest_issue_16871by  s   &rD  c                  C   sX  t tttt d ƒtjƒttttt d ƒtjƒksJ ‚t ttdt t d dt  ƒtjƒtttdt t d dt  ƒtjƒksDJ ‚t ttdt dt  ƒtjƒtttdt dt  ƒtjƒksdJ ‚tddd} t tt| t d	 ƒtjƒttt| t d	 ƒtjƒks†J ‚t ttdt d d
t  ƒtjƒtttdt d d
t  ƒtjƒksªJ ‚d S )Nr1   r3   r4   r_   r2   r   Tr   r\   r.   )r
   r   r)   r   r   rT   r   r   ©r   rM   rM   rN   Útest_issue_18050~  s    ÿ$$ÿÿÿ  ÿrF  c                     s‚  t j t j¡s	J ‚t j t j¡sJ ‚t j t j¡sJ ‚t j t j¡s$J ‚t jjt u s-J ‚t jj	tu s5J ‚t
t jƒ‰ ‡ fdd„tdƒD ƒdddt jdtddƒdtdd	ƒd	tdd	ƒd
tdd	ƒgksbJ ‚tƒ t jvsjJ ‚t jt jv srJ ‚t j d¡tdt jddks‚J ‚dt jv s‰J ‚tddd} | t jv s–J ‚ttdd„ ƒ t jjt jks¦J ‚t jjt jks¯J ‚t jjdks·J ‚t jjdks¿J ‚d S )Nc                    s   g | ]}t ˆ ƒ‘qS rM   r¡   r   r¢   rM   rN   rü   –  ro   z"test_Rationals.<locals>.<listcomp>rc   r   r1   rQ   r2   rk   r3   r³   rê   Fr!  r   T)Zrationalc                   S   s
   t tjv S rY   )r)   r   Ú	RationalsrM   rM   rM   rN   rZ   Ÿ  rß   z test_Rationals.<locals>.<lambda>)r   rT   rD   rG  r6   rA   rC   r>   r   r?   r7   rr   rt   r   r   r@   r   r   r(   rv   r;   Zclosurer<   r=   rE  rM   r¢   rN   Útest_RationalsŽ  s,   

þ rH  c                     sH   t jt jt jt jt jt jf‰ ‡ fdd„ˆ D ƒ} tdd„ | D ƒƒs"J ‚d S )Nc                 3   s$    | ]}ˆ D ]}t ||ƒV  qqd S rY   )r	   )rž   rH   rI   ©ZnbrsetsrM   rN   rŸ   «  s   €" z$test_NZQRC_unions.<locals>.<genexpr>c                 s   s    | ]}|j d u V  qdS )FN)Zis_Union)rž   r˜   rM   rM   rN   rŸ   ¬  s   € )r   r6   rA   rT   rG  rC   r  r¸   )ZunionsrM   rI  rN   Útest_NZQRC_unions§  s
   ÿrJ  c               	   C   s€   t ƒ } tt| t tdt |  td   tttt ƒƒƒ  ƒtj	ƒ}| 
tj¡tt| dt |  ttddƒ  ƒtj	ƒks>J ‚d S )Nr2   r4   rl   )r"   r   r   r   r   r   r   r   r   rT   r:   rC   r   )rî   rL   rM   rM   rN   Útest_imageset_intersection¯  s    ÿÿ"ÿrK  c                   C   sX   dt t tƒv s
J ‚dt tt dƒv sJ ‚tt t tƒvsJ ‚t t t tƒvs*J ‚d S )Nr1   r   rQ   r“   rM   rM   rM   rN   Útest_issue_17858·  s   rL  c                      sf   t t tƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ t tt dƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nc                      ó   ˆ d d d… S r’   rM   rM   rE  rM   rN   rZ   ¿  r”   z"test_issue_17859.<locals>.<lambda>c                      rM  rÝ   rM   rM   rE  rM   rN   rZ   À  r”   rQ   c                      rM  r’   rM   rM   rE  rM   rN   rZ   Â  r”   c                      rM  rÝ   rM   rM   rE  rM   rN   rZ   Ã  r”   )r   r   r(   rp   rM   rM   rE  rN   Útest_issue_17859½  s   rN  )kZsympy.core.exprr   Zsympy.sets.fancysetsr   r   r   r   Zsympy.sets.setsr   r   r	   r
   r   r   r   Zsympy.sets.conditionsetr   Zsympy.simplify.simplifyr   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   Zsympy.utilities.iterablesr&   Zsympy.testing.pytestr'   r(   r  r)   r*   r+   r,   Zsympy.core.modr-   r  rO   rR   rX   rz   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/  r1  r3  r4  r6  r7  r8  r:  r;  r=  r@  rA  rB  rC  rD  rF  rH  rJ  rK  rL  rN  rM   rM   rM   rN   Ú<module>   s„   $`	>  ,6(	/
7



