o
    8VaGB                     @   sP  d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZ 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 d dlm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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 Z eeed d Zeeed!d Zd"S )#    )SDummyLambdasymbolsIntervalIntersectionSetEmptySet	FiniteSetUnionComplexRegionMul)dispatch)ConditionSet)IntegersNaturalsRealsRangeImageSet	Rationals)UniversalSetimageset
ProductSet)numerc                 C      d S N abr   r   B/usr/lib/python3/dist-packages/sympy/sets/handlers/intersection.pyintersection_sets
      r!   c                 C   s   t | j| jt| j|S r   )r   symZ	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_ComplexRegionr(   r   r   setsZ
a_intervalZ
b_intervalr   Z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_intervalr)   elementr   r   r    r!      sT   





c                 C   r%   r   r   r   r   r   r    r!   M   r"   c                 C   s   ddl m}m} tdd |jd d D sd S | jdkr tjS |t|j	| j	}||vr1|d7 }|t
|j| j}||vrB|d8 }t| t||d S )Nr   floorceilingc                 s       | ]}|j V  qd S r   )Z	is_number.0ir   r   r    	<genexpr>T       $intersection_sets.<locals>.<genexpr>r'   r,   )#sympy.functions.elementary.integersr8   r9   allr/   sizer   r	   maxinfminsupr!   r   )r   r   r8   r9   startendr   r   r    r!   Q   s   
c                 C   s   t | t|jtjS r   )r!   r   rE   r   Infinityr   r   r   r    r!   e   s   c                    s  ddl m} ddlm} ddlm  |stjS | stjS |j| j	k r%tjS |j	| jkr.tjS | }|j
jr7|j}|}|j
jr@|j}|j
jrF|S |j
jrL| S dd }|||td||td \}}|d u oi|d u }	|	rotjS | d }
|||
} fd	d
}t||j|j|||}|d u rtjS |||}|d u rtjS  fdd}|| |}|||} |jdk r|j} |jdk r|j}t|j
|j
}t|j|j}t||S )Nr   )diop_linear)ilcm)signc                 S   s   | j || j  S r   )rH   step)rr=   r   r   r    <lambda>   s    z#intersection_sets.<locals>.<lambda>r   r   c                    sl   || j kr|S  | j |  }t|| j | |d }|| j kr!n | j |kr.||8 }|| vr4d S |S )N)rH   r   rN   )r3   csts1rM   rN   r   r    _first_finite_point   s   

z.intersection_sets.<locals>._first_finite_pointc                    s>    | j  }| jjrt|| j|}|S t| j|| |}|S r   )rN   rH   Z	is_finiter   stop)rO   firstrS   ZrvrU   r   r    _updated_range   s   z)intersection_sets.<locals>._updated_range)Z%sympy.solvers.diophantine.diophantinerK   Zsympy.core.numbersrL   sympyrM   r   r	   rG   rE   rH   Zis_infinitereversedr   Zas_coeff_AddabsrN   rD   rF   rW   r   )r   r   rK   rL   r3   r4   eqZvaZvbZno_solutionZa0rR   rV   rT   s2rY   rH   rW   r   rU   r    r!   i   s\   $




c                 C   r%   r   r   r   r   r   r    r!      r"   c           %   	      sf  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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rDdd
lm} ddlm}m ddlm   fdd}| jj}| jjd tj dd}||}|! \}}||}||}||}|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&r1ddl'm(}m)}m*} | jj}| jjd d\}}|j+|j,}}|j-rp|}n|}|||j.\}}|||j/\} }!t0dd ||!fD r/|krt|dkr|j1d }| krt|!dkr|!j1d }tdd ||fD rd S tj}"t0dd ||fD r||kr||}}t&||||}#|2|#}"n|3tjr||tj}$t	|"t
t4fs|$2|}"nd S |"tju rtjS t	|"t5r |"j6tj7ur tt|" }"|"d ur-tt||"S d S d S d S )Nr   )diophantiner,   mT)ZsymsZpermutec                 s   s,    | ]}|D ]}t |t o|jV  qqd S r   )
isinstanceintfree_symbols)r<   Ztuplsr   r   r    r>     s    r@   c                 3   s     | ]}  |d  V  qdS )r   N)subs)r<   rd   )fnnr   r    r>     s    )expand_complex)denomssolve_linear)Eqc                    sV   g }| D ]"}|d|g\}}||kr| t| q| t| |d qt| S )Nr   )r0   r
   r   r   )Zexprsr#   Zsolsr=   r)   Zxis)rk   rj   r   r    _solution_union  s   z*intersection_sets.<locals>._solution_union)r+   F)invert_realinvert_complexsolveset)NNc                 s   s    | ]}t |tV  qd S r   )ra   r
   r;   r   r   r    r>   Z  s    c                 s   s    | ]}|d u V  qd S r   r   r;   r   r   r    r>   e  s    c                 s   r:   r   )is_realr;   r   r   r    r>   k  r?   )8Zsympy.solvers.diophantiner_   lenZlamdaZ	variablesZ	signatureZ	base_setsr   r   ra   r   exprr   re   list	TypeErrorNotImplementedErrorr	   anyrc   expandr   r   r
   r   Zsympy.core.functionrh   Zsympy.solvers.solversri   rj   Zsympy.core.relationalrk   nameZas_real_imagZis_zeror   Z	make_argsr   r   Zsympy.solvers.solvesetrm   rn   ro   	left_open
right_openrp   rE   rG   rB   r/   	intersectr.   r   r   rC   rJ   )%r1   r2   r_   r$   Zgmvarr`   ZsolnsZsolnZsolmtrr   rh   ri   rl   fZn_Zf_reZimZifreeZlamrm   rn   ro   Znew_infZnew_supZ	new_lopenZ	new_ropenZinverterZg1Zh1Zg2Zh2Z	range_setr5   Z	solutionsr   )rk   rf   rg   rj   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{   )r<   r=   jr   r   r    r>     s    r@   )rq   r/   r   r	   r   zipr-   r   r   r   r    r!     s   c           
      C   s2  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	| j}| j
pZ|j
}| j	|j	k rh| j	}| j}	n| j	|j	kru|j	}|j}	n	| j	}| jp}|j}	|| dkr|s|	rd}nd}|rt jS t||||	S )NFr   T)r   NegativeInfinityrJ   r   leftrightrp   Z_is_comparablerH   rI   ry   rz   r	   )
r   r   ZinftylrO   emptyrH   ry   rI   rz   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   )r<   elr   r   r    
<listcomp>  s    z%intersection_sets.<locals>.<listcomp>)r
   rt   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   sr   z.ddl m}m} |jtju r|jtju r| W S tt	| j
||j||jd }t||W S  ty8   Y d S w )Nr   r7   r,   )rA   r8   r9   Z_infr   r   Z_suprJ   r   rD   rE   r   r   r!   
ValueError)r   r   r8   r9   rd   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)!rZ   r   r   r   r   r   r   r   r	   r
   r   r   r   Zsympy.multipledispatchr   Zsympy.sets.conditionsetr   Zsympy.sets.fancysetsr   r   r   r   r   r   Zsympy.sets.setsr   r   r   Zsympy.simplify.radsimpr   r!   typer   r   r   r   r    <module>   sp   8  





.



p

 '

.









