
    "`X                     n   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Z G 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	 d dlZej2                  j5                  e       y# e$ r Y yw xY w)    N   )	int_typesmpf_hashbitcountfrom_man_expHASH_MODULUSc                     | |f}||v r||   S | |}}|r
|||z  }}|r
|dk7  r
| |z  } ||z  }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vs          1/usr/lib/python3/dist-packages/mpmath/rational.pycreate_reducedr      s    
Q$C
f}c{aqA
!a%1 Av	a	aCAdAGAv#c!f+#sH    c                       e Zd ZdZdgZddZd Zd Zd Zd Z	e	Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZeZd Zd Zd ZeZd Zd Zd Zy)r   zH
    Exact rational type, currently only intended for internal use.
    r   c                 ~    t        |      t        u r|\  }}nt        |d      r|j                  \  }}t	        ||      S )Nr   )typetuplehasattrr   r   )clsr   r   s      r   __new__zmpq.__new__   s;    7eDAqQ 77DAqa##r   c                      d| j                   z  S )Nz
mpq(%s,%s)r   ss    r   __repr__zmpq.__repr__&   s    agg%%r   c                      d| j                   z  S )Nz(%s/%s)r"   r#   s    r   __str__zmpq.__str__)   s    177""r   c                 *    | j                   \  }}||z  S Nr"   )r$   abs      r   __int__zmpq.__int__,   s    ww1Avr   c                 2    t        | j                  d         S Nr   )boolr   r#   s    r   __nonzero__zmpq.__nonzero__0   s    AGGAJr   c           	         | j                   \  }}t        j                  dk\  r[t        |t        dz
  t              }|st        j
                  j                  }nt        |      |z  t        z  }|dk  r| }|dk(  rd}|S |dk(  rt        |      S ||dz
  z  s!t        t        |dt        |      z
              S t        ||f      S )N      r4   r   r   )r   sysversion_infopowr   	hash_infoinfr   hashr   r   r   )r$   r*   r+   inversehs        r   __hash__zmpq.__hash__5   s    ww1v%!\!^\:GMM%%Vg%51u1"aBwBHAvAw1IQ(1+ >??1;r   c                     t        |      }|t        u r| j                  |j                  k(  S |t        v r| j                  \  }}|dk7  ry||k(  S t        S )Nr   Fr   r   r   r   NotImplementedr$   tttyper*   r+   s        r   __eq__z
mpq.__eq__H   sS    QC<77agg%%I77DAqAv6Mr   c                     t        |      }|t        u r| j                  |j                  k7  S |t        v r| j                  \  }}|dk7  ry||k7  S t        S )Nr   TrA   rC   s        r   __ne__z
mpq.__ne__S   sS    QC<77agg%%I77DAqAv6Mr   c                     t        |      }|t        v r| j                  \  }} ||||z        S |t        u r-| j                  \  }}|j                  \  }} |||z  ||z        S t        S r)   )r   r   r   r   NotImplementedError)r$   rD   oprE   r*   r+   cds           r   _cmpzmpq._cmp^   sk    QI77DAqa1:C<77DAq77DAqac1Q3<""r   c                 B    | j                  |t        j                        S r)   )rN   operatorltr$   rD   s     r   __lt__z
mpq.__lt__i       QVVAx{{33r   c                 B    | j                  |t        j                        S r)   )rN   rP   lerR   s     r   __le__z
mpq.__le__j   rT   r   c                 B    | j                  |t        j                        S r)   )rN   rP   gtrR   s     r   __gt__z
mpq.__gt__k   rT   r   c                 B    | j                  |t        j                        S r)   )rN   rP   gerR   s     r   __ge__z
mpq.__ge__l   rT   r   c                 d    | j                   \  }}|dk\  r| S t        t              }| |f|_         |S r.   r   r   r   r$   r*   r+   r   s       r   __abs__zmpq.__abs__n   s6    ww16HH"a%r   c                 V    | j                   \  }}t        t              }| |f|_         |S r)   r_   r`   s       r   __neg__zmpq.__neg__v   s*    ww1H"a%r   c                     | S r)    r#   s    r   __pos__zmpq.__pos__|   s    r   c                    t        |      }|t        u r6| j                  \  }}|j                  \  }}t        ||z  ||z  z   ||z        S |t        v r/| j                  \  }}t        t              }|||z  z   |f|_        |S t        S r)   r   r   r   r   r   r   rB   r$   rD   rE   r*   r+   rL   rM   r   s           r   __add__zmpq.__add__       QC<77DAq77DAq!!A#ac'1Q3//I77DAqCA!eQhAGHr   c                    t        |      }|t        u r6| j                  \  }}|j                  \  }}t        ||z  ||z  z
  ||z        S |t        v r/| j                  \  }}t        t              }|||z  z
  |f|_        |S t        S r)   rh   ri   s           r   __sub__zmpq.__sub__   rk   r   c                    t        |      }|t        u r6| j                  \  }}|j                  \  }}t        ||z  ||z  z
  ||z        S |t        v r/| j                  \  }}t        t              }||z  |z
  |f|_        |S t        S r)   rh   ri   s           r   __rsub__zmpq.__rsub__   s    QC<77DAq77DAq!!A#ac'1Q3//I77DAqCAc!eQhAGHr   c                     t        |      }|t        u r0| j                  \  }}|j                  \  }}t        ||z  ||z        S |t        v r| j                  \  }}t        ||z  |      S t
        S r)   r   r   r   r   r   rB   r$   rD   rE   r*   r+   rL   rM   s          r   __mul__zmpq.__mul__   m    QC<77DAq77DAq!!A#qs++I77DAq!!A#q))r   c                     t        |      }|t        u r0| j                  \  }}|j                  \  }}t        ||z  ||z        S |t        v r| j                  \  }}t        |||z        S t
        S r)   rq   rr   s          r   __div__zmpq.__div__   sm    QC<77DAq77DAq!!A#qs++I77DAq!!QqS))r   c                     t        |      }|t        u r0| j                  \  }}|j                  \  }}t        ||z  ||z        S |t        v r| j                  \  }}t        ||z  |      S t
        S r)   rq   rr   s          r   __rdiv__zmpq.__rdiv__   rt   r   c                     t        |      }|t        v rC| j                  \  }}|r,|dk  r||| }}}t        t              }||z  ||z  f|_        |S t
        t        S r.   )r   r   r   r   r   ZeroDivisionErrorrB   )r$   rD   rE   r*   r+   r   s         r   __pow__zmpq.__pow__   sf    QI77DAqq5QB!qAHQ$1*##r   N)r   )__name__
__module____qualname____doc__	__slots__r    r%   r'   r,   r0   __bool__r?   rF   rH   rN   rS   rW   rZ   r]   ra   rc   rf   rj   __radd__rm   ro   rs   __rmul__rv   rx   r{   re   r   r   r   r      s     	I$&#  H&			# 4333 H	 H		r   r   )r   r   )r   r   )r   r4   r2   )r   r
   )r      )r3   r   )   r4   )r3   r
   )   r
   )r   r
   )rP   r7   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ImportErrorre   r   r   <module>r      s     
 L Lnn " "~& ~B 	E
E

e*
e*
e*v;v;
e*
e*
e*
e*	c" 		s   B, ,B43B4