o
    e/                     @   s  d Z ddlmZmZ ddlmZmZmZmZm	Z	 ddl
mZmZmZ ddlmZmZmZmZ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! dd	l"m#Z# 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/ dd Z0e%1edd Z2e%1edd Z2e%1edd Z2e%1edd Z2e%1e	dd Z2e%3eedd Z2e%1edd Z2e&1edd Z2e&1edd Z2e'1edd Z2e'1edd Z2e'1edd Z2e'1edd Z2e'1e	dd Z2e'1edd Z2e'1edd Z2e(1edd Z2e(1ed d Z2e(1ed!d Z2e)1ed"d Z2e)1ed#d Z2d$d% Z4e*1ed&d Z2e*1ed'd Z2e*1ed(d Z2e*1ed)d Z2e*1e	d*d Z2e*1ed+d Z2e*1ed,d Z2e*1ed-d Z2e*1ed.d Z2e*1ed/d Z2e*1ed0d Z2e*1ed1d Z2e*1e!d2d Z2e*1ed3d Z2e*1ed4d Z2e*1ed5d Z2e*1ed6d Z2e*1ed7d Z2e+1e5d8d Z2e/1e5d9d Z2e.1e5d:d Z2e-1e5d;d Z2e,1e5d<d Z2d=S )>z?
Handlers related to order relations: positive, negative, etc.
    )Qask)AddBasicExprMulPow)	fuzzy_not	fuzzy_andfuzzy_or)EImaginaryUnitNaNIpi)Absacosacotasinatanexp	factoriallog)DeterminantTrace)MatrixElement)MDNotImplementedError   )NegativePredicateNonNegativePredicateNonZeroPredicateZeroPredicateNonPositivePredicatePositivePredicateExtendedNegativePredicateExtendedNonNegativePredicateExtendedNonPositivePredicateExtendedNonZeroPredicateExtendedPositivePredicatec                 C   st   |   \}}|s|d}|jdkr|dk S d S |d}|jdkr6|dkr(dS |d}|jdkr8|dk S d S d S Nr      r   Fas_real_imagevalf_precexprassumptionsri r4   PD:\Projects\ConvertPro\env\Lib\site-packages\sympy/assumptions/handlers/order.py_NegativePredicate_number      





r6   c                 C      | j rt| |S d S N)	is_numberr6   r0   r1   r4   r4   r5   _+      
r<   c                 C      | j }|d u r	t|S r9   )Zis_negativer   r0   r1   retr4   r4   r5   r<   0      c                 C   s   | j rt| |S tt| |}|dur|S d}| jD ]}tt||dur9tt||du r6|d7 }q dS q|t| jk rCdS dS )zN
    Positive + Positive -> Positive,
    Negative + Negative -> Negative
    Tr   Fr*   N)	r:   r6   r   r   realargsnegativepositivelen)r0   r1   r2   Znonposargr4   r4   r5   r<   7   s   


c                 C   s^   | j rt| |S d }| jD ]}|d u rd}tt||r!| }qtt||r*q d S |S NF)r:   r6   rC   r   r   rD   rE   r0   r1   resultrG   r4   r4   r5   r<   O   s   

c                 C   s   | j tkrtt| j|rdS dS | jrt| |S tt| j |rTtt| j |r7tt| j|r7dS tt	| j|rBdS tt
| j|rVtt| j |S dS dS )zq
    Real ** Even -> NonNegative
    Real ** Odd  -> same_as_base
    NonNegative ** Positive -> NonNegative
    FN)baser   r   r   rB   r   r:   r6   rE   evenoddrD   r;   r4   r4   r5   r<   _   s    

c                 C      dS rH   r4   r;   r4   r4   r5   r<   w      c                 C   s   t t| j|rdS trH   )r   r   rB   r   r   r;   r4   r4   r5   r<   {   s   c                 C   0   | j rtt| |}|rtt| |S |S d S r9   )r:   r	   r6   r   r   rB   )r0   r1   Znotnegativer4   r4   r5   r<         c                 C   r>   r9   )Zis_nonnegativer   r?   r4   r4   r5   r<      rA   c                 C   r>   r9   )Z
is_nonzeror   r?   r4   r4   r5   r<      rA   c                    sL   t t| du rdS | jr$| d}dd  t fdd| D S d S )NFr   c                 S   s   | j dkr	| dkS d S )Nr*   r   )r.   )r3   r4   r4   r5   nonz   s   
z_.<locals>.nonzc                 3   s    | ]} |V  qd S r9   r4   ).0r3   rR   r4   r5   	<genexpr>   s    _.<locals>.<genexpr>)r   r   rB   r:   r-   r   r,   )r0   r1   r3   r4   rT   r5   r<      s   
c                    s8   t  fdd| jD st  fdd| jD rdS d S )Nc                 3        | ]}t t| V  qd S r9   )r   r   rE   rS   xr1   r4   r5   rU          rV   c                 3   rW   r9   )r   r   rD   rX   rZ   r4   r5   rU      r[   T)allrC   r;   r4   rZ   r5   r<      s
   c                 C   s,   | j D ]}tt||}|rq|  S dS NT)rC   r   r   nonzero)r0   r1   rG   rJ   r4   r4   r5   r<      s   
