o
    3Ih/                     @   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   `/home/air/sanwanet/gpt-api/venv/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   )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   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   rC   r   r   rD   rE   r0   r1   resultrH   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   rB   r   r9   r6   rE   evenoddrD   r:   r4   r4   r5   r;   c   s    

c                 C      dS rI   r4   r:   r4   r4   r5   r;   {      c                 C   s   t t| j|rdS trI   )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 r8   )r9   r
   r6   r   r   rB   )r0   r1   notnegativer4   r4   r5   r;         c                 C   r=   r8   )is_nonnegativer   r?   r4   r4   r5   r;      rA   c                 C   r=   r8   )
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 r8   r4   ).0r3   rV   r4   r5   	<genexpr>   s    _.<locals>.<genexpr>)r   r   rB   r9   r-   r   r,   )r0   r1   r3   r4   rX   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   rE   rW   xr1   r4   r5   rY          rZ   c                 3   r[   r8   )r   r   rD   r\   r^   r4   r5   rY      r_   T)allrC   r:   r4   r^   r5   r;      s
   c                 C   s,   | j D ]}tt||}|rq|  S dS NT)rC   r   r   nonzero)r0   r1   rH   rK   r4   r4   r5   r;      s   
c                 C   s   t t| j|S r8   )r   r   rb   rL   r:   r4   r4   r5   r;      s   c                 C      t t| jd |S Nr   )r   r   rb   rC   r:   r4   r4   r5   r;         c                 C      d S r8   r4   r:   r4   r4   r5   r;      rP   c                 C   r=   r8   )is_zeror   r?   r4   r4   r5   r;      rA   c                 C   s(   t ttt| |tt| |gS r8   )r   r
   r   r   rb   rB   r:   r4   r4   r5   r;      s   c                    s   t  fdd| jD S )Nc                 3   r[   r8   )r   r   zero)rW   rH   r^   r4   r5   rY      r_   rZ   )r   rC   r:   r4   r^   r5   r;      s   c                 C   r=   r8   )is_nonpositiver   r?   r4   r4   r5   r;      rA   c                 C   rQ   r8   )r9   r
   _PositivePredicate_numberr   r   rB   )r0   r1   notpositiver4   r4   r5   r;      rS   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   rj      s   





rj   c                 C   r=   r8   )is_positiver   r?   r4   r4   r5   r;     rA   c                 C   r7   r8   )r9   rj   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 ra   )r9   rj   rC   r   r   rE   rD   rJ   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   rj   r   r   rB   rC   rE   rD   rF   )r0   r1   r2   nonnegrH   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)rL   r   r   r   rB   r   	imaginaryrM   r   r   r9   rj   rE   rD   rN   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 ra   )r   r   rB   r   rn   rM   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   rB   rC   rE   rD   )r0   r1   r2   r4   r4   r5   r;   O  s   c                 C   s,   | j d }tt|t|@ |rdS d S )Nr   T)rC   r   r   integerrE   r0   r1   r]   r4   r4   r5   r;   Y  s   
c                 C   rO   rI   r4   r:   r4   r4   r5   r;   _  rP   c                 C   s   t t| |S r8   )r   r   rb   r:   r4   r4   r5   r;   c  s   c                 C      t t| j|rdS d S ra   r   r   positive_definiterH   r:   r4   r4   r5   r;   g     c                 C   rq   ra   rr   r:   r4   r4   r5   r;   l  rt   c                 C   s*   | j | jkrtt| j|rdS d S d S ra   )r3   jr   r   rs   parentr:   r4   r4   r5   r;   q  s
   c                 C   rc   rd   )r   r   rE   rC   r:   r4   r4   r5   r;   w  re   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   nonnegativerp   r4   r4   r5   r;   {  s   
c                 C   s4   | j d }tt|d t|d @ |rdS d S )Nr   r+   T)rC   r   r   rw   rx   rp   r4   r4   r5   r;     s   
"c                 C   rc   rd   )r   r   rB   rC   r:   r4   r4   r5   r;     re   c                 C   rf   r8   r4   r:   r4   r4   r5   r;     rP   c                 C      t t| t| B |S r8   )r   r   rD   negative_infiniter:   r4   r4   r5   r;        c                 C   ry   r8   )r   r   rE   positive_infiniter:   r4   r4   r5   r;     r{   c                 C   s.   t t| t| B t| B t| B |S r8   )r   r   rz   rD   rE   r|   r:   r4   r4   r5   r;     s   &c                 C   $   t t| t| B t| B |S r8   )r   r   rz   rD   rh   r:   r4   r4   r5   r;        c                 C   r}   r8   )r   r   rh   rE   r|   r:   r4   r4   r5   r;     r~   N)7__doc__sympy.assumptionsr   r   
sympy.corer   r   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_manyrj   objectr4   r4   r4   r5   <module>   s     (4	









	


















	














