o
    FZh/                     @   s  d Z ddlmZ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 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/m0Z0 dd Z1e&2edd Z3e&2edd Z3e&2edd Z3e&2edd Z3e&2e	dd Z3e&4eedd Z3e&2edd Z3e'2edd Z3e'2edd Z3e(2edd Z3e(2edd Z3e(2edd Z3e(2edd Z3e(2e	dd Z3e(2edd Z3e(2edd Z3e)2edd Z3e)2ed d Z3e)2ed!d Z3e*2ed"d Z3e*2ed#d Z3d$d% Z5e+2ed&d Z3e+2ed'd Z3e+2ed(d Z3e+2ed)d Z3e+2e	d*d Z3e+2ed+d Z3e+2ed,d Z3e+2ed-d Z3e+2ed.d Z3e+2ed/d Z3e+2e d0d Z3e+2ed1d Z3e+2e"d2d Z3e+2ed3d Z3e+2ed4d Z3e+2ed5d Z3e+2ed6d Z3e+2ed7d Z3e,2e6d8d Z3e02e6d9d Z3e/2e6d:d Z3e.2e6d;d Z3e-2e6d<d Z3d=S )>z?
Handlers related to order relations: positive, negative, etc.
    )Qask)AddBasicExprMulPowS)	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   s   |   \}}|tjks|tjkrd S |s$|d}|jdkr"|dk S d S |d}|jdkrB|dkr4dS |d}|jdkrD|dk S d S d S Nr      r   F)as_real_imagr	   r   evalf_precexprassumptionsri r4   O/var/www/auris/lib/python3.10/site-packages/sympy/assumptions/handlers/order.py_NegativePredicate_number   s"   





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 r8   )Zis_negativer   r0   r1   retr4   r4   r5   r;   4      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)	r9   r6   r   r   realargsnegativepositivelen)r0   r1   r2   Znonposargr4   r4   r5   r;   ;   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)r9   r6   rB   r   r   rC   rD   r0   r1   resultrF   r4   r4   r5   r;   S   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   rA   r   r9   r6   rD   evenoddrC   r:   r4   r4   r5   r;   c   s    

c                 C      dS rG   r4   r:   r4   r4   r5   r;   {      c                 C   s   t t| j|rdS trG   )r   r   rA   r   r   r:   r4   r4   r5   r;      s   c                 C   0   | j rtt| |}|rtt| |S |S d S r8   )r9   r
   r6   r   r   rA   )r0   r1   Znotnegativer4   r4   r5   r;         c                 C   r=   r8   )Zis_nonnegativer   r>   r4   r4   r5   r;      r@   c                 C   r=   r8   )Z
is_nonzeror   r>   r4   r4   r5   r;      r@   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 r8   r4   ).0r3   rQ   r4   r5   	<genexpr>   s    _.<locals>.<genexpr>)r   r   rA   r9   r-   r   r,   )r0   r1   r3   r4   rS   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 r8   )r   r   rD   rR   xr1   r4   r5   rT          rU   c                 3   rV   r8   )r   r   rC   rW   rY   r4   r5   rT      rZ   T)allrB   r:   r4   rY   r5   r;      s
   c                 C   s,   | j D ]}tt||}|rq|  S dS NT)rB   r   r   nonzero)r0   r1   rF   rI   r4   r4   r5   r;      s   
c                 C   s   t t| j|S r8   )r   r   r]   rJ   r:   r4   r4   r5   r;      s   c                 C      t t| jd |S Nr   )r   r   r]   rB   r:   r4   r4   r5   r;         c                 C      d S r8   r4   r:   r4   r4   r5   r;      rN   c                 C   r=   r8   )is_zeror   r>   r4   r4   r5   r;      r@   c                 C   s(   t ttt| |tt| |gS r8   )r   r
   r   r   r]   rA   r:   r4   r4   r5   r;      s   c                    s   t  fdd| jD S )Nc                 3   rV   r8   )r   r   zero)rR   rF   rY   r4   r5   rT      rZ   rU   )r   rB   r:   r4   rY   r5   r;      s   c                 C   r=   r8   )Zis_nonpositiver   r>   r4   r4   r5   r;      r@   c                 C   rO   r8   )r9   r
   _PositivePredicate_numberr   r   rA   )r0   r1   Znotpositiver4   r4   r5   r;      rP   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-   r.   r/   r4   r4   r5   rd      s   





rd   c                 C   r=   r8   )Zis_positiver   r>   r4   r4   r5   r;     r@   c                 C   r7   r8   )r9   rd   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\   )r9   rd   rB   r   r   rD   rC   rH   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+   )	r9   rd   r   r   rA   rB   rD   rC   rE   )r0   r1   r2   ZnonnegrF   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)rJ   r   r   r   rA   r   	imaginaryrK   r   r   r9   rd   rD   rC   rL   r:   r4   r4   r5   r;   4  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   rA   r   re   rK   r   r   r:   r4   r4   r5   r;   H  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   rA   rB   rD   rC   )r0   r1   r2   r4   r4   r5   r;   O  s   c                 C   s,   | j d }tt|t|@ |rdS d S )Nr   T)rB   r   r   integerrD   r0   r1   rX   r4   r4   r5   r;   Y  s   
c                 C   rM   rG   r4   r:   r4   r4   r5   r;   _  rN   c                 C   s   t t| |S r8   )r   r   r]   r:   r4   r4   r5   r;   c  s   c                 C      t t| j|rdS d S r\   r   r   positive_definiterF   r:   r4   r4   r5   r;   g     c                 C   rh   r\   ri   r:   r4   r4   r5   r;   l  rk   c                 C   s*   | j | jkrtt| j|rdS d S d S r\   )r3   jr   r   rj   parentr:   r4   r4   r5   r;   q  s
   c                 C   r^   r_   )r   r   rD   rB   r:   r4   r4   r5   r;   w  r`   c                 C   sR   | j d }tt|t|d @ |rdS tt|t|d @ |r'dS d S )Nr   r+   TF)rB   r   r   rD   nonpositiverC   nonnegativerg   r4   r4   r5   r;   {  s   
c                 C   s4   | j d }tt|d t|d @ |rdS d S )Nr   r+   T)rB   r   r   rn   ro   rg   r4   r4   r5   r;     s   
"c                 C   r^   r_   )r   r   rA   rB   r:   r4   r4   r5   r;     r`   c                 C   ra   r8   r4   r:   r4   r4   r5   r;     rN   c                 C      t t| t| B |S r8   )r   r   rC   negative_infiniter:   r4   r4   r5   r;        c                 C   rp   r8   )r   r   rD   positive_infiniter:   r4   r4   r5   r;     rr   c                 C   s.   t t| t| B t| B t| B |S r8   )r   r   rq   rC   rD   rs   r:   r4   r4   r5   r;     s   &c                 C   $   t t| t| B t| B |S r8   )r   r   rq   rC   rc   r:   r4   r4   r5   r;        c                 C   rt   r8   )r   r   rc   rD   rs   r:   r4   r4   r5   r;     ru   N)7__doc__Zsympy.assumptionsr   r   Z
sympy.corer   r   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_manyrd   objectr4   r4   r4   r5   <module>   s     (4	









	


















	














