a
    ›¬<b  ã                   @   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s0J ‚t dƒdks@J ‚t dd ƒd	ksTJ ‚t dd d ƒdkslJ ‚d S )
Nr   é   é   é   é   é   é   éd   ée   )Zbitcount© r   r   úi/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-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s0J ‚t dƒdks@J ‚t dƒdksPJ ‚t dd ƒdksdJ ‚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sZJ ‚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 ‚d S )Nr   éüÿÿÿr   r   ©r   r   r   éð   ©r   é   r   éñ   éÿ   éÿÿÿ©r   r   r   éÿÿÿéÿÿÿ)Úfrom_man_expÚ
round_downr   r   r   r   Útest_round_down   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sZJ ‚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 ‚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"   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sZJ ‚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 ‚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+   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sZJ ‚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 ‚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   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sZJ ‚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 ‚t dddtƒd d… dks0J ‚t dddtƒd d… dksPJ ‚t dddtƒd d… dkspJ ‚t dddtƒd d… dksJ ‚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sBJ ‚t dd	d
tƒdksXJ ‚t dd	dtƒdksnJ ‚t dd	dtƒdks„J ‚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    r/   c                  C   s~   t ddƒ} t ddƒ}t ddƒ}d}t| |ddƒ|ks8J ‚t||ddƒ|ksNJ ‚t|| ddƒ|ksdJ ‚t||ddƒ|kszJ ‚d S )	Ni‹&  iœÿÿÿi8ÿÿÿéÿÿÿÿr   )r   iÿ  iöÿÿÿé
   r1   Úd)r   Úmpf_add)ÚaÚbÚcÚzr   r   r   Útest_rounding_issue_200U   s    


r8   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sVJ ‚t| ddtƒ|kslJ ‚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s8J ‚t| ddtƒ| ksPJ ‚t| ddtƒ| kshJ ‚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)r4   r5   r6   r   r   r   Útest_perturb_   s4    r;   c                  C   s<  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s8J ‚d S )Ng      @g      @g      @g      Àg      à?g      Àg      à¿g      Àg0Žä.ÿ++g0Žä.ÿ+«)r:   r3   Zmpf_subr9   Zfzero)Úffr   r   r   Útest_add_exact{   s        r=   c                  C   s4  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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sLJ ‚| | | ks`J ‚| | | kstJ ‚| | | 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ÚmpfÚldexp)ÚxÚpr4   r5   r6   r2   ÚeÚfr   r   r   Útest_long_exponent_shifts‰   sB    
rG   c               	   C   sä   dt _tdƒtdƒt tdƒt tdƒ t tdƒ t fD ]œ} t| ƒ}tt| ddddƒ}||kshJ ‚t| | ƒ}t|ƒ}tt|ddddƒ}||ksšJ ‚dD ]8}t| j	|d}tt| dd|dj	|d}||ksžJ ‚qžq<dt _d S )	Nr?   r   r   r,   Ún)ÚprecÚrounding)rH   r2   ÚurF   r6   )Úrnd)
r@   rI   rA   ZepsÚfloatZfaddZmpcÚcomplexZto_floatZ_mpf_)rC   ÚfaZfbr7   ÚcaÚcbrL   r   r   r   Útest_float_rounding®   s    :
rR   N)Ú__doc__ZmpmathZmpmath.libmpr   r   r   r    r"   r$   r+   r/   r8   r;   r=   rG   rR   r   r   r   r   Ú<module>   s   						
%