o
    h                     @   s  U d dl Z d dlmZmZmZmZ d dlZd dlmZ e 	e
ZejejejejejejejejejejejejiZeeej eej f ed< ejejejejfZdedeeej  fddZ			
ddejdejdededeeejejf  f
ddZdejdejdedejfddZdS )    N)DictOptionalTupleType)FloorDiv_MIRROR_REL_OPtypereturnc                 C   s   t | d S )N)r   get)r    r   N/var/www/html/ai/venv/lib/python3.10/site-packages/torch/utils/_sympy/solve.pymirror_rel_op   s   r      Texprthingtrialsfloordiv_inequalityc                 C   s  t t| }t| tjr|d u rtdt|  d S | j|}| j	|}|r3|r3td||  d S g }|r<|
|  |rH|
|| j	| j |D ]7}|d u rQqJt|tjsYJ t|D ]}	t|||d}
|
|krl n|
}q]t|tjr|j|kr||j	f  S qJd S )Nz$expression with unsupported type: %sz0thing (%s) found in both sides of expression: %s)r   )r   r   
isinstancesympyRellogdebuglhshasrhsappendrange_try_isolate_lhs)r   r   r   r   mirrorlhs_has_thingrhs_has_thingexpressionse_trialr   r   r   	try_solve)   s6   
r%   c                    sN  | }t | }t|tjr-t|jtjr t fdd|jjD nd}|| j| | j| }t|tjrut|jtj	ru|j\}}tj	 fdd|jD  }t|t
rV|jd u su|| }|| }t|t
rj|jrjt|}|d uspJ |||}|r%t|tjr%t|jtr%|jjjr%|jjr%t| tjr|jj\}	}
tt|	|j|
 t|	|jd |
 S t| tjr|jj\}	}
tt|	|j|
 t|	|jd |
 S t| tjtjfrt| tjr|jn|jd }t|jjd ||jjd  S t| tjtjfr%t| tjr|jn|jd }t|jjd ||jjd  S |S )Nc                       g | ]	}|  s|qS r   r   .0ar   r   r   
<listcomp>i       z$_try_isolate_lhs.<locals>.<listcomp>r   c                    r&   r   r'   r(   r+   r   r   r,   r   r-      )r   r   r   r   r   Addsumargsr   MulINEQUALITY_TYPESis_negativer   r   divisoris_positive
is_integerEqAndGeLtNeOrGtLe)r   r   r   r"   oplhs_not_thingr   r   other	numeratordenominatorquotientr   r+   r   r   `   s^   



	  r   )r   T)loggingtypingr   r   r   r   r   torch.utils._sympy.functionsr   	getLogger__name__r   r8   r<   r:   r?   r>   r;   r   Basicr   __annotations__r3   r   intboolr%   r   r   r   r   r   <module>   sH   
 
 	
7