Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_math.cpython-38.opt-2.pyc
U

>��g�H�@s�ddlmZmZmZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZdZed�Zed�Zed�ZejjZejjZd\ZZeed	kZed
kr�ejdZneZe
j �!e�p�e
j"Z#e
j �$e#d�Z%e
j �$e#d�Z&d
d�Z'dd�Z(dd�Z)dd�Z*dd�Z+dd�Z,dd�Z-dd�Z.d+dd �Z/Gd!d"�d"e0�Z1Gd#d$�d$e2�Z3Gd%d&�d&ej4�Z5Gd'd(�d(ej4�Z6d)d*�Z7ed
k�r�e7�dS),�)�run_unittest�verbose�requires_IEEE_754)�supportNg�h㈵��>�nan�inf�-inf)���7y�ACg�):��@g��7y�AC�__main__zmath_testcases.txtzcmath_testcases.txtcCs.t�dt�d|��d}|dkr*|d}|S)N�<q�<drl)�struct�unpack�pack)�x�n�r�-/opt/cppython/lib/python3.8/test/test_math.py�to_ulps's
rcCs�tt|��}t�|�s t�|�r$|St�dt�d|��d}t�dt�d|d��d}t�|�r�t�dt�d|d��d}||S||SdS)Nrrr�)�abs�float�math�isnan�isinfr
rr)rrZx_nextZx_prevrrr�ulp8s
rcCs|rdt||d@�SdS)Nrr)�count_set_bits)rrrrresrcCsD||d?}|sdS|dkr |S||dB}t||�t||�SdS�Nr)�partial_product)�start�stopZ
numfactorsZmidrrrrisrcCs`d}}tt|����D]6}|t||d?ddB||?ddB�9}||9}q||t|�>Sr)�reversed�range�
bit_lengthrr)r�innerZouter�irrr�py_factorialws
*
r&cCsLtt|�t|��}t||�}||ks0||kr4dSd}|�||||�SdS)NzAerror = {:.3g} ({:d} ulps); permitted error = {:.3g} or {:d} ulps)rr�format)�expected�got�ulp_tol�abs_tolZ	ulp_errorZ	abs_error�fmtrrr�
ulp_abs_check�sr-c	cs�t|���}|D]x}d|kr,|d|�d��}|��s6q|�d�\}}|��\}}}|��}|d}	|dd�}
||t|�t|	�|
fVqW5QRXdS)N�--�->rr)�open�index�strip�splitr)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagsrrr�parse_mtestfile�s	
r?c
	cs�t|���}|D]�}|�d�s|��s&q|�d�\}}|��\}}}}|��}	|	d|	d}
}|	dd�}||t|�t|�t|
�t|�|fVqW5QRXdS)Nr.r/rr�)r0�
startswithr2r3r)
r4r5r6r7r8r9r:Zarg_realZarg_imagr<Zexp_realZexp_imagr>rrr�parse_testfile�s 
�rB��cCs�||krdSd}t|t�r.t|t�r.t|�}nt|t�rJt|t�rJt|�}t|t�r�t|t�r�t�|�rxt�|�rxd}n$t�|�s�t�|�r�nt||||�}|dk	r�d}|�||�}|d�|�7}|SdSdS)Nz	not equalzexpected {!r}, got {!r}z ({}))�
isinstancer�intrrrr-r')r(r)r*r+�failure�fail_fmtZfail_msgrrr�result_check�s&
rIc@seZdZdS)�IntSubclassN��__name__�
__module__�__qualname__rrrrrJ�srJc@seZdZdd�Zdd�ZdS)�MyIndexablecCs
||_dS�N��value��selfrRrrr�__init__�szMyIndexable.__init__cCs|jSrPrQ�rTrrr�	__index__�szMyIndexable.__index__N�rLrMrNrUrWrrrrrO�srOc@s(eZdZdydd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Ze
dd��Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zejd'd(��Zd)d*�Zd+d,�Zd-d.�Ze
e�ed/�d0d1���Zd2d3�Z d4d5�Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&e
d@dA��Z'e
e�(dBd�dCdD���Z)dEdF�Z*dGdH�Z+dIdJ�Z,dKdL�Z-e
dMdN��Z.dOdP�Z/dQdR�Z0dSdT�Z1dUdV�Z2dWdX�Z3e
dYdZ��Z4d[d\�Z5d]d^�Z6d_d`�Z7dadb�Z8e
dcdd��Z9e
dedf��Z:e�;e<dg�dhdi��Z=e
djdk��Z>e
dldm��Z?dndo�Z@dpdq�ZAdrds�ZBdtdu�ZCdvdw�ZDdxS)z�	MathTestsrCrDcCs,t||||�}|dk	r(|�d�||��dS)Nz{}: {})rI�failr')rT�namer)r(r*r+rGrrr�ftests	zMathTests.ftestcCs8|�dtjd�|�dtjd�|�tjdtj�dS)N�pig-DT�!	@�egiW�
�@r@)r\rr]r^�assertEqual�taurVrrr�
testConstants
szMathTests.testConstantscCs�|�ttj�|�dt�d�tj�|�dt�d�tjd�|�dt�d�d�|�ttjt�|�ttjt�|�ttjdt	�|�ttjdt	�|�
t�t�t���dS)Nzacos(-1)���zacos(0)rr@zacos(1)r)
�assertRaises�	TypeErrorr�acosr\r]�
ValueError�INF�NINF�eps�
assertTruer�NANrVrrr�testAcosszMathTests.testAcoscCs�|�ttj�|�dt�d�d�|�dt�d�d�|�ttjd�|�ttjd�|�t�t�t�|�ttjt�|�	t�
t�t���dS)Nzacosh(1)rrzacosh(2)r@g5�qB�?rb)rcrdr�acoshr\rfr_rgrhrjrrkrVrrr�	testAcoshszMathTests.testAcoshcCs�|�ttj�|�dt�d�tjd�|�dt�d�d�|�dt�d�tjd�|�ttjt�|�ttjt�|�ttjdt	�|�ttjdt	�|�
t�t�t���dS)Nzasin(-1)rbr@zasin(0)rzasin(1)r)
rcrdr�asinr\r]rfrgrhrirjrrkrVrrr�testAsin(szMathTests.testAsincCs�|�ttj�|�dt�d�d�|�dt�d�d�|�dt�d�d�|�t�t�t�|�t�t�t�|�t�	t�t
���dS)	Nzasinh(0)rzasinh(1)rg'�ya64�?z	asinh(-1)rbg'�ya64�)rcrdr�asinhr\r_rgrhrjrrkrVrrr�	testAsinh3szMathTests.testAsinhcCs�|�ttj�|�dt�d�tjd�|�dt�d�d�|�dt�d�tjd�|�dt�t�tjd	�|�d
t�t�tjd	�|�t�	t�t
���dS)Nzatan(-1)rb�zatan(0)rzatan(1)rz	atan(inf)r@z
atan(-inf))rcrdr�atanr\r]rgrhrjrrkrVrrr�testAtan<szMathTests.testAtancCs�|�ttj�|�dt�d�d�|�dt�d�d�|�dt�d�d�|�ttjd	�|�ttjd
�|�ttjt�|�ttjt�|�	t�
t�t���dS)Nzatanh(0)rz
atanh(0.5)��?g�z��?zatanh(-0.5)��g�z��rrb)rcrdrrtr\�atanhrfrgrhrjrrkrVrrr�	testAtanhEszMathTests.testAtanhcCs|�ttj�|�dt�dd�tjd�|�dt�dd�tjd�|�dt�dd�d�|�d	t�dd�tjd�|�d
t�dd�tjd�|�dt�dt�tj�|�d
t�dd�tj�|�dt�dd�tj�|�t�dd�d�|�t�dd�d�|�t�dt�d�|�	t�
t�dt���|�dt�dt�tj�|�dt�dd�tj�|�dt�dd�tj�|�t�dd�d�|�t�dd�d�|�t�dt�d�|�	t�
t�dt���|�dt�tt�tjdd�|�dt�td�tjd�|�dt�td�tjd�|�dt�td�tjd�|�dt�td�tjd�|�dt�tt�tjd�|�	t�
t�tt���|�dt�tt�tjdd�|�dt�td�tjd�|�dt�td�tjd�|�dt�td�tjd�|�d t�td�tjd�|�d!t�tt�tjd�|�	t�
t�tt���|�d"t�dt�tj�|�d#t�dd�tjd�|�d$t�dd�tjd�|�t�dt�d�|�	t�
t�dt���|�d%t�dt�tj�|�d&t�dd�tjd�|�d't�dd�tjd�|�t�dt�d�|�	t�
t�dt���|�	t�
t�tt���|�	t�
t�td���|�	t�
t�td���|�	t�
t�td���|�	t�
t�td���|�	t�
t�tt���|�	t�
t�tt���dS)(Nzatan2(-1, 0)rbrr@zatan2(-1, 1)rrszatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(0., -inf)rDzatan2(0., -2.3)�ffffff�zatan2(0., -0.)���ffffff@zatan2(-0., -inf)zatan2(-0., -2.3)zatan2(-0., -0.)zatan2(inf, -inf)�zatan2(inf, -2.3)zatan2(inf, -0.)zatan2(inf, 0.)zatan2(inf, 2.3)zatan2(inf, inf)zatan2(-inf, -inf)zatan2(-inf, -2.3)zatan2(-inf, -0.)zatan2(-inf, 0.)zatan2(-inf, 2.3)zatan2(-inf, inf)zatan2(2.3, -inf)zatan2(2.3, -0.)zatan2(2.3, 0.)zatan2(-2.3, -inf)zatan2(-2.3, -0.)zatan2(-2.3, 0.))rcrdr�atan2r\r]rhr_rgrjrrkrVrrr�	testAtan2Psf "zMathTests.testAtan2cCs|�ttj�|�ttt�d���|�dt�d�d�|�dt�d�d�|�dt�d�d�|�d	t�d
�d�|�dt�d
�d�|�dt�d�d�Gdd�d�}Gdd�d�}|�dt�|��d�|�ttj|��|�}dd�|_|�ttj|�|�ttj|d�dS)Nrvz	ceil(0.5)rz	ceil(1.0)��?z	ceil(1.5)��?r@z
ceil(-0.5)rwrz
ceil(-1.0)��rbz
ceil(-1.5)���c@seZdZdd�ZdS)z$MathTests.testCeil.<locals>.TestCeilcSsdS�N�*rrVrrr�__ceil__�sz-MathTests.testCeil.<locals>.TestCeil.__ceil__N)rLrMrNr�rrrr�TestCeil�sr�c@seZdZdS)z&MathTests.testCeil.<locals>.TestNoCeilNrKrrrr�
TestNoCeil�sr�zceil(TestCeil())r�cWs|SrPr��argsrrr�<lambda>��z$MathTests.testCeil.<locals>.<lambda>)	rcrdr�ceilr_rF�typer\r�)rTr�r��trrr�testCeil�s 
zMathTests.testCeilcCs�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�d	d
�d�|�ttj�|�t�dd�d�|�t�dd
�d�|�t�td�t�|�t�td
�t�|�t�td�t�|�t�td
�t�|�t�dt�d�|�t�dt�d�|�t�tt�t�|�t�tt�t�|�t�tt�t�|�t�tt�t�|�t�t�t	d���|�t�t�t	t���|�t�t�t	t���|�t�t�t	t	���|�t�
t�tt	���|�tt�dt	��d�dS)
Nrr�r�rDi���r�r}�@�@r{���@)r_r�copysignrcrdrgrhrjrrkrrrVrrr�testCopysign�s0zMathTests.testCopysigncCs�|�ttj�|jdt�tjd�dtd�d�|�dt�d�d�|jdt�tjd�dtd�d�|�dt�tj�d	�z0|�t�t�t	���|�t�t�t
���Wn4tk
r�|�ttjt	�|�ttjt
�YnX|�t�t�t���dS)
Nz
cos(-pi/2)r@rr�r+zcos(0)z	cos(pi/2)zcos(pi)rb)
rcrdr�cosr\r]rrjrrgrhrfrkrVrrr�testCos�s$"zMathTests.testCoscCs�|�ttj�|�dt�d�d�|�dt�d�dt�d�dd�|�t�t�t�|�t�t�t�|�t�	t�t
���dS)Nzcosh(0)rrzcosh(2)-2*cosh(1)**2r@rb)rcrdr�coshr\r_rgrhrjrrkrVrrr�testCosh�s&zMathTests.testCoshcCsr|�ttj�|�dt�tj�d�|�dt�tjd�d�|�dt�tjd�d�|�d	t�d
�d
�dS)Nzdegrees(pi)g�f@z
degrees(pi/2)r@g�V@zdegrees(-pi/4)rsg�F�z
degrees(0)r)rcrdr�degreesr\r]rVrrr�testDegrees�s
zMathTests.testDegreescCs�|�ttj�|�dt�d�dtj�|�dt�d�d�|�dt�d�tj�|�t�t�t�|�t�t�d�|�	t�
t�t���|�ttjd�dS)	Nzexp(-1)rbrzexp(0)rzexp(1)rD�@B)
rcrdrr=r\r^r_rgrhrjrrk�
OverflowErrorrVrrr�testExp�szMathTests.testExpcCsN|�ttj�|�dt�d�d�|�dt�d�d�|�dt�d�d�dS)Nzfabs(-1)rbrzfabs(0)rzfabs(1))rcrdr�fabsr\rVrrr�testFabs�szMathTests.testFabscCs�|�t�d�d�|�t�d�d�d}tdd�D]J}||9}|�t�|�|�|�t�t|��|�|�t�|�t|��q2|�ttjd�|�ttjd�|�ttjdd�|�ttjd	�|�ttjtj�dS)
NrrrD��rbr��
�d�}Ô%�I��)	r_r�	factorialr"rr&rcrfr])rT�totalr%rrr�
testFactorial�szMathTests.testFactorialcCs*|�ttjt�d��|�ttjd�dS)Ng������@�5)rcrdrr��decimal�DecimalrVrrr�testFactorialNonIntegerssz"MathTests.testFactorialNonIntegerscCs(|�ttjdd�|�ttjd�dS)Nr�r��}Ô%�I�T)rcr�rr�rVrrr�testFactorialHugeInputs
sz!MathTests.testFactorialHugeInputscCs>|�ttj�|�ttt�d���|�dt�d�d�|�dt�d�d�|�dt�d�d�|�d	t�d
�d�|�dt�d
�d�|�dt�d�d�|�dt�d�d�|�dt�d�d�Gdd�d�}Gdd�d�}|�dt�|��d�|�ttj|��|�}dd�|_|�ttj|�|�ttj|d�dS)Nrvz
floor(0.5)rz
floor(1.0)r�rz
floor(1.5)r�zfloor(-0.5)rwrbzfloor(-1.0)r�zfloor(-1.5)r����zfloor(1.23e167)g��Nݯ�bzfloor(-1.23e167)g��Nݯ��c@seZdZdd�ZdS)z&MathTests.testFloor.<locals>.TestFloorcSsdSr�rrVrrr�	__floor__#sz0MathTests.testFloor.<locals>.TestFloor.__floor__N)rLrMrNr�rrrr�	TestFloor"sr�c@seZdZdS)z(MathTests.testFloor.<locals>.TestNoFloorNrKrrrr�TestNoFloor%sr�zfloor(TestFloor())r�cWs|SrPrr�rrrr�+r�z%MathTests.testFloor.<locals>.<lambda>)	rcrdr�floorr_rFr�r\r�)rTr�r�r�rrr�	testFloors$
zMathTests.testFloorcCs�|�ttj�|�dt�dd�d�|�dt�dd�d�|�dt�dd�d	�|�d
t�dd�d�|�d
t�dd�d�|�dt�dd�d�|�t�t�td	���|�t�t�d	t���|�t�t�tt���|�ttjd	d�|�ttjt	d	�|�ttjt
d	�|�ttjt	d�|�t�dt	�d�|�t�dt	�d�|�t�dt
�d�|�t�dt
�d�|�t�dd�d�|�t�dt
�d�dS)Nzfmod(10, 1)r�rrDz
fmod(10, 0.5)rvz
fmod(10, 1.5)r�r�zfmod(-10, 1)���r{zfmod(-10, 0.5)zfmod(-10, 1.5)r�r���)rcrdr�fmodr\rjrrkrfrgrhr_rVrrr�testFmod/s(zMathTests.testFmodcs���ttj��fdd�}|dt�d�d�|dt�d�d�|d	t�d
�d�|dt�d
�d���t�t�dt���t�t�dt���t�t�t	�d��dS)NcsB||\}}\}}t||�tks*||kr>��d|||f�dS�Nz%s returned %r, expected %r�rrirZ)r[�resultr(�mantr=ZemantZeexprVrr�	testfrexpHs
�z&MathTests.testFrexp.<locals>.testfrexpz	frexp(-1)rb)rwrzfrexp(0)r�rrzfrexp(1)r)rvrzfrexp(2)r@)rvr@)
rcrdr�frexpr_rgrhrjrrk)rTr�rrVr�	testFrexpEszMathTests.testFrexpz2fsum is not exact on machines with double roundingcs\ddlm}|j�|j����fdd�}gdfdgdfdddd	d
ddgd	fd
ddgdfd
ddgdfdddgdfdddgdfdd�tdd�D�t�d�fdd�tdd�D�t�d�fd dd!gd"fd#d$d%d&gdfd'd�td(d)d*�D�d+gt�d,�fg}d-d�td�D��|��fd.d�td/�D��d/g�df�t|�D]|\}\}}zt	�
|�}WnRtk
�r�|�d0|||f�Yn*t
k
�r�|�d1|||f�YnX|�||��qBdd2lm}m}	m}
td/�D]z}d3dd4dd5d6gd7}d}td8�D],}|	d|��d3|}
||
7}|�|
��q|
|�||�}|�||�t	�
|���q�dS)9Nr)�
float_infocs�d\}}|D]Z}t�|�\}}tt�|���|�}}||krR|||K}|}n|||K}||7}qtttt|���d��|�}|dkr�d|d>}|d|t||@o�|d|d@�}||7}t�||�S)Nr�r@rrr})	rr�rF�ldexp�max�len�binr�bool)�iterableZtmantZtexprr�r=�tail�h)�etiny�mant_digrr�msumjs
"(z MathTests.testFsum.<locals>.msumrDr�r�r��0��.�++g�d~�QJr�g�d~�Q�g@Crwg��g������?Cg�9g@Cg@Cg@Cg������?Crvg�<g������?CcSsg|]}d|�qS�r�r��.0rrrr�
<listcomp>�sz&MathTests.testFsum.<locals>.<listcomp>ri�z0x1.df11f45f4e61ap+2cSsg|]}d||�qS)r�rr�rrrr��sz-0x1.62a2af1bd3624p-1r	g��ؗ�Ҝ<g��7y�ACg��7y�ACg�������?g��7y�A�g�������cSs,g|]$}d|d|dd|d�qS)r��2�4rr�rrrr��s����i�r@g�z0x1.5555555555555p+970cSsg|]}d|�qS)g333333�?r�r�r%rrrr��scs g|]}�|d�|�qS)rrr�)�termsrrr��sr�zDtest %d failed: got OverflowError, expected %r for math.fsum(%.100r)zAtest %d failed: got ValueError, expected %r for math.fsum(%.100r))�random�gauss�shuffle�i����gh�$.5���g#B����;r���)�sysr�r��min_expr"r�fromhex�append�	enumerater�fsumr�rZrfr_r�r�r�)rTr�r��test_valuesr%Zvalsr(�actualr�r�r��j�s�vr)r�r�r�r�testFsumWsj
����� ��
�zMathTests.testFsumcCsztj}|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d�|�|dd�d	�|�|dd
�d	�|�|dd�d
�d}d}d}||}||}|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�d}||}||}|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�|||�|�|�t|dd�|�t|dd�|�|td�td��d	�dS)Nrrrbr�i����x�T�i����l j9W P)�}l "o�`T"-� i�	l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k lZ��'^%#�>�;�*Q!/61^�^@gU@)r�gcdr_rcrdrO)rTr��cr�y�a�brrr�testGcd�sV��zMathTests.testGcdcCs�ddlm}ddlm}tj}tjtjt�d�t�	d�t�
d�f}tt|�d�D]8}|�
||d|��t�tdd	�|d|�D����qR|�|d
d�d�|�|d
d�d�|�||d
�|d��d�|�||d
d�|dd��|dd��|�|td�td�td�td��t�d��|�|dd�d�|�|d�d�|�|�d�|�dt�d|d���|�|ddd�|ddd��|�t��|dd�W5QRX|�t��|ddd�W5QRXdtjjd}|�ttf��|d|�W5QRX|�|t�t�|�|dt�t�|�|dt�t�|�|dt�t�|�|tt�t�|�|tt�t�|�|tt�t�|�|tt�t�|�|tt�t�|�|tt�t�|�|dt�t�|�t�|t���|�t�|dt���|�t�|td���|�t�|dt���|�t�|tt���|�t�|t���td}td�D]&}|�||g|�|t�|���qPtd�D]2}	td|	}
|�t�d |
d|
�d|
��q�dS)!Nr�r���Fractionr��@g������@rcss|]}|dVqdS)r@Nr)r�r�rrr�	<genexpr>�sz&MathTests.testHypot.<locals>.<genexpr>g(@�@�*@r�rC�
r�r}rD�%��%@r�r{r�rv)r皙�����?�string皙����@r�r�r�rs) r�r��	fractionsr�r�hypotr^r]�sqrt�gamma�sinr"r��assertAlmostEqual�sumr_r�r�rcrdr�r��
max_10_exprfr�rgrkrhrjr�	FLOAT_MAX�	FLOAT_MIN)rTr�r�rr�r%�int_too_big_for_float�	fourthmaxrr=�scalerrr�	testHypot�sl$�$,�

