
    g                        d dl mZ 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 d dl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" d dl#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZC d dlDmEZE d dlFZFd ZGd ZHd ZId ZJd ZKd ZLe=d              ZMd! ZNd" ZOd# ZPd$ ZQd% ZRd& ZSd' ZTd( ZUd) ZVd* ZWd+ ZXd, ZYd- ZZd. Z[d/ Z\d0 Z]d1 Z^d2 Z_d3 Z`d4 Zad5 Zbd6 Zcd7 Zdd8 Zed9 Zfd: Zgd; Zhd< Zid= Zjd> Zkd? Zld@ ZmdA ZndB ZodC ZpdD ZqdE ZrdF ZsdG ZtdH ZudI ZvdJ Zwe=dK             ZxdL ZydM ZzdN Z{dO Z|dP Z}dQ Z~dS )R    )	unchanged)Contains)ImageSetRangenormalize_theta_setComplexRegion)	FiniteSetIntervalUnionimagesetIntersection
ProductSetSetKind)ConditionSet)simplify)Basic)Tuple	TupleKind)Lambda)
NumberKind)IRationaloopi)Eq)S)DummySymbolsymbols)Abs)explog)floor)sqrt)cossintan)And)eye)XFAILraises)xytz)ModNc                  X   t           j        } d| v sJ d| vsJ d| vsJ t          |           }t          |          t          |          t          |          t          |          f\  }}}}||||fdk    sJ t	          |t
                    sJ |                     t          dd                    t          dd          k    sJ |                     t          dddd                    t          dd          k    sJ | j	        | k    sJ | j
        dk    sJ | j        dk    sJ | j        dk    sJ | j        t          u sJ |                     t                    rJ t           j        t           j        fD ]F}|                    t           j                  |u sJ |                    t           j                  sJ G|                     t*                    t-          t/          t1          t*                    t*                    t*          dk    t*          t          k               k    sJ d S )	N         @)            r5      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ss          [/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/sets/tests/test_fancysets.pytest_naturalsrR       s   	
A6666Q;;;;a<<<<	aBb488T"XXtBxx7JAq!Qq!Q<<''''a;;xA''5A;;6666;;xAtT2233uQ{{BBBB:????9;$5A::::5B;;;;zz"~~k1:& $ $~~ag&&!++++{{17######??1Ra!__a1fa"f!E!EEEEEEE    c                  L   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    sJ d S Nr   )	r   rE   r<   r;   rD   r   r&   r,   r   )rJ   s    rQ   test_naturals0rW   ;   s    	A6666Q;;;;Q==Azz"~~::c!ff#a&&!!4!4444444rS   c                     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    sJ t          |t                    sJ |                     t          dd                    t          dd          k    sJ |                     t          dddd                    t          dd          k    sJ |                     t          dt           j                            t          dt           j                  k    sJ |                     t          j        dt           j                            t          dt           j                  k    sJ | j        t           u sJ | j        t          u sJ | 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 )	Nr2   r3   r4   )r   r5   rV   r6   r9   TF)r   IntegersrD   r   r;   r<   r=   r   r>   r
   r   InfinityLopenrB   rC   r?   r@   rA   rI   r,   r(   r   r#   )ZzirL   rM   rN   rO   s         rQ   test_integersr_   D   s.   	
A66667777a<<<<zz"~~zz2#	aBb488T"XXtBxx7JAq!Qq!Q<=((((a;;xA''5Q<<7777;;xAtT2233uR||CCCC;;x1:..//5AJ3G3GGGGG;;x~a4455q!*9M9MMMMM5RC<<<<5B;;;;:????9;$??1Ra!__rcAgq2v!F!FFFFFFFrS   c                  r   t          t          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    sJ t          t          t          d          t          z            t
          j                  } t          t          t          t          d          |           sJ t          t          t          t          dz            t
          j                  }d|v sJ d|vsJ t          t          d                               |          t          ddd          k    sJ d|                    t#          d	d                    vsJ t%          |          }t'          |          t'          |          t'          |          t'          |          f\  }}}}||||fd
k    sJ t          t          t          dt          z            t
          j                  }t)          dd          |v sJ t)          d          |v sJ |                    d          t-          dt          t          t          dt          z            t
          j                  d          k    sJ t)          d          |vsJ d|vsJ |j        sJ t1          t          t           t#          d	d                    t#          dd	          k    sJ t          t          t          t          dz            t#          d	d                                                    t#          d	d          k    sJ t          t          t          t          fdt          z            dhdh                                          t          d          k    sJ t          t          t          t          ft          t          z             h dh d                                          t          ddddddddd	  	        k    sJ t#          dd          t#          dd          z  }t5          dd          t          t          t          t          fft          dt          z  f          |          v sJ t5          dt
          j                  t          t          t          t          fft          dt          z  f          |          v sJ t5          dd          t          t          t          t          fft          t          dz  f          |          vsJ t5          dd          t          t          t          t          fft          df          |          v sJ t9          t#          dd           t#          dd          t#          dd                    }t5          ddd          t          t          t:          t          t          fft          t:          t          f          |          v sJ t5          t)          dd          dd          t          t          t:          t          t          ffdt          z  t:          t          f          |          v sJ dt          z  t          t          t          t          ffdt          z            |          vsJ dt          d!          z  t          t          t          t          ffdt          z            |          vsJ t)          dd          t          t          t          t          ffdt          z            |          v sJ t1          d" t
          j        t
          j                  }	|	j        t9          t
          j        t
          j                  k    sJ |	j        t
          j        t
          j        fk    sJ t          t          t          t          t          dz            h d          sJ t          t          t          t          fft          t          z             dd#h          }
d|
                                v sJ |
                     d          J t          tB          d$            d S )%Nc                  @    t          t          t          j                  S N)r   r,   r   rZ    rS   rQ   <lambda>ztest_ImageSet.<locals>.<lambda>a   s    x1:66 rS   r5   r6   r8   r2   
   	      r   )r5   r8   rf   rg   g      ?Fevaluateg333333?)r5   r6   rV   r7      >   r5   r6   r7   >   re                                  !   r9      d   c                     | |z   S rb   rc   )r,   r-   s     rQ   rd   ztest_ImageSet.<locals>.<lambda>   s
    q1u rS   )r7   r8   c                  X    t          t          t          t          dz            d          S )Nr6   r5   r   r   r,   rc   rS   rQ   rd   ztest_ImageSet.<locals>.<lambda>   s    hvaA:: rS   )"r+   
