o
    *ήc@                     @   s  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-.e e dd Z/e-.e edd Z/e-.e"e!dd Z/e-.e"e"dd Z/e-.ee"dd Z/e-.eedd Z/e-.e!e#dd Z/e-.e$edd Z/e-.e$e"dd Z/e-.e$e$dd Z/e-.e$e!dd Z/e-.e%edd Z/e-.e*e*dd Z/e-.eed d Z/e-.e'ed!d Z/e-.e(ed"d Z/e-.eed#d Z/e-.eed$d Z/e-.eed%d Z/e-.e!e&d&d Z/e-.e"e&d'd Z/e-.e&e#d(d Z/d)d* Z0e-.e!ed+d Z/e-.e"ed,d Z/d-S ).    )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                 C      d S N abr$   r$   G/tmp/pip-target-vg8gfxp4/lib/python/sympy/sets/handlers/intersection.py_      r)   c                 C   s   t | j| jt| j|S r#   )r   sym	conditionr   base_setr%   r$   r$   r(   r)      s   c                 C      | S r#   r$   r%   r$   r$   r(   r)      r*   c                 C   s   | t ju r| S |S r#   )r   r   r%   r$   r$   r(   r)   #   s   c                 C   s
   t || S r#   )r!   r%   r$   r$   r(   r)   '      
c                 C   s  |j rW| js|jstt| j|jS | jrW|jrW| j| j}}|j|j}}t||}t||}dtj |v r<tj	|v sHdtj |v rOtj	|v rOt
|td}t|| ddS |tjrg }tdtdd}	| js| jD ]}
tj	|
jd v r~||
jd  qlt
| }t||S | jr| jD ]8}
tj	|
jd v r||
jd  tj|
jd v r|tt|	|	 |
jd  tj	|
jd v r|td qt
| }t||S d S d S )N   r   T)polarx)clsreal   )is_ComplexRegionr1   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_intervalr2   elementr$   r$   r(   r)   +   sT   





c                 C   r.   r#   r$   r%   r$   r$   r(   r)   Z   r*   c                 C   s   t dd | j|jd d  D sd S | jdkrtjS tt|j| j}||vr,|d7 }tt	|j
| j
}||vr=|d8 }t| t||d S )Nc                 s       | ]}|j V  qd S r#   	is_number.0ir$   r$   r(   	<genexpr>a       _.<locals>.<genexpr>r0   r   r5   )allr>   sizer   r   r   maxinfr   minsupr!   r   )r&   r'   startendr$   r$   r(   r)   ^   s   "
c                 C   s   t | t|jtjS r#   )r!   r   rV   r   Infinityr%   r$   r$   r(   r)   r   s   c                    s  t dd | |fD sd S |stjS | stjS |j| jk r tjS |j| jkr)tjS | }|jjr2|j}|}|jjr;|j}|jjrA|S |jjrG| S ddlm	} dd }|||t
d||t
d \}}|d u oj|d u }|rptjS | d }	|||	}
 fd	d
}tt|j|j |||
}|d u rtjS |||
}|d u rtjS  fdd}|| |}|||}t|jdk r|j}t|jdk r|j}t|j|j}t|j|j}t|| S )Nc                 s   s$    | ]}t d d |jD V  qdS )c                 s   rJ   r#   rK   )rN   vr$   r$   r(   rP   y   rQ   z_.<locals>.<genexpr>.<genexpr>N)rS   r>   )rN   rr$   r$   r(   rP   y   s   " rR   r   )diop_linearc                 S   s   | j || j  S r#   )rY   step)r]   rO   r$   r$   r(   <lambda>   s    z_.<locals>.<lambda>r&   r'   c                    sl   || j kr|S t| j |   }t|| j | |d }|| j kr!nt| jt|kr.||8 }|| vr4d S |S )N)rY   r   r   r_   )rB   csts1r_   r$   r(   _first_finite_point   s   

z_.<locals>._first_finite_pointc                    s>   t | j  }| jjrt|| j|}|S t| j|| |}|S r#   )r   r_   rY   	is_finiter   stop)r]   firstrc   rvre   r$   r(   _updated_range   s   z_.<locals>._updated_range)rS   r   r   rX   rV   rY   is_infinitereversed%sympy.solvers.diophantine.diophantiner^   r   as_coeff_Addabsr   r_   r   rU   rW   rh   r   )r&   r'   rB   rD   r^   eqvavbno_solutiona0rb   rf   rd   s2rk   rY   rh   r$   re   r(   r)   v   s\   $