�$zMathTests.testHypotcCs<ddlm}ddlm}tj}tj}|�|dd�d�|�|dd�d�td	�D]h}td
�D]Z}t	dd�t|�D��}t	d
d�t|�D��}|�
|||�|tdd�t||�D����q\qP|�|dddgdddg�d�|�|t
dddg�t
dddg��d�|�|dd�d�|�|dd�d�|�||d�|d�f|d�|d�f�|d��|�||dd�|dd�f|dd�|dd�f�|dd��|�|dd �|d��|�|d!d!�d"�|�|d#d#�d"�|�dt�d|d$d%���|�dt�d|d%d$���|�|d&d'�|d(d'��Gd)d*�d*t	�}	|�||	d�d�d�|�t��|dd+d,�W5QRX|�t��|d�W5QRX|�t��|dd+d-�W5QRX|�t��|dd�W5QRX|�t��|d.d�W5QRX|�t��|d/d0�W5QRX|�t��|dd1�W5QRX|�t��|d2d3�W5QRXd4tjjd
}
|�ttf��|d|
fd5�W5QRX|�ttf��|d5d|
f�W5QRXtd6�D]6}t��t��}}|�||f|f�t||���q�td7d8d"d9ttg}tj|d:d;�D]~}tj|d:d;�D]h}d<d=�t||�D�}tttj|���rF|�|||�t�n(tttj |���r|�!t� |||����q�q�t"d}
td�D]P}|
f|}d%|}|�|||�|
t�|��|�|||�|
t�|���q�td�D]V}t#d|}d>|d:|f}d?}|�t�||�d
|�|�t�||�d
|��q�dS)@Nrr�r�)r�r�r�)r�r�r�r�)rr@r})rsr@rb�	rCcss|]}t�dd�VqdS����rCN�r��uniform�r��krrrr�<sz%MathTests.testDist.<locals>.<genexpr>css|]}t�dd�VqdSrrrrrrr�=scss|]\}}||dVqdS)r�Nr�r�ZpxZqxrrrr�@sr�r�r�r�r�)g,@r�)r�r�r�)�r)r@���r�rrr@rr�)TTFTF)TFTTF)g�*@g)@g
�rDr)r{)rD)r�r�rv)rrr)r�rvr�c@seZdZdS)zMathTests.testDist.<locals>.TNrKrrrr�Tbsr)rsrC�)�p�q)r��r)r�rr)rr@r}rs)rCrr�)rsrCrr��abcZxyzr�)r@r}�r�r{r�r})�repeatcSsg|]\}}||�qSrrrrrrr��sz&MathTests.testDist.<locals>.<listcomp>rs)rDrD)$r�r�rr�r�distrr_r"�tuplerr�zip�iterr�rcrdrfr�r�r	r�r�rrhrgrk�	itertools�product�any�maprrrjr
r)rT�D�Fr"rr%r�rrrr�valuesZdiffsr
rr=rrrr�testDist-s��&.,��������"
 zMathTests.testDistcCs�ttd��ttdd��dd�tdd�D�dd	d
