o
    ¨"`Ü  ã                   @   s‚   d dl T d dlmZmZ d dlmZmZmZ ee	e
eegZeZeZeZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ ZdS )é    )Ú*)ÚmpfÚmp)ÚrandintÚchoiceÚseedc                  C   s   t dƒ} t dƒ}t dƒ}t| |dtƒtdƒksJ ‚t| |dtƒtdƒks&J ‚t| |dtƒtdƒks3J ‚t| |dtƒtdƒks@J ‚t| |dtƒtdƒksMJ ‚t||dtƒtdƒksZJ ‚t||dtƒtdƒksgJ ‚t||dtƒtdƒkstJ ‚t||dtƒtdƒksJ ‚t||dtƒtdƒksŽJ ‚d S ©	Né   é   éÿÿÿÿé   z
0.01010101z
0.01010110z-0.01010110z-0.01010101)ÚfiÚmpf_divÚround_floorÚfbÚround_ceilingÚ
round_downÚround_upÚround_nearest©ÚaÚbÚc© r   ú</usr/lib/python3/dist-packages/mpmath/tests/test_division.pyÚtest_div_1_3   s   r   c                  C   s  d} t dƒ}d}t| |dtƒtdƒksJ ‚t| |dtƒtdƒks"J ‚t| |dtƒtdƒks/J ‚t| |dtƒtdƒks<J ‚t| |dtƒtdƒksIJ ‚t||dtƒtdƒksVJ ‚t||dtƒtdƒkscJ ‚t||dtƒtdƒkspJ ‚t||dtƒtdƒks}J ‚t||dtƒtdƒksŠJ ‚d S r   )r   Zmpf_rdiv_intr   r   r   r   r   r   r   r   r   r   Útest_mpf_divi_1_3    s   r   c                  C   st  t dƒ} t dƒ}t dƒ}t dƒ}t|| dtƒt dƒksJ ‚t|| dtƒt dƒks*J ‚t|| dtƒt dƒks7J ‚t|| dtƒt dƒksDJ ‚t|| dtƒt dƒksQJ ‚t|| dtƒt dƒks^J ‚t|| dtƒt dƒkskJ ‚t|| dtƒt dƒksxJ ‚t|| dtƒt dƒks…J ‚t dƒ}t d	ƒ}t d
ƒ}t|| dtƒt dƒksžJ ‚t|| dtƒt dƒks«J ‚t|| dtƒt dƒks¸J ‚d S )Ni@B iDéi Déi!Déé	   i,  i-  i_†øi`†øia†øi.  )r   r   r   r   r   )Úqr   r   r   r   r   r   Útest_div_3000   s&   r   c                  C   s²   d} t dƒ t| ƒD ]L}tddgƒtddtddƒ> ƒ }tddgƒtddtddƒ> ƒ }|| }tt|ƒƒt|ƒ }t|ƒ}t|ƒ}t|ƒ}tD ]}t	||||ƒ|ksUJ ‚qHq
d S )Néd   r	   r   é
   )
r   Úranger   r   ÚbitcountÚabsZtrailingr   Ú	all_modesr   )ÚNÚir   r   ÚpÚwidthÚmoder   r   r   Útest_tight_integer_divisionN   s     ÿúr+   c                  C   sè  t dƒ} t dƒ}t| |dtƒ}t||t| d ƒtƒ| ksJ ‚t||dtƒt dƒks+J ‚t||dtƒt dƒks8J ‚t||dtƒt d	ƒksEJ ‚t||dtƒt d
ƒksRJ ‚t||dtƒt dƒks_J ‚t||dtƒt dƒkslJ ‚t||dtƒt d	ƒksyJ ‚t||dtƒt d
ƒks†J ‚t dƒ} t dƒ}t| |dtƒ}t||t| d ƒtƒ| ks¤J ‚t||dtƒt dƒks±J ‚t||dtƒt dƒks¾J ‚t||dtƒt dƒksËJ ‚t||dtƒt dƒksØJ ‚t||dtƒt dƒksåJ ‚t||dtƒt dƒksòJ ‚d S )NzÎ0.101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001z1.10101éú   r	   é   z0.10r
   z0.101z0.11z0.110zÏ-0.101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001z-0.10z-0.110z-0.11z-0.101)r   Zmpf_mulr   r   r#   r   r   r   r   r   r   r   Útest_epsilon_rounding\   s,   r.   c                   C   sÂ   d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dƒd	 dks5J ‚tdƒd
 dks?J ‚tdƒd dksIJ ‚tdƒd tdƒksUJ ‚dtdƒ dks_J ‚d S )Né   éê   r	   r   éýÿÿÿé   éý   g      Ð?g     ðÖ@g     ðÖÀg    ðÖÀg      Ð¿g    ðÖ@Z1e10000000000z1.23e-1000000000r
   z1.75g      ô?©r   Zdpsr   r   r   r   r   Útest_mod~   s   r5   c                   C   s>   dt _dtdƒ tdƒksJ ‚tdƒtdƒ tdƒksJ ‚d S )Nr/   r1   z0.1531879017645047z-19.583791966887116z-2.6342475750861301z0.35126216427941814z-7.4993775104985909r4   r   r   r   r   Útest_div_negative_rnd_bugŒ   s    r6   N)Zmpmath.libmpZmpmathr   r   Zrandomr   r   r   r   r   r   r   r   r%   Z	from_bstrr   Zfrom_intr   Z
from_floatZffr   r   r   r+   r.   r5   r6   r   r   r   r   Ú<module>   s    "