ValueErrorr   r   r,   r   rZ   r	   r-   EmptySetr   r"   r   r   r:   ranger>   r
   r;   r<   r   rD   r   is_iterabler   doitr   Halfr   r.   	base_pset	base_sets	_contains	TypeError)emptysquaressirL   rM   rN   rO   	harmonicsc3S1S2s              rQ   test_ImageSetr   `   s   
:66777F1aLL!*--1====F1aLL!*--!4444F1aLL!*--;;;;3q66"9--qz::EXva||U33333vaA
33G<<<<GeBii **733yAq7I7IIIIIW&&x2777777	gBb488T"XXtBxx7JAq!Qq!Q<=((((1Q344IAq>>Y&&&&C==I%%%%c""hhva1~~qz22U'D 'D 'D D D D DB<<y((((""""    Ar8Aq>>**hr1oo====F1adOOXa^^4499;;x1~~MMMMFAq61Q3''!qc227799Yq\\IIIIVQFAaC(()))\\\BBGGII"b"b"b"b"==> > > > 	A!Q'AA;;(6Aq6)a1X#>#>BBBBBBAFxAy1ac((C(CQGGGGGGB<<xAy1ad)(D(DaHHHHHHB<<8FQF9q"g$>$>BBBBBB	HQNNHQOOXa^^	D	DBAq>>Xfq!Qi\Aq!9&E&ErJJJJJJ!QA&&(6Aq!9,1aQR3T3TVX*Y*YYYYYR4xAy!A# 6 6::::::QsVV88FQF9ac$:$:A>>>>>>Aq>>Xfq!fY!&<&<a@@@@@@	$$aj!*	=	=B<:aj!*======<AJ
33333 XvaA			:::::	&1a&AaC((66*:	;	;B		>>>> <<??"""
9::;;;;;rS   c            
          t          t          t          t          t	          t                              t          d                    t                    sJ d S )Nr2   )r=   r   r,   r$   r&   r   r   rc   rS   rQ   test_image_is_ImageSetr      s<    hq$s1vv,,a998DDDDDDDrS   c                  h   t          dd          \  } }t          | |ff| t          |          z  | t          |          z  f          }t	          |t          dd          t          dt                    z            }d|v sJ d|vsJ d|v sJ |                    | df          J |j        rJ d S )	Nr, thetaTrealr   r5   )r5   r   )r   rV   )r   r   )	r   r   r%   r&   r   r
   r   r   r   rthL
halfcircles       rQ   test_halfcircler      s    JT***EArBzAc"ggIqRy122A!Xa^^HQOO;<<JZ*$$$$ZA''///%%%%%%rS   c                      t          dd          \  } }t          | |ff| t          |          z  | t          |          z  f          }t	          |t          dd          t          dt                    z            }| dt          z  f|vsJ d S )Nr   Tr   r   r5   r6   )r   r   r%   r&   r   r
   r   r   s       rQ   test_halfcircle_failr      s    JT***EArBzAc"ggIqRy122A!Xa^^HQOO;<<Jqt9J&&&&&&rS   c                  "   t          t          t          t          dz  z
            } t          | t          j                  }t          |          }t          |          t          |          t          |          t          |          fdk    sJ d S )Nr6   )r   r6   r8   r9   )r   r,   r   r   r:   r;   r<   )r   evensis      rQ   $test_ImageSet_iterator_not_injectiver      sm    q!a!e)AQ
##EUAGGT!WWd1ggtAww/<??????rS   c                  ~   t          t          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 sJ d S )Nc                  H    t          t          dt          d                    S )Nr   r6   )lenr   r   rc   rS   rQ   rd   z$test_inf_Range_len.<locals>.<lambda>   s    s5B??33 rS   r   r6   rv   )r+   r|   r   r   sizer   r[   rc   rS   rQ   test_inf_Range_lenr      s    
:33444B??1:----RC!QZ////Q AJ...."a AJ......rS   c                  Z    t          d          t          d          t          dd          cxk    rt          ddd          k    sn J t          ddd          } d| v sJ d| vsJ d	| vsJ d
| vsJ t          t          dd                    t          t          d                    k    sJ t          t          ddd                    t          t          ddd                    k    sJ t          dd          j        dk    sJ t          dd          j        dk    sJ t          ddd          j        dk    sJ t          ddd          j        dk    sJ t          ddd          j        dk    sJ 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          }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    sJ t          t          t           d          j        t          k    sJ t          t          d            t          t          d            t          t          d            dt          dt          d          v sJ dt          t           dd          v sJ t          t          dt                    vsJ t          dd           }|t          t                    vsJ t          d!d            }t          t                                        |          dusJ t          d"d#          }|t          t           t                    vsJ t          t          d$            t          t          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' t          ddd          D                       sJ t          t          t           dd                    t          t           f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    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    sJ t          ddd          d         dk    sJ t          ddd          d         d	k    sJ t          ddd          d         d&k    sJ t          ddd          d         dk    sJ t          t          d)            t          t          d*            t          t          d+            t          t          d,            t          t0          d-            t          t0          d.            t          t          d/            t          dt           d0          ddd         k    sJ t          dt           d0          d dd         t          dd0d          k    sJ t          t          d1            t          t           dd          d d d0         t          dt           d          k    sJ t          t          d2            t          t          dd0          d d          t          t          dd0          k    sJ t          t           dd          d d0d0         t          ddd          k    sJ t          t           dd          d d0d         t          t           dd          k    sJ t          t          d3            t          t          d4            t          t           dd          d0d d0         t          dt           d          k    sJ t          t          d5            t          t          d6            t          t          dd0          dd          t          t          dd0          k    sJ t          t          d7            t          t          dd0          dd0         t          t          dd0          k    sJ t          t          d8            t          t          d9            t          t           dd          d0d d         t          ddd          k    sJ t          t          dd0          ddd         k    sJ t          t          d:            t          t          d;            t          t          d<            t          t          dd0          ddd0         k    sJ t          t          dd0          d dd         k    sJ t          t          d=            t          t2          t2          t4                    k    sJ j        k    sJ dvsJ t                    g k    sJ t                    dk    sJ j        t          j        u sJ                     t9          d                    t          j        u sJ t=                    du sJ t          t0          fd>           d d         k    sJ t          t>          fd?           t          t>          fd@                                t2                    t          j!        u sJ d gt          t          d                    z   }t          dd          t          ddd          fD ]}t          |          } tE          j#        ||g dA          D ]\  }}}	t          d          D ]n}
t          t7          |                     } |j        }t          ||||	                   }| |||	         }dB|dC|dD|dD|	dE|dF|}||k    }|s
J |            ot          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 ?t          t          t           fdG           t           d                    t          d          k    sJ t           dH                    t          dH          k    sJ t          dd                               t2                    t2          dk    t2          dk    z  tM          tO          t2          d          d          z  k    sJ t          t          dd0                               t2                    t2          dk    t2          t          k     z  tM          tO          t2          dz   d0          d          z  k    sJ d S )INr   r2   r5   re   rk   r6   rn   rj   rm   rl   rV         r9   C   <   rw   &   r7   rY   ipTpositiver8   c                  :    t          t           t          d          S Nr6   r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>   s    ubS"a00 rS   c                  B    t          t          t          t                    S rb   )r   r,   r   r-   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>   s    uQA rS   c                  8    t          t          t          d          S Nr   )r   r,   r-   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>   s    uQ1~~ rS   r3   rK   FintegerurB   infinitec                  :    t          dt          d          d         S )Nr   r6   rV   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>   s    uQAr2 rS   c                  <    t          dt           d          d         S )Nr   rv   rV   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>   s    uQR004 rS   rf   c              3   $   K   | ]}|j         V  d S rb   
is_Integer).0r   s     rQ   	<genexpr>z!test_Range_set.<locals>.<genexpr>   s$      55q|555555rS   c                  "    t                     S rb   r<   )its   rQ   rd   z test_Range_set.<locals>.<lambda>  s    d2hh rS   c                  @    t          t          dd          ddd         S )Nr   rV   r5   r7   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    uR"~~a!e4 rS   c                  >    t          t          dd          d d         S )Nr   rV   r5   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    uR"~~bqb1 rS   c                  8    t          dt                    d         S )Nr5   rv   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    uQ||B/ rS   c                  :    t          t           d          d         S Nr5   r6   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    ubS!}}Q/ rS   c                  ,    t          d          d         S )Nre   ir   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    uRyy~ rS   c                  ,    t          d          d         S )Nre   rk   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    uRyy} rS   c                  B    t          dt           d          ddd         S Nr6   rv   r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    uQR001Q7 rS   rv   c                  B    t          t           dd          d dd         S Nr8   r6   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    ubS!Q//15 rS   c                  B    t          t           dd          d d d         S r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>  s    ubS!Q//!4 rS   c                  B    t          t           dd          d dd         S Nr8   r6   r   rv   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>       ubS!Q//26 rS   c                  B    t          t           dd          d dd         S )Nr8   r6   rv   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>!  r   rS   c                  B    t          t           dd          ddd         S )Nr8   r6   rv   r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>#  s    ubS!Q//1R8 rS   c                  B    t          t           dd          dd d         S )Nr8   r6   r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>$  s    ubS!Q//15 rS   c                  B    t          t           dd          ddd         S r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>&  s    ubS!Q//"Q7 rS   c                  >    t          t          dd          dd         S r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>(  s    uRB//!5 rS   c                  B    t          t           dd          dd d         S )Nr8   r6   rV   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>)  s    ubS!Q//26 rS   c                  :    t          t          dd          d         S Nr   rv   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>,  s    uRB//2 rS   c                  @    t          t          dd          ddd         S )Nr   rv   r   re   r6   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>-  s    uRB//Bq9 rS   c                  @    t          t          dd          dd d         S r   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>.  s    uRB//26 rS   c                  @    t          t          dd          d dd         S )Nr   rv   r5   rV   r   rc   rS   rQ   rd   z test_Range_set.<locals>.<lambda>1  s    uRB//26 rS   c                       d         S r   rc   r   s   rQ   rd   z test_Range_set.<locals>.<lambda><  s    uQx rS   c                       j         S rb   rB   r   s   rQ   rd   z test_Range_set.<locals>.<lambda>>  	    	 rS   c                       j         S rb   rC   r   s   rQ   rd   z test_Range_set.<locals>.<lambda>?  r   rS   )rV   Nr5   r7   
[:z] = z -> c                  4    t            d                    S Nr5   r   )builtin_ranges   rQ   rd   z test_Range_set.<locals>.<lambda>\  s    eMM!$4$455 rS   l    J))(r   listr~   rC   rB   r   r   r   r   r+   r|   rD   r   Zeroallr;   r   r>   rZ   	ComplexesrG   	Rationalsr:   rE   
IndexErrorr,   r-   reversedr	   r}   boolNotImplementedErrorrI   false	itertoolsproductr?   stepr   r0   )r   r   rK   r   rB   ABRrL   rM   rN   reverseresultanstxtcheckrevr   r   r   s                   @@@rQ   test_Range_setr     s   !HHE88uQ{{4444eAq!nn444444b"aA7777A::::Q;;;;Q;;;;aU1XX....aB  Dq!R$9$99999 B<<r!!!!B<<q    Q2%%%%Q1$$$$R B&&&&Q B&&&&uRR  !!Q&&&&Aq>>U""""Ru$$$$Q??e####"a%%%%Bu$$$$RCu$$$$Bu$$$$		%	%	%BBu$$$$RCu$$$$Ba++++Ar??eAqkk))))"b>>"$$$$bS""b((((
:00111
:..///
:--...aQsAq!!!!!!U1b\\!!!!	u	%	%	%BU2YYT"""A99a  ----
%$
'
'
'CeRCnn$$$$
:22333
:44555"aB16))))QB1$$$$eBiiB??2!####55U1b!__55555555	eRCA		B
9&&&&'''??1:&&%////R%%ak22eBA6F6FFFFFR%%ag..%B2B2BBBBBR%%ak22eBA6F6FFFFFR%%aj11U2r15E5EEEEER%%aj11U1b!__DDDDR%%ak22eAr1ooEEEE B??1""""B??1####B??2!####B??2!####
:44555
:11222
://000
://000
:--...
:,,---
:77888RCQqU#u,,,,RCTaT"eAr2&6&66666
:55666"aDDbD!U1rc2%6%66666
:44555QBBB5Q#3#33333"aFRF#uQ26666"aERE"eRCA&6&66666
:66777
:66777"aBFF#uQR'8'88888
:88999
:55666QACC E"a$4$44444
:77888QAbE"eB2&6&66666
:55666
:66777"aBEE"eAq!nn4444QC!G$----
:22333
:99:::
:66777QAbG$----QDQqD!U****
:66777 Aq>>U"""">U""""E>>>>;;"u::????:??9Q<<((AJ6666;;%
:''''(((!9
 1 1 1 1222
 1 1 1 1222q!!QW,,,,
$uRyy//	!B!RLL!ROO
 " " GG (R1E1E1EFF 		" 		"GAq! 88 " "!%%Ja!Ah!Ah111aaaFFFCC)v!!c!!!!"		" B??#uQA6666Ar1oouQA/ # #juAESW$4$4$4$4v#("""""M
95555666]]2599,,,,]]=))**eM.B.BBBBB A;;$$Q''AFqAv+>"SAYYPQBRBR+RRRRRQ))!,,aAF0Cr#aRSeUW..Z[G\G\0\\\\\\\rS   c            	        	
 t          t          t          dz   d          
t          t          t          t                    	t	          dd          t	          ddd          } t          |           t          d|  d          t          d	z   d
          }t          dz  dz            t	          dd          t          dd          t          t          fd           t          t          fd           t          t          fd           t          t          fd           
j        t          t          dz   dfk    sJ 	j        t          t          t          fk    sJ |j        dz   d
fk    sJ j        dz  dz  fk    sJ t          t          
fd           t          t          	fd           j	        j        | dz
  ddfk    sJ j	        j        |  dz   ddfk    sJ |j	        j        dz   d
z
  dfk    sJ j	        j        dz  dz  dz  fk    sJ 	vsJ |vsJ dv sJ dv sJ t          t          fd           t          t          fd           d	vsJ d|vsJ dz   |vsJ d
z   |v sJ t          t          
fd           t          t          	fd            t          t          
fd!           t          t          	fd"           t          t          |                    k    sJ t          t                              k    sJ 	                    t          j                  	k    sJ 	                    t!          t                              t#          t          h	          k    sJ t          t          	fd#           t          t          
fd$           t          t          	fd%           t%          |          |j        cxk    rdk    sn J t%                    j        cxk    rdk    sn J t          t          
fd&           t          t          
fd'           t          t          	fd(           t          t          	fd)           t)          t          d                    d*k    sJ t)          
          sJ t)          |          sJ t)                    sJ t)                    sJ t          t          	fd+           t          t          fd,           t          t          
fd-           t          t          	fd.           j        dk    sJ j        |  dz   k    sJ |j        k    sJ t          t          fd/           t          t          
fd0           t          t          	fd1           j        | dz
  k    sJ j        dk    sJ |j        k    sJ t          t          fd2           t          t          
fd3           t          t          	fd4           t          t          	fd5           t          t          	fd6           |d d
         t          dz   d
          k    sJ |d         k    sJ |d         d7z   k    sJ |d         dz   k    sJ d d
         t          dz  dz            k    sJ d         k    sJ d         dz  k    sJ d         dz  k    sJ t          t          fd8           d         j        cxk    rdk    sn J d         j        cxk    r	| dz
  k    sn J d         j        cxk    rdk    sn J d         j        cxk    r
|  dz   k    sn J t          t          fd9           |j        k    sJ |j        dz   k    sJ t          t          fd:           |                    t                    t          k    t          dz   k    z  t1          t3           t          z   d
          d          z  k    sJ                     t                    t1          t3           t          z   dz            d          t          k    t          dz  k    z  dz  dk    z  t          k    t          dz  k    z  dz  dk    z  z  z  k    sJ t          dz                                 t                    t1          t                    k    sJ 	                    t4                    t1          t3          t          d          d          t1          t3          t          d          d          z  t1          t3          t           t4          z   t                    d          z  t4          t          k    t4          t           t          z   k    z  t          dk    z  t4          t          k    t4          t           t          z   k    z  t          dk    z  z  z  k    sJ 
                    t4                    t1          t4          t                    t1          t3          t          d          d          z  k    sJ 
                    t                    t1          t3          t          d          d          k    sJ t	          d;dd<          }t	          d=dd>          }t          d                                        t9          dk    dk              k    sJ t          d                                        t1          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
                              |          t9          |dk    |d?k              k    sJ t          ddd
                              d
z            t9          d
z  dk    d
z  d?k              k    sJ t          ddd
                              |          d*k    sJ t          dd@d
                              |          d*k    sJ t          dd@d
                              |          t9          |dk    |dk              k    sJ t          ddd                              |          d*k    sJ t          d@dd                              |          t9          |dk    |d@k              k    sJ t          t:           dd
                                        t=          t          t:           dd
                    k    sJ d S )ANr8   r2   r   Tr   r   r   r   rV      r6   rj   r7   rB   r   c                  "    t                     S rb   r   r   s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>q  s    uSzz rS   c                  &    t           dd          S rU   r   r   s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>r  s    uS!R00 rS   c                  &    t            d          S r   r   r   s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>s  s    uS#q11 rS   c                  &    t          dd           S r   r   r   s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>t  s    uQ3// rS   rk   re   c                       j         S rb   r   xrs   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>{  	    r{ rS   c                       j         S rb   r  srs   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>|  r  rS   r5      rv   rw   r   c                      d v S r   rc   iprs   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    a3h rS   c                      d v S NrV   rc   )inrs   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    bCi rS   皙?c                      t            v S rb   r,   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    a2g rS   c                      d v S r   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    a2g rS   c                  <    t          t                               S rb   r<   r;   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>      tDHH~~ rS   c                  <    t          t                               S rb   r  r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r  rS   c                       d d         S r   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>      r"1"v rS   c                       d         S r   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>      r!u rS   c                       d         S r   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r$  rS   c                  "    t                     S rb   r   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>      s2ww rS   c                       j         S rb   r   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  	    rw rS   c                  "    t                     S rb   r'  r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r(  rS   c                       j         S rb   r*  r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r+  rS   Fc                  "    t                     S rb   r   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    tBxx rS   c                  "    t                     S rb   r/  ir2s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    tCyy rS   c                       j         S rb   r   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  	    rv rS   c                       j         S rb   r   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r4  rS   c                       j         S rb   r   r1  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  	    sw rS   c                       j         S rb   r   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r4  rS   c                       j         S rb   r   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r4  rS   c                       j         S rb   r   r1  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r7  rS   c                       d         S r   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r$  rS   c                       d         S r   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r$  rS   c                       d         S r  rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    r"v rS   c                       d d         S r   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  r"  rS   rg   c                  .    t                     d         S r  r   r   s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    uQxx| rS   c                       d         S Nrv   rc   r  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    s2w rS   c                  ,    t                     j        S rb   )r   rB   r@  s   rQ   rd   z%test_Range_symbolic.<locals>.<lambda>  s    uQxx| rS   e)r   eveno)r   oddr9   rf   )r   r,   r-   r.   r   r   r+   r|   argsr   r   r<   r;   r>   r   rZ   r	   r   r   r   r   rB   rC   rI   r   r0   r/   rD   r(   r   r   )r   irrD  rF  r   rB   r  r  r2  r  r  s       @@@@@@@rQ   test_Range_symbolicrJ  e  s   	q!a%		B	q!QBsD!!!A	TD	1	1	1B
))C
B3

C	q!b&!		B
1Q3!

CsD!!!A
%$
'
'
'C
:))))***
:0000111
:1111222
:////0007q!a%m####7q!Qi7q!b&!n$$$$82a41~%%%%
:****+++
:****+++<aR 00000<"q!Q////;BAr22222<1bdBqD 11111b====b====88888888
9&&&&'''
9''''(((R<<<<R<<<<q5????q5B;;;;
9oooo&&&
9oooo&&&
:----...
:----...R>>QS		??a<<
##r))))<<	!%%qc2)>)>>>>>
:~~~~&&&
:}}}}%%%
:}}}}%%%r77bg##########s88sx$$$$1$$$$$$
:'''
:'''
:'''
:'''a>>U""""88OOO88OOO9999
:''''(((
:(((()))
:~~~~&&&
:~~~~&&&7a<<<<7rcAg6Q;;;;
:'''
:~~~~&&&
:~~~~&&&7b1f7a<<<<6Q;;;;
:'''
:}}}}%%%
:}}}}%%%
:~~~~&&&
:~~~~&&&bqb6U1a!eQ''''''a5A::::b6QVb6QVrr7eAqsAaC((((((q6Q;;;;r7ac>>>>r7ac>>>>
:++++,,,q6SW!!!!!!!!!!r7cg''''a''''''q6SW!!!!!!!!!!r7cg(((("q((((((
:'''6Q;;;;6QV
:++++,,,AAFqAF{#;
3rAvq>>1$    Q2QBFAaC!$ $"#q&Q!A#X!6!A#(!C
q&Q!A#X	!A#)	,!.$/ / / / / AE??((++r!Qxx7777A"Aq		1# #3q!99a((#)+-c1"q&!nna ,
 ,
#
Av!rAv+&!q&1
q&Q1"q&[	!Q"W	-/#0 0 0 0 0 A"Q((RAq		1-=-="=====A"SAYY"2"22222sDt,,,AsDd+++A88Q3qAvqAv#6#6666688Q2a88++++"a$$Q''AF3333"b>>""1%%----Aq>>""1%%!U1a^^)D)DDDDDAq>>""1%%Q!VQ!V)<)<<<<<Aq>>""1Q3''3qsax1+B+BBBBBAq>>""1%%....Aq>>""1%%....Aq>>""1%%Q!VQ!V)<)<<<<<Ar??##A&&%////Ar??##A&&#a1fa1f*=*====="a$$Q''8AubS!Q7G7G+H+HHHHHHHrS   c                     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 d S )Nr   r5   r7   r8   r   rV   r6   rx   r2   r9   P   7   G   rj   rg   rw   )r   r   r}   r   r>   r   )rL   rM   r   s      rQ   test_range_range_intersectionrO    s   1XXuQxx,1XXuQ||QZ01XXuR}}aj11a[[%1++uQ{{31a[[%1++uQ{{31b!__eAr1ooqz:1b!__eBiiq"a91b!__eCjj%3*:*:;1b!__eBiiq"a91b!__eAqkk1:61b!__eBA..b"a0@0@A1a^^UB31--qz:1b!__eAr1oouQA?1a^^U1b!__aj9< 5 51a {{1~~""""{{1:&&!++++z##A&&!++++z##AJ//14444!1{{1~~""""{{1:&&!++++z##A&&!++++z##AJ//144444/5 5rS   c            	         t          dd          } t          t          d                              t	          | | dz                       t
                    sJ t          d                              t	          dd                    t          d          k    sJ t          d                              t	          t           t                              t          d          k    sJ t          d                              t	          dt                              t          dd          k    sJ t          d                              t	          d	t                              t          dd          k    sJ 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	          j        dd                    t          dd          k    sJ t          d                              t	          j        d
d                    t          j	        u sJ t	          dd                              t          j
                  t	          dd          k    sJ t	          dd                              t          j                  t	          dd          k    sJ t	          dd                              t          j                  t          dd          k    sJ t	          dd                              t          j                  t          dd          k    sJ t	          dd                              t          j                  t          dd          k    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   r7   r6   r8   r   r5   g?r  g@      ?rV   r2   r9   g?g?)r   r=   r   r>   r
   r   r   openr   r}   r   rG   rZ   r:   rE   )rQ  s    rQ    test_range_interval_intersectionrT    s]   d###AeAhh((!QU););<<lKKKKK88hq!nn--q999988hsB//00E!HH<<<<88hq"oo..%1++====88hsB//00E!QKK????88hsA..//5A;;>>>>88hsC0011U1a[[@@@@88hmAq1122eAqkkAAAA88hmC5566!*DDDDB??$$Q[11Xb!__DDDDB??$$QW--"a@@@@B??$$QZ00E"aLL@@@@B??$$QZ00E!QKK????B??$$Q[11U1a[[@@@@ 88hsC0011QZ????88hsB//00AJ>>>>>>rS   c                     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 sJ t          dd          j        du sJ t          t          t                    j        du sJ t          t           t                     j        du sJ t          dd	          } t          d
d	          }t          | | dz             j        du sJ t          | d          j        du sJ t          d| dz             j        du sJ t          | |          j        du sJ t          | |z   || z
            j        du sJ t          | | |z   | z             j        du sJ t          | t                    j        du sJ t          t           |           j        du sJ t          | t                     j        du sJ t          t          |           j        du sJ d S )Nrx   Tr6   F2   r   nr   m1   r   rw   )r   is_finite_setr   r   rX  rY  s     rQ   test_range_is_finite_setr]    sT   s)T1111B<<%...."b>>'50000"b>>'50000bS>>'4////A;;$,,,,R==&$...."rc??(D0000sD!!!AsD!!!AAF)T1111A;;$,,,,QU)T1111A;;$,,,,QA,4444AEAI,4444B<<%...."a==&%////RC==&$....Q<<%------rS   c                  V   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 sJ t          dd          j        du sJ t          t          t                    j        du sJ t          t           t                     j        du sJ t          dd	          } t          d
d	          }t          ddd          }t          | | dz             j        du sJ t          | d          j        du sJ t          d| dz             j        du sJ t          d|dz             j        du sJ t          | |          j        du sJ t          | |z   || z
            j        du sJ t          | | |z   | z             j        du sJ t          | t                    j        du sJ t          t           |           j        du sJ t          d          }t          ||dz             j        du sJ t          |d          j        du sJ t          d|dz             j        du sJ t          ||          j        du sJ t          ||z   ||z
            j        du sJ t          |||z   |z             j        du sJ t          |t                    j        du sJ t          t           |          j        du sJ d S )NrV  rx   Tr6   FrW  r   rX  r   rY  rQ  r  rZ  r   rw   r,   )r   r   r   r   )rX  rY  rQ  r,   s       rQ   test_Range_is_iterabler_  3  s]   s'4////B<<#u,,,,"b>>%...."b>>%....bS>>%----A;;"d****R==$,,,,"rc??&$....sD!!!AsD!!!AsD4000AAF'4////A;;"e++++QU'50000QU'50000A;;"e++++QA*e3333AEAI*e3333B<<#u,,,,"a==$----sAAF'50000A;;"e++++QU'50000A;;"e++++QA*e3333AEAI*e3333B<<#u,,,,"a==$------rS   c            
         t          t          t          dt          z  t          dd          z             t          j                  } t          t          t          dt          z  t          dd          z             t          j                  }|| k    sJ t          t          t          dt          z  t          dd          z
            t          j                  }|| k    sJ t          d          }t          t          dt          z  |z   t          j                  }|dz   |v sJ d\  }}}|t          t          ||t          z  z   t          j                  v sJ |t          t          ||t          z  z   t          j                  v sJ t          d	d
          }|dz  |z
  dz   }t          ||t          j                  j	        j
        |dz  |z   dz   k    sJ d|z  dz
  }t          ||t          j                  j	        j
        d|z  dz   k    sJ t          t          t          dt          z  ft          j                  t          t          t          t          dt          z  f          t          j                  k    sJ d S )Nr6   r7   rw   rv   rm   r-   r8   )gZd;O?gʡE?gm?r,   T)negativer5   )r   r   r,   r   r   rZ   r   r   r   lamdaexpr)	r   imr-   r   rL   rM   rN   _xeqs	            rQ   test_Integers_eval_imagesetrg  S  s   
6!QqS8Aq>>122AJ
?
?C	&BqD8Aq>>122AJ	?	?B9999	&BqD8B??233QZ	@	@B9999sAAaC!GQZ((Aq5A::::!GAq!A!GQZ000000A!GQZ000000	t	$	$	$B	QaBBAJ''-2b!ebj1nDDDD	
2BBAJ''-2adQh>>>>A1Q3x,,Aqs8$$aj112 2 2 2 2 2rS   c                  n   t          d          \  } }}t          t          | t          |z   z  |z   t          d                    t          t          | t          z  | |z  z   |z   t          d                    k    sJ t          dz   dz  t          t          t          d                    j        j        k    sJ | t          |z   z  |z   t          ddd          }t          t          |          }|j        j        k    sJ t          |          fdt          |          D             k    sJ d S )Nza b cr7   r5   r6   r   rv   c                 j    g | ]/}                     t          |                                          0S rc   )subsr,   expand)r   r   rf  s     rQ   
<listcomp>z,test_Range_eval_imageset.<locals>.<listcomp>t  s1    CCCa2771a==//11CCCrS   )r   r   r,   r   rb  rc  r   )rL   rM   rN   r   imsetrf  s        @rQ   test_Range_eval_imagesetrn  j  s'   gGAq!Aq!a%y1}eAhh//AaC!A#IM588,,- - - -
a%!BAr588$$*/25555	
AEQBaRAQAE;r!!!!;;CCCC477CCCCCCCCCrS   c                      t          t          t          t          t	          t
          t          z  dz                      t          dd                     t          dt          d           dz  dt          d          dz  d          k    sJ d S )Nr8   r   rm   rV   r6   r   r5   )r	   r   r   r,   r&   r   r   r$   rc   rS   rQ   test_funrp  w  s    xq#bd1f++ 6 6c2  %b477(1*aaAFFG G G G G GrS   c                     t          dd          } t          ddd          }t          ddd          }t          d          j        sJ t          d	          j        rJ t          d	d          j        sJ t          d
d          j        rJ t          |           j        J t          |          j        sJ t          |          j        du sJ t          |d          j        du sJ t          ||          j        du sJ t          ||          j        sJ t          |d
          j        J t          ||d
          j        du sJ d S )Nr   Tr   rX  )ra  r   rQ  )r   r   r   r5   rV   F)r   r   is_empty)r   rX  rQ  s      rQ   test_Range_is_emptyrs  |  sb   sD!!!AsT4000AsT4000A88Qxx    A;;R||$$$$88$$$8888%%%%A;;5((((A;;5((((A;;B<< (((Ar??#u,,,,,,rS   c                  ^   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    sJ t           j        t	          dt
                    k    sJ t           j                            t	          t
           t
                              sJ t           j                            t          t
           t
                              t          t
           t
                    k    sJ t           j	        t           j        vsJ t           j
        t           j        vsJ t          t           j	        z   t           j        vsJ d S )Nr2   r6   )r6   r2   rV   r   )r   rG   Pir$   r
   r   rH   r>   r   ComplexInfinityNaNr,   rc   rS   rQ   
test_Realsrx    sL   <<<<417????GG8qw    8817""""7hsB''''''7hq"oo%%%%7Xrc2../////7UB3^^,,rc2>>>>AG++++5q  //////rS   c                     dt           j        v sJ ddt          z  z   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 sJ t           j                            t           j                  t           j        k    sJ t           j                            t           j                  t           j        k    sJ t           j        t          t           j        t           j        z            k    sJ t           j        t          t          dd          t          dd          z            k    dk    sJ t          t           j                  dk    sJ t          t           j                  dk    sJ d S )	Nr2   r8   r6   rV   r5   r7   Fr   )r   r   r   ru  r$   r>   rG   unionr   r
   strreprrc   rS   rQ   test_Complexr}    sl   qs7ak!!!!41;GG8q{""""288q{"""";  ))QW4444;QW%%4444;-888888K=!QA)FGGGEQQQQq{{****++++++rS   c                 F    t          t          j        ||                     S )z.Return first n items of the iterable as a list)r   r   islice)rX  iterables     rQ   taker    s    	 1--...rS   c                  l   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sJ dt           j                            t          dt                              v sJ dt           j                            t          t           d                    v sJ t          d t          dt           j                            t          dt                                        D                       sJ d S )Nr2   r3   r4   r7   c              3   $   K   | ]}|j         V  d S rb   r   )r   r,   s     rQ   r   z%test_intersections.<locals>.<genexpr>  s@       G G | G G G G G GrS   re   )	r   rZ   r>   rG   r:   r
   r   r   r  rc   rS   rQ   test_intersectionsr    sy   :((AJ6666
$$QW------
$$QW------QZ))!'222222aj**17333333
$$Xa__555555%%hsA&6&6777777 G G"aj228Ar??CCEEG G G G G G G G G GrS   c            	      *   ddl m} m} t          t	          | |           t
          j                  t          t	          ||          t
          j                  k    sJ t          t	          | d| z            t
          j                                      t          t	          |d|z  dz             t
          j                            t
          j        u sJ t          t	          | d| z            t
          j                                      t          t	          | d| z  dz             t
          j                            t
          j        u sJ t          t	          |d|z            t
          j                                      t          t	          | d| z            t
          j                            	                    t          t	          t          dt          z            t
          j                            sJ t          t          t          dz  t          dd          z   t
          j                                      t
          j                  t
          j        u sJ t          t          t          dz  t
          j        z   t
          j                                      t
          j                  t
          j        u sJ t          t	          | d| z  dz             t
          j                  }|                    t
          j                  |k    sJ d S )Nr   r\  r6   r5   r7   r9   r2   )	sympy.abcrX  rY  r   r   r   rZ   r>   r}   dummy_eqr   r.   r,   r   r   )rX  rY  S53s      rQ   test_infinitely_indexed_set_1r    ss   F1aLL!*--&A,,
1S1SSSSSF1acNNAJ//99VAqsQw''446 69:D D D D F1acNNAJ//99VAqsQw''446 69:D D D D F1acNNAJ//991Q3446 66>hVAqs^^QZ0072 722 2 2 AqsXa^^+QZ88BB1:NNRSR\\\\\AqsQV|QZ00::1:FF!*TTTT 6!QqS1W%%qz
2
2C==$$++++++rS   c                     ddl m}  t          dd          }t          t	          | |           t
          j                  t          t	          | | |z             t
          j                  k    sJ t          t	          | | t          z             t
          j                  t          t	          | | |z   t          z             t
          j                  k    sJ t          t	          | |           t
          j                  t          t	          | |  |z             t
          j                  k    sJ t          t	          | d| z            t
          j                  t          t	          | d| z            t
          j                  k    sJ t          t	          | d| z  t          z             t
          j                  t          t	          | d| z  t          z   dz
            t
          j                  k    sJ d S )	Nr   rX  rL   Tr   ir9   r6   )	r  rX  r   r   r   r   rZ   r   r   )rX  rL   s     rQ   test_infinitely_indexed_set_2r    s   sD!!!AF1aLL!*--1q5!!1:../ / / /F1a"f%%qz221q52:&&
334 4 4 4F1aLL!*--A26""AJ//0 0 0 0F1bdOOQZ001Q3,,- - - -F1acBh''441Q38a<((!*556 6 6 6 6 6rS   c                  	   ddl m}  t          t          | | | dz
  | dz   z  t          z  z             t
          j                                      t
          j                  t          dd          k    sJ | dz
  | t
          j
        z   z  }t          t          | | |t          z  z             t
          j                                      t
          j                  t          d          k    sJ t          t          | | || dz   z  t          z  z             t
          j                                      t
          j                  t          d          k    sJ t          t          | | dz  |                                t          z  z             t
          j                                      t
          j                  t          t          t          t          dz            t          | t!          | dz  | dz  z
  t          d          dz  z
  d          t
          j                            k    sJ t          t          | | d| z  dz
  z  || dz   z  t          z  z             t
          j                                      t
          j                  t          t
          j
                  k    sJ t          t          | | | dz
  z  | dz
  | dz   z  t          z  d| z  dz   z  z             t
          j                                      t
          j                  t          d          k    sJ t          t          | | | dz  dz
  z  | dz
  | dz   z  t          z  d| z  dz   z  z             t
          j                                      t
          j                  t
          j        u sJ t          t          | t           t          dt$          z  | z  t$          d	z  z
  z  t'          t)          t+          t                                         z   z            t
          j                  }|                    t
          j                  t          t          | d| z  t$          z  t$          d	z  z
            t
          j                  cxk    rPt          t          | dt$          z  | z  t$          t-          d
d	          z  z             t
          j                  k    sn J d S )Nr   r  r5   rV   r6   r9   r7   rf   r8   rw   )r  rX  r   r   r   r   rZ   r>   rG   r	   r   rE   rk  r   r,   r   r   r}   r   r"   r    r$   r   )rX  rd  rP   s      rQ   test_imageset_intersect_realr    sQ   F1a1q51q5/!"3344ajAAKKAGTTXabdfgXhXhhhhh
a%!af*	BF1a"Q$h'' 
 

)AG

	!- - - -F1a"a!e*Q,.// 
 

)AG

	!- - - -F1acBIIKKM122AJ 
 

)AG

1Q3	2adQqSj1Q446!1%%qz:3 :3 !4 !44 4 4 4 F1a1qkBAJqL8991: 
 

)AG

	!& 1 12 2 2 2F1aQi	
QQ1Q37#$ % %&'j2 22;)	3 3bMM" " " " F1aAl	
QQ1Q37#$ % %&'j2 22;)	3 3J    	q1"a2a"Q$'#c$r((mm*<*<<=>>	
	 	A
 ;;qw8q!A#b&2a4-  !*$. $. ; ; ; ;19q!B$q&2hq!nn,,--qz2; 2;; ; ; ; ; ; ; ;rS   c                  	   ddl m}  t          t          | | t          z            t
          j                  }t          t          | d| z            t          dt                              }t          t          | d| z  t          z  t          dz  z             t
          j                  }t          t          | | t          z  t          z            t
          j                  }t          t          | dt          z  | z  t          z  t          dz  z             t
          j                  }t          t          | t          |                     t
          j                  }t          t          | | dz            t
          j                  }t          t          | t          |                     t
          j                  }t          t          | t          |                     t
          j                  }	|                    t          dd                    t          d          k    sJ |                    t          ddt          z  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          z  t          dz            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    sJ d S )Nr   r  r6   rV   r5   FTr3   r2   r   re   )r  rX  r   r   r   r   rZ   r
   r   r"   r    r!   rE   r>   r	   r}   r   r   r   )
rX  f1f2f3f4f5f6f7f8f9s
             rQ    test_imageset_intersect_intervalr     s   	&AbD//1:	.	.B	&AaC..(1b//	2	2B	&AaCFRTM**AJ	7	7B	&AaCF##QZ	0	0B	&AaCE"Hr!tO,,aj	9	9B	&CFF##QZ	0	0B	&AqD//1:	.	.B	&CFF##QZ	0	0B	&CFF##Q[	1	1B<<Q((IaLL8888<<AbD%66779Q;K;KKKKK<<A''8Aq>>9999<<Q((AJ6666<<Q((Ib"a6H"Q$,O,OOOOO<<Q((IaLL8888<<A''1:5555<<A''1:5555<<A''9QVSVV+D+DDDDD<<B((LXa__,M,MMMMM<<A''<HQNN+K+KKKKK<<A''<HQNN+K+KKKKKKKrS   c                     ddl m} m} t          t	          |d|z  dz             t
          j                  }t          t	          |d|z  dz             t
          j                  }|                    |          |k    sJ t          t	          |d|z            t
          j                                      t          t	          |d|z  dz             t
          j                            t
          j        k    sJ t          t	          |d|z  d|z  dz  z             t
          j                                      t
          j                  t          d	d
dd          k    sJ t          t	          ||dz
  dz            t
          j                                      t          t	          ||dz
  dz             t
          j                            t          d          k    sJ t          t	          ||dz  dz             t
          j                                      t          t	          | d| z            t
          j                            
                    t          t	          |d|dz  z  d|z  z   dz             t
          j                            sJ t          t	          ||dz  dz
            t
          j                                      t          t	          | | dz             t
          j                            t          dd          k    sJ t          t	          | | dz  dz             t
          j                                      t          t	          |d|z            t
          j                            
                    t          t          t	          | | dz  dz             t
          j                  t          t	          |d|z            t
          j                                      sJ t          t	          ||dz  dz
            t
          j                                      t          t	          | | dz   dz             t
          j                            t          dd          k    sJ t          t	          |t          dz  |dz  t          z  dz  z             t
          j                                      t          t	          |dt          z  dz  |dz  t          z  dz  z             t
          j                            
                    t          t	          |dt          z  |z  dz  dt          z  dz  z             t
          j                            sJ t          t	          ||t          d          z            t
          j                                      t
          j                  
                    t          t          t	          ||t          d          z            t
          j                  t
          j                            sJ t          t	          ||dz  dz             t
          j                                      t          t	          ||dz            t
          j                            
                    t          t          t	          ||dz  dz             t
          j                  t          t	          ||dz            t
          j                                      sJ d S )Nr   rY  rX  r6   r5   r8   rf   rk   r7   iirr   =   r2   r9   i(   )   rg   Q   A   rn   rw   rm   rM     )r  rY  rX  r   r   r   rZ   r>   r}   r	   r  r   r   r"   rF   )rY  rX  img1img2s       rQ   #test_imageset_intersect_diophantiner    s   F1acAg&&
33DF1acAg&&
33D>>$4''''F1acNNAJ//99VAqsQw''446 69:D D D D F1acBqDFl++QZ88BBJ $S#r2667 7 7 7 F1q1uqj))1:66@@VAQ
{++QZ88: :=Fq\\J J J J F1adQh''44>>VAqs^^QZ002 22:(81a1fqslQ&''<5 <5 36 366 6 6 F1adQh''44>>VA1u%%qz224 47@Q7G7GH H H H F1adRi((!*55??VAr!t__aj113 33;8LVAq!tby))1:66VAr!t__aj11=3 =3 44 444 4 4
 F1adTk**AJ77AAVA1ut|,,aj99; ;>G2>N>NO O O OF1beac"fRi/00!*==GGVAqtBw2b344ajAAC CCK8H1beAgbj2b57*++QZM9 M9 D: D:: : : F1aAh''44AA	
 H\(q!CFF(QZ+) +)*+*6 6 7 77 7 7 F1adQh''44>>VAq!t__aj113 33;8LVAq!tax((!*55VAq!t__aj11=3 =3 44 444 4 4 4 4rS   c            	      $   ddl m} m} t          t	          |dt
          z  |z            t          j                                      t          t	          | dt
          z  | z            t          j                            	                    t          t	          t          dt
          z  t          z            t          j                            sJ t          t	          | d| z  dz             t          j                  t          t	          | d| z  dz
            t          j                  k    sJ t          t	          | d| z  dz             t          j                  t          t	          | d| z  dz
            t          j                  k    sJ d S )Nr   r\  r6   r7   r9   r5   )r  rX  rY  r   r   r   r   rZ   r>   r  r   r.   r\  s     rQ   test_infinitely_indexed_set_3r  H  sc   F1ad1f%%qz22<<VAqtAv&&
335 55=X1R46""AJ//61 611 1 1 F1acAg&&
331Q37##QZ001 1 1 1F1acAg&&
331Q37##QZ001 1 1 1 1 1rS   c                  2   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    sJ t          | dd| z  z   t
          j	                  t          dt          d          k    sJ t          | dd| z  z   t
          j                  t          dt          d          k    sJ t          | dd| z  z
  t
          j	                  t          dt           d          k    sJ d S )Nr   r\  r5   r6   r7   rV   rv   )r  rX  rY  r   r   r   rZ   r&   r'   r:   r   r   rE   r\  s     rQ   test_ImageSet_simplificationr  S  sW   F1aLL!*--;;;;F1c!ff%%VAs1vv..
;;= =VAs3q66{{++QZ889 9 9 9 Aq1Q3w
++uQA>>>>Aq1Q3w,,aQ????Aq1Q3w
++uR"b/A/AAAAAAArS   c                  V   dt           j        ft          t          t          dt          z  ft           j                  v sJ t          t          t          t
          dz  z   t           j                                      t           j                  t           j        u sJ t          d          } t          t          t          t
          t          z  z   t           j                                      t           j                  }|                    t          t
          | z                                t           j                  t           j        u sJ t          t          t          t
          t          z  t          z  z   t           j                                      t           j                  }|                    t          d          t           j        u sJ |                    t          t
          | z  t          z                                t           j                  t           j        u sJ t          d          dz  t          d          dz  z   dz
  }t          t          t          t
          |z  z   t           j                                      t           j                  }|t           j        usJ d S )Nr6   r5   r7   Tr   r   )r   r   r   r,   rZ   r   rF   rG   r}   r   r-   rj  r%   r&   )r   qr/   s      rQ   test_ImageSet_containsr  ^  s   qv;(1q!A#h
;;;;;;Aq1Q3w
++88AAQZOOOOdAA!GQZ((55ag>>A66!QqS>>&&qz22aj@@@@A!AIqz**77@@A66!Q<<1:%%%%66!QqSU((44
BBBBA	CFFAI!AA!GQZ((55ag>>AAJrS   c                  b	  
 t          dd          } t          dd          }t          dd          }t          dd	          }t          ||z            }t          t          ||z  ||z                      }d
dt          z  z   |v sJ ddt          z  z   |v sJ ddt          z  z   |v sJ dd
t          z  z   |v sJ d
dt          z  z   |vsJ ddt          z  z   |vsJ |                    t                    t          t          |d          k    sJ |                    |           dk    sJ |                    t                    t          t          |d          k    sJ |                    |           dk    sJ t          dd          
t          ddt          j	        z            t          
z  d          }dt          dz  dz  z   |v sJ t          j
        t          dz  dz  z   |v sJ t          j
        dt          z  z   |v sJ ddt          z  z   |v sJ t          |v sJ d|v sJ d|v sJ dt          z   |vsJ dt          z
  |vsJ |                    t                    t          t          |d          k    sJ |                    | dt          z  z             t          | dt          z  z   |d          k    sJ |                    dd| dz  z   z            t          dd| dz  z   z  |d          k    sJ t          dd          }t          t          dt          z  d          }t          ||z  d          }	|	                    d          dk    sJ |	                    dt          z             dk    sJ |	                    dt          z             dk    sJ |	                    dt          z
            dk    sJ |	                    dt          z
            dk    sJ |	                    d          dk    sJ |	                    d          dk    sJ |	                    t                    t          t          |	d          k    sJ |	                    dd| dz  z   z            t          dd| dz  z   z  |	d          k    sJ t          t          
fd           d S )Nr   Tr   r6   r7   r8   r9   rw   rf   g      @g      @rj   gffffff@g	@Frh   r   r5   polarrR  re   g333333?)	left_openrv   c                  ,    t           z  d          S )Nr6   r  )r   )r1theta1s   rQ   rd   z-test_ComplexRegion_contains.<locals>.<lambda>  s    }RYa@@@ rS   )r   r
   r   r   r   rD   r,   r   r   ru  r   r   r+   r|   )r   rL   rM   rN   c1c2r   r2theta2c4r  r  s             @@rQ   test_ComplexRegion_containsr  l  s   sAAAAAAA	qs		B	uQqS!A#	'	'BQ;"qs7b====qs7b====s1u9????Q;b    Q;b    ;;q>>Xae<<<<<<<;;q>>U"""";;q>>Xae<<<<<<<;;q>>U""""	!QBa14  F	r&y	-	-	-B!A#b&LRFQqSVO""""FRTMb    "Q$J2777777777777q5????q5????;;q>>Xae<<<<<<<;;q1Q3w8	AaCe$% $% $% % % % %;;q!ad(|$$	1q!t8b5)* )* )* * * * * 
!QBb!B$$///F	r&y	-	-	-B;;q>>T!!!!;;q1u&&&&;;rAv%'''';;rAv$&&&&;;q1u%%%%;;r??e####;;q>>T!!!!;;q>>Xae<<<<<<<;;q!ad(|$$	1q!t8b5)* )* )* * * * * :@@@@@AAAAArS   c                  j   t          d          t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          dd          t          t          fd           t          t          fd	           t	          d
z             d         k    sJ t          t          fd           t	          d
z             j        d
k    sJ t          ddd          t          t          fd           t          t          fd           t	          d
z             d         dk    sJ t	          d
z             d         k    sJ t	                    j        k    sJ t	          d
z             j        d
z   k    sJ t	          d
z             j        d
k    sJ t          ddd          t	                    d         dk    sJ t	          d
z             d         k    sJ t	                    j        k    sJ t	          d
z             j        d
k    sJ t          ddd          } t	          | z             d         k    sJ t	          | z             j        | k    sJ t	          d
z             j        d
k    sJ t	          | z   d          j        t          | dz            k    sJ t          dddd          } t	          | z   d          j        | dz  k    sJ d S )NrX  c                  .    t                     d         S r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>      uQxx{ rS   c                  0    t                      d         S r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>      uQ{{1~ rS   c                  6    t            dz             d         S )Nr5   r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>  s    uQ!}}Q/ rS   c                  ,    t                     j        S rb   r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>      uQxx} rS   Tr   c                  .    t                     d         S r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>  r  rS   c                  0    t                      d         S r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>  r  rS   r5   r   c                  ,    t                     j        S rb   r  r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>  r  rS   )r   nonnegativec                  .    t                     d         S r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>  r  rS   c                  0    t                      d         S r   r   r  s   rQ   rd   z%test_symbolic_Range.<locals>.<lambda>  r  rS   r  rY  r6   )r   r   rE  )r   r+   r|   r   r   r   r#   r  s    @rQ   test_symbolic_Ranger    sm   sA
:****+++
:----...
:////000
:,,,,---sD!!!A
:****+++
:----...AaC==q    
:,,,,---AaC==""""sDd333A
:****+++
:----...1::a=AAaC==q    88=A1::?ac!!!!AaC==""""sD4000A88A;!AaC==q    88=AAaC==""""sD4000AAaC==q    AaC==""""AaC==""""AaC E!A#JJ....sD4d;;;AAaC AaC''''''rS   c                       t          dd           t          t           fd           t          ddd           t          d t	                               t          d t	                               k    sJ d S )NrX  Tr   c                  @    t          d t                               S )Nc                     | dz  S r   rc   r  s    rQ   rd   z4test_issue_18400.<locals>.<lambda>.<locals>.<lambda>  s
    !A# rS   )r   r   r  s   rQ   rd   z"test_issue_18400.<locals>.<lambda>  s    xuQxx@@ rS   r  c                     | dz  S r   rc   r  s    rQ   rd   z"test_issue_18400.<locals>.<lambda>  s
    ac rS   c                     | dz  S r   rc   r  s    rQ   rd   z"test_issue_18400.<locals>.<lambda>  s
    1Q3 rS   )r   r+   r|   r   r   r  s   @rQ   test_issue_18400r    s~    sD!!!A
:@@@@AAAsD4000AMM588,,a0Q0QQQQQQQrS   c                     t          t          dt                    t          dt          j                  z  d          } t          t          dd          t          ddt          j        z            z  d          }t          t          dd          t          dt          j                  z  d          }t          t          dt                    t          dt          j                  z  d          }t          t          dt                    t          t          j        dt          j        z            z  d          }t          t          dt                    t          t          j         dz  t          j        dz            z  d          }t          t          dt                    t          dt          j        dz            z  d          }|                    |          |k    sJ |                    |          |k    sJ |                    |          |k    sJ |                    |          | k    sJ t          t          dd          t          ddt          j        z            z  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          z            } t          t          d
d          t          d
d          z            }t          t          d
d          t          dd          z            }	t          t          t           t                    t          dt                    z            }
t          t          t           t                    t          t           d          z            }t          t          dt                    t          t           t                    z            }t          t          dt                    t          dt                    z            }|
                    |          |	k    sJ |                    |          |k    sJ |
                    |          |k    sJ |
                    |          | k    sJ t          t          dd          t          dd          z            }|                    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          dd          t          ddt          j        z            z  d          }t          t          d
d          t          d
d          z            }|                    |          t          ||d          k    sJ d S )Nr   Tr  r5   r6   r8   r2   rf   rn   rV   r3   r   re   rw   r9   Frh   )	r   r
   r   r	   r   ru  r>   r}   r   )X_axis	unit_diskupper_half_unit_diskupper_half_disklower_half_diskright_half_diskfirst_quad_diskr  unit_squareupper_half_unit_squareupper_half_planelower_half_planeright_half_planefirst_quad_planeC1C2s                   rQ   test_ComplexRegion_intersectr    s)   8Ar??9Q+=+==TJJJFhq!nnXa14-@-@@MMMI(!QAD8I8I)IQUVVV#HQOOHQ4E4E$ETRRRO#HQOOHQT1QT64J4J$JRVWWWO#HQOOHadU1Wad1f4M4M$MUYZZZO#HQOOHQQ4G4G$GtTTTO$$Y//3GGGGG$$_55HHHH$$_55HHHH$$_55????	x1~~hq!AD&&9&99	F	F	FB<<A''8Aq>>9999<<A''9Q<<7777<<B((AJ6666 8RC,,Yq\\9::FQQ ?@@K*8B??8Aq>>+IJJ$Xrc2%6%6x2%FGG$Xrc2%6%6xQ7G7G%GHH$Xa__Xrc25F5F%FGG$Xa__Xa__%DEE%%k226LLLLL%%&677;KKKKK%%&677;KKKKK%%&6776AAAA	xAxR'8'88	9	9B<<A''8Aq>>9999<<A''9Q<<7777<<A''1:5555 
x1~~hq!AD&&9&99	F	F	FB	xAxA6	7	7B<<|BUCCCCCCCCCrS   c            
         t          t          dd          t          ddt          j        z            z  d          } t          t          dd          t          dt          j                  z  d          }t          t          dt                    t          dt          j                  z  d          }t          t          dt                    t          t          j        dt          j        z            z  d          }t          t          dd          t          ddt          j        z            z  t          dd          t          dt          j                  z            }t          t          dt                    t          dt          j                  z  t          dt                    t          t          j        dt          j        z            z            }|                     |          t          |d          k    sJ |                    |          t          |d          k    sJ t          t          dd          t          dd          z            }t          t          d	d          t          d
d          z            }t          t          dd
          t          dd          z            }t          t          dd          t          dd          z            }	t          t          dd          t          dd          z  t          d	d          t          d
d          z            }
t          t          dd
          t          dd          z  t          dd          t          dd          z            }|                    |          t          |
          k    sJ |                    |	          t          |          k    sJ |                     t          dd	                    t          | t          dd	          d          k    sJ |                    t          dd	                    t          |t          j        t          dd	                              k    sJ d S )Nr   r5   r6   Tr  r2   r9   rf   r8   re   rn   r   rg   r   rk   Frh   )r   r
   r   ru  r   r   rz  	from_real)r  r  r   r  p1p2c5c6c7c8p3p4s               rQ   test_ComplexRegion_unionr    sp   	x1~~hq!AD&&9&99	F	F	FB	x1~~hq!$&7&77t	D	D	DB	x2x14'8'88	E	E	EB	x2xaf'='==T	J	J	JB	x1~~hq!AD&1118Aq>>(1adBSBS3S	T	TB	x2x14000(1b//(14QRSTSWQWBXBX2X	Y	YB88B<<=4888888888B<<=48888888 
x1~~hq!nn4	5	5B	x1~~hr2&6&66	7	7B	x2xQ'7'77	8	8B	xB''R(8(88	9	9B	x1~~hq!nn,hq!nnXb"=M=M.M	N	NB	x2xQ///"b1A1A(2rBRBR1R	S	SB88B<<=,,,,,,88B<<=,,,,,,88HQNN##uR!Q%'P'P'PPPPP88HQNN##uR1HRSUV1X1X'Y'YYYYYYYrS   c                  \    t          t          dd          t          ddt          j        z            z  d           t	          t
           fd                                t          dd                    t          t          dd          t          d          z  d          k    sJ d S )	Nr   r5   r6   Tr  c                  .                                     S rb   )r  r  s   rQ   rd   z.test_ComplexRegion_from_real.<locals>.<lambda>"  s    r||B// rS   rV   F)r   r
   r   ru  r+   r|   r  r	   r  s   @rQ   test_ComplexRegion_from_realr    s    	x1~~AH(=(==T	J	J	JB
:////000<<Q((M(2q//IVWLL:XZ_,`,```````rS   c                  f   t          dd          t          dd          }} t          ddt          j        z            t          dt          j                  }}t          | |z            }t          t	          | |z  ||z            d          }|j        dk    sJ |j        d	t          z  k    sJ d S )
Nr6   r2   r8   rj   r   Tr  rn   rf   )r
   r   ru  r   r   measurer   )rL   rM   r  r  r  r  s         rQ   test_ComplexRegion_measurer  &  s    Aq>>8Aq>>qAa14(((1ad*;*;FF	qs		B	uQvXqx00	=	=	=B::2rS   c                     t          t          t          dt          z                      t          t	          d          t          j        t          dt          z                      k    sJ t          t          t          t          dd          z  dt          z                      t          t          dz  t                    k    sJ t          t          t          t          dd          z  t          dz                      t          j        ddt          z            k    sJ t          t          j        t          t          dd          z  t          dz                      t          t          j        dt          dz            t          j        t          dz  dt          z                      k    sJ t          t          j        t          t          dd          z  t          t          dd          z                      t          t          j        dt          dz            t          j        t          dz  dt          z                      k    sJ t          t          t           dz  t          dz                      t          t          dt          dz            t          j        t          t          dd          z  dt          z                      k    sJ t          t          j        t           dz  t          dz                      t          t          j        dt          dz            t          j        t          t          dd          z  dt          z                      k    sJ t          t          dt          z  dt          z                      t          j        ddt          z            k    sJ t          t          t          t          dd          z  t           dz                      t          t          dz  t          t          dd          z            k    sJ t          t          j        ddt          z                      t          j        ddt          z            k    sJ t          t          j        t           dz  t          dz                      t          t          j        dt          dz            t          j        t          t          dd          z  dt          z                      k    sJ t          t          j        t           dz  t          dz                      t          t          dt          dz            t          j        t          t          dd          z  dt          z                      k    sJ t          t          t           dz  t          dz                      t          t          dt          dz            t          j        t          t          dd          z  dt          z                      k    sJ t          t          j        d	t          z  t          t          dd          z                      t          j        dt          dz            k    sJ t          t          j        d	t          z  t          t          dd          z                      t          j        dt          dz            k    sJ t          t          j        d	t          z  t          t          dd          z                      t          j        dt          dz            k    sJ t          t          j        dt          z  dt          z                      t          t          j        dt                    t          j        t          dt          z                      k    sJ t          t	          dt          dt          z                      t	          dt                    k    sJ t          t	          dt          dz  t          dt          z                      t	          dt          dz  t                    k    sJ t          t	          dt           dz  t           d
t          z                      t	          dt          t          t          dd          z            k    sJ t          t	          t          t          dd          z  t          dz                      t	          t          dz            k    sJ t          t	          dt          z                      t	          d          k    sJ t          t          t          dt          dz            t          t          dz  t                                        t          t          dt          dz            t          t          dz  t                              k    sJ t          t          t          dt                    t          dt          z  t          t          dd          z                                t          dt                    k    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            d S )Nr6   r   rf   r2   r   ir7   rY   r8   rv   rw   c                  4    t          t          j                  S rb   )r   r   r   rc   rS   rQ   rd   z*test_normalize_theta_set.<locals>.<lambda>\  s    21;?? rS   c                  <    t          t          dd                    S )Nr   r5   )r   r
   rc   rS   rQ   rd   z*test_normalize_theta_set.<locals>.<lambda>_  s    (;HQNN(K(K rS   c                  L    t          t          ddt          z                      S r   r   r
   r   rc   rS   rQ   rd   z*test_normalize_theta_set.<locals>.<lambda>b  s    (;HQ"<M<M(N(N rS   c                  L    t          t          dt          z  d                    S )Nr6   re   r  rc   rS   rQ   rd   z*test_normalize_theta_set.<locals>.<lambda>c  s    (;HQrT2<N<N(O(O rS   c                  N    t          t          dddt          z                      S )Nr   r7   )r   r	   r   rc   rS   rQ   rd   z*test_normalize_theta_set.<locals>.<lambda>d  s    (;IaAbD<Q<Q(R(R rS   )r   r
   r   r   r	   Ropenr   rS  r\   r+   r|   r   rc   rS   rQ   test_normalize_theta_setr  0  s}   xAbD1122illHN2qt44556 6 6 6x8Aq>>(91R4@@AAXbQRdTVEWEWWWWWx8B??(:BqDAABBhnUVXYZ\X\F]F]]]]]x}RQ-?AFFGGhnQ1%%x}RT1R4'@'@AAB B B Bx}RQ-?HRQROOASTTUUhnQ1%%x}RT1R4'@'@AAB B B BxAr!t4455hq"Q$8Aq>>0A1R4!H!HIIJ J J Jx}bSUBqD99::hnQ1%%x}RA5F"'M'MNNO O O Ox2qt44551R49P9PPPPPx8B??(:RCEBBCCxPRSTPTVXYabcefYgYgVgGhGhhhhhx}Q"5566(-1R4:P:PPPPPx~rc!eRT::;;hnQ1%%x~b!Q6G2'N'NOOP P P Px~rc!eRT::;;hq"Q$r(1a../@!B$!G!GHHI I I IxAr!t4455hq"Q$8Aq>>0A1R4!H!HIIJ J J Jx}QrT2hq!nn3DEEFF(-XY[]^_[_J`J`````x~adBx1~~4EFFGG8>Z[]_`a]aKbKbbbbbx~adBx1~~4EFFGG8>Z[]_`a]aKbKbbbbbx}QrT1R48899hnQ##X]2qt%<%<==> > > > yB"5566)Ar:J:JJJJJyBqD"ad;;<<	!RPQTSU@V@VVVVVyRCEB32>>??9QPRTVW_`acdWeWeTeCfCfffffyHROO);RTBBCC"Q$   y2//9Q<<???? uXaA%6%6Ar8J8JKKLLhq"Q$"Q$!3!3445 5 5 5uXa__hqtRQRTUEV6W6WXXYYB    :??@@@  K KLLL  N NOOO
 O OPPP
 R RSSSSSrS   c                  "   t          d          \  } }}}}}t          t          |||          t          | ||          z            t          |t          | z  z   |t          |z  z   |t          |z  z   |t          | z  z   |t          |z  z   |t          |z  z   |t          | z  z   |t          |z  z   |t          |z  z   	  	        k    sJ t          t          d          t          d          z            t          ddt          z  z             k    sJ d S )Nzx y z a b cr6   r7   )r   r   r	   r   )r,   r-   r/   rL   rM   rN   s         rQ   test_ComplexRegion_FiniteSetr  g  s   }--Aq!Q1 1a++IaA,>,>>??!ac'1qs7A!GQ1Wa!A#gac'1qs7A!GQ1W	6 	66 6 6 6 1ill233yQqS7I7IIIIIIIrS   c                      t           j                            t          dd                    t           j        k    sJ t           j                            t           j                  t           j        k    sJ d S r   )r   r   rz  r
   rZ   rc   rS   rQ   test_union_RealSubSetr  q  sX    Kx1~~..!+====Kqz**ak999999rS   c                     d }  | t          dd                    j        t          t                    u sJ  | t	          dd                    j        t          t                    u sJ t
          j        j        t          t                    u sJ t
          j        j        t          t                    u sJ t
          j        j        t          t                    u sJ t          d          j        t          t                    u sJ t          dd          }t          dd          }t          ||z            }|j        t          t          t          t                              u sJ d S )Nc                  R    t          t          t          t          dz            g| R  S r   r{   )rH  s    rQ   rd   z'test_SetKind_fancySet.<locals>.<lambda>w  s$    hvaa0084888 rS   r5   r8   r7   r6   r9   )r
   kindr   r   r	   r   r   r:   rZ   r   r   r   )GrL   rM   r  s       rQ   test_SetKind_fancySetr  v  s5   88A1Xa^^!WZ%8%888881Yq!__"gj&9&99999;wz222222:?gj111111:?gj11111188=GJ//////AAAA	qs		B7gi
