U
    ,Ç-eä  ã                   @   s   d dl Z G dd„ dƒZdS )é    Nc                   @   st  e Zd Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZed	d
„ ƒZ	edd„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd „ ƒZed!d"„ ƒZed#d$„ ƒZed%d&„ ƒZed'd(„ ƒZed)d*„ ƒZed+d,„ ƒZed-d.„ ƒZed/d0„ ƒZed1d2„ ƒZed3d4„ ƒZed5d6„ ƒZed7d8„ ƒZ ed9d:„ ƒZ!ed;d<„ ƒZ"d=S )>ÚReferenceAnalysisc                 C   s
   t  | ¡S ©N)ÚsympyZsympify)ÚcZdtype© r   ú]/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/torch/utils/_sympy/reference.pyÚconstant   s    zReferenceAnalysis.constantc                 C   s    t | tƒst |tƒrt‚| |B S r   ©Ú
isinstanceÚboolÚAssertionError©ÚaÚbr   r   r   Úor_   s    zReferenceAnalysis.or_c                 C   s    t | tƒst |tƒrt‚| |@ S r   r	   r   r   r   r   Úand_   s    zReferenceAnalysis.and_c                 C   s,   t | tjƒst |tjƒr$t | |¡S | |kS r   )r
   r   ÚExprÚEqr   r   r   r   Úeq   s    zReferenceAnalysis.eqc                 C   s   |   |  ||¡¡S r   )Únot_r   )Úclsr   r   r   r   r   Úne   s    zReferenceAnalysis.nec                 C   s   | |k S r   r   r   r   r   r   Últ    s    zReferenceAnalysis.ltc                 C   s   | |kS r   r   r   r   r   r   Úgt$   s    zReferenceAnalysis.gtc                 C   s   | |kS r   r   r   r   r   r   Úle(   s    zReferenceAnalysis.lec                 C   s   | |kS r   r   r   r   r   r   Úge,   s    zReferenceAnalysis.gec                 C   s   t | tƒrt‚|  S r   r	   )r   r   r   r   r   0   s    zReferenceAnalysis.not_c                 C   s   d|  S )Né   r   ©Úxr   r   r   Ú
reciprocal5   s    zReferenceAnalysis.reciprocalc                 C   s   | |  S r   r   r   r   r   r   Úsquare9   s    zReferenceAnalysis.squarec                 C   s   | | S r   r   )r   Úyr   r   r   Úmod=   s    zReferenceAnalysis.modc                 C   s   t | ƒS r   )Úabsr   r   r   r   r#   A   s    zReferenceAnalysis.absc                 C   s   |  S r   r   r   r   r   r   ÚnegE   s    zReferenceAnalysis.negc                 C   s   | | S r   r   r   r   r   r   ÚtruedivI   s    zReferenceAnalysis.truedivc                 C   s   t  | |¡S r   )r   r%   r   r   r   r   ÚdivM   s    zReferenceAnalysis.divc                 C   s$   |dkr| dkrt jS t jS | | S )Nr   )r   ÚnanZzoor   r   r   r   ÚfloordivQ   s    zReferenceAnalysis.floordivc                 C   s   | | }|j rt |¡}|S r   )Ú	is_finiter   ÚInteger)r   r   Úresultr   r   r   ÚtruncdivW   s    
zReferenceAnalysis.truncdivc                 C   s   | | S r   r   r   r   r   r   Úadd_   s    zReferenceAnalysis.addc                 C   s   | | S r   r   r   r   r   r   Úmulc   s    zReferenceAnalysis.mulc                 C   s   | | S r   r   r   r   r   r   Úsubg   s    zReferenceAnalysis.subc                 C   s
   t  | ¡S r   )r   Úexpr   r   r   r   r0   k   s    zReferenceAnalysis.expc                 C   s
   t  | ¡S r   )r   Úlogr   r   r   r   r1   o   s    zReferenceAnalysis.logc                 C   s
   t  | ¡S r   )r   Úsqrtr   r   r   r   r2   s   s    zReferenceAnalysis.sqrtc                 C   s   | | S r   r   r   r   r   r   Úpoww   s    zReferenceAnalysis.powc                 C   sN   | j s| jr|j s|js tj}n| js*t‚|js4t‚tj}t || ƒ||ƒ¡S r   )Úis_Floatr)   r   ÚFloatÚ
is_Integerr   r*   ZMin©r   r   Zresult_typer   r   r   Úminimum{   s    

zReferenceAnalysis.minimumc                 C   sN   | j s| jr|j s|js tj}n| js*t‚|js4t‚tj}t || ƒ||ƒ¡S r   )r4   r)   r   r5   r6   r   r*   ZMaxr7   r   r   r   Úmaximum‡   s    

zReferenceAnalysis.maximumc                 C   s
   t  | ¡S r   )r   Úfloorr   r   r   r   r:   “   s    zReferenceAnalysis.floorc                 C   s
   t  | ¡S r   )r   Zceilingr   r   r   r   Úceil—   s    zReferenceAnalysis.ceilN)#Ú__name__Ú
__module__Ú__qualname__Ústaticmethodr   r   r   r   Úclassmethodr   r   r   r   r   r   r   r    r"   r#   r$   r%   r&   r(   r,   r-   r.   r/   r0   r1   r2   r3   r8   r9   r:   r;   r   r   r   r   r      sx   




























r   )r   r   r   r   r   r   Ú<module>   s   