o
    FZh  ă                   @   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   úH/var/www/auris/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	   )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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_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sJ 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)Ú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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   )ÚmpZdpsÚmpfÚldexp)ÚxÚpr5   r6   r7   r3   ÚeÚfr   r   r   Útest_long_exponent_shifts   sD   ârH   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)ÚprecÚrounding)rI   r3   ÚurG   r7   )Úrnd)
rA   rJ   rB   ZepsÚfloatZfaddZmpcÚcomplexZto_floatZ_mpf_)rD   ÚfaZfbr8   ÚcaÚcbrM   r   r   r   Útest_float_roundingŽ   s   :
ý
rS   N)Ú__doc__ZmpmathZmpmath.libmpr   r   r   r!   r#   r%   r,   r0   r9   r<   r>   rH   rS   r   r   r   r   Ú<module>   s     						
%