o
    e@                     @   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/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$   PD:\Projects\ConvertPro\env\Lib\site-packages\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   )Zis_ComplexRegionr1   r   r   setsZ
a_intervalZ
b_intervalr   PiZZeror   r   	is_subsetr   r	   r   Zpsetsargsappendr   r   )selfotherr1Ztheta1r2Ztheta2Znew_r_intervalZnew_theta_intervalnew_intervalr2   elementr$   r$   r(   r)   +   sN   





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#   Z	is_number.0ir$   r$   r(   	<genexpr>a       _.<locals>.<genexpr>r0   r   r5   )allr9   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   rL   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   rA   r#   rB   )rD   vr$   r$   r(   rF   y   rG   z_.<locals>.<genexpr>.<genexpr>N)rI   r9   )rD   rr$   r$   r(   rF   y   s   " rH   r   )diop_linearc                 S   s   | j || j  S r#   )rO   step)rS   rE   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)rO   r   r   rU   )r=   csts1rU   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   rU   rO   	is_finiter   stop)rS   firstrY   rvr[   r$   r(   _updated_range   s   z_.<locals>._updated_range)rI   r   r   rN   rL   rO   is_infinitereversedZ%sympy.solvers.diophantine.diophantinerT   r   Zas_coeff_Addabsr   rU   r   rK   rM   r^   r   )r&   r'   r=   r>   rT   eqvaZvbZno_solutionZa0rX   r\   rZ   s2ra   rO   r^   r$   r[   r(   r)   v   s\   $




c                 C   r.   r#   r$   r%   r$   r$   r(   r)      r*   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)ZsymsZpermutec                 s   s     | ]}|D ]}|j V  qqd S r#   )free_symbols)rD   Ztuplsr$   r$   r(   rF         rH   c                 3   s     | ]}  |d  V  qdS )r   N)subs)rD   rk   )fnnr$   r(   rF   (  rl   )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+   ZsolsrE   r2   Zxis)rq   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   rC   r$   r$   r(   rF   k  s    c                 s   s    | ]}|d u V  qd S r#   r$   rC   r$   r$   r(   rF   v  s    c                 s   rA   r#   )is_realrC   r$   r$   r(   rF   |  rG   )5Zsympy.solvers.diophantinerh   lenZlamda	variables	signatureZ	base_setsr   r   rw   r   exprr   rm   list	TypeErrorNotImplementedErrorr   anyrj   expandr   r   r   r   Zsympy.solvers.solversrp   rq   nameZas_real_imagr   is_zeror   Z	make_argsr    r   Zsympy.solvers.solvesetrt   ru   rv   	left_open
right_openrx   rL   rN   rI   r9   	intersectr8   r   r   rJ   rQ   )$r;   r<   rh   r-   Zgmvarri   ZsolnsZsolnZsolmtr|   rp   rs   fZn_Zf_reZimZifreeZlamrt   ru   rv   Znew_infZnew_supZ	new_lopenZ	new_ropenZinverterg1h1g2h2Z	range_setr?   Z	solutionsr$   )rn   ro   rq   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   )rD   rE   jr$   r$   r(   rF     s    rH   )ry   r9   r   r   r   zipr6   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   NegativeInfinityrQ   r   leftrightrx   Z_is_comparablerO   rP   r   r}   r
   r   r   )
r&   r'   ZinftylrS   emptyrO   r   rP   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   Z	_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$   )rD   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   Z_suprQ   r   rK   rL   r   r   r   r   r!   
ValueError)r&   r'   rk   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)1Zsympy.core.functionr   r   Zsympy.core.mulr   Zsympy.core.numbersr   Zsympy.core.relationalr   Zsympy.core.singletonr   Zsympy.core.symbolr   r	   Zsympy.core.sortingr
   Z$sympy.functions.elementary.complexesr   Z#sympy.functions.elementary.integersr   r   Zsympy.sets.fancysetsr   Zsympy.sets.setsr   r   r   r   r   Zsympy.multipledispatchr   Zsympy.sets.conditionsetr   r   r   r   r   r   r   r   r   r   r   Zsympy.simplify.radsimpr    r!   registerr)   r   r$   r$   r$   r(   <module>   s     












.







r




 
$



1















	