dg}|D]^}|j|d��Ht�|�}|�t|�t�|�|||�|�	||d
|d
�W5QRXqB|�
t��t�d�W5QRXt�d�}|�t|�t�|�|d
�t�d�}|�t|�t�|�|d�Gdd�dt
�}t�|d��}|�t|�t�|�|d�|�
t��t�|d��W5QRXddt�d�dddg}|D]>}|j|d��&|�
t��t�|�W5QRXW5QRX�q�dS)Nr�iX>i(FcSs(g|] }tdd�D]}d||�qqS)i����(r@)r")r�r^r%rrrr��sz'MathTests.testIsqrt.<locals>.<listcomp>�<r�r}i'r�i�rQrrbTFrc@seZdZdd�Zdd�ZdS)z(MathTests.testIsqrt.<locals>.IntegerLikecSs
||_dSrPrQrSrrrrU�sz1MathTests.testIsqrt.<locals>.IntegerLike.__init__cSs|jSrPrQrVrrrrW�sz2MathTests.testIsqrt.<locals>.IntegerLike.__index__NrXrrrr�IntegerLike�sr0i��)���r�za stringz3.5y@gY@r�)�listr"�subTestr�isqrt�assertIsr�rF�assertLessEqualZ
assertLessrcrfr_�objectr�r�rd)rTr�rRr�r0Z
bad_valuesrrr�	testIsqrt�sN
����
$

