
    wg                     j    d Z ddl ddl 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 Zy)z+
Test bit-level integer and mpf operations
    )*c                      t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        ddz        d	k(  sJ t        ddz  dz
        dk(  sJ y )
Nr                     d   e   )bitcount     ^/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/mpmath/tests/test_bitwise.pytest_bitcountr      s|    A;!A;!A;!A;!AsFs"""AsF1H$$$r   c                      t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        ddz        dk(  sJ t        ddz  dz
        dk(  sJ y )Nr   r   r
   r   r   r   r   )trailingr   r   r   test_trailingr      s    A;!A;!A;!A;!A;!AsFs"""AsF1H"""r   c                  p   t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        d	ddt              d d dk(  sJ t        d
ddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ y )Nr   r	   r   r   r   r      r      r         r   r   r   )from_man_exp
round_downr   r   r   test_round_downr#      s    2q*-bq1Y>>>b!Z0!4
BBBb!Z0!4
BBBb!Z0!4
BBBr1j1"15CCCr1j1"15CCCr1j1"15CCCr   c                  p   t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d d	k(  sJ t        d
ddt              d d d	k(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ y )Nr   r   r	   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r	   r    )r!   round_upr   r   r   test_round_upr(   "   s    2q(+BQ/9<<<b!X.r2j@@@b!X.r2i???b!X.r2i???r1h/3zAAAr1h/3y@@@r1h/3y@@@r   c                  p   t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        d	ddt              d d dk(  sJ t        d
ddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ y )Nr   r   r	   r   r   r   r   r   r   r   r   r   r&   r    )r!   round_floorr   r   r   test_round_floorr+   +   s    2q+.r2i???b![1"15CCCb![1"15CCCb![1"15CCCr1k22A6*DDDr1k22A6)CCCr1k22A6)CCCr   c                  p   t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d d	k(  sJ t        d
ddt              d d d	k(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ y )Nr   r   r	   r   r   r   r   r   r%   r   r   r   r   r    )r!   round_ceilingr   r   r   test_round_ceilingr.   4   s    2q-0!4	AAAb!]3BQ7:EEEb!]3BQ79DDDb!]3BQ79DDDr1m4Ra8JFFFr1m4Ra8JFFFr1m4Ra8JFFFr   c                     t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        d	ddt              d d d
k(  sJ t        dddt              d d d
k(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ t        dddt              d d dk(  sJ y )Nr   r   r	   r   r   r   r         r%         )r   r   r      r   r   i	ir&   ii)r   r   r   i)r!   round_nearestr   r   r   test_round_nearestr6   =   s   2q-0!4	AAAb!]3BQ7:EEEb!]3BQ7:EEEb!]3BQ79DDDb!]3BQ79DDDb!]3BQ79DDDb!]3BQ7:EEEr1m4Ra8JFFFr1m4Ra8JFFFr1m4Ra8IEEEr1m4Ra8IEEEr1m4Ra8IEEEr1m4Ra8JFFFr   c                     t        dddt              dk(  sJ t        dddt              dk(  sJ t        dd	d
t              dk(  sJ t        dd	d
t              dk(  sJ t        dd	dt              dk(  sJ t        dd	dt              dk(  sJ y )Nl   i5   )r   r   r   r   l   ~? i)r   r   r   r      r   r	   )r   r      r   i)r   r   r:   r   r   r   )r   r   r   r   r    )r   r   r   r   )r!   r'   r5   r*   r   r   r   test_rounding_bugsr;   L   s    )3H=MMM,c2}EUUUAq(+|;;;Q;/<???Q8,<<<aK0L@@@r   c                      t        dd      } t        dd      }t        dd      }d}t        | |dd      |k(  sJ t        ||dd      |k(  sJ t        || dd      |k(  sJ t        ||dd      |k(  sJ y )	Ni&  ii8r   )r   i  i
   r>   d)r!   mpf_add)abczs       r   test_rounding_issue_200rE   U   s    T$AT$ARAA1aS!Q&&&1aS!Q&&&1aS!Q&&&1aS!Q&&&r   c                     t         } t        d      }t        d      }t        | ddt              | k(  sJ t        | ddt              | k(  sJ t        | ddt              |k(  sJ t        | ddt
              |k(  sJ t        | ddt              | k(  sJ t        | ddt              | k(  sJ t        | ddt              | k(  sJ t        | ddt
              | k(  sJ t        | ddt              |k(  sJ t        | ddt              |k(  sJ t        |       } t        |      }t        |      }t        | ddt              | k(  sJ t        | ddt              | k(  sJ t        | ddt              | k(  sJ t        | ddt              | k(  sJ t        | ddt              |k(  sJ t        | ddt
              |k(  sJ t        | ddt              |k(  sJ t        | ddt              |k(  sJ t        | ddt              | k(  sJ t        | ddt
              | k(  sJ y )Ng?g     ?r   r8   r   )	fone
from_floatmpf_perturbr5   r'   r-   r"   r*   mpf_neg)rA   rB   rC   s      r   test_perturbrK   _   s,   A&'A%&Aq!R/1444q!R/1444q!R*a///q!R/1444q!R,111q!R-222q!R*a///q!R/1444q!R,111q!R-222
A
A
Aq!R/1444q!R/1444q!R*a///q!R-222q!R,111q!R/1444q!R*a///q!R-222q!R,111q!R/1444r   c                  N   t         } t         | d       | d             | d      k(  sJ t         | d       | d             | d      k(  sJ t         | d       | d             | d      k(  sJ t         | d       | d             | d      k(  sJ t        t        t         | d	            t               | d	      k(  sJ t        t         | d	      t              t               | d	      k(  sJ t        t        t         | d
            t               | d
      k(  sJ t        t         | d
      t              t               | d
      k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ t        t        t              t        k(  sJ y )Ng      @g      @g      @g      g      ?g      g      g      g0.++g0.+)rH   r@   mpf_subrG   fzero)ffs    r   test_add_exactrP   {   sZ   	B2c7BsG$3///2c7BtH%C0002d8RW%D1112d8RX&"T(22274F,d3r&zAAA72f:t,d3r&zAAA74G-t47CCC72g;-t47CCC44'''5$4'''5% E)))r   c                      dt         _        t        d      } dD ]b  }t        dd|dz
  z        }t        dd|z        }t        dd|dz   z        }t        dd|dz
  z         }t        dd|z         }t        dd|dz   z         }| |z   |k(  sJ | |z   |k(  sJ | |z   |k(  sJ | |z   | k(  sJ | |z   | k(  sJ | |z   | k(  sJ || z   |k(  sJ || z   |k(  sJ || z   |k(  sJ || z   | k(  sJ || z   | k(  sJ || z   | k(  sJ | |z
  | k(  sJ | |z
  | k(  sJ | |z
  | k(  sJ | |z
  | k(  sJ | |z
  | k(  sJ | |z
  | k(  sJ || z
  |k(  sJ || z
  |k(  sJ || z
  |k(  sJ || z
  |  k(  sJ || z
  |  k(  sJ || z
  |  k(  rcJ  y )Nr   r   )    @   r
   )mpdpsmpfldexp)xprA   rB   rC   r?   efs           r   test_long_exponent_shiftsr\      s#   BF 	AA !A!H!AqDM!A!H!Q1XI!QTEN!Q1XI!zz!zz!zz!zz!zz!zz!zz!zz!zz!zz!zz!zz!{{!{{!{{!zz!zz!zz!zz!zz!zz!{{!{{!{{=r   c            
      0   dt         _        t        d      t        d      t        z   t        d      t        z
  t        d       t        z   t        d       t        z
  fD ]  } t	        |       }t	        t        | ddd            }||k(  sJ t        | |       }t        |      }t        t        |ddd            }||k(  sJ dD ]D  }t        | j                  |      }t        t        | dd|      j                  |      }||k(  rDJ   dt         _        y )	NrS   r   r   r8   n)precrounding)r^   r?   ur[   rC   )rnd)
rT   r_   rV   epsfloatfaddmpccomplexto_float_mpf_)rX   fafbrD   cacbrb   s          r   test_float_roundingrn      s    BG!fc!fSj#a&*s1vgckCF73;G 1X4!S12Rxx!HQZT!A2s34Rxx, 	C!''s+B$qC8>>CHB8O8	 BGr   N)__doc__mpmathmpmath.libmpr   r   r#   r(   r+   r.   r6   r;   rE   rK   rP   r\   rn   r   r   r   <module>rr      sZ     %#DADGGA'58*#Jr   