J??@@@@@@@@rS   c                     t          t          dd          t          dd          z            } t          t          dd          t          dd          z            }t          | |          }t          |          t          t          t          dd          t          dd          z  t          dd          t          dd          z            d          k    sJ  | j        | j         | k    sJ  |j        |j         |k    sJ d S )Nr5   r6   r7   r2   F)r   r
   r   r   funcrH  )r  r  r   s      rQ   test_issue_9980r    s    	x1~~hq!nn4	5	5B	x1~~hq!nn4	5	5Bb"AA;;-hq!nnXa^^.K$,QNN8Aq>>$A)C )CDIK K K K K K27BG""""1616?arS   c                  J   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    sJ |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    sJ |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    sJ d S )Nr5   r6   r7   r8   r2   FT)r
   r	   r   r   r:   rE   rZ   r   )
interval12finiteset1234pointComplexs      rQ   test_issue_11732r    sU   !QJaAq))MA;;L!*$....!+%%////!*$....!+%%////QZ'E1111Q[(U2222QZ'E1111Q[(U2222AJ&50000AK'E1111AJ&50000AK'D000000rS   c                     t          dd          } t          | dz            }t          t          j        t          t                              t          j        k    sJ t          t          j        t          t          d                              t          j        k    sJ t          | |          |k    sJ t          t          j	        |          | k    sJ d S )Nr   r5   r6   r8   )
r
   r   r   r   r   r	   r   r)   r   rG   )unitsquares     rQ   test_issue_11730r    s    Aq>>D419%%Fimm,,;;;;iA//00AK????v&((((((D000000rS   c                  :   t          dd          } t          dd          }t          || z            }t          |t          j                  |k    sJ t          ||           t          d          k    sJ t          dt          j                  }t          t          j                  }t          t          j        dz  dt          j        z  dz            }t          | |z  d          }t          | |z  d          }t          | |z  d          }t          |t          j                  t          dd          k    sJ t          |t          j                  t          dd          k    sJ t          |t          j                  t          d          k    sJ d S )	Nr   r5   r6   r8   r7   Tr  rV   )r
   r   r   r   rG   r	   ru  )	r  ivalcr1arg1arg2arg3cp1cp2cp3s	            rQ   test_issue_11938r    s]   Aq>>DAq>>D
t
$
$CQW%%----T""ill2222AqtDQT??DAD1Ha!$hl++D
t4
0
0
0C
t4
0
0
0C
t4
0
0
0CQW%%"a8888QW%%"a8888QW%%1555555rS   c                     t          dd          t          dt                    }} t          dd          t          t          dt          z  dz            }}t          | |z  d          }t          ||z  d          }d|                    |          v sJ d|                    |          v sJ d|                    |          vsJ d S )	Nr   r5   r6   r7   Tr  r   r3   )r
   r   r   rz  )rL   rM   rN   rO   r  r  s         rQ   test_issue_11914r    s    Aq>>8Ar??qAAq>>8BB
33qA
AT
*
*
*C
AT
*
*
*C33SYYs^^######rS   c                      t          t          t          t          dz            t          j                                      t          j                  sJ d S r   )r   r   r,   r   r:   rH   rG   rc   rS   rQ   test_issue_9543r    s<    F1adOOQZ00::17CCCCCCCrS   c                  >   t          t          t          t                    t          d                    dhk    sJ t          t          t          t          dz
            t          j                                      t          j                  t          j        u sJ d S )Nr5   r7   )r   r   r,   r	   r   rZ   rF   rc   rS   rQ   test_issue_16871r    s    F1aLL)A,,//A36666F1a!e$$aj 
 

,qz
"
"aj1 1 1 1 1 1rS   c                      t          t          t          t          dz
            t          j                                      t          j                  sJ d S )Nr7   )r   r   r,   r   rZ   rH   rc   rS   rQ   test_issue_16871br!    s>    F1a!e$$aj11;;AJGGGGGGGrS   c            	      \   t          t          t          t          t          z  dz             t          j                  t          t          t          t          t          z  dz             t          j                  k    sJ t          t          t          dt          z  t          z  dz   dt          z  z             t          j                  t          t          t          dt          z  t          z  dz   dt          z  z             t          j                  k    sJ t          t          t          dt          z  dt          z  z             t          j                  t          t          t          dt          z  dt          z  z             t          j                  k    sJ t          dd          } t          t          t          | t          z  d	z             t          j                  t          t          t          | t          z  d	z             t          j                  k    sJ t          t          t          dt          z  dz   d
t          z  z             t          j                  t          t          t          dt          z  dz   d
t          z  z             t          j                  k    sJ d S )Nr5   r7   r8   rj   r6   r   Tr   re   r2   )r   r   r,   r   r   rZ   r   r   r   s    rQ   test_issue_18050r$    s   F1acAg&&
 
 
fQ!a((!*556 6 6 6F1ac!eai!A#o..
 
 
fQ!A	AaC00!*==> > > > F1acAaCi((!* 
 
fQ!ac	**AJ778 8 8 8sT"""AF1acBh'' 
 