�zMathTests.testIsqrtc	Cs:|�ttj�|�dt�dd�d�|�dt�dd�d�|�dt�dd�d�|�d	t�dd�d
�|�ttjdd�|�ttjd
d�|�t�dd�d�|�t�d
d�d�|�t�td�t�|�t�td�t�|�	t�
t�td���dddddfD�]0}|�t�t|�t�|�t�t|�t�|�t�d|�d�|�t�d
|�d�|�t�d|�d�|�t�d|�d�|�	t�
t�t|���|�ttjd|�|�ttjd
|�|�t�d|�d�|�t�d|�d�|�t�t|�t�|�t�t|�t�|�	t�
t�t|����qdS)Nz
ldexp(0,1)rrz
ldexp(1,1)r@zldexp(1,-1)rbrvzldexp(-1,1)r�r�r�r�i���rDr{�i+���i��ld(	� F�x:^Vr�r.)rcrdrr�r\r�r_rgrhrjrrk�rTrrrr�	testLdexp�s6zMathTests.testLdexpcCs|�ttj�|�dt�dtj�d�|�dt�d�d�|�dt�tj�d�|�dt�dd	�d
�|�dt�dd
d�d
�|�dt�dd
d�d	�|�dt�dd�d�|�ttjd�|�ttjdd�|�ttjt�|�t�t	�t	�|�
t�t�t���dS)Nzlog(1/e)rrbzlog(1)rzlog(e)z	log(32,2)r�r@rCzlog(10**40, 10)r�r.zlog(10**40, 10**20)r;z
log(10**1000)r�gO�+��@r�)
rcrdr�logr\r^rfrhr_rgrjrrkrVrrr�testLog�s�zMathTests.testLogcCsh|�ttj�dddddfD] }|�t�|�t�t|���q |�ttjd�|�t�t�t�dS)Nr@�Zi,rb)	rcrdr�log1prrrfr_rgr<rrr�	testLog1ps
zMathTests.testLog1pcCs�|�ttj�|�t�d�d�|�t�d�d�|�t�d�d�|�t�dd�d�|�t�dd	�d
�|�t�dd�d�|�ttjd
�|�ttjt�|�t�t�t	���dS)NrrDr@r�rsr�i�g��@�g�@i�g@�@r�)
rcrdr�log2r_rfrhrjrrkrVrrr�testLog2
szMathTests.testLog2r�cCs8dd�tdd�D�}dd�tdd�D�}|�||�dS)NcSsg|]}t�t�d|���qSr�)rrDr�r�rrrr�!sz+MathTests.testLog2Exact.<locals>.<listcomp>r�rCcSsg|]}t|��qSr�rr�rrrr�"s)r"r_)rTr�r(rrr�
testLog2ExactszMathTests.testLog2ExactcCs�|�ttj�|�dt�d�d�|�dt�d�d�|�dt�d�d�|�d	t�dd
�d�|�ttjd�|�ttjdd
�|�ttjt�|�t�t	�t	�|�
t�t�t���dS)
Nz
log10(0.1)皙�����?rbzlog10(1)rrz	log10(10)r�zlog10(10**1000)r�g@�@r�)
rcrdr�log10r\rfrhr_r>rgrjrrkrVrrr�	testLog10%szMathTests.testLog10cs���ttj��fdd�}|dt�d�d�|dt�d�d���t�t�d	tf���t�t�d
tf�t�t�}��t�	|d����t�	|d��dS)
NcsF||\}}\}}t||�tks.t||�rB��d|||f�dSr�r�)r[r�r(Zv1Zv2Ze1Ze2rVrr�testmodf4s
�z$MathTests.testModf.<locals>.testmodfz	modf(1.5)r�)rvr�z
modf(-1.5)r�)rwr�rDr{rr)
rcrdr�modfr_rgrhrkrjr)rTrKZmodf_nanrrVr�testModf1s
zMathTests.testModfcCs�|�ttj�|�dt�dd�d�|�dt�dd�d�|�dt�dd�d�|�dt�dd�d	�|�t�td�t�|�t�td�t�|�t�dt�d
�|�t�dt�d
�|�t�	t�t
d���|�t�	t�dt
���|�t�	t�dt
���|�t�dt
�d�|�t�dt�d�|�t�dd�d�|�t�dd
�d�|�t�dd�d�|�t�dd�d
�|�t�dd�d
�|�ttjdd�|�ttjdd�|�ttjdd�|�ttjdt�|�t�	t�dt
���|�t�tt�t�|�t�td�t�|�t�td
�t�|�t�td�t�|�t�td�d
�|�t�td�d
�|�t�td�d�|�t�td�d�|�t�td�d�|�t�tt�d�|�t�	t�tt
���|�t�dt�d�|�t�dd�d�|�t�dd
�d�|�t�dd�d�|�t�dd�d
�|�t�dd�d
�|�ttjdd�|�ttjdd�|�ttjdd�|�ttjdt�|�t�	t�dt
���|�t�tt�t�|�t�td�t�|�t�td
�t�|�t�td�t�|�t�td�d
�|�t�td�d
�|�t�td�d�|�t�td�d�|�t�td�d�|�t�tt�d�|�t�	t�tt
���|�t�dt�d
�|�t�dd�d�|�ttjdd
�|�t�dd�d
�|�t�dd�d
�|�t�dd�d
�|�t�dd�d
�|�ttjdd�|�t�dd�d�|�t�dt�d
�|�t�	t�dt
���|�t�d
t�d
�|�t�d
d�d
�|�t�d
d
�d
�|�t�d
d�d
�|�t�d
d�d
�|�t�d
d�d
�|�t�d
d�d
�|�t�d
d�d
�|�t�d
d�d
�|�t�d
t�d
�|�t�d
t
�d
�|�t�d
d�d
�|�t�dd�d
�|�t�t
d�d
�|�t�d
d�d
�|�t�dd�d
�|�t�t
d�d
�|�ttjdd
�|�ttjdd�|�t�dt�d�|�t�dt�d�|�t�dt�t�|�t�dt�t�|�t�dt�t�|�t�dt�t�|�t�dt�d�|�t�dt�d�|�t�dt�t�|�t�dt�t�|�t�dt�d�|�t�dt�d�|�t�dt�d�|�t�dt�d�|�t�dt�t�|�t�dt�t�|�dt�dd�d�|�d t�dd�d!�|�d"t�dd
�d�|�d#t�dd�d
�|�d$t�dd�d
�|�d%t�dd�d&�|�d't�dd�d(�|�d)t�dd�d*�|�ttjdd&�|�ttjdd	�dS)+Nzpow(0,1)rrzpow(1,0)zpow(2,1)r@z	pow(2,-1)rbrvr�rDr�r|r�r{g�rzr�r�g.�g�������gffffff�?r���������?rHg��������g�������g�������gffffff��z	(-2.)**3.g �z	(-2.)**2.r�z	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.rwz
(-2.)**-2.g�?z
(-2.)**-3.g��)rcrdr�powr\r_rgrhrjrrkrfrVrrr�testPowDs�zMathTests.testPowcCsr|�ttj�|�dt�d�tj�|�dt�d�tjd�|�dt�d�tjd�|�d	t�d
�d
�dS)Nzradians(180)�zradians(90)r@r@zradians(-45)i���rsz
radians(0)r)rcrdr�radiansr\r]rVrrr�testRadians�s
zMathTests.testRadiansc0s�ddlm���fdd�}ddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4g0}|D]t}�j|d5��^|��\}}}t�|�}t�|�}t�|�}	||||	�t�||�}
��|
�	�|	�	��W5QRXq�t�d6�}t
d7d8�D]h}|dk�r�q||}t
d9�D]B}
|
|}t�||�}
||||
�t�||�}
||||
��q.�qtd:d;d<d=tt
fD]*}��t�t|����t�|t���q�d>D].}��t�|t
�|���t�|t�|��q�td=d;d:d?t
fD]�}��t��t�t
|�W5QRX��t��t�t|�W5QRX��t��t�|d:�W5QRX��t��t�|d;�W5QRX�q�dS)@Nrr�cs��|��|��|�}}}��t|�t|d��|||}��|t|��t|�t|d�kr|��|dt|d��dS)Nr@)r7rr_rF)rr��rZfxZfy�frr�r�rTrr�
validate_spec�sz.MathTests.testRemainder.<locals>.validate_specz-4.0 1 -0.0z-3.8 1  0.8z-3.0 1 -0.0z-2.8 1 -0.8z-2.0 1 -0.0z-1.8 1  0.8z-1.0 1 -0.0z-0.8 1 -0.8z-0.0 1 -0.0z 0.0 1  0.0z 0.8 1  0.8z 1.0 1  0.0z 1.8 1 -0.8z 2.0 1  0.0z 2.8 1  0.8z 3.0 1  0.0z 3.8 1 -0.8z 4.0 1  0.0z&0x0.0p+0 0x1.921fb54442d18p+2 0x0.0p+0z?0x1.921fb54442d18p+0 0x1.921fb54442d18p+2  0x1.921fb54442d18p+0z?0x1.921fb54442d17p+1 0x1.921fb54442d18p+2  0x1.921fb54442d17p+1z?0x1.921fb54442d18p+1 0x1.921fb54442d18p+2  0x1.921fb54442d18p+1z?0x1.921fb54442d19p+1 0x1.921fb54442d18p+2 -0x1.921fb54442d17p+1z?0x1.921fb54442d17p+2 0x1.921fb54442d18p+2 -0x0.0000000000001p+2z00x1.921fb54442d18p+2 0x1.921fb54442d18p+2  0x0p0z?0x1.921fb54442d19p+2 0x1.921fb54442d18p+2  0x0.0000000000001p+2z?0x1.2d97c7f3321d1p+3 0x1.921fb54442d18p+2  0x1.921fb54442d14p+1z?0x1.2d97c7f3321d2p+3 0x1.921fb54442d18p+2 -0x1.921fb54442d18p+1z?0x1.2d97c7f3321d3p+3 0x1.921fb54442d18p+2 -0x1.921fb54442d14p+1z?0x1.921fb54442d17p+3 0x1.921fb54442d18p+2 -0x0.0000000000001p+3z00x1.921fb54442d18p+3 0x1.921fb54442d18p+2  0x0p0z?0x1.921fb54442d19p+3 0x1.921fb54442d18p+2  0x0.0000000000001p+3z?0x1.f6a7a2955385dp+3 0x1.921fb54442d18p+2  0x1.921fb54442d14p+1z?0x1.f6a7a2955385ep+3 0x1.921fb54442d18p+2  0x1.921fb54442d18p+1z?0x1.f6a7a2955385fp+3 0x1.921fb54442d18p+2 -0x1.921fb54442d14p+1z?0x1.1475cc9eedf00p+5 0x1.921fb54442d18p+2  0x1.921fb54442d10p+1z?0x1.1475cc9eedf01p+5 0x1.921fb54442d18p+2 -0x1.921fb54442d10p+1z 1  0.c  0.4z-1  0.c -0.4z 1 -0.c  0.4z-1 -0.c -0.4z 1.4  0.c -0.4z-1.4  0.c  0.4z 1.4 -0.c -0.4z-1.4 -0.c  0.4z$0x1.dp+1023 0x1.4p+1023  0x0.9p+1023z$0x1.ep+1023 0x1.4p+1023 -0x0.ap+1023z$0x1.fp+1023 0x1.4p+1023 -0x0.9p+1023)�casez1p-1074i���r�rDr{r�rz)rzr{rDr|r|)rr�r4r3rr�r�	remainderr_�hexr"rkrhrg�assertIsNaNrcrf)rTrWZ	testcasesrXZx_hexZy_hexZexpected_hexrr�r(r�Ztinyr�mrRrrVr�
testRemainder�s��;


 

