U
    K?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 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rt|d dk r|||< |S )Nr      r   d   )newmpq_mpq_abs)pq_cachekeyxyv r   A/var/www/html/venv/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 @ st	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$   Z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   Tr6   r8   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   r9   opr:   r#   r$   cdr   r   r   _cmp^   s    


zmpq._cmpc                 C   s   |  |tjS r"   )rA   operatorltr   r9   r   r   r   __lt__i       z
mpq.__lt__c                 C   s   |  |tjS r"   )rA   rB   lerD   r   r   r   __le__j   rF   z
mpq.__le__c                 C   s   |  |tjS r"   )rA   rB   gtrD   r   r   r   __gt__k   rF   z
mpq.__gt__c                 C   s   |  |tjS r"   )rA   rB   gerD   r   r   r   __ge__l   rF   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"   rM   rN   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
   r7   r   r9   r:   r#   r$   r?   r@   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"   rR   rS   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"   rR   rS   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   r7   r   r9   r:   r#   r$   r?   r@   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"   rW   rX   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"   rW   rX   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   ZeroDivisionErrorr7   )r   r9   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__r5   r;   r<   rA   rE   rH   rJ   rL   rO   rP   rQ   rT   __radd__rU   rV   rY   __rmul__rZ   r[   r]   r   r   r   r   r      s8   
r   )r   r   )r   r   )r   r+   r)   )r   r   )r      )r*   rf   )   r+   )r*   r   )   r   )rg   r   )rB   r.   Zlibmpr   r   r   r   r   objectr   r
   r   r   Zmpq_1Zmpq_0Zmpq_1_2Zmpq_3_2Zmpq_1_4Zmpq_1_16Zmpq_3_16Zmpq_5_2Zmpq_3_4Zmpq_7_4Zmpq_5_4numbersRationalregisterImportErrorr   r   r   r   <module>   s,    B	