a
    <b                      @   s  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
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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$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. ed\Z/Z0ee
fZ1edZ2e23eedd Z4e23e1e"dd Z4e23e
e!dd Z4e23ee!dd Z4e23e1e#dd Z4e23e1e%dd Z4e23e1e(dd Z4e23e1edd Z4e23e1e&dd Z4e23e1e+dd Z4e23e1e,dd Z4e23e1e-dd Z4dS )     )S)Set)singularities)ExprAdd)LambdaFunctionClassdiff
expand_mul)Floatoo)DummysymbolsWild)explog)MinMax)true)
Dispatcher)imagesetInterval	FiniteSetUnionImageSetIntersectionRange
Complement)EmptySetis_function_invertible_in_set)IntegersNaturalsReals)match_real_imagzx y_set_functionc                 C   s   d S N fxr&   r&   m/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/sympy/sets/handlers/functions.py_   s    r+   c                 C   s   t t| | S r%   )r   mapr'   r&   r&   r*   r+      s    c                    s  ddl m} ddlm}  j}t|jdks:t jdkr>d S  jd }|jsj|	|t
ddjdu rjd S |jrtj}}|jD ]j\}}	|	tu r|}
n|	 }
t||
}
|jrt|}ntt|||
}t||}t||
}|tju r qq|S jjrjjsd S z6ddlm} tt||tdkr<|W n tyT   Y d S 0 j rr|||jd	d
}njvr j}j!r|||jdd
}njvr j}tdkr|t"|||}t#|ts|tju sd S t|}||g fdd|D  }t$| t%|  }}d\}}||krr||krV||vrVj }||kr||vrj!}n4||kr||vrj!}||kr||vr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 d S )Nr   )solveset)limit   T)realF)_nsort+)dir-c                    s"   g | ]}|j r|v r |qS r&   )is_real.0ir'   r&   r*   
<listcomp>b   s   z_.<locals>.<listcomp>)FFc              	      s,   g | ]$}t  t| |d   ddqS )r/   T)r   r   r6   )r(   singr&   r*   r9   y   s   )(Zsympy.solvers.solvesetr-   Zsympy.seriesr.   exprlenfree_symbols	variablesr5   subsr   Zis_Piecewiser   r   argsr   Zas_setr   Z	is_Numberr   r   r   r   r   startis_comparableendZsympy.polys.polyutilsr1   listr   NotImplementedError	left_open
right_openr	   
isinstancer   r   r   range)r(   r)   r-   r.   r<   varresultZ
domain_setZp_exprZp_condZintrvlimager1   _startZ_endZ	soln_exprZsolnsZextrrB   rD   rG   rH   r&   )r(   r:   r)   r*   r+   "   s    








c                 C   s`   | t kr&tt |jt |j|j|jS | tkrLtt|jt|j|j|jS ttt	| t	|S r%   )
r   r   rB   rD   rG   rH   r   r   r   _xr'   r&   r&   r*   r+   }   s
    c                    s   t  fdd|jD  S )Nc                 3   s   | ]}t  |V  qd S r%   r   r7   argr(   r&   r*   	<genexpr>       _.<locals>.<genexpr>)r   rA   r'   r&   rS   r*   r+      s    c                    s:   t  |r"t fdd|jD  S ttt t|S d S )Nc                 3   s   | ]}t  |V  qd S r%   rP   rQ   rS   r&   r*   rT      rU   rV   )r   r   rA   r   r   rO   r'   r&   rS   r*   r+      s    
c                 C   s   |S r%   r&   r'   r&   r&   r*   r+      s    c                 C   s   t tt| t|S r%   )r   r   rO   r'   r&   r&   r*   r+      s    c                 C   s   |s
t jS t| jtsd S |jdkr4t| |d S | t ju rB|S | jd }| j}||j	vsl||
|j	v rpd S |jjr| |j| |j }n| |j | |d  }t|}||krt||t|jS d S )Nr/   r   r;   )r   r   rI   r<   r   sizer   ZIdentityFunctionr?   r>   r	   rB   	is_finitestepr
   r   r   )r(   selfr)   r<   Fr&   r&   r*   r+      s$    


c                 C   s  | j }t|tsd S | jd }|t|kr0tjS | d}| || }| | | }dd }||||k rr|| }td|gd}td|gd}	||| |	 }
|
r|
| r|
| 	t
s|
|	 	t
s|
| |
|	  }}	|dv rg }t|	D ]}|js|| qt| }	|	jrb|jrbt|	\}}|r|jr|jr||; }|tj|  }	nR|	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   | ]}|  V  qd S r%   )Zcould_extract_minus_sign)r7   r+   r&   r&   r*   rT      s   z&_.<locals>.<lambda>.<locals>.<genexpr>)sumr   	make_args)er&   r&   r*   <lambda>   s   z_.<locals>.<lambda>a)excludeb)r/   r;   )r<   rI   r   r?   absr   	Naturals0r   matchZatomsr   r   r]   
is_integerappendZ	is_numberr5   r#   rC   ZImaginaryUnitZis_imaginaryr   r   r    )r(   rZ   r<   ncZfxZf_xZ	neg_countr`   rb   re   ZnonintZbibrZair&   r&   r*   r+      sR    



c                 C   s   | j }t|tsd S | jd }|j|h s|t|krJ|tju rD|S tjS |	|}|
|d}|jr|jr||| | kr|tju r||7 }|dkr|dkr|dkrtjS |dkrtjS t|t|S t|t |S d S )Nr   r/   )r<   rI   r   r?   r>   rc   r   r!   rd   Zcoeffr@   Z
is_Integerr   r   )r(   rZ   r<   r)   rY   ri   r&   r&   r*   r+      s,    




c                 C   s&   | j }t|tsd S t| tt tS r%   )r<   rI   r   r$   r   r   )r(   rZ   r<   r&   r&   r*   r+     s    
N)5Zsympy.core.singletonr   Zsympy.sets.setsr   Zsympy.calculus.singularitiesr   Z
sympy.corer   r   Zsympy.core.functionr   r   r	   r
   Zsympy.core.numbersr   r   Zsympy.core.symbolr   r   r   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   r   Zsympy.logic.boolalgr   Zsympy.multipledispatchr   Z
sympy.setsr   r   r   r   r   r   r   r   r   r   Zsympy.sets.fancysetsr    r!   r"   r#   rO   Z_yZFunctionUnionr$   registerr+   r&   r&   r&   r*   <module>   sR   (





Z













4


