B
    <Z  ă               @   s   d Z ddlT ddlT 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dd ZdS )z+
Test bit-level integer and mpf operations
é    )Ú*c               C   sp   t ddkstt ddks tt ddks0tt ddks@tt dd d	ksTtt dd d dksltd S )
Nr   é   é   é   é   é   é   éd   ée   )ZbitcountÚAssertionErrorŠ r   r   ú8lib/python3.7/site-packages/mpmath/tests/test_bitwise.pyÚtest_bitcount   s    r   c               C   s   t ddkstt ddks tt ddks0tt ddks@tt ddksPtt dd dksdtt dd d dks|td S )Nr   r   r   r   r   r   r	   )Ztrailingr   r   r   r   r   Útest_trailing   s    r   c               C   sÖ   t dddtd d dkstt dddtd d dks<tt dddtd d dksZtt d	ddtd d dksxtt d
ddtd d dkstt dddtd d dks´tt dddtd d dksŇtd S )Nr   éü˙˙˙r   r   )r   r   r   éđ   )r   é   r   éń   é˙   i˙˙˙)r   r   r   i˙˙˙i˙˙˙)Úfrom_man_expÚ
round_downr   r   r   r   r   Útest_round_down   s    r   c               C   sÖ   t dddtd d dkstt dddtd d dks<tt dddtd d d	ksZtt d
ddtd d d	ksxtt dddtd d dkstt dddtd d dks´tt dddtd d dksŇtd S )Nr   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   i˙˙˙)r   r   r   i˙˙˙)r   r   r   i˙˙˙)r   Úround_upr   r   r   r   r   Útest_round_up"   s    r   c               C   sÖ   t dddtd d dkstt dddtd d dks<tt dddtd d dksZtt d	ddtd d dksxtt d
ddtd d dkstt dddtd d dks´tt dddtd d dksŇtd S )Nr   r   r   r   )r   r   r   r   )r   r   r   r   r   i˙˙˙)r   r   r   i˙˙˙)r   r   r   i˙˙˙)r   Úround_floorr   r   r   r   r   Útest_round_floor+   s    r   c               C   sÖ   t dddtd d dkstt dddtd d dks<tt dddtd d d	ksZtt d
ddtd d d	ksxtt dddtd d dkstt dddtd d dks´tt dddtd d dksŇtd S )Nr   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   i˙˙˙)r   r   r   i˙˙˙i˙˙˙)r   Úround_ceilingr   r   r   r   r   Útest_round_ceiling4   s    r   c               C   s  t dddtd d dkstt dddtd d dks<tt dddtd d dksZtt d	ddtd d d
ksxtt dddtd d d
kstt dddtd d dks´tt dddtd d dksŇtt dddtd d dksđtt dddtd d dkstt dddtd d dks0tt dddtd d dksPtt dddtd d dksptt dddtd d dkstd S )Nr   r   r   r   )r   r   r   r   )r   r   r   é÷   éř   )r   r   r   éů   éč   )r   r   r   éé   i˙˙˙)r   r   r   i	˙˙˙i˙˙˙)r   r   r   i˙˙˙i˙˙˙)r   r   r   i˙˙˙)r   Úround_nearestr   r   r   r   r   Útest_round_nearest=   s        r$   c               C   s   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sBtt dd	d
tdksXtt dd	dtdksntt dd	dtdkstd S )Nl   ˙˙˙˙iČ˙˙˙é5   )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   i˙˙˙)r   r   r   r   )r   r   r   r#   r   r   r   r   r   Útest_rounding_bugsL   s    r(   c              C   s~   t dd} t dd}t dd}d}t| |dd|ks8tt||dd|ksNtt|| dd|ksdtt||dd|ksztd S )	Ni&  i˙˙˙i8˙˙˙é˙˙˙˙r   )r   i˙  iö˙˙˙é
   r*   Úd)r   Úmpf_addr   )ÚaÚbÚcÚzr   r   r   Útest_rounding_issue_200U   s    


r1   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sVtt| ddt|kslt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	| } t	|}t	|}t| ddt| ks tt| ddt| ks8tt| ddt| ksPtt| ddt| ksht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d S )Ng˙˙˙˙˙˙ď?g     đ?r   r%   r   )
ÚfoneÚ
from_floatZmpf_perturbr#   r   r   r   r   r   Zmpf_neg)r-   r.   r/   r   r   r   Útest_perturb_   s4    r4   c              C   s<  t } t| d| d| dks"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sÜttt| d
tt| d
ksütttttkstttttks$tttttks8td S )Ng      @g      @g      @g      Ŕg      ŕ?g      Ŕg      ŕżg      Ŕg0ä.˙++g0ä.˙+Ť)r3   r,   r   Zmpf_subr2   Zfzero)Zffr   r   r   Útest_add_exact{   s        r5   c              C   s:  dt _td} x$d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sćt||  |ksöt||  |kst||  |kst||  | ks,t||  | ks>t||  | ksPt| | | ksdt| | | ksxt| | | 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stqW d S )Nr   r   )é    é@   r   )ÚmpZdpsÚmpfZldexpr   )ÚxÚpr-   r.   r/   r+   ÚeÚfr   r   r   Útest_long_exponent_shifts   sB    r>   c           	   C   sě   dt _xÚtdtdt tdt td t td t gD ] } t| }tt| dddd}||ksjtt| | }t|}tt|dddd}||kstx@dD ]8}t	| j
|d}t	t| dd|dj
|d}||ks˘tq˘W q>W dt _d S )	Nr7   r   r   r%   Ún)ÚprecZrounding)r?   r+   Úur=   r/   )Úrnd)r8   r@   r9   ZepsÚfloatZfaddr   ZmpcÚcomplexZto_floatZ_mpf_)r:   ZfaZfbr0   ZcaÚcbrB   r   r   r   Útest_float_roundingŽ   s    <

rF   N)Ú__doc__ZmpmathZmpmath.libmpr   r   r   r   r   r   r$   r(   r1   r4   r5   r>   rF   r   r   r   r   Ú<module>   s   						
%