zMathTests.testRemaindercCs�|�ttj�|�dt�d�d�|�dt�tjd�d�|�dt�tjd�d�z0|�t�t�t���|�t�t�t	���Wn4t
k
r�|�t
tjt�|�t
tjt	�YnX|�t�t�t���dS)Nzsin(0)rz	sin(pi/2)r@rz
sin(-pi/2)rb)rcrdrrr\r]rjrrgrhrfrkrVrrr�testSinaszMathTests.testSincCs�|�ttj�|�dt�d�d�|�dt�d�dt�d�dd�|�dt�d�t�d�d�|�t�t�t�|�t�t�t�|�	t�
t�t���dS)Nzsinh(0)rzsinh(1)**2-cosh(1)**2rr@rbzsinh(1)+sinh(-1))rcrdr�sinhr\r�r_rgrhrjrrkrVrrr�testSinhns&zMathTests.testSinhcCs�|�ttj�|�dt�d�d�|�dt�d�d�|�dt�d�d�|�t�t�t�|�ttjd�|�ttjt�|�	t�
t�t���dS)	Nzsqrt(0)rzsqrt(1)rzsqrt(4)rsr@rb)rcrdrrr\r_rgrfrhrjrrkrVrrr�testSqrtwszMathTests.testSqrtcCs�|�ttj�|�dt�d�d�|�dt�tjd�d�|�dt�tjd�d�z0|�t�t�t���|�t�t�t	���Wn,|�t
tjt�|�t
tjt	�YnX|�t�t�t���dS)Nztan(0)rz	tan(pi/4)rsrz
tan(-pi/4)rb)rcrdr�tanr\r]rjrrgrhrfrkrVrrr�testTan�szMathTests.testTancCs�|�ttj�|�dt�d�d�|jdt�d�t�d�dtd�d�|�dt�t�d�|�dt�t�d�|�t�	t�t
���dS)	Nztanh(0)rztanh(1)+tanh(-1)rrbr�z	tanh(inf)z
tanh(-inf))rcrdr�tanhr\rrgrhrjrrkrVrrr�testTanh�s�zMathTests.testTanhcCs8|�t�d�d�|�t�dt�d��t�dd��dS)Nr{r�)r_rrer�rVrrr�testTanhSign�s
�zMathTests.testTanhSigncCs&|�t�d�d�|�t�d�d�|�tt�d��t�|�tt�d��t�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d	�d
�Gdd�dt�}Gd
d�dt�}|�t�|��d�|�ttj�|�ttjdd�|�ttj|��dS)Nrrbr�r�g����?g�����g�!��rg-���?Y�i����c@seZdZdd�ZdS)z'MathTests.test_trunc.<locals>.TestTrunccSsdS)N�rrVrrr�	__trunc__�sz1MathTests.test_trunc.<locals>.TestTrunc.__trunc__N)rLrMrNrirrrr�	TestTrunc�srjc@seZdZdS)z)MathTests.test_trunc.<locals>.TestNoTruncNrKrrrr�TestNoTrunc�srkrhr@)r_r�truncr�rFr8rcrd)rTrjrkrrr�
test_trunc�s zMathTests.test_trunccCs�|�t�d��|�t�d��|�t�d��|�t�d��|�t�td���|�t�td���|�t�td���dS)NrDr{r�r�rrr)rjr�isfinite�assertFalserrVrrr�testIsfinite�szMathTests.testIsfinitecCsx|�t�td���|�t�td���|�t�td�d��|�t�td���|�t�d��|�t�d��dS)Nrz-nanrrDr�)rjrrrrorVrrr�	testIsnan�szMathTests.testIsnancCs�|�t�td���|�t�td���|�t�d��|�t�d��|�t�td���|�t�d��|�t�d��dS)Nrrg�g�rrDr�)rjrrrrorVrrr�	testIsinf�szMathTests.testIsinfcCs|�t�tj��dSrP)rjrrrrVrrr�test_nan_constant�szMathTests.test_nan_constantcCsJ|�t�tj��|�tjd�|�tjtd��|�tjtd��dS)NrDrr)rjrrrZ
assertGreaterr_rrVrrr�test_inf_constant�szMathTests.test_inf_constantzrequires verbose modecCs�zt�d�}Wn|�d�YnX|dkr8|�d�zt�d�}Wntk
rZYnX|�d�zt�d�}Wntk
r�YnX|�d�dS)	Ni6e�z6underflowing exp() should not have raised an exceptionrz)underflowing exp() should have returned 0iʚ;z.overflowing exp() didn't trigger OverflowErrorr�z sqrt(-1) didn't raise ValueError)rr=rZr�rrf)rTrrrr�test_exceptions�s 