c                 C   r.   r#   r$   r%   r$   r$   r(   r)      r*   c           $   	      sN  ddl m} t| jjdks| jj| jjkrd S | jd }|tju rd }t	|t
rE|jtjfkrE|jj}|jjd }td}|||}n|tju rPtd }}|d ur| jj | jjd zt| | |fdd}W n ttfyy   Y d S w t|dkrtjS tdd |D rt|dkr|d \}}	|j\}
 ||
 }tt|tjS d S t fd	d|D  S |tjkr8dd
lm}m fdd}| jj}| jjd tjdd}||}| \}}t|}||}||}|j}t|}|jrn|jdu rtjS |hkrd S ||t !t"|M }||||8 }t||S t	|t#r%ddl$m%}m&}m'} | jj}| jjd d\}}|j(|j)}}|j*rd|}n|}|||j+\}}|||j,\}} t-dd || fD r#|krt|dkr|j.d }|krt| dkr| j.d }tdd ||fD rd S tj}!t-dd ||fD r||kr||}}t#||||}"|/|"}!n|0tjr||tj}#t	|!t
t1fs|#/|}!nd S |!tju rtjS t	|!t2r|!j3tj4urtt|! }!|!d ur!tt||!S d S d S d S )Nr   )diophantiner5   mT)symspermutec                 s   s     | ]}|D ]}|j V  qqd S r#   )free_symbols)rN   tuplsr$   r$   r(   rP         rR   c                 3   s     | ]}  |d  V  qdS )r   N)subs)rN   r}   )fnnr$   r(   rP   #  r~   )denomssolve_linearc                    sV   g }| D ]"} |d|g\}}||kr| t| q| t|t|d qt| S )Nr   )r?   r   r   r   r   )exprsr+   solsrO   r2   xis)r   r$   r(   _solution_union(  s   z_.<locals>._solution_union)r4   F)invert_realinvert_complexsolveset)NNc                 s   s    | ]}t |tV  qd S r#   )
isinstancer   rM   r$   r$   r(   rP   f  s    c                 s   s    | ]}|d u V  qd S r#   r$   rM   r$   r$   r(   rP   q  s    c                 s   rJ   r#   )is_realrM   r$   r$   r(   rP   w  rQ   )5sympy.solvers.diophantinerw   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   rV   rX   rS   r>   	intersectr<   r   r   rT   r[   )$r@   rA   rw   r-   gmvarrx   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_setrH   	solutionsr$   )r   r   r   r(   r)      s   

	










c                 C   s6   t |jt | jkrtjS tdd t| j|jD  S )Nc                 s   s    | ]
\}}| |V  qd S r#   )r   )rN   rO   jr$   r$   r(   rP     s    rR   )r   r>   r   r   r   zipr7   r%   r$   r$   r(   r)     s   c           
      C   sR  t jt jf}| t| kr#| j| j}}|js!||v s!|js!||v r#|S | |s*d S d}| j|j	kr|j| j	kr| j|jk rE|j}|j
}n| j|jkrR| j}| j
}ntt| |gd j}| j
pb|j
}| j	|j	k rp| j	}| j}	n| j	|j	kr}|j	}|j}	ntt| |gd j	}| jp|j}	|| dkr|s|	rd}nd}|rt jS t||||	S )NFr   T)r   NegativeInfinityr[   r   leftrightr   _is_comparablerY   rZ   r   r   r
   r   r   )
r&   r'   inftylr]   emptyrY   r   rZ   r   r$   r$   r(   r)     s@   
c                 C   s   t jS r#   )r   r   r%   r$   r$   r(   r)     s   c                 C   s   |S r#   r$   r%   r$   r$   r(   r)     r*   c                 C   s   t | j|j@  S r#   )r   	_elementsr%   r$   r$   r(   r)     s   c                    s.   zt  fdd| D  W S  ty   Y d S w )Nc                    s   g | ]}| v r|qS r$   r$   )rN   elr'   r$   r(   
<listcomp>  s    z_.<locals>.<listcomp>)r   r   r%   r$   r   r(   r)     s
   c                 C   r"   r#   r$   r%   r$   r$   r(   r)     r*   c                 C   r.   r#   r$   r%   r$   r$   r(   r)     r*   c                 C   r.   r#   r$   r%   r$   r$   r(   r)     r*   c                 C   r.   r#   r$   r%   r$   r$   r(   r)     r*   c                 C   sb   z&|j tju r|jtju r| W S tt| jt|j	t
|jd }t||W S  ty0   Y d S w )Nr5   )_infr   r   _supr[   r   rU   rV   r   r   r   r   r!   
ValueError)r&   r'   r}   r$   r$   r(   _intlike_interval  s   "r   c                 C   
   t | |S r#   r   r%   r$   r$   r(   r)     r/   c                 C   r   r#   r   r%   r$   r$   r(   r)     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$   r(   <module>   s     












.







r


 
$



1















	

