B
    <ZÜ  ã               @   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s2t‚t| |dtƒtdƒksLt‚t| |dtƒtdƒksft‚t| |dtƒtdƒks€t‚t| |dtƒtdƒksšt‚t||dtƒtdƒks´t‚t||dtƒtdƒksÎt‚t||dtƒtdƒksèt‚t||dtƒtdƒkst‚t||dtƒtdƒks t‚d S )	Né   é   éÿÿÿÿé   z
0.01010101z
0.01010110z-0.01010110z-0.01010101)	ÚfiÚmpf_divÚround_floorÚfbÚAssertionErrorÚround_ceilingÚ
round_downÚround_upÚround_nearest)ÚaÚbÚc© r   ú9lib/python3.7/site-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*t‚t| |dtƒtdƒksDt‚t| |dtƒtdƒks^t‚t| |dtƒtdƒksxt‚t| |dtƒtdƒks’t‚t||dtƒtdƒks¬t‚t||dtƒtdƒksÆt‚t||dtƒtdƒksàt‚t||dtƒtdƒksút‚t||dtƒtdƒkst‚d S )	Nr   r	   r
   r   z
0.01010101z
0.01010110z-0.01010110z-0.01010101)	r   Zmpf_rdiv_intr   r   r   r   r   r   r   )r   r   r   r   r   r   Útest_mpf_divi_1_3    s    r   c              C   s|  t dƒ} t dƒ}t dƒ}t dƒ}t|| dtƒt dƒks:t‚t|| dtƒt dƒksTt‚t|| dtƒt dƒksnt‚t|| dtƒt dƒksˆt‚t|| dtƒt dƒks¢t‚t|| dtƒt dƒks¼t‚t|| dtƒt dƒksÖt‚t|| dtƒt dƒksðt‚t|| dtƒt dƒkst‚t dƒ}t d	ƒ}t d
ƒ}t|| dtƒt dƒks@t‚t|| dtƒt dƒks\t‚t|| dtƒt dƒksxt‚d S )Ni@B iDéi Déi!Déé	   i,  i-  i_†øi`†øia†øi.  )r   r   r   r   r   r   )Úqr   r   r   r   r   r   Útest_div_3000   s&    r   c              C   sº   d} t dƒ x¨t| ƒD ]œ}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|ƒ}x"tD ]}t	||||ƒ|ks”t
‚q”W qW d S )Néd   r   r
   é
   )r   Úranger   r   ÚbitcountÚabsZtrailingr   Ú	all_modesr   r   )Ú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<t‚t||dtƒt dƒksVt‚t||dtƒt dƒkspt‚t||dtƒt d	ƒksŠt‚t||dtƒt d
ƒks¤t‚t||dtƒt dƒks¾t‚t||dtƒt dƒksØt‚t||dtƒt d	ƒksòt‚t||dtƒt d
ƒkst‚t dƒ} t dƒ}t| |dtƒ}t||t| d ƒtƒ| ksLt‚t||dtƒt dƒksht‚t||dtƒt dƒks„t‚t||dtƒt dƒks t‚t||dtƒt dƒks¼t‚t||dtƒt dƒksØt‚t||dtƒt dƒksôt‚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   r   r   r   Útest_epsilon_rounding\   s,     r-   c               C   sÂ   dt _tdƒd dkst‚tdƒd dks.t‚tdƒd	 dksBt‚tdƒd
 dksVt‚tdƒd	 dksjt‚tdƒd
 dks~t‚tdƒd dks’t‚tdƒd tdƒksªt‚dtdƒ dks¾t‚d S )Né   éê   r   r   éýÿÿÿé   éý   g      Ð?g     ðÖ@g     ðÖÀg    ðÖÀg      Ð¿g    ðÖ@Z1e10000000000z1.23e-1000000000r	   z1.75g      ô?)r   Údpsr   r   r   r   r   r   Útest_mod~   s    r4   c               C   s>   dt _dtdƒ tdƒkst‚tdƒtdƒ tdƒks:t‚d S )Nr.   r0   z0.1531879017645047z-19.583791966887116z-2.6342475750861301z0.35126216427941814z-7.4993775104985909)r   r3   r   r   r   r   r   r   Útest_div_negative_rnd_bugŒ   s    r5   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-   r4   r5   r   r   r   r   Ú<module>   s   "