
    MZd@                        d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ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mZmZmZmZ d dlmZ d dlm Z  d dlm!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dlm'Z'm(Z(m)Z)m*Z* d dl+m,Z,  ed      Z-e-j]                  e e       d        Z/e-j]                  e e      d        Z/e-j]                  e"e!      d        Z/e-j]                  e"e"      d        Z/e-j]                  ee"      d        Z/e-j]                  ee      d        Z/e-j]                  e!e#      d        Z/e-j]                  e$e      d        Z/e-j]                  e$e"      d        Z/e-j]                  e$e$      d        Z/e-j]                  e$e!      d        Z/e-j]                  e$e&      d        Z/e-j]                  e%e      d        Z/e-j]                  e*e*      d        Z/e-j]                  ee      d         Z/e-j]                  e'e      d!        Z/e-j]                  e(e      d"        Z/e-j]                  ee      d#        Z/e-j]                  ee      d$        Z/e-j]                  ee      d%        Z/e-j]                  e!e&      d&        Z/e-j]                  e"e&      d'        Z/e-j]                  e&e#      d(        Z/d) Z0e-j]                  e!e      d*        Z/e-j]                  e"e      d+        Z/y,)-    )Lambdaexpand_complex)Mul)ilcm)Eq)S)Dummysymbols)ordered)sign)floorceiling)ComplexRegion)	FiniteSetIntersectionIntervalSetUnion)
Dispatcher)ConditionSet)IntegersNaturalsRealsRangeImageSet	Rationals)EmptySetUniversalSetimageset
ProductSet)numerintersection_setsc                      y N abs     B/usr/lib/python3/dist-packages/sympy/sets/handlers/intersection.py_r*              c                 l    t        | j                  | j                  t        | j                  |            S r$   )r   sym	conditionr   base_setr&   s     r)   r*   r*      s$    q{{LQ,GHHr,   c                     | S r$   r%   r&   s     r)   r*   r*          Hr,   c                 .    | t         j                  u r| S |S r$   )r   r   r&   s     r)   r*   r*   #   s    QZZ1&Q&r,   c                     t        ||       S r$   )r"   r&   s     r)   r*   r*   '       Q""r,   c           	         |j                   r| j                  s5|j                  s)t        t        | j                  |j                              S | j                  r|j                  r| j
                  | j                  }}|j
                  |j                  }}t        ||      }t        ||      }dt        j                  z  |v rt        j                  |v s'dt        j                  z  |v r't        j                  |v rt        |t        d            }t        ||z  d      S |j                  t        j                        r~g }t        dt        d      }	| j                  sc| j                   D ]@  }
t        j                  |
j"                  d   v s#|j%                  |
j"                  d          B t        | }t        ||      S | j                  r| j                   D ]  }
t        j                  |
j"                  d   v r|j%                  |
j"                  d          t        j                  |
j"                  d   v r3|j%                  t'        t)        |	|	       |
j"                  d                t        j                  |
j"                  d   v s|j%                  t        d              t        | }t        ||      S y y )N   r   T)polarx)clsreal   )is_ComplexRegionr8   r   r   sets
a_interval
b_intervalr   PiZeror   r   	is_subsetr   r
   r	   psetsargsappendr   r   )selfotherr1theta1r2theta2new_r_intervalnew_theta_intervalnew_intervalr9   elements              r)   r*   r*   +   s1   

