U
    Ç-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   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 ©Nr   é   r   F©Úas_real_imagÚevalfÚ_prec©ÚexprÚassumptionsÚrÚi© r4   úa/var/www/html/Darija-Ai-Train/env/lib/python3.8/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 krt‚|S r7   )Zis_negativer   ©r0   r1   Úretr4   r4   r5   r:   0   s    c                 C   sˆ   | j rt| |ƒS tt | ¡|ƒ}|dk	r,|S d}| jD ]:}tt |¡|ƒdk	r6tt |¡|ƒdk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:   7   s    


c                 C   s`   | j rt| |ƒS d }| jD ]@}|d k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:   O   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:   _   s    

c                 C   s   dS rC   r4   r9   r4   r4   r5   r:   w   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 krt‚|S r7   )Zis_nonnegativer   r;   r4   r4   r5   r:      s    c                 C   s   | j }|d krt‚|S r7   )Z
is_nonzeror   r;   r4   r4   r5   r:   —   s    c                    sL   t t | ¡ƒdk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>¨   s     ú_.<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   ¬   s     rM   c                 3   s   | ]}t t |¡ˆ ƒV  qd S r7   )r   r   r?   rN   rP   r4   r5   rL   ­   s     T)Úallr>   r9   r4   rP   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   rS   rF   r9   r4   r4   r5   r:   ¹   s    c                 C   s   t t | jd ¡|ƒS ©Nr   )r   r   rS   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 k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   rS   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   rP   r4   r5   rL   ×   s     rM   )r   r>   r9   r4   rP   r5   r:   Ô   s    c                 C   s   | j }|d k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/   r4   r4   r5   rW   ï   s    






rW   c                 C   s   | j }|d krt‚|S r7   )Zis_positiver   r;   r4   r4   r5   r:     s    c                 C   s   | j rt| |ƒS d S r7   )r8   rW   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 rR   )r8   rW   r>   r   r   r@   r?   rD   r4   r4   r5   r:     s    


c                 C   sˆ   | j rt| |ƒS tt | ¡|ƒ}|dk	r,|S d}| jD ]:}tt |¡|ƒdk	r6tt |¡|ƒdkrl|d7 }q6 q„q6|t| jƒk r„dS d S )NTr   Fr*   )	r8   rW   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   rW   r@   r?   rH   r9   r4   r4   r5   r:   0  s     

c                 C   sF   t t | j¡|ƒrdS t t | j¡|ƒrBt t | jtt  ¡|ƒS d S rR   )r   r   r=   r   rX   rG   r   r   r9   r4   r4   r5   r:   D  s    c                 C   sb   t t | jd ¡|ƒ}|dk	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:   K  s    c                 C   s,   | j d }tt |¡t |¡@ |ƒr(dS d S )Nr   T)r>   r   r   Úintegerr@   ©r0   r1   rO   r4   r4   r5   r:   U  s    
c                 C   s   dS rC   r4   r9   r4   r4   r5   r:   [  s    c                 C   s   t t | ¡|ƒS r7   )r   r   rS   r9   r4   r4   r5   r:   _  s    c                 C   s   t t | j¡|ƒrdS d S rR   ©r   r   Úpositive_definiterB   r9   r4   r4   r5   r:   c  s    c                 C   s   t t | j¡|ƒrdS d S rR   r[   r9   r4   r4   r5   r:   h  s    c                 C   s&   | j | jkr"tt | j¡|ƒr"dS d S rR   )r3   Újr   r   r\   Úparentr9   r4   r4   r5   r:   m  s    ÿc                 C   s   t t | jd ¡|ƒS rT   )r   r   r@   r>   r9   r4   r4   r5   r:   s  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?   ÚnonnegativerZ   r4   r4   r5   r:   w  s
    
c                 C   s4   | j d }tt |d ¡t |d ¡@ |ƒr0dS d S )Nr   r*   T)r>   r   r   r_   r`   rZ   r4   r4   r5   r:     s    
"c                 C   s   t t | jd ¡|ƒS rT   )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   ra   r?   r@   rb   r9   r4   r4   r5   r:   ž  s    &þc                 C   s$   t t | ¡t | ¡B t | ¡B |ƒS r7   )r   r   ra   r?   rV   r9   r4   r4   r5   r:   §  s    þc                 C   s$   t t | ¡t | ¡B t | ¡B |ƒS r7   )r   r   rV   r@   rb   r9   r4   r4   r5   r:   °  s    þ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_manyrW   Úobjectr4   r4   r4   r5   Ú<module>   sÆ   (4	









	


















	