zMathTests.test_exceptionsc	Csldh}d}tjdkrNt��d}zttt|�d���}Wntk
rLYnXd}g}tt	�D]�\}}}}	}
}}|	dks^|dkr�q^|dkr�q^|dk	r�|dkr�||kr�q^t
t|�}
d	|ks�d
|kr�d}
nd|kr�d
}
z|
|�}Wn0tk
r�d}Yntk
�rd
}YnXd\}}t
|
|||�}|dk�r2q^|�||||�}|�|�q^|�rh|�dd�|��dS)NZtan0064�darwinr�.�{}: {}({!r}): {}rD)ZrectZpolar)r�rC�invalid�divide-by-zerorf�overflowr��rCrDzFailures in test_testfile:
  �
  )r��platformZmac_verr#r)rFr3rfrB�	test_file�getattrrr�rIr'r�rZ�join)rTZ
SKIP_ON_TIGERZosx_versionZversion_txtrH�failuresr9r:�arZaiZer�eir>�funcr�r*r+rG�msgrrr�
test_testfilesN



�zMathTests.test_testfilec	Cs,d}g}tt�D]�\}}}}}tt|�}d|ks8d|kr>d}nd|krJd}z||�}	Wn.tk
rnd}	Yntk
r�d}	YnXd\}
}|dkr�d	}
n>|d
kr�d}n0|dkr�|d
kr�|dkr�d}
n|dkr�d}
nd}
t||	|
|�}|dkr�q|�||||�}
|�|
�q|�r(|�	dd�
|��dS)Nrxryrzrfr{r�r|rr �lgammagV瞯�<�erfcrDr�r��$@r�r�zFailures in test_mtestfile:
  r})r?�math_testcasesr�rrfr�rIr'r�rZr�)rTrHr�r9r:r;r(r>r�r)r*r+rGr�rrr�test_mtestfile:sD