U[[ dii!DEE ZZEKK$//B))5+;+;B)"b1N!-ff!= 1446!aff&6!$$& QVVv%5%*+=+4Q<&9" 0B!B&*, , qwwCU. zz:: 966W\\!_, ''Q89 !,/Le44 ZZ:: 666W\\!_, ''Q8447<<?* ''A2Q(PQ66W\\!_, ''	!56 !,/Le44   r,   c                     | S r$   r%   r&   s     r)   r*   r*   Z   r2   r,   c                    t        d | j                  |j                  d d z   D              sy | j                  dk(  rt        j                  S t        t        |j                  | j                              }||vr|dz  }t        t        |j                  | j                              }||vr|dz  }t        | t        ||dz               S )Nc              3   4   K   | ]  }|j                     y wr$   	is_number.0is     r)   	<genexpr>z_.<locals>.<genexpr>a   s     8qq{{8   r7   r   r<   )allrE   sizer   r   r   maxinfr   minsupr"   r   )r'   r(   startends       r)   r*   r*   ^   s     8AFFQVVBQZ$788 	vv{zz Cquu%&EA~

AEE155!
"C
!|qQeS1W 566r,   c                 ^    t        | t        |j                  t        j                              S r$   )r"   r   r^   r   Infinityr&   s     r)   r*   r*   r   s    Q

 ;<<r,   c           	         t        d | |fD              sy |st        j                  S | st        j                  S |j                  | j                  k  rt        j                  S |j                  | j                  kD  rt        j                  S | }|j
                  j                  r|j                  }|}|j
                  j                  r|j                  }|j
                  j                  r|S |j
                  j                  r| S ddlm	} d } | ||t        d             ||t        d            z
        \  }}|d u xr |d u }|rt        j                  S |j                         d   }	 |||	      }
fd}t        t        |j                  |j                               |||
      }|t        j                  S  |||
      }|t        j                  S fd} || |      } |||      }t        |j                        dk  r|j                  }t        |j                        dk  r|j                  }t!        |j
                  |j
                        }t#        |j$                  |j$                        }t'        ||      S )	Nc              3   T   K   | ]   }t        d  |j                  D               " yw)c              3   4   K   | ]  }|j                     y wr$   rT   )rW   vs     r)   rY   z_.<locals>.<genexpr>.<genexpr>y   s     /11;;/rZ   N)r[   rE   )rW   rs     r)   rY   z_.<locals>.<genexpr>y   s     @As///@s   &(r   )diop_linearc                 :    | j                   || j                  z  z   S r$   )ra   step)ri   rX   s     r)   <lambda>z_.<locals>.<lambda>   s    agg!&&( r,   r'   r(   c                    || j                   k(  r|S t        | j                   |z
        z  }t        || j                   |z   |      d   }|| j                   k(  rn&t        | j                        t        |      k7  r||z  }|| vry |S )N)ra   r   r   rl   )rI   csts1rl   s       r)   _first_finite_pointz_.<locals>._first_finite_point   s    =H "((Q,$
 1bhhmR(,>
 BGG}R(bR<	r,   c                     t        | j                        z  }| j                  j                  rt	        || j
                  |      }|S t	        | j                  ||z   |      }|S r$   )r   rl   ra   	is_finiter   stop)ri   firstrq   rvrl   s       r)   _updated_rangez_.<locals>._updated_range   sX    !&&\$77uaffb)B 	 qww
