U
    9%e  ă                   @   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   úX/var/www/html/Darija-Ai-API/env/lib/python3.8/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   éń   é˙   é˙˙˙Šr   r   r   é˙˙˙é˙˙˙)Ú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   r   r   r   )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   r   )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   Ú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   i	˙˙˙i˙˙˙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   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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ö˙˙˙é
   r2   Úd)r   Úmpf_addr   )Ú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*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)r5   r6   r7   r   r   r   Útest_perturb_   s4    r<   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ä.˙+Ť)r;   r4   r   Zmpf_subr:   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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sLt| | | ks`t| | | kstt| | | 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d S )Nr   r   )é    é@   r   )ÚmpZdpsÚmpfÚldexpr   )ÚxÚpr5   r6   r7   r3   ÚeÚfr   r   r   Útest_long_exponent_shifts   sB    
rH   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shtt| | }t|}tt|dddd}||kstdD ]8}t	| j
|d}t	t| dd|dj
|d}||kstqq<dt _d S )	Nr@   r   r   r-   Ún)ÚprecÚrounding)rI   r3   ÚurG   r7   )Úrnd)rA   rJ   rB   ZepsÚfloatZfaddr   Z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   						
%