c                 C   s   t t| j|S r9   )r   r   r^   rK   r;   r4   r4   r5   r<      s   c                 C      t t| jd |S Nr   )r   r   r^   rC   r;   r4   r4   r5   r<         c                 C      d S r9   r4   r;   r4   r4   r5   r<      rO   c                 C   r>   r9   )is_zeror   r?   r4   r4   r5   r<      rA   c                 C   s(   t ttt| |tt| |gS r9   )r
   r	   r   r   r^   rB   r;   r4   r4   r5   r<      s   c                    s   t  fdd| jD S )Nc                 3   rW   r9   )r   r   zero)rS   rG   rZ   r4   r5   rU      r[   rV   )r   rC   r;   r4   rZ   r5   r<      s   c                 C   r>   r9   )Zis_nonpositiver   r?   r4   r4   r5   r<      rA   c                 C   rP   r9   )r:   r	   _PositivePredicate_numberr   r   rB   )r0   r1   Znotpositiver4   r4   r5   r<      rQ   c                 C   st   |   \}}|s|d}|jdkr|dkS d S |d}|jdkr6|dkr(dS |d}|jdkr8|dkS d S d S r)   r+   r/   r4   r4   r5   re      r7   re   c                 C   r>   r9   )Zis_positiver   r?   r4   r4   r5   r<     rA   c                 C   r8   r9   )r:   re   r;   r4   r4   r5   r<   	  r=   c                 C   sT   | j rt| |S d}| jD ]}tt||rqtt||r%|dA }q d S |S r]   )r:   re   rC   r   r   rE   rD   rI   r4   r4   r5   r<     s   


c                 C   s   | j rt| |S tt| |}|dur|S d}| jD ]}tt||dur9tt||du r6|d7 }q d S q|t| jk rCdS d S )NTr   Fr*   )	r:   re   r   r   rB   rC   rE   rD   rF   )r0   r1   r2   ZnonnegrG   r4   r4   r5   r<     s   


c                 C   s   | j tkr(tt| j|rdS tt| j|r&tt| jtt	  |S d S | j
r0t| |S tt| j |rDtt| j|rDdS tt| j |rctt| j|rXdS tt| j|redS d S d S )NTF)rK   r   r   r   rB   r   	imaginaryrL   r   r   r:   re   rE   rD   rM   r;   r4   r4   r5   r<   0  s$   

c                 C   sF   t t| j|rdS t t| j|r!t t| jtt  |S d S r]   )r   r   rB   r   rf   rL   r   r   r;   r4   r4   r5   r<   D  s
   c                 C   sb   t t| jd |}|dur|S t t| jd d |r dS t t| jd d |r/dS d S )Nr   Tr*   F)r   r   rB   rC   rE   rD   )r0   r1   r2   r4   r4   r5   r<   K  s   c                 C   s,   | j d }tt|t|@ |rdS d S )Nr   T)rC   r   r   integerrE   r0   r1   rY   r4   r4   r5   r<   U  s   
c                 C   rN   rH   r4   r;   r4   r4   r5   r<   [  rO   c                 C   s   t t| |S r9   )r   r   r^   r;   r4   r4   r5   r<   _  s   c                 C      t t| j|rdS d S r]   r   r   positive_definiterG   r;   r4   r4   r5   r<   c     c                 C   ri   r]   rj   r;   r4   r4   r5   r<   h  rl   c                 C   s*   | j | jkrtt| j|rdS d S d S r]   )r3   jr   r   rk   parentr;   r4   r4   r5   r<   m  s
   c                 C   r_   r`   )r   r   rE   rC   r;   r4   r4   r5   r<   s  ra   c                 C   sR   | j d }tt|t|d @ |rdS tt|t|d @ |r'dS d S )Nr   r*   TF)rC   r   r   rE   nonpositiverD   nonnegativerh   r4   r4   r5   r<   w  s   
c                 C   s4   | j d }tt|d t|d @ |rdS d S )Nr   r*   T)rC   r   r   ro   rp   rh   r4   r4   r5   r<     s   
"c                 C   r_   r`   )r   r   rB   rC   r;   r4   r4   r5   r<     ra   c                 C   rb   r9   r4   r;   r4   r4   r5   r<     rO   c                 C      t t| t| B |S r9   )r   r   rD   negative_infiniter;   r4   r4   r5   r<        c                 C   rq   r9   )r   r   rE   positive_infiniter;   r4   r4   r5   r<     rs   c                 C   s.   t t| t| B t| B t| B |S r9   )r   r   rr   rD   rE   rt   r;   r4   r4   r5   r<     s   &c                 C   $   t t| t| B t| B |S r9   )r   r   rr   rD   rd   r;   r4   r4   r5   r<        c                 C   ru   r9   )r   r   rd   rE   rt   r;   r4   r4   r5   r<     rv   N)6__doc__Zsympy.assumptionsr   r   Z
sympy.corer   r   r   r   r   Zsympy.core.logicr	   r
   r   Zsympy.core.numbersr   r   r   r   r   Zsympy.functionsr   r   r   r   r   r   r   r   Zsympy.matricesr   r   Z"sympy.matrices.expressions.matexprr   Zsympy.multipledispatchr   Zpredicates.orderr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r6   registerr<   Zregister_manyre   objectr4   r4   r4   r5   <module>   s    (4	









	


















	