B/B	r,   )r[   r   r   r`   r^   ra   is_infinitereversed%sympy.solvers.diophantine.diophantinerj   r	   as_coeff_Addabsr   rl   r   r]   r_   rv   r   )r'   r(   rI   rK   rj   eqvavbno_solutiona0rp   rs   rr   s2ry   ra   rv   rl   s                    @r)   r*   r*   v   s    @!Q@@ zzzzuuquu}zzuuquu}zz 
B	xx[[	
B	xx[[ 
xx	xxA 
)B
 Bc
+bU3Z.@@AFB *+tKzz 
	1	B
2r
A0 tBGGRWW%&D	R	#B	zzz	R	#B	zzz 
2	B	2	B BGG}q[[BGG}q[[ "((#Erww Dd##r,   c                     | S r$   r%   r&   s     r)   r*   r*      r2   r,   c                     | S r$   r%   r&   s     r)   r*   r*      r2   r,   c                 t  $%& ddl m} t        | j                  j                        dkD  s-| j                  j
                  | j                  j                  k7  ry | j                  d   }|t        j                  u rd }t        |t              rk|j                  t        j                  fk(  rM|j                  j                  }|j                  j                  d   }t        d      }|j                  ||      }n|t        j                  u rt        d      x}}|| j                  j                  $| j                  j                  d   %	 t         |$|z
  %fd            }t        |      dk(  rt        j"                  S t%        d |D              ryt        |      dk(  rj|d   \  }}	|j&                  \  }
$j                  %|j                  |
%            j)                         }t+        t-        %|      t        j                        S y t/        $%fd|D         S |t        j0                  k(  r7dd	lm}m& &fd
}| j                  j                  }| j                  j                  d   %t        %j8                  d      }|j                  %|      }|j;                         \  }}t=        |      }|j                  |%      }|j                  |%      }|j&                  }t-        %|      }|j>                  rnM|j>                  du rt        j"                  S |%hk7  ry | |tA        jB                  tE        |            %      z  }| | ||      %      z  }t+        ||      S t        |tF              r)ddl$m%}m&}m'} | j                  j                  }| j                  j                  d   %d\  }}|jP                  |jR                  }}|jT                  r|}n|} |||jV                  %      \  }} |||jX                  %      \  }} t[        d || fD              r~|%k(  rt        |      dk(  r|j\                  d   }|%k(  rt        |       dk(  r| j\                  d   }t%        d ||fD              ry t        j"                  }!t[        d ||fD              r)||kD  r||}}tG        ||||      }"|j_                  |"      }!n`|ja                  t        j0                        rA ||%t        j0                        }#t        |!t        tb        f      s|#j_                  |      }!ny |!t        j"                  u rt        j"                  S t        |!td              r-|!jf                  t        jh                  urt/        t        |!       }!|!t+        t-        %|      |!      S y y y # t        t         f$ r Y y w xY w)Nr   )diophantiner<   mT)symspermutec              3   B   K   | ]  }|D ]  }|j                      y wr$   )free_symbols)rW   tuplss      r)   rY   z_.<locals>.<genexpr>  s      DtD!Q^^D^Ds   c              3   H   K   | ]  }j                  |d            yw)r   N)subs)rW   r   fnns     r)   rY   z_.<locals>.<genexpr>(  s      "C2771ad#3"Cs   ")denomssolve_linearc           
          g }| D ]U  } |d|g      \  }}||k(  r|j                  t        |             1|j                  t        |t        |d                   W t	        | S )Nr   )rF   r   r   r   r   )exprsr.   solsrX   r9   xisr   s         r)   _solution_unionz_.<locals>._solution_union-  si     D =%aSE238KK	#/KKS"Q( ;<= $<r,   )r;   F)invert_realinvert_complexsolveset)NNc              3   <   K   | ]  }t        |t                y wr$   )
isinstancer   rV   s     r)   rY   z_.<locals>.<genexpr>k  s     :Az!Y':s   c              3   $   K   | ]  }|d u  
 y wr$   r%   rV   s     r)   rY   z_.<locals>.<genexpr>v  s     9199s   c              3   4   K   | ]  }|j                     y wr$   )is_realrV   s     r)   rY   z_.<locals>.<genexpr>|  s     91999rZ   )5sympy.solvers.diophantiner   lenlamda	variables	signature	base_setsr   r   r   r   exprr	   r   list	TypeErrorNotImplementedErrorr   anyr   expandr   r   r   r   sympy.solvers.solversr   r   nameas_real_imagr   is_zeror   	make_argsr!   r   sympy.solvers.solvesetr   r   r   	left_open
