o
    Th  ă                   @   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   )ÚbitcountŠ r   r   úZ/home/air/segue/gemini/back/venv/lib/python3.10/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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	   )Ú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   r1   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r"   r-   r$   r   r   r   r   Útest_rounding_bugsL   s   r2   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ö˙˙˙é
   r4   Úd)r   Úmpf_add)ÚaÚbÚcÚzr   r   r   Útest_rounding_issue_200U   s   


r;   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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 d S )Ng˙˙˙˙˙˙ď?g     đ?r   r/   r   )	ÚfoneÚ
from_floatÚmpf_perturbr-   r"   r&   r   r$   Úmpf_neg)r7   r8   r9   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sJ ttttksJ d S )Ng      @g      @g      @g      Ŕg      ŕ?g      Ŕg      ŕżg      Ŕg0ä.˙++g0ä.˙+Ť)r=   r6   Úmpf_subr<   Úfzero)Úffr   r   r   Útest_add_exact{   s       rD   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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 ||  |  ksJ q	d S )Nr   r   )é    é@   r   )ÚmpÚdpsÚmpfÚldexp)ÚxÚpr7   r8   r9   r5   ÚeÚfr   r   r   Útest_long_exponent_shifts   sD   ârO   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 )	NrF   r   r   r/   Ún)ÚprecÚrounding)rP   r5   ÚurN   r9   )Úrnd)
rG   rQ   rI   ÚepsÚfloatÚfaddÚmpcÚcomplexÚto_floatÚ_mpf_)rK   ÚfaÚfbr:   ÚcaÚcbrT   r   r   r   Útest_float_roundingŽ   s   :
ý
r`   N)Ú__doc__ÚmpmathÚmpmath.libmpr   r   r   r#   r%   r'   r.   r2   r;   r@   rD   rO   r`   r   r   r   r   Ú<module>   s     						
%