fQ!b))1:667 7 7 7 F1acAg!m,,aj 
 
fQ!a!A#..
;;< < < < < <rS   c                  2   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 sJ t          t           j                  f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    sJ t                      t           j        vsJ t           j        t           j        v sJ t           j                            d
          t!          d
t           j        d          k    sJ dt           j        v sJ t#          dd          } | t           j        v sJ t%          t&          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                 .    g | ]}t                    S rc   r   )r   r   r   s     rQ   rl  z"test_Rationals.<locals>.<listcomp>  s    (((DHH(((rS   rn   r   r5   rV   r6   rv   r7   r   rR  Frh   r   T)rationalc                  (    t           t          j        v S rb   )r,   r   r   rc   rS   rQ   rd   z test_Rationals.<locals>.<lambda>  s    a1;. rS   )r   rZ   rH   r   r:   rE   rG   rB   r   rC   r;   r~   r   r   r   rD   r   r   r+   r   r?   closurer@   rA   )r   r   s    @rQ   test_Rationalsr*    sJ   :,,,,,:,,,,,;  -----;  )))));?rc!!!!;?b    	ak		B((((eBii(((	1b!&!Xb!__bA8B??BA-@ @ @ @ @ 77!+%%%%6Q[    ;$$Q[5)* )* )* * * * *d###A
9..///;17****;!'))));%''''; E))))))rS   c                      t           j        t           j        t           j        t           j        t           j        t           j        ffdD             } t          d | D                       sJ d S )Nc              3   B   K   | ]}D ]}t          ||          V  d S rb   )r   )r   rL   rM   nbrsetss      rQ   r   z$test_NZQRC_unions.<locals>.<genexpr>	  s8      <<aG<<qeAqkk<<<<<<<rS   c              3   (   K   | ]}|j         d u V  dS )FN)is_Union)r   r   s     rQ   r   z$test_NZQRC_unions.<locals>.<genexpr>
  s)      33qqzU"333333rS   )r   r:   rE   rZ   r   rG   r   r   )unionsr-  s    @rQ   test_NZQRC_unionsr1    sf    z1;
