o
    8Va4"                     @   s  d dl mZmZmZmZmZmZmZmZm	Z	 d dl
mZmZ d dl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mZmZ d dlmZm Z m!Z! d dl"m#Z# ed	\Z$Z%eef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'dS )    )	SetsymbolsexplogSWildDummyooFloat)ExprAdd)Lambda_coeff_isnegFunctionClass)true)dispatch)imagesetInterval	FiniteSetUnionImageSetEmptySetIntersectionRange)IntegersNaturalsReals)match_real_imagzx yc                 C   s   d S N fxr   r   ?/usr/lib/python3/dist-packages/sympy/sets/handlers/functions.py_set_function      r$   c                 C   s   t t| | S r   )r   mapr    r   r   r#   r$      s   c                    s:  ddl m}m} ddlm} ddlm}m} ddlm	} ddl
m} ddlm}	  j}
t|
jdks9t jdkr;d S  jd }|jsQ|
|td	d
jdu rQd S |
jrtj}}|
jD ]6\}}|tu rg|}n	| }t||}|jrxt|}nt||||}t||}|	||}|tju r |S q\|S j j!rj"j!sd S zddl#m$} t%||
|tdkr|W n
 t&y   Y d S w j'r||
|j dd}n
j vrۈ j }j(r||
|j"dd}n
j"vr j"}tdkrn|||
||}t)|ts|tu sd S t%|}||g fdd|D  }|| || }}d\}}||krM||kr?||vr?j'}||krL||vrLj(}n||krZ||vrZj(}||krg||vrgj'}t*||||S t t*j d j'd	t fddt+dtd D   t t*d j"d	j( S )Nr   )MinMax)solveset)diffr   )limit)singularities)
Complement   T)realF)_nsort+)dir-c                    s"   g | ]}|j r|v r |qS r   )is_real.0ir    r   r#   
<listcomp>\   s
    z!_set_function.<locals>.<listcomp>)FFc              	      s,   g | ]}t  t| |d   ddqS )r.   T)r   r   r5   )r!   singr   r#   r8   s   s    $),Z(sympy.functions.elementary.miscellaneousr'   r(   Zsympy.solvers.solvesetr)   sympy.core.functionr*   r   Zsympy.seriesr+   Zsympy.calculus.singularitiesr,   
sympy.setsr-   exprlenfree_symbols	variablesr4   subsr   Zis_Piecewiser   r   argsr   Zas_setr   Z	is_Numberr   r   r   startis_comparableendZsympy.polys.polyutilsr0   listNotImplementedError	left_open
right_open
isinstancer   range)r!   r"   r'   r(   r)   r*   r   r+   r,   r-   r=   varresultZ
domain_setZp_exprZp_condZintrvlZimager0   Z_startZ_endZ	soln_exprZsolnsZextrrC   rE   rH   rI   r   )r!   r9   r"   r#   r$      s   










c                 C   s`   | t krtt |jt |j|j|jS | tkr&tt|jt|j|j|jS ttt	| t	|S r   )
r   r   rC   rE   rH   rI   r   r   r   _xr    r   r   r#   r$   w   s
   c                    s   t  fdd|jD  S )Nc                 3       | ]}t  |V  qd S r   r   r6   argr!   r   r#   	<genexpr>        _set_function.<locals>.<genexpr>)r   rB   r    r   rS   r#   r$      s   c                    sB   ddl m} | |rt fdd|jD  S ttt t|S )Nr   )is_function_invertible_in_setc                 3   rO   r   rP   rQ   rS   r   r#   rT      rU   rV   )Zsympy.sets.setsrW   r   rB   r   r   rN   )r!   r"   rW   r   rS   r#   r$      s   
c                 C   s   |S r   r   r    r   r   r#   r$      r%   c                 C   s   t tt| t|S r   )r   r   rN   r    r   r   r#   r$      s   c                 C   s   ddl m} |stjS t| jtsd S |jdkr t| |d S | tj	u r'|S | j
d }| j}||jvs<|||jv r>d S |jjrM| |j| |j }n| |j | |d  }||}||krjt||t|jS d S )Nr   )
expand_mulr.   r:   )r;   rX   r   r   rJ   r=   r   sizer   ZIdentityFunctionr@   r?   r*   rC   Z	is_finitestepr   r   )r!   selfrX   r"   r=   Fr   r   r#   r$      s(   


c                 C   s  | j }t|ts
d S | jd }|t|krtjS | d}| || }| | | }dd }||||k r9|| }td|gd}td|gd}	||| |	 }
|
r|
| r|
| 	t
s|
|	 	t
s|
| |
|	 }}	|dv rg }t|	D ]
}|js|| qxt| }	|	jr|jrt|	\}}|r|jr|jr||; }|tj|  }	n$|	jr|jrt|	\}}|tj }|r|jr|jr||; }|tj|  }	|| |	 }|| j krtt||tjS d S )Nr   c                 S   s   t dd t| D S )Nc                 s   s    | ]}t |V  qd S r   )r   )r6   _r   r   r#   rT      s    z2_set_function.<locals>.<lambda>.<locals>.<genexpr>)sumr   	make_args)er   r   r#   <lambda>   s    z_set_function.<locals>.<lambda>a)Zexcludeb)r.   r:   )r=   rJ   r   r@   absr   	Naturals0r   matchZatomsr
   r   r_   
is_integerappendZ	is_numberr4   r   rD   ZImaginaryUnitZis_imaginaryr   r   r   )r!   r[   r=   ncZfxZf_xZ	neg_countrb   rc   rf   ZnonintZbibrZair   r   r#   r$      sX   




c                 C   s   | j }t|ts
d S | jd }|j|h sj|t|kr%|tju r"|S tjS |	|}|
|d}|jrl|jrn||| | krp|tju rG||7 }|dkrc|dkr]|dkrVtjS |dkr]tjS t|t|S t|t |S d S d S d S d S )Nr   r.   )r=   rJ   r   r@   r?   rd   r   r   re   ZcoeffrA   Z
is_Integerr   r	   )r!   r[   r=   r"   rZ   rj   r   r   r#   r$      s0   




c                 C   s&   | j }t|ts
d S t| tt tS r   )r=   rJ   r   r$   r   r	   )r!   r[   r=   r   r   r#   r$      s   
N))Zsympyr   r   r   r   r   r   r   r	   r
   Z
sympy.corer   r   r;   r   r   r   Zsympy.logic.boolalgr   Zsympy.multipledispatchr   r<   r   r   r   r   r   r   r   r   Zsympy.sets.fancysetsr   r   r   Z&sympy.functions.elementary.exponentialr   rN   Z_yZFunctionUnionr$   typer   r   r   r#   <module>   sD   , (


]






3
