a
    kº”hø/  ã                   @   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„ ƒZ3e0 2e6¡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 |sF| d¡}|jdkr‚|dk S n<| d¡}|jdkr‚|dkrfdS | d¡}|jdkr‚|dk S d S ©Nr   é   r   F)Úas_real_imagr	   r   ÚevalfÚ_prec©ÚexprÚassumptionsÚrÚi© r4   úN/var/www/auris/lib/python3.9/site-packages/sympy/assumptions/handlers/order.pyÚ_NegativePredicate_number   s    






r6   c                 C   s   | j rt| |ƒS d S ©N)Ú	is_numberr6   ©r0   r1   r4   r4   r5   Ú_/   s    r:   c                 C   s   | j }|d u rt‚|S r7   )Zis_negativer   ©r0   r1   Úretr4   r4   r5   r:   4   s    c                 C   sˆ   | j rt| |ƒS tt | ¡|ƒ}|dur,|S d}| jD ]:}tt |¡|ƒdur6tt |¡|ƒdu rl|d7 }q6 q„q6|t| jƒk r„dS dS )zN
    Positive + Positive -> Positive,
    Negative + Negative -> Negative
    Tr   Fr+   N)	r8   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 |¡|ƒrB| }qtt |¡|ƒrTq d S q|S ©NF)r8   r6   r>   r   r   r?   r@   ©r0   r1   ÚresultrB   r4   r4   r5   r:   S   s    

c                 C   s¬   | j tkr$tt | j¡|ƒr dS dS | jr4t| |ƒS tt | j ¡|ƒr¨tt | j ¡|ƒrntt | j¡|ƒrndS tt 	| j¡|ƒr„dS tt 
| j¡|ƒr¨tt | j ¡|ƒS dS )zq
    Real ** Even -> NonNegative
    Real ** Odd  -> same_as_base
    NonNegative ** Positive -> NonNegative
    FN)Úbaser   r   r   r=   r   r8   r6   r@   ÚevenÚoddr?   r9   r4   r4   r5   r:   c   s    

c                 C   s   dS rC   r4   r9   r4   r4   r5   r:   {   s    c                 C   s   t t | j¡|ƒrdS t‚d S rC   )r   r   r=   r   r   r9   r4   r4   r5   r:      s    c                 C   s0   | j r,tt| |ƒƒ}|r(tt | ¡|ƒS |S d S r7   )r8   r
   r6   r   r   r=   )r0   r1   Znotnegativer4   r4   r5   r:   ˆ   s
    c                 C   s   | j }|d u rt‚|S r7   )Zis_nonnegativer   r;   r4   r4   r5   r:   ‘   s    c                 C   s   | j }|d u rt‚|S r7   )Z
is_nonzeror   r;   r4   r4   r5   r:   ›   s    c                    sL   t t | ¡ƒdu rdS | jrH|  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 r7   r4   )Ú.0r3   ©rI   r4   r5   Ú	<genexpr>¬   ó    ú_.<locals>.<genexpr>)r   r   r=   r8   r-   r   r,   )r0   r1   r3   r4   rK   r5   r:   ¢   s    
c                    s8   t ‡ fdd„| jD ƒƒs0t ‡ fdd„| jD ƒƒr4dS d S )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r7   )r   r   r@   ©rJ   Úx©r1   r4   r5   rL   °   rM   rN   c                 3   s   | ]}t t |¡ˆ ƒV  qd S r7   )r   r   r?   rO   rQ   r4   r5   rL   ±   rM   T)Úallr>   r9   r4   rQ   r5   r:   ®   s    ÿc                 C   s,   | j D ] }tt |¡|ƒ}|r q|  S dS ©NT)r>   r   r   Únonzero)r0   r1   rB   rE   r4   r4   r5   r:   ´   s    
c                 C   s   t t | j¡|ƒS r7   )r   r   rT   rF   r9   r4   r4   r5   r:   ½   s    c                 C   s   t t | jd ¡|ƒS ©Nr   )r   r   rT   r>   r9   r4   r4   r5   r:   Á   s    c                 C   s   d S r7   r4   r9   r4   r4   r5   r:   Å   s    c                 C   s   | j }|d u rt‚|S r7   )Úis_zeror   r;   r4   r4   r5   r:   Ì   s    c                 C   s(   t ttt | ¡|ƒƒtt | ¡|ƒgƒS r7   )r   r
   r   r   rT   r=   r9   r4   r4   r5   r:   Ó   s    ÿc                    s   t ‡ fdd„| jD ƒƒS )Nc                 3   s   | ]}t t |¡ˆ ƒV  qd S r7   )r   r   Úzero)rJ   rB   rQ   r4   r5   rL   Û   rM   rN   )r   r>   r9   r4   rQ   r5   r:   Ø   s    c                 C   s   | j }|d u rt‚|S r7   )Zis_nonpositiver   r;   r4   r4   r5   r:   à   s    c                 C   s0   | j r,tt| |ƒƒ}|r(tt | ¡|ƒS |S d S r7   )r8   r
   Ú_PositivePredicate_numberr   r   r=   )r0   r1   Znotpositiver4   r4   r5   r:   ç   s
    c                 C   sn   |   ¡ \}}|s.| d¡}|jdkrj|dkS n<| d¡}|jdkrj|dkrNdS | d¡}|jdkrj|dkS d S r*   )r,   r-   r.   r/   r4   r4   r5   rX   ó   s    