AK	G<<<<7<<<F33F3333333333rS   c                     t                      } t          t          | t           t          dt          z  | z  t          dz  z
  z  t          t          t          t                                         z   z            t          j	                  }|
                    t          j                  t          t          | dt          z  | z  t          t          dd          z  z             t          j	                  k    sJ d S )Nr6   r8   rw   )r   r   r   r   r   r"   r    r$   r   rZ   r>   rG   r   )rX  rP   s     rQ   test_imageset_intersectionr3    s    AA2q!B$q&2a4-0CaRMM    j	* 	*A;;qw8q!B$q&2hq!nn,,--qz$; $; ; ; ; ; ; ;rS   c                     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 )Nr5   r   rV   r   rc   rS   rQ   test_issue_17858r5    sz    rc2b2#r""""""UB3^^####3eRCnn$$$$$$rS   c                  6    t          t           t                     t          t           fd           t          t           fd           t          t          t           d           t          t           fd           t          t           fd           d S )Nc                       d d d         S r   rc   r#  s   rQ   rd   z"test_issue_17859.<locals>.<lambda>      a!f rS   c                       d d d         S rB  rc   r#  s   rQ   rd   z"test_issue_17859.<locals>.<lambda>      q2w rS   rV   c                       d d d         S r   rc   r#  s   rQ   rd   z"test_issue_17859.<locals>.<lambda>   r8  rS   c                       d d d         S rB  rc   r#  s   rQ   rd   z"test_issue_17859.<locals>.<lambda>!  r:  rS   )r   r   r+   r|   r#  s   @rQ   test_issue_17859r=    s    rc"A
:nnnn%%%
:'''b"RA
:nnnn%%%
:'''''rS   )sympy.core.exprr   sympy.sets.containsr   sympy.sets.fancysetsr   r   r   r   sympy.sets.setsr	   r
   r   r   r   r   r   sympy.sets.conditionsetr   sympy.simplify.simplifyr   sympy.core.basicr   sympy.core.containersr   r   sympy.core.functionr   sympy.core.kindr   sympy.core.numbersr   r   r   r   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr   r   r   $sympy.functions.elementary.complexesr    &sympy.functions.elementary.exponentialr!   r"   #sympy.functions.elementary.integersr#   (sympy.functions.elementary.miscellaneousr$   (sympy.functions.elementary.trigonometricr%   r&   r'   sympy.logic.boolalgr(   sympy.matrices.denser)   sympy.testing.pytestr*   r+   r  r,   r-   r.   r/   sympy.core.modr0   r   rR   rW   r_   r   r   r   r   r   r   r  rJ  rO  rT  r]  r_  rg  rn  rp  rs  rx  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*  r1  r3  r5  r=  rc   rS   rQ   <module>rU     sK   % % % % % % ( ( ( ( ( (1 1 1 1 1 1 1 1 1 1 1 1@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 0 0 0 0 0 0 , , , , , , " " " " " " 2 2 2 2 2 2 2 2 & & & & & & & & & & & & 4 4 4 4 4 4 4 4 4 4 4 4 $ $ $ $ $ $ " " " " " " 6 6 6 6 6 6 6 6 6 6 4 4 4 4 4 4 = = = = = = = = 5 5 5 5 5 5 9 9 9 9 9 9 D D D D D D D D D D # # # # # # $ $ $ $ $ $ . . . . . . . .                                  F F F65 5 5G G G8<< << <<~E E E	& 	& 	& ' ' '@ @ @/ / /[] [] []|CI CI CIL5 5 56? ? ?,. . ... . .@2 2 2.
D 
D 
DH H H
- - -&0 0 0, , ,/ / /
	G 	G 	G, , ,,6 6 6; ; ;:L L L8)4 )4 )4X1 1 1B B B  3B 3B 3Bl%( %( %(PR R R,D ,D ,D^Z Z Z:a a a  4T 4T 4TnJ J J: : :
A A A     1 1 1*1 1 16 6 6($ $ $D D D1 1 1 H H H< < < * * *44 4 4; ; ;% % %( ( ( ( (rS   