�zMathTests.test_mtestfilec
Csvtj}|�|g�d�|�|gdd�d�|�|ttdd���d�|�|tttdd����d�|�|tdd�dd�d�|�|ddd	d
dg�d�|�|dd
dddg�d�|�|ddd	ddg�d�|�|dd
dd
dg�d�|�|dddddg�d�|�|dddddg�td��|�t|�|�t|d�|�t|dddg�|�t|dddgd�|�t|ddgd�t	d�t	d�g}|�t||t	d��|�t|dgdgd	gg�|�t|dd	ig�|�t|dd	igddd	i�|�t|dgdgd	ggg�|�t��|ddgddg�W5QRX|�|dddd	g�d�|�|dddd	g�d�|�|ddd	dg�d�d0d d!�}tdd"�}|�||�||��td#d$�}|�||�||��td%d&�}|�||�d�d'd(�tdd&�D�}|�||�||��d)d(�td%d$�D�}|�||�||��d*d(�td%d&�D�}|�
||��|�
|ddd	td+�dd	g��|�
|ddtd+�dd	g��|�
|dtd+�dd	g��|�
|dtd,�td+�d	g��|�
|dtd-�td+�d	g��|�
|dtd+�td,�d	g��|�
|dtd+�td-�d	g��|�|ddd	td,�d.d
g�td-��|�|ddd	td-�d.d
g�td,��|�
|dddtd,�d.d
g��|�
|dddtd-�d.d
g��|�
|ddd	td,�d.dd	g��|�
|ddd	td-�d.ddg��|�t|ddd	d
dd/g��t�|�t|dd
d	d
dd/g��t�|�t|tdd"���t�|�t|tdd"�dd��t�|�t|dt
�d
�d	d
dd/g��t
j�dS)1NrrC)rr@ri�r�i_7r}rsr�r�r�r�r�r�r�lr�r�r�r���a�cr��br r:r.rcSs|D]}||9}q|SrPr)r�r�elemrrr�_naive_prod�s
z(MathTests.test_prod.<locals>._naive_prodi'i���rbi���r�cSsg|]}t|��qSrrF�r�rrrrr��sz'MathTests.test_prod.<locals>.<listcomp>cSsg|]}t|��qSrrFr�rrrr��scSsg|]}t|��qSrrFr�rrrr��srrrr2r)r)r�prodr_r3r"r%rrcrd�	bytearrayr\r�rFr�r�)rTr�r,r�r�rrr�	test_prod}sz



