o
    ¨"`  ã                   @   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J ‚t dƒdksJ ‚t dƒdksJ ‚t dƒdks J ‚t dd ƒd	ks*J ‚t dd d ƒdks6J ‚d S )
Nr   é   é   é   é   é   é   éd   ée   )Zbitcount© r   r   ú;/usr/lib/python3/dist-packages/mpmath/tests/test_bitwise.pyÚtest_bitcount   s   r   c                   C   s€   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 ƒdks2J ‚t dd d ƒdks>J ‚d S )Nr   r   r   r   r   r   r	   )Ztrailingr   r   r   r   Útest_trailing   s   r   c                   C   sÖ   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sKJ ‚t dddtƒd d… dksZJ ‚t dddtƒd d… dksiJ ‚d S )Nr   éüÿÿÿr   r   ©r   r   r   éð   ©r   é   r   éñ   éÿ   éÿÿÿ©r   r   r   éÿÿÿéÿÿÿ)Úfrom_man_expÚ
round_downr   r   r   r   Útest_round_down   ó   "r   c                   C   sÖ   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sKJ ‚t dddtƒd d… dksZJ ‚t dddtƒd d… dksiJ ‚d S )Nr   r   r   r   r   r   r   r   ©r   r   r   r   r   r   r   ©r   r   r   r   )r   Úround_upr   r   r   r   Útest_round_up"   r   r!   c                   C   sÖ   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sKJ ‚t dddtƒd d… dksZJ ‚t dddtƒd d… dksiJ ‚d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   Úround_floorr   r   r   r   Útest_round_floor+   r   r#   c                   C   sÖ   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sKJ ‚t dddtƒd d… dksZJ ‚t dddtƒd d… dksiJ ‚d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   Úround_ceilingr   r   r   r   Útest_round_ceiling4   r   r%   c                   C   sŠ  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sKJ ‚t dddtƒd d… dksZJ ‚t dddtƒd d… dksiJ ‚t dddtƒd d… dksxJ ‚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 ‚d S )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   r   Útest_round_nearest=   s   "r,   c                   C   sˆ   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s7J ‚t dd	dtƒdksBJ ‚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   r   )r   r   r   r   )r   r    r+   r"   r   r   r   r   Útest_rounding_bugsL   s   r0   c                  C   s~   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s2J ‚t||ddƒ|ks=J ‚d S )	Ni‹&  iœÿÿÿi8ÿÿÿéÿÿÿÿr   )r   iÿ  iöÿÿÿé
   r2   Úd)r   Úmpf_add)ÚaÚbÚcÚzr   r   r   Útest_rounding_issue_200U   s   


r9   c                  C   sè  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s6J ‚t| ddtƒ| ksAJ ‚t| ddtƒ| ksLJ ‚t| ddtƒ| ksWJ ‚t| ddtƒ| ksbJ ‚t| ddtƒ|ksmJ ‚t| ddtƒ|ksxJ ‚t| ƒ} t|ƒ}t|ƒ}t| ddtƒ| ksJ ‚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 ‚d S )Ngÿÿÿÿÿÿï?g     ð?r   r-   r   )	ÚfoneÚ
from_floatZmpf_perturbr+   r    r$   r   r"   Zmpf_neg)r5   r6   r7   r   r   r   Útest_perturb_   s4   r<   c                  C   s6  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sNJ ‚tt| d	ƒtƒtƒ| d	ƒks^J ‚ttt| d
ƒƒtƒ| d
ƒksnJ ‚tt| d
ƒtƒtƒ| d
ƒks~J ‚tttƒtks‡J ‚tttƒtksJ ‚tttƒtks™J ‚d S )Ng      @g      @g      @g      Àg      à?g      Àg      à¿g      Àg0Žä.ÿ++g0Žä.ÿ+«)r;   r4   Zmpf_subr:   Zfzero)Zffr   r   r   Útest_add_exact{   s       r=   c                  C   s  dt _tdƒ} 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sHJ ‚| | |ksPJ ‚| | |ksXJ ‚| | | ks`J ‚| | | kshJ ‚| | | kspJ ‚||  |ksxJ ‚||  |ks€J ‚||  |ksˆJ ‚||  | ksJ ‚||  | ks˜J ‚||  | ks J ‚| | | ks©J ‚| | | ks²J ‚| | | ks»J ‚| | | ksÃJ ‚| | | ksËJ ‚| | | ksÓJ ‚||  |ksÛJ ‚||  |ksãJ ‚||  |ksëJ ‚||  |  ksôJ ‚||  |  ksýJ ‚||  |  ksJ ‚q	d S )Nr   r   )é    é@   r   )ÚmpZdpsÚmpfZldexp)ÚxÚpr5   r6   r7   r3   ÚeÚfr   r   r   Útest_long_exponent_shifts‰   sD   ârF   c               	   C   sä   dt _tdƒtdƒt tdƒt tdƒ t tdƒ t fD ]N} t| ƒ}tt| ddddƒ}||ks4J ‚t| | ƒ}t|ƒ}tt|ddddƒ}||ksMJ ‚dD ]}t| j	|d}tt| dd|dj	|d}||kskJ ‚qOqdt _d S )	Nr?   r   r   r-   Ún)ÚprecZrounding)rG   r3   ÚurE   r7   )Úrnd)
r@   rH   rA   ZepsÚfloatZfaddZmpcÚcomplexZto_floatZ_mpf_)rB   ÚfaZfbr8   ÚcaÚcbrJ   r   r   r   Útest_float_rounding®   s   :
ý
rP   N)Ú__doc__ZmpmathZmpmath.libmpr   r   r   r!   r#   r%   r,   r0   r9   r<   r=   rF   rP   r   r   r   r   Ú<module>   s     						
%