o
    lÇhX  ã                   @   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 dS  eyj   Y dS w )é    Né   )Ú	int_typesÚmpf_hashÚbitcountÚfrom_man_expÚHASH_MODULUSc                 C   s†   | |f}||v r|| S | |}}|r||| }}|s|dkr(| | } || }t tƒ}| |f|_|dkrAt|d ƒdk rA|||< |S )Nr   é   r   éd   )ÚnewÚmpqÚ_mpq_Úabs)ÚpÚqÚ_cacheÚkeyÚxÚyÚv© r   úc/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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u 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   ó
   d| j  S )Nz
mpq(%s,%s)©r   ©Úsr   r   r   Ú__repr__&   ó   
zmpq.__repr__c                 C   r   )Nz(%s/%s)r   r   r   r   r   Ú__str__)   r"   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r0t|td tƒ}|stjj}nt|ƒ| t }|dk r(| }|dkr.d}|S |dkr8t|ƒS ||d @ sIt	t
|dt|ƒ ƒƒS t||fƒ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u r| j|jkS |tv r!| 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   ó   
z
mpq.__eq__c                 C   sF   t |ƒ}|tu r| j|jkS |tv r!| j\}}|dkrdS ||kS tS )Nr   Tr9   r;   r   r   r   Ú__ne__S   r?   z
mpq.__ne__c                 C   sZ   t |ƒ}|tv r| j\}}|||| ƒS |tu r+| 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   ó   |   |tj¡S r$   )rE   ÚoperatorÚlt©r    r<   r   r   r   Ú__lt__i   ó    z
mpq.__lt__c                 C   rF   r$   )rE   rG   ÚlerI   r   r   r   Ú__le__j   rK   z
mpq.__le__c                 C   rF   r$   )rE   rG   ÚgtrI   r   r   r   Ú__gt__k   rK   z
mpq.__gt__c                 C   rF   r$   )rE   rG   ÚgerI   r   r   r   Ú__ge__l   rK   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$   rR   rS   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u r| j\}}|j\}}t|| ||  || ƒS |tv r7| j\}}ttƒ}|||  |f|_|S tS r$   ©r   r   r   r   r   r
   r:   ©r    r<   r=   r%   r&   rC   rD   r   r   r   r   Ú__add__   ó   


zmpq.__add__c                 C   sr   t |ƒ}|tu r| j\}}|j\}}t|| ||  || ƒS |tv r7| j\}}ttƒ}|||  |f|_|S tS r$   rW   rX   r   r   r   Ú__sub__Ž   rZ   zmpq.__sub__c                 C   sr   t |ƒ}|tu r| j\}}|j\}}t|| ||  || ƒS |tv r7| j\}}ttƒ}|| | |f|_|S tS r$   rW   rX   r   r   r   Ú__rsub__›   rZ   zmpq.__rsub__c                 C   sZ   t |ƒ}|tu r| j\}}|j\}}t|| || ƒS |tv r+| j\}}t|| |ƒS tS r$   ©r   r   r   r   r   r:   ©r    r<   r=   r%   r&   rC   rD   r   r   r   Ú__mul__¨   ó   


zmpq.__mul__c                 C   sZ   t |ƒ}|tu r| j\}}|j\}}t|| || ƒS |tv r+| j\}}t||| ƒS tS r$   r]   r^   r   r   r   Ú__div__µ   r`   zmpq.__div__c                 C   sZ   t |ƒ}|tu r| j\}}|j\}}t|| || ƒS |tv r+| j\}}t|| |ƒS tS r$   r]   r^   r   r   r   Ú__rdiv__À   r`   zmpq.__rdiv__c                 C   s^   t |ƒ}|tv r-| j\}}|r+|dk r||| }}}ttƒ}|| || f|_|S t‚tS r(   )r   r   r   r
   r   ÚZeroDivisionErrorr:   )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__r8   r>   r@   rE   rJ   rM   rO   rQ   rT   rU   rV   rY   Ú__radd__r[   r\   r_   Ú__rmul__ra   rb   rd   r   r   r   r   r      s:    
r   )r   r   )r   r   )r   r-   r+   )r   r   )r   é   )r,   rm   )é   r-   )r,   r   )é   r   )rn   r   )rG   r0   Ú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>   s0     B	ÿ