o
    ɁiX                     @   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   Q/sda-disk/www/egybert/egybert_env/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	