U
    :qLeX  ã                   @   sØ   d dl Z d dlZddlmZmZmZmZmZ ej	Z
i fdd„ZG dd„ deƒZedƒZed	ƒZed
ƒZedƒZedƒZedƒZedƒZedƒZedƒZedƒZedƒZzd dlZej e¡ W n ek
rÒ   Y nX dS )é    Né   )Ú	int_typesÚmpf_hashÚbitcountÚfrom_man_expÚHASH_MODULUSc                 C   s„   | |f}||kr|| S | | }}|r6|||  }}q"|dkrN| | } || }t tƒ}| |f|_|dkr€t|d ƒdk r€|||< |S )Nr   é   r   éd   )ÚnewÚmpqÚ_mpq_Úabs)ÚpÚqÚ_cacheÚkeyÚxÚyÚv© r   úf/home/p21-0144/sympy/latex2sympy2solve-back-end/sympyEq/lib/python3.8/site-packages/mpmath/rational.pyÚcreate_reduced   s    

r   c                   @   sÜ   e Zd ZdZdgZd3dd„Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e	Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ ZeZd&d'„ Zd(d)„ Zd*d+„ ZeZd,d-„ Zd.d/„ Zd0d1„ Zd2S )4r   zH
    Exact rational type, currently only intended for internal use.
    r   r   c                 C   s4   t |ƒtkr|\}}nt|dƒr*|j\}}t||ƒS )Nr   )ÚtypeÚtupleÚhasattrr   r   )Úclsr   r   r   r   r   Ú__new__   s
    


zmpq.__new__c                 C   s
   d| j  S )Nz
mpq(%s,%s)©r   ©Úsr   r   r   Ú__repr__&   s    zmpq.__repr__c                 C   s
   d| j  S )Nz(%s/%s)r   r   r   r   r   Ú__str__)   s    zmpq.__str__c                 C   s   | j \}}|| S ©Nr   )r   ÚaÚbr   r   r   Ú__int__,   s    
zmpq.__int__c                 C   s   t | jd ƒS ©Nr   )Úboolr   r   r   r   r   Ú__nonzero__0   s    zmpq.__nonzero__c                 C   s¢   | j \}}tjdkr`t|td tƒ}|s2tjj}nt|ƒ| t }|dk rP| }|dkr\d}|S |dkrpt|ƒS ||d @ s’t	t
|dt|ƒ ƒƒS t||fƒS d S )N©é   é   r+   r   éÿÿÿÿéþÿÿÿr   )r   ÚsysÚversion_infoÚpowr   Ú	hash_infoÚinfr   Úhashr   r   r   )r   r#   r$   ÚinverseÚhr   r   r   Ú__hash__5   s     


  zmpq.__hash__c                 C   sF   t |ƒ}|tkr| j|jkS |tkrB| j\}}|dkr:dS ||kS tS )Nr   F©r   r   r   r   ÚNotImplemented©r   ÚtÚttyper#   r$   r   r   r   Ú__eq__H   s    
z
mpq.__eq__c                 C   sF   t |ƒ}|tkr| j|jkS |tkrB| j\}}|dkr:dS ||kS tS )Nr   Tr7   r9   r   r   r   Ú__ne__S   s    
z
mpq.__ne__c                 C   sZ   t |ƒ}|tkr(| j\}}|||| ƒS |tkrV| j\}}|j\}}||| || ƒS tS r"   )r   r   r   r   ÚNotImplementedError)r   r:   Úopr;   r#   r$   ÚcÚdr   r   r   Ú_cmp^   s    


zmpq._cmpc                 C   s   |   |tj¡S r"   )rB   ÚoperatorÚlt©r   r:   r   r   r   Ú__lt__i   ó    z
mpq.__lt__c                 C   s   |   |tj¡S r"   )rB   rC   ÚlerE   r   r   r   Ú__le__j   rG   z
mpq.__le__c                 C   s   |   |tj¡S r"   )rB   rC   ÚgtrE   r   r   r   Ú__gt__k   rG   z
mpq.__gt__c                 C   s   |   |tj¡S r"   )rB   rC   ÚgerE   r   r   r   Ú__ge__l   rG   z
mpq.__ge__c                 C   s.   | j \}}|dkr| S ttƒ}| |f|_ |S r&   ©r   r
   r   ©r   r#   r$   r   r   r   r   Ú__abs__n   s    
zmpq.__abs__c                 C   s"   | j \}}ttƒ}| |f|_ |S r"   rN   rO   r   r   r   Ú__neg__v   s    
zmpq.__neg__c                 C   s   | S r"   r   r   r   r   r   Ú__pos__|   s    zmpq.__pos__c                 C   sr   t |ƒ}|tkr>| j\}}|j\}}t|| ||  || ƒS |tkrn| j\}}ttƒ}|||  |f|_|S tS r"   ©r   r   r   r   r   r
   r8   ©r   r:   r;   r#   r$   r@   rA   r   r   r   r   Ú__add__   s    


zmpq.__add__c                 C   sr   t |ƒ}|tkr>| j\}}|j\}}t|| ||  || ƒS |tkrn| j\}}ttƒ}|||  |f|_|S tS r"   rS   rT   r   r   r   Ú__sub__Ž   s    


zmpq.__sub__c                 C   sr   t |ƒ}|tkr>| j\}}|j\}}t|| ||  || ƒS |tkrn| j\}}ttƒ}|| | |f|_|S tS r"   rS   rT   r   r   r   Ú__rsub__›   s    


zmpq.__rsub__c                 C   sZ   t |ƒ}|tkr6| j\}}|j\}}t|| || ƒS |tkrV| j\}}t|| |ƒS tS r"   ©r   r   r   r   r   r8   ©r   r:   r;   r#   r$   r@   rA   r   r   r   Ú__mul__¨   s    


zmpq.__mul__c                 C   sZ   t |ƒ}|tkr6| j\}}|j\}}t|| || ƒS |tkrV| j\}}t||| ƒS tS r"   rX   rY   r   r   r   Ú__div__µ   s    


zmpq.__div__c                 C   sZ   t |ƒ}|tkr6| j\}}|j\}}t|| || ƒS |tkrV| j\}}t|| |ƒS tS r"   rX   rY   r   r   r   Ú__rdiv__À   s    


zmpq.__rdiv__c                 C   s^   t |ƒ}|tkrZ| j\}}|rV|dk r8|||   }}}ttƒ}|| || f|_|S t‚tS r&   )r   r   r   r
   r   ÚZeroDivisionErrorr8   )r   r:   r;   r#   r$   r   r   r   r   Ú__pow__Ë   s    
zmpq.__pow__N)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r    r!   r%   r(   Ú__bool__r6   r<   r=   rB   rF   rI   rK   rM   rP   rQ   rR   rU   Ú__radd__rV   rW   rZ   Ú__rmul__r[   r\   r^   r   r   r   r   r      s8   
r   )r   r   )r   r   )r   r+   r)   )r   r   )r   é   )r*   rg   )é   r+   )r*   r   )é   r   )rh   r   )rC   r.   Úlibmpr   r   r   r   r   Úobjectr   r
   r   r   Úmpq_1Úmpq_0Úmpq_1_2Úmpq_3_2Úmpq_1_4Úmpq_1_16Úmpq_3_16Úmpq_5_2Úmpq_3_4Úmpq_7_4Úmpq_5_4ÚnumbersÚRationalÚregisterÚImportErrorr   r   r   r   Ú<module>   s,    B	