a
    <b@                     @   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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( Z+e()eed)d Z*e()eed*d Z*d+S ),    )Lambdaexpand_complex)Mul)ilcm)Eq)S)Dummysymbols)ordered)ComplexRegion)	FiniteSetIntersectionIntervalSetUnion)
Dispatcher)ConditionSet)IntegersNaturalsRealsRangeImageSet	Rationals)EmptySetUniversalSetimageset
ProductSet)numerintersection_setsc                 C   s   d S N abr    r    p/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/sets/handlers/intersection.py_   s    r%   c                 C   s   t | j| jt| j|S r   )r   sym	conditionr   base_setr!   r    r    r$   r%      s    c                 C   s   | S r   r    r!   r    r    r$   r%      s    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%   %   s    c                 C   s  |j r| js$|js$tt| j|jS | jr|jr| j| j }}|j|j }}t||}t||}dtj |v rxtj	|v sdtj |v rtj	|v rt
|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  qt
| }t||S | jr| jD ]x}
tj	|
jd v rH||
jd  tj|
jd v rx|tt|	|	 |
jd  tj	|
jd v r"|td q"t
| }t||S d S )N   r   T)polarx)clsreal   )Zis_ComplexRegionr*   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_intervalr+   elementr    r    r$   r%   )   sL    




c                 C   s   | S r   r    r!   r    r    r$   r%   X   s    c                 C   s   t dd | j|jd d  D s&d S | jdkr6tjS ddlm}m} |t|j	| j	}||vrh|d7 }|t
|j| j}||vr|d8 }t| t||d S )Nc                 s   s   | ]}|j V  qd S r   Z	is_number.0ir    r    r$   	<genexpr>_       _.<locals>.<genexpr>r)   r   floorceilingr.   )allr2   sizer   r   #sympy.functions.elementary.integersrB   rC   maxinfminsupr   r   )r"   r#   rB   rC   startendr    r    r$   r%   \   s    "
c                 C   s   t | t|jtjS r   )r   r   rH   r   Infinityr!   r    r    r$   r%   q   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rRtjS | }|jjrd|j}|}|jjrv|j}|jjr|S |jjr| S ddlm	} ddl
m  dd }|||td||td	 \}}|d u o|d u }|rtjS | d }	|||	}
 fd
d}tt|j|j|||
}|d u r<tjS |||
}|d u rVtjS  fdd}|| |}|||} |jdk r|j} |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   s   | ]}|j V  qd S r   r:   )r<   vr    r    r$   r>   x   r?   z_.<locals>.<genexpr>.<genexpr>N)rD   r2   )r<   rr    r    r$   r>   x   r?   r@   r   )diop_linear)signc                 S   s   | j || j  S r   )rK   step)rO   r=   r    r    r$   <lambda>   r?   z_.<locals>.<lambda>r"   r#   c                    sl   || j kr|S  | j |  }t|| j | |d }|| j krBn | j |kr\||8 }|| vrhd S |S )N)rK   r   rR   )r6   csts1rQ   rR   r    r$   _first_finite_point   s    

z_.<locals>._first_finite_pointc                    s<    | j  }| jjr&t|| j|}nt| j|| |}|S r   )rR   rK   	is_finiter   stop)rO   firstrV   rvrX   r    r$   _updated_range   s
    z_.<locals>._updated_range)rD   r   r   rJ   rH   rK   is_infinitereversedZ%sympy.solvers.diophantine.diophantinerP   Z$sympy.functions.elementary.complexesrQ   r   Zas_coeff_Addabsr   rR   rG   rI   r[   r   )r"   r#   r6   r7   rP   eqvaZvbZno_solutionZa0rU   rY   rW   s2r^   rK   r[   r    rX   r$   r%   u   s^    $






c                 C   s   | S r   r    r!   r    r    r$   r%      s    c           $   	      sZ  ddl m} t| jjdks,| jj| jjkr0d S | jd }|tju rd }t	|t
r|jtjfkr|jj}|jjd }td}|||}n|tju rtd }}|d ur| jj | jjd zt| | |fdd}W n ttfy   Y d S 0 t|dkrtjS tdd |D rrt|dkrl|d \}}	|j\}
 ||
 }tt|tjS d S nt fd	d|D  S |tjkr|d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 r8tjS |hkrHd S ||t !t"|M }||||8 }t||S t	|t#rVddl$m%}m&}m'} | jj}| jjd d\}}|j(|j) }}|j*r|}n|}|||j+\}}|||j,\}} t-dd || fD rR|kr6t|dkr6|j.d }|krXt| dkrX| j.d }tdd ||fD rtd 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r4|!j3tj4ur4tt|! }!|!d urNtt||!S d S d S d S )Nr   )diophantiner.   mT)ZsymsZpermutec                 s   s   | ]}|D ]}|j V  q