$$     �zMathTests.test_prodc	CsLtj}tj}td�D]8}t|d�D]&}|�|||�||�|||��q$qtdd�D]F}td|�D]6}|�|||�||d|d�|||d|��qfqXtdd�D]>}|�||d�d�|�||d�|�|�|||�||��q�td�D].}|�||�||��|�||d�||��q�|�t|dd�|�t|dt�d��|�t|dd�|�t|dd�|�t|t�d�d�|�t|d	d�|�t|�|�t|ddd
�|�t|�|�t	|dd�|�t	|dd
d�|�t	|dd�|�t	|ddd
�|�|dd�d�|�|ddd
�d�dd
}|�||d�d�|�||d�|�|�||d�||d�t
jdd��r�|�t|||�dD]2\}}|�|||�d�|�
t|||��t��q�|�|td�td��d�|�|td�td��d�td
�D]B}|�
t|td�t|���t�|�
t|td�t|���t��qdS)Nr�rrr r�r��1r��10r}rbr@r�T�Zcpython�)TT)TF)FFrC)r�permr�r"r_rcrdr�r�rfr�check_impl_detailr�r6r�rFrJrO)rTr�r�rrrrr�testPerm�s\�6zMathTests.testPermc
Cs�tj}tj}td�D]@}t|d�D].}|�|||�||�||�|||��q$qtdd�D]B}td|�D]2}|�|||�||d|d�||d|��qnq`td�D](}|�||d�d�|�|||�d�q�tdd�D],}|�||d�|�|�|||d�|�q�td�D]6}t|d�D]"}|�|||�||||���q&�q|�t|dd�|�t|dt�d��|�t|dd�|�t|dd�|�t|t�d�d�|�t|d	d�|�t|d�|�t|ddd
�|�t|�|�t	|dd�|�t	|ddd�|�t	|dd�|�t	|ddd�|�|dd�d�|�|ddd�d�dd}|�||d�d�|�||d�|�|�||d�||dd�|�|||�d�|�|||d�|�|�|||d�||dd�t
jd
d��r|�t|||d�dD]2\}}|�|||�d�|�
t|||��t��q|�|td�td��d�|�|td�td��d�td
�D]B}|�
t|td�t|���t�|�
t|td�t|���t��q�dS)Nr�rrr@r�r�r�r�r�r}rbr�Tr�r�rC)r�combr�r"r_rcrdr�r�rfrr�r�r6r�rFrJrO)rTr�r�rrrrr�testCombsf�
2$"zMathTests.testCombc
Cs`Gdd�d�}tjtjtjfD]<}|�}|�t��|d|�W5QRX|�t|dd��qdS)Nc@seZdZdd�ZdS)z$MathTests.test_issue39871.<locals>.FcSsd|_dddS)NTrr)�	convertedrVrrr�	__float__]sz.MathTests.test_issue39871.<locals>.F.__float__N)rLrMrNr�rrrrr+\sr+znot a numberr�F)rr~r�rZrcrdror�)rTr+r�r�rrr�test_issue39871YszMathTests.test_issue39871cCst�|�s|�d�|��dS)NzExpected a NaN, got {!r}.)rrrZr'rSrrrr\ks
zMathTests.assertIsNaNN)rCrD)ErLrMrNr\rarlrnrprrruryrr�rr�r�r�r�r�r�r�r�rZcpython_onlyr�r�r�r��unittestZskipIf�HAVE_DOUBLE_ROUNDINGr�r�rr-r9r=r?rBrEZrequires_mac_verrGrJrMrPrSr^r_rarbrdrfrgrmrprqrrrsrtZ
skipUnlessrrur�r�r�r�r�r�r\rrrrrY�s�


		=
!

�^+Jq5 



	

	
		




8
BV@FrYc@s�eZdZejZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) �IsCloseTestscOs*|j|j||f|�|�d||fd�dS)Nz%s and %s should be close!�r�)rj�isclose�rTr�r�r��kwargsrrr�
assertIsClosess
�zIsCloseTests.assertIsClosecOs*|j|j||f|�|�d||fd�dS)Nz%s and %s should not be close!r�)ror�r�rrr�assertIsNotClosews
�zIsCloseTests.assertIsNotClosecOs&|D]\}}|j||f|�|�qdSrP)r��rTZexamplesr�r�r�r�rrr�assertAllClose{szIsCloseTests.assertAllClosecOs&|D]\}}|j||f|�|�qdSrP)r�r�rrr�assertAllNotCloseszIsCloseTests.assertAllNotClosec	CsR|�t��|jdddd�W5QRX|�t��|jddddd�W5QRXdS)Nrg0��.�+���rel_tolr�g _�©r�r+)rcrfr�rVrrr�test_negative_tolerances�sz%IsCloseTests.test_negative_tolerancescCs$ddddddg}|j|ddd�dS)	N)r�r�)�N���@ir�)�;���r�)i90g��@)rDr{)�NFr�rDr��r�)rTZidentical_examplesrrr�test_identical�s�zIsCloseTests.test_identicalcCs*dddg}|j|dd�|j|dd�dS)N)g�חAg�חA)g:�0�yE�g��n�yE�)g�	ѭ��?gfN�ӭ��?�:�0�yE>r���&�.>�r�r�)rTZeight_decimal_places_examplesrrr�test_eight_decimal_places�s�z&IsCloseTests.test_eight_decimal_placescCs*dddg}|j|dd�|j|dd�dS)N)r�rD)g��&�.�rD)gu�?j�/ʠrDrNr�r�r�)r�r�)rTZnear_zero_examplesrrr�test_near_zero�s�zIsCloseTests.test_near_zerocCs<|�tt�|jttdd�|�tt�|jttdd�dS)NrDr�)r�rgrhrVrrr�test_identical_infinite�sz$IsCloseTests.test_identical_infinitecCsRttftdfdtfttfttfttftdfdtftdfdtfg
}|j|dd�dS)Nr�r�g������g�������?r�)rkrgrhr�)rTZnot_close_examplesrrr�test_inf_ninf_nan�s�zIsCloseTests.test_inf_ninf_nancCs4dddg}|j|dd�dddg}|j|dd�dS)	N)r�r�)�333333�r�)�Y��n��r�rDr�)r�g�?)g�������?r�)gZb���tigTb���tir�)rTZzero_tolerance_close_examplesZ!zero_tolerance_not_close_examplesrrr�test_zero_tolerance�s��z IsCloseTests.test_zero_tolerancecCs|jddgdd�dS)N)rr�)r�rrHr�r�rVrrr�test_asymmetry�szIsCloseTests.test_asymmetrycCs(ddg}|j|dd�|j|dd�dS)N)����)i�[i�[r�r�r�r�)rTZinteger_examplesrrr�
test_integers�s
�zIsCloseTests.test_integerscCshddlm}|d�|d�f|d�|d�f|d�|d�f|d	�|d
�fg}|j|dd�|j|d
d�dS)Nrr�z
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20r�r�r�)r�r�r�r�)rTr�Zdecimal_examplesrrr�
test_decimals�s�zIsCloseTests.test_decimalscCsdddlm}|dd�d|d�f|d�|d�f|dd�|dd�fg}|j|dd	�|j|d
d	�dS)Nrr�rr�r�l �	(q�e�	r;r�r�r�)rr�r�r�)rTr�Zfraction_examplesrrr�test_fractions�s�zIsCloseTests.test_fractionsN)rLrMrNrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�ps 

r�cCsNddlm}t��}|�t�t��|�t�t��|�|d��t|�dS)Nr)�DocFileSuitezieee754.txt)	�doctestr�r�Z	TestSuiteZaddTestZ	makeSuiterYr�r)r�Zsuiterrr�	test_main�sr�)rCrD)8Ztest.supportrrr�testrr�r&r�r�osr~r�r
r�rirrkrgrhr�r�r
�minrrr�r�rL�argv�file�__file__�path�dirname�curdirZtest_dirr�r�rrrrrr&r-r?rBrIrFrJr8rOZTestCaserYr�r�rrrr�<module>sh-
-~{


F1le Man4ger