o
    jg/                     @   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   X/var/www/html/zoom/venv/lib/python3.10/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   )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   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   rD   r   r   rE   rF   r0   r1   resultrI   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   rC   r   r:   r6   rF   evenoddrE   r;   r4   r4   r5   r<   _   s    

c                 C      dS rJ   r4   r;   r4   r4   r5   r<   w      c                 C   s   t t| j|rdS trJ   )r   r   rC   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   rC   )r0   r1   notnegativer4   r4   r5   r<         c                 C   r>   r9   )is_nonnegativer   r@   r4   r4   r5   r<      rB   c                 C   r>   r9   )
is_nonzeror   r@   r4   r4   r5   r<      rB   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   rW   r4   r5   	<genexpr>   s    _.<locals>.<genexpr>)r   r   rC   r:   r-   r   r,   )r0   r1   r3   r4   rY   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   rF   rX   xr1   r4   r5   rZ          r[   c                 3   r\   r9   )r   r   rE   r]   r_   r4   r5   rZ      r`   T)allrD   r;   r4   r_   r5   r<      s
   c                 C   s,   | j D ]}tt||}|rq|  S dS NT)rD   r   r   nonzero)r0   r1   rI   rL   r4   r4   r5   r<      s   
c                 C   s   t t| j|S r9   )r   r   rc   rM   r;   r4   r4   r5   r<      s   c                 C      t t| jd |S Nr   )r   r   rc   rD   r;   r4   r4   r5   r<         c                 C      d S r9   r4   r;   r4   r4   r5   r<      rQ   c                 C   r>   r9   )is_zeror   r@   r4   r4   r5   r<      rB   c                 C   s(   t ttt| |tt| |gS r9   )r
   r	   r   r   rc   rC   r;   r4   r4   r5   r<      s   c                    s   t  fdd| jD S )Nc                 3   r\   r9   )r   r   zero)rX   rI   r_   r4   r5   rZ      r`   r[   )r   rD   r;   r4   r_   r5   r<      s   c                 C   r>   r9   )is_nonpositiver   r@   r4   r4   r5   r<      rB   c                 C   rR   r9   )r:   r	   _PositivePredicate_numberr   r   rC   )r0   r1   notpositiver4   r4   r5   r<      rT   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   rk      r7   rk   c                 C   r>   r9   )is_positiver   r@   r4   r4   r5   r<     rB   c                 C   r8   r9   )r:   rk   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 rb   )r:   rk   rD   r   r   rF   rE   rK   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:   rk   r   r   rC   rD   rF   rE   rG   )r0   r1   r2   nonnegrI   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)rM   r   r   r   rC   r   	imaginaryrN   r   r   r:   rk   rF   rE   rO   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 rb   )r   r   rC   r   ro   rN   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   rC   rD   rF   rE   )r0   r1   r2   r4   r4   r5   r<   K  s   c                 C   s,   | j d }tt|t|@ |rdS d S )Nr   T)rD   r   r   integerrF   r0   r1   r^   r4   r4   r5   r<   U  s   
c                 C   rP   rJ   r4   r;   r4   r4   r5   r<   [  rQ   c                 C   s   t t| |S r9   )r   r   rc   r;   r4   r4   r5   r<   _  s   c                 C      t t| j|rdS d S rb   r   r   positive_definiterI   r;   r4   r4   r5   r<   c     c                 C   rr   rb   rs   r;   r4   r4   r5   r<   h  ru   c                 C   s*   | j | jkrtt| j|rdS d S d S rb   )r3   jr   r   rt   parentr;   r4   r4   r5   r<   m  s
   c                 C   rd   re   )r   r   rF   rD   r;   r4   r4   r5   r<   s  rf   c                 C   sR   | j d }tt|t|d @ |rdS tt|t|d @ |r'dS d S )Nr   r*   TF)rD   r   r   rF   nonpositiverE   nonnegativerq   r4   r4   r5   r<   w  s   
c                 C   s4   | j d }tt|d t|d @ |rdS d S )Nr   r*   T)rD   r   r   rx   ry   rq   r4   r4   r5   r<     s   
"c                 C   rd   re   )r   r   rC   rD   r;   r4   r4   r5   r<     rf   c                 C   rg   r9   r4   r;   r4   r4   r5   r<     rQ   c                 C      t t| t| B |S r9   )r   r   rE   negative_infiniter;   r4   r4   r5   r<        c                 C   rz   r9   )r   r   rF   positive_infiniter;   r4   r4   r5   r<     r|   c                 C   s.   t t| t| B t| B t| B |S r9   )r   r   r{   rE   rF   r}   r;   r4   r4   r5   r<     s   &c                 C   $   t t| t| B t| B |S r9   )r   r   r{   rE   ri   r;   r4   r4   r5   r<        c                 C   r~   r9   )r   r   ri   rF   r}   r;   r4   r4   r5   r<     r   N)6__doc__sympy.assumptionsr   r   
sympy.corer   r   r   r   r   sympy.core.logicr	   r
   r   sympy.core.numbersr   r   r   r   r   sympy.functionsr   r   r   r   r   r   r   r   sympy.matricesr   r   "sympy.matrices.expressions.matexprr   sympy.multipledispatchr   predicates.orderr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r6   registerr<   register_manyrk   objectr4   r4   r4   r5   <module>   s    (4	









	


















	