qd S r   )free_symbols)r<   Ztuplsr    r    r$   r>     r?   r@   c                 3   s   | ]}  |d  V  qdS )r   N)subs)r<   rh   )fnnr    r$   r>   #  r?   )denomssolve_linearc                    sV   g }| D ]D} |d|g\}}||kr6| t| q| t|t|d qt| S )Nr   )r3   r   r   r   r   )exprsr&   Zsolsr=   r+   Zxis)rm   r    r$   _solution_union(  s    z_.<locals>._solution_union)r-   F)invert_realinvert_complexsolveset)NNc                 s   s   | ]}t |tV  qd S r   )
isinstancer   r;   r    r    r$   r>   f  r?   c                 s   s   | ]}|d u V  qd S r   r    r;   r    r    r$   r>   q  r?   c                 s   s   | ]}|j V  qd S r   )is_realr;   r    r    r$   r>   w  r?   )5Zsympy.solvers.diophantinere   lenZlamda	variables	signatureZ	base_setsr   r   rs   r   exprr   ri   list	TypeErrorNotImplementedErrorr   anyrg   expandr   r   r   r   Zsympy.solvers.solversrl   rm   nameZas_real_imagr   is_zeror   Z	make_argsr   r   Zsympy.solvers.solvesetrp   rq   rr   	left_open
right_openrt   rH   rJ   rD   r2   	intersectr1   r   r   rE   rM   )$r4   r5   re   r(   Zgmvarrf   ZsolnsZsolnZsolmtrx   rl   ro   fZn_Zf_reZimZifreeZlamrp   rq   rr   Znew_infZnew_supZ	new_lopenZ	new_ropenZinverterZg1h1Zg2h2Z	range_setr8   Z	solutionsr    )rj   rk   rm   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>     r?   r@   )ru   r2   r   r   r   zipr/   r!   r    r    r$   r%     s    c           
      C   sb  t jt jf}| t| krF| j| j }}|jsB||v sB|jsB||v rF|S | |sTd S d}| j|j	krD|j| j	krD| j|jk r|j}|j
}n<| j|jkr| j}| j
}n"tt| |gd j}| j
p|j
}| j	|j	k r| j	}| j}	n@| j	|j	kr |j	}|j}	n$tt| |gd j	}| jp"|j}	|| dkrH|s>|	rHd}nd}|rTt jS t||||	S )NFr   T)r   NegativeInfinityrM   r   leftrightrt   Z_is_comparablerK   rL   r   ry   r
   r   r   )
r"   r#   ZinftylrO   emptyrK   r   rL   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%     s    c                 C   s   t | j|j@  S r   )r   Z	_elementsr!   r    r    r$   r%     s    c                    s2   zt  fdd| D  W S  ty,   Y d S 0 d S )Nc                    s   g | ]}| v r|qS r    r    )r<   elr#   r    r$   
<listcomp>  r?   z_.<locals>.<listcomp>)r   rz   r!   r    r   r$   r%     s    c                 C   s   d S r   r    r!   r    r    r$   r%     s    c                 C   s   | S r   r    r!   r    r    r$   r%     s    c                 C   s   | S r   r    r!   r    r    r$   r%     s    c                 C   s   | S r   r    r!   r    r    r$   r%     s    c                 C   sv   z\ddl m}m} |jtju r0|jtju r0| W S tt	| j
||j||jd }t||W S  typ   Y d S 0 d S )Nr   rA   r.   )rF   rB   rC   _infr   r   Z_suprM   r   rG   rH   r   r   r   
ValueError)r"   r#   rB   rC   rh   r    r    r$   _intlike_interval  s    "r   c                 C   s
   t | |S r   r   r!   r    r    r$   r%     s    c                 C   s
   t | |S r   r   r!   r    r    r$   r%     s    N),Z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.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    











.







s



 $



1



