right_openr   r^   r`   r[   rE   	intersectrC   r   r   r\   rd   )'rG   rH   r   r0   gmvarr   solnssolnsolmtr   r   r   fn_f_reimifreelamr   r   r   new_infnew_sup	new_lopen	new_ropeninverterg1h1g2h2	range_setrO   	solutionsr   r   r   s'                                       @@@r)   r*   r*      s   5 	DJJ  !A%zz##tzz';';;~~a H 1::eX&5??qzzm+K!!B++''*Cc
AaBajj 3ZA>B

$$Q'A[b1vtLM 5zQzz!DDDu:?!&qJD$,,DQ771dii1o6==?D#F1dOQZZ@@ "CU"CDD>
	  JJOOJJ  #166%VVAr]"BBWWR^WWR^Qm:: ZZ5 ::qc\ eBi(!- -H 	OF1Iq11X&&	E8	$	6 	6 JJOOJJ  #%$0@0@9	99"H%H!UYY*B!UYY*B:"b::Qwr7a< ggajGQwr7a< ggajG
 9w&899 

I9w&899 W$'.WG')YO$..|<	??177+ (Aqww 7I%i(L1IJ$-$7$7$>	AJJ&zz!Iu-)..

2R%tI7	$q!i88u 
%O 23  s   V% %V76V7c                     t        |j                        t        | j                        k7  rt        j                  S t	        d t        | j                  |j                        D         S )Nc              3   D   K   | ]  \  }}|j                  |        y wr$   )r   )rW   rX   js      r)   rY   z_.<locals>.<genexpr>  s     G41aAGs    )r   rE   r   r   r    zipr>   r&   s     r)   r*   r*     sD    
166{c!&&k!zzG3qvvqvv3FGHHr,   c                 B   t         j                  t         j                  f}| t        | k(  r:| j                  | j
                  }}|j                  s||v s|j                  s||v r|S | j                  |      sy d}| j                  |j                  k  rk|j                  | j                  k  rQ| j                  |j                  k  r|j                  }|j                  }no| j                  |j                  kD  r| j                  }| j                  }n=t        t        | |g            d   j                  }| j                  xs |j                  }| j                  |j                  k  r| j                  }| j                  }	no| j                  |j                  kD  r|j                  }|j                  }	n=t        t        | |g            d   j                  }| j                  xs |j                  }	||z
  dk(  r	|s|	rd}nd}|rt         j                  S t        	      S )NFr   T)r   NegativeInfinityrd   r   leftrightr   _is_comparablera   rb   r   r   r   r   r   )
r'   r(   inftylri   emptyra   r   rb   r   s
             r)   r*   r*     s    

*EHevvqww199U
aii1:H AEww!%%AGGquu,77QWWGGEIWWqwwGGEI
 !A(+11E2q{{I55155=%%CJUUQUU]%%CJw!u~&q)--C5J;!jEzzE3	:66r,   c                 "    t         j                  S r$   )r   r   r&   s     r)   r*   r*     s    ::r,   c                     |S r$   r%   r&   s     r)   r*   r*     r2   r,   c                 @    t        | j                  |j                  z   S r$   )r   	_elementsr&   s     r)   r*   r*     s    q{{Q[[022r,   c                 b    	 t        | D cg c]	  }||v s| c} S c c}w # t        $ r Y y w xY wr$   )r   r   )r'   r(   els      r)   r*   r*     s8    5"R1W25665 s   	" 	" " 	..c                      y r$   r%   r&   s     r)   r*   r*     r+   r,   c                     | S r$   r%   r&   s     r)   r*   r*     r2   r,   c                     | S r$   r%   r&   s     r)   r*   r*     r2   r,   c                     | S r$   r%   r&   s     r)   r*   r*     r2   r,   c                 @   	 |j                   t        j                  u r|j                  t        j                  u r| S t        t        | j                  t        |j                              t        |j                        dz         }t        ||      S # t        $ r Y y w xY w)Nr<   )_infr   r   _suprd   r   r]   r^   r   r   r   r   r"   
ValueError)r'   r(   r   s      r)   _intlike_intervalr     sx    66Q'''AFFajj,@H#aeeWQVV_-uQWW~/AB A&& s   9B AB 	BBc                     t        | |      S r$   r   r&   s     r)   r*   r*     r5   r,   c                     t        | |      S r$   r   r&   s     r)   r*   r*      r5   r,   N)1sympy.core.functionr   r   sympy.core.mulr   sympy.core.numbersr   sympy.core.relationalr   sympy.core.singletonr   sympy.core.symbolr	   r
   sympy.core.sortingr   $sympy.functions.elementary.complexesr   #sympy.functions.elementary.integersr   r   sympy.sets.fancysetsr   sympy.sets.setsr   r   r   r   r   sympy.multipledispatchr   sympy.sets.conditionsetr   r   r   r   r   r   r   r   r   r   r    sympy.simplify.radsimpr!   r"   registerr*   r   r%   r,   r)   <module>r      s   6  # $ " . & 5 > . K K - 0  H H ( 23  L,7 8 L#.I /I Hh/ 0 Hh/' 0' Hh/# 0# M3/,5 0,5\ He, - E8,7 -7& E8,= -= E5)o$ *o$d E8, - E9- . Hc*` +`F J
3I 4I Hh//7 0/7b Hc* + L#. / Iy13 23 Is+ , C% & Hi0 1 Hi0 1 Iu- . Hh/# 0# Hh/# 0#r,   