rX   c                 C   s   | j }|d u rt‚|S r7   )Zis_positiver   r;   r4   r4   r5   r:     s    c                 C   s   | j rt| |ƒS d S r7   )r8   rX   r9   r4   r4   r5   r:     s    c                 C   sX   | j rt| |ƒS d}| jD ]8}tt |¡|ƒr2qqtt |¡|ƒrL|dA }q d S q|S rS   )r8   rX   r>   r   r   r@   r?   rD   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r6tt |¡|ƒdu rl|d7 }q6 q„q6|t| jƒk r„dS d S )NTr   Fr+   )	r8   rX   r   r   r=   r>   r@   r?   rA   )r0   r1   r2   ZnonnegrB   r4   r4   r5   r:      s    


c                 C   sÊ   | j tkrPtt | j¡|ƒr dS tt | j¡|ƒrLtt | jtt	  ¡|ƒS d S | j
r`t| |ƒS tt | j ¡|ƒrˆtt | j¡|ƒrˆdS tt | j ¡|ƒrÆtt | j¡|ƒr°dS tt | j¡|ƒrÆdS d S )NTF)rF   r   r   r   r=   r   Ú	imaginaryrG   r   r   r8   rX   r@   r?   rH   r9   r4   r4   r5   r:   4  s     

c                 C   sF   t t | j¡|ƒrdS t t | j¡|ƒrBt t | jtt  ¡|ƒS d S rS   )r   r   r=   r   rY   rG   r   r   r9   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   r=   r>   r@   r?   )r0   r1   r2   r4   r4   r5   r:   O  s    c                 C   s,   | j d }tt |¡t |¡@ |ƒr(dS d S )Nr   T)r>   r   r   Úintegerr@   ©r0   r1   rP   r4   r4   r5   r:   Y  s    
c                 C   s   dS rC   r4   r9   r4   r4   r5   r:   _  s    c                 C   s   t t | ¡|ƒS r7   )r   r   rT   r9   r4   r4   r5   r:   c  s    c                 C   s   t t | j¡|ƒrdS d S rS   ©r   r   Úpositive_definiterB   r9   r4   r4   r5   r:   g  s    c                 C   s   t t | j¡|ƒrdS d S rS   r\   r9   r4   r4   r5   r:   l  s    c                 C   s&   | j | jkr"tt | j¡|ƒr"dS d S rS   )r3   Újr   r   r]   Úparentr9   r4   r4   r5   r:   q  s    ÿc                 C   s   t t | jd ¡|ƒS rU   )r   r   r@   r>   r9   r4   r4   r5   r:   w  s    c                 C   sR   | j d }tt |¡t |d ¡@ |ƒr,dS tt |¡t |d ¡@ |ƒrNdS d S )Nr   r+   TF)r>   r   r   r@   Únonpositiver?   Únonnegativer[   r4   r4   r5   r:   {  s
    
c                 C   s4   | j d }tt |d ¡t |d ¡@ |ƒr0dS d S )Nr   r+   T)r>   r   r   r`   ra   r[   r4   r4   r5   r:   ƒ  s    
"c                 C   s   t t | jd ¡|ƒS rU   )r   r   r=   r>   r9   r4   r4   r5   r:   ‰  s    c                 C   s   d S r7   r4   r9   r4   r4   r5   r:     s    c                 C   s   t t | ¡t | ¡B |ƒS r7   )r   r   r?   Únegative_infiniter9   r4   r4   r5   r:   ”  s    c                 C   s   t t | ¡t | ¡B |ƒS r7   )r   r   r@   Úpositive_infiniter9   r4   r4   r5   r:   ›  s    c                 C   s.   t t | ¡t | ¡B t | ¡B t | ¡B |ƒS r7   )r   r   rb   r?   r@   rc   r9   r4   r4   r5   r:   ¢  s    &þc                 C   s$   t t | ¡t | ¡B t | ¡B |ƒS r7   )r   r   rb   r?   rW   r9   r4   r4   r5   r:   «  s    þc                 C   s$   t t | ¡t | ¡B t | ¡B |ƒS r7   )r   r   rW   r@   rc   r9   r4   r4   r5   r:   ´  s    þ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_manyrX   Úobjectr4   r4   r4   r5   Ú<module>   sÆ    (4	









	


















	














