ó
<Zc           @   s   d  Z  d d l Td d l Td   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 d S(   s+   
Test bit-level integer and mpf operations
i˙˙˙˙(   t   *c           C   s   t  d  d k s t  t  d  d k s0 t  t  d  d k sH t  t  d  d k s` t  t  d
  d	 k sx t  t  d  d k s t  d  S(   Ni    i   i   i   i   i   i   id   ie   l                l                l   ˙˙˙˙˙˙˙(   t   bitcountt   AssertionError(    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_bitcount   s    c           C   sŹ   t  d  d k s t  t  d  d k s0 t  t  d  d k sH t  t  d  d k s` t  t  d  d k sx t  t  d  d k s t  t  d
  d k s¨ t  d  S(   Ni    i   i   i   i   i   id   l                l                l   ˙˙˙˙˙˙˙(   t   trailingR   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_trailing   s    c           C   s  t  d d d t  d  d k s% t  t  d d d t  d  d k sJ t  t  d d d t  d  d k so t  t  d d d t  d  d k s t  t  d	 d d t  d  d k sš t  t  d d d t  d  d k sŢ t  t  d d d t  d  d k st  d  S(   Ni    iü˙˙˙i   i   iđ   i   iń   i˙   i˙˙˙i   i˙˙˙i˙˙˙(   i    i    i    (   i    i   i    (   i    i   i    (   i    i   i    (   i   i   i    (   i   i   i    (   i   i   i    (   t   from_man_expt
   round_downR   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_round_down   s    %%%%%%c           C   s  t  d d d t  d  d k s% t  t  d d d t  d  d k sJ t  t  d d d t  d  d k so t  t  d	 d d t  d  d k s t  t  d
 d d t  d  d k sš t  t  d d d t  d  d k sŢ t  t  d d d t  d  d k st  d  S(   Ni    iü˙˙˙i   i   iđ   i   iń   i   i˙   i˙˙˙i˙˙˙i˙˙˙(   i    i    i    (   i    i   i    (   i    i   i   (   i    i   i   (   i   i   i    (   i   i   i   (   i   i   i   (   R   t   round_upR   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_round_up"   s    %%%%%%c           C   s  t  d d d t  d  d k s% t  t  d d d t  d  d k sJ t  t  d d d t  d  d k so t  t  d d d t  d  d k s t  t  d	 d d t  d  d k sš t  t  d d d t  d  d k sŢ t  t  d d d t  d  d k st  d  S(   Ni    iü˙˙˙i   i   iđ   i   iń   i˙   i˙˙˙i   i˙˙˙i˙˙˙(   i    i    i    (   i    i   i    (   i    i   i    (   i    i   i    (   i   i   i    (   i   i   i   (   i   i   i   (   R   t   round_floorR   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_round_floor+   s    %%%%%%c           C   s  t  d d d t  d  d k s% t  t  d d d t  d  d k sJ t  t  d d d t  d  d k so t  t  d	 d d t  d  d k s t  t  d
 d d t  d  d k sš t  t  d d d t  d  d k sŢ t  t  d d d t  d  d k st  d  S(   Ni    iü˙˙˙i   i   iđ   i   iń   i   i˙   i˙˙˙i˙˙˙i˙˙˙(   i    i    i    (   i    i   i    (   i    i   i   (   i    i   i   (   i   i   i    (   i   i   i    (   i   i   i    (   R   t   round_ceilingR   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_round_ceiling4   s    %%%%%%c           C   sĺ  t  d d d t  d  d k s% t  t  d d d t  d  d k sJ t  t  d d d t  d  d k so t  t  d d d t  d  d k s t  t  d
 d d t  d  d k sš t  t  d d d t  d  d k sŢ t  t  d d d t  d  d k st  t  d d d t  d  d k s(t  t  d d d t  d  d k sMt  t  d d d t  d  d k srt  t  d d d t  d  d k st  t  d d d t  d  d k sźt  t  d d d t  d  d  k sát  d  S(!   Ni    iü˙˙˙i   i   iđ   i   i÷   iř   i   iů   ič   i   ié   i˙˙˙i	˙˙˙i˙˙˙i˙˙˙i˙˙˙i˙˙˙(   i    i    i    (   i    i   i    (   i    i   i    (   i    i   i   (   i    i   i   (   i    i   i   (   i    i   i    (   i   i   i    (   i   i   i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i    (   R   t   round_nearestR   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_round_nearest=   s    %%%%%%%%%%%%c           C   sĘ   t  d d d t  d k s! t  t  d d d t  d k sB t  t  d d d	 t  d k sc t  t  d d d	 t  d k s t  t  d d d t  d k sĽ t  t  d d d t  d k sĆ t  d  S(   NI˙˙˙˙˙˙˙ iČ˙˙˙i5   i    i   l   ~˙˙˙? iż˙˙˙i   i   i   iá˙˙˙i˙   i   i   i˙˙˙(   i    i   i    i   (   i    i   i   i   (   i    i   i   i   (   i   i   i   i   (   i    i   i   i   (   i   i   i   i   (   R   R	   R   R   R   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_rounding_bugsL   s    !!!!!c          C   sť   t  d d  }  t  d d  } t  d d  } d } t |  | d	 d
  | k sT t  t | | d	 d
  | k su t  t | |  d	 d
  | k s t  t | | d	 d
  | k sˇ t  d  S(   Ni&  i˙˙˙i8˙˙˙i˙˙˙˙i    i   i˙  iö˙˙˙i
   t   d(   i   i˙  iö˙˙˙i
   (   R   t   mpf_addR   (   t   at   bt   ct   z(    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_rounding_issue_200U   s    !!!c          C   sÚ  t  }  t d  } t d  } t |  d d t  |  k s? t  t |  d d t  |  k s` t  t |  d d t  | k s t  t |  d d t  | k s˘ t  t |  d d t  |  k sĂ t  t |  d d t  |  k sä t  t |  d d t  |  k st  t |  d d t  |  k s&t  t |  d d t  | k sGt  t |  d d t  | k sht  t	 |   }  t	 |  } t	 |  } t |  d d t  |  k s­t  t |  d d t  |  k sÎt  t |  d d t  |  k sďt  t |  d d t  |  k st  t |  d d t  | k s1t  t |  d d t  | k sRt  t |  d d t  | k sst  t |  d d t  | k st  t |  d d t  |  k sľt  t |  d d t  |  k sÖt  d  S(   Ng˙˙˙˙˙˙ď?g     đ?i    i5   i   (
   t   fonet
   from_floatt   mpf_perturbR   R   R	   R   R   R   t   mpf_neg(   R   R   R   (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_perturb_   s4    !!!!!!!!!!!!!!!!!!!c          C   sĎ  t  }  t |  d  |  d   |  d  k s3 t  t |  d  |  d   |  d  k s` t  t |  d  |  d   |  d  k s t  t |  d  |  d   |  d  k sş t  t t t |  d	   t  |  d	  k sę t  t t |  d	  t  t  |  d	  k st  t t t |  d
   t  |  d
  k sJt  t t |  d
  t  t  |  d
  k szt  t t t  t k st  t t t  t k s°t  t t t  t k sËt  d  S(   Ng      @g      @g      @g      Ŕg      ŕ?g      Ŕg      ŕżg      Ŕg0ä.˙++g0ä.˙+Ť(   R   R   R   t   mpf_subR   t   fzero(   t   ff(    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_add_exact{   s    ----0000c          C   sË  d t  _ t d  }  xŻd d g D]Ą} t d d | d  } t d d |  } t d d | d  } t d d | d  } t d d |  } t d d | d  } |  | | k sĂ t  |  | | k sŮ t  |  | | k sď t  |  | |  k st  |  | |  k st  |  | |  k s1t  | |  | k sGt  | |  | k s]t  | |  | k sst  | |  |  k st  | |  |  k st  | |  |  k sľt  |  | | k sĚt  |  | | k săt  |  | | k sút  |  | |  k st  |  | |  k s&t  |  | |  k s<t  | |  | k sRt  | |  | k sht  | |  | k s~t  | |  |  k st  | |  |  k sŹt  | |  |  k s" t  q" Wd  S(   Ni   i   i    i@   i   (   t   mpt   dpst   mpft   ldexpR   (   t   xt   pR   R   R   R   t   et   f(    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_long_exponent_shifts   sB    	c       
   C   sd  d t  _ xKt d  t d  t t d  t t d  t t d  t g D]}  t |   } t t |  d d d d d  } | | k s t  t |  |   } t |  } t t | d d d d d  } | | k sâ t  xn d d d	 d
 d g D]W } t	 |  j
 d | } t	 t |  d d d d | j
 d | } | | k sř t  qř WqO Wd t  _ d  S(   Ni@   i   i    t   preci5   t   roundingt   nR   t   uR)   R   t   rnd(   R"   R+   R$   t   epst   floatt   faddR   t   mpct   complext   to_floatt   _mpf_(   R&   t   fat   fbR   t   cat   cbR/   (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   test_float_roundingŽ   s    	L!!*N(   t   __doc__t   mpmatht   mpmath.libmpR   R   R   R
   R   R   R   R   R   R   R!   R*   R;   (    (    (    s8   lib/python2.7/site-packages/mpmath/tests/test_bitwise.pyt   <module>   s   

															
			%