Your IP : 216.73.217.129


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_math.cpython-35.opt-2.pyc



���]
��@sddlmZmZmZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZdZ
ed�Zed�Zed�Zdd	f\ZZeedd
kZedkr�e
jdZneZejje�p
ejZejjed�Zejjed
�Zdd�Z ddd�Z!dd�Z"dd�Z#dd�Z$dddd�Z%dd�Z&dd �Z'Gd!d"�d"e(�Z)Gd#d$�d$ej*�Z+Gd%d&�d&ej*�Z,d'd(�Z-edkre-�dS))�)�run_unittest�verbose�requires_IEEE_754)�supportNg�h㈵��>�nan�infz-infg��7y�ACg�):��@��__main__zmath_testcases.txtzcmath_testcases.txtcCs=tjdtjd|��d}|dkr9|d}|S)Nz<qz<dr��?l)�struct�unpack�pack)�x�n�r�./opt/alt/python35/lib64/python3.5/test_math.py�to_ulps!s
"r�cCs<t|�t|�}t|�|kr,dSdj||�S)Nz*error = {} ulps; permitted error = {} ulps)r�abs�format)�expected�gotZulpsZ
ulps_errorrrr�
ulps_check0s
	rcCs |rdt||d@�SdS)N�r)�count_set_bits)rrrrrQsrcCsT||d?}|sdS|dkr(|S||dB}t||�t||�SdS)Nr)�partial_product)�start�stopZ
numfactorsZmidrrrrUsrcCsxd}}xYtt|j���D]?}|t||d?ddB||?ddB�9}||9}q#W||t|�>S)Nr)�reversed�range�
bit_lengthrr)r�innerZouter�irrr�py_factorialcs

/r$gV瞯�<g
cCshtj|�r||krdS||}t||t|��}t|�|krXdSdj||�S)Nz error = {}; permitted error = {})�math�isinf�maxrr)rr�rel_err�abs_err�errorZpermitted_errorrrr�	acc_checkns
	r+c
cs�t|���}x�|D]�}d|krA|d|jd��}|j�sPq|jd�\}}|j�\}}}|j�}|d}	|dd�}
||t|�t|	�|
fVqWWdQRXdS)Nz--z->rr)�open�index�strip�split�float)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagsrrr�parse_mtestfile�s	

r<c
cs�t|���}x�|D]�}|jd�s|j�r;q|jd�\}}|j�\}}}}|j�}	|	d|	d}
}|	dd�}||t|�t|�t|
�t|�|fVqWWdQRXdS)Nz--z->rrr
)r,�
startswithr.r/r0)
r1r2r3r4r5r6r7Zarg_realZarg_imagr9Zexp_realZexp_imagr;rrr�parse_testfile�s
r>c@s(eZdZdd�Zdd�ZdS)�MyIndexablecCs
||_dS)N)�value)�selfr@rrr�__init__�szMyIndexable.__init__cCs|jS)N)r@)rArrr�	__index__�szMyIndexable.__index__N)�__name__�
__module__�__qualname__rBrCrrrrr?�sr?c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
dd��Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zejd#d$��Zd%d&�Zd'd(�Zd)d*�Ze
ejed+�d,d-���Zd.d/�Zd0d1�Z d2d3�Z!d4d5�Z"d6d7�Z#e
d8d9��Z$e
ej%d:d;�d<d=���Z&d>d?�Z'd@dA�Z(dBdC�Z)dDdE�Z*dFdG�Z+dHdI�Z,dJdK�Z-dLdM�Z.dNdO�Z/e
eje0j1dP�dQkdR�dSdT���Z2dUdV�Z3dWdX�Z4dYdZ�Z5d[d\�Z6e
d]d^��Z7e
d_d`��Z8ej9e:da�dbdc��Z;e
ddde��Z<e
dfdg��Z=dhS)i�	MathTestscCs4t||�tkr0|jd|||f�dS)Nz%s returned %r, expected %r)r�eps�fail)rA�namer@rrrr�ftest�s	zMathTests.ftestcCs0|jdtjd�|jdtjd�dS)N�pigJ�M�!	@�egB�
�@)rKr%rLrM)rArrr�
testConstants�szMathTests.testConstantscCs�|jttj�|jdtjd�tj�|jdtjd�tjd�|jdtjd�d�|jttjt�|jttjt�|j	tj
tjt���dS)Nzacos(-1)rzacos(0)rr
zacos(1)���)�assertRaises�	TypeErrorr%�acosrKrL�
ValueError�INF�NINF�
assertTrue�isnan�NAN)rArrr�testAcos�s#zMathTests.testAcoscCs�|jttj�|jdtjd�d�|jdtjd�d�|jttjd�|jttjd�|jtjt�t�|jttjt�|j	tj
tjt���dS)Nzacosh(1)rrzacosh(2)r
g5�qB�?rO)rPrQr%�acoshrKrS�assertEqualrTrUrVrWrX)rArrr�	testAcosh�szMathTests.testAcoshcCs�|jttj�|jdtjd�tjd�|jdtjd�d�|jdtjd�tjd�|jttjt�|jttjt�|j	tj
tjt���dS)Nzasin(-1)rr
zasin(0)rzasin(1)rO)rPrQr%�asinrKrLrSrTrUrVrWrX)rArrr�testAsin�s$#zMathTests.testAsincCs�|jttj�|jdtjd�d�|jdtjd�d�|jdtjd�d�|jtjt�t�|jtjt�t�|jtj	tjt
���dS)	Nzasinh(0)rzasinh(1)rg'�ya64�?z	asinh(-1)rOg'�ya64�)rPrQr%�asinhrKr[rTrUrVrWrX)rArrr�	testAsinh�szMathTests.testAsinhcCs�|jttj�|jdtjd
�tjd�|jdtjd�d�|jdtjd�tjd�|jdtjt�tjd�|jd	tjt�tjd�|jtj	tjt
���dS)Nzatan(-1)rrzatan(0)rzatan(1)z	atan(inf)r
z
atan(-inf)rO)rPrQr%�atanrKrLrTrUrVrWrX)rArrr�testAtan�s$##$zMathTests.testAtancCs�|jttj�|jdtjd�d�|jdtjd�d�|jdtjd�d	�|jttjd�|jttjd
�|jttjt�|jttjt�|j	tj
tjt���dS)Nzatanh(0)rz
atanh(0.5)g�?g�z��?zatanh(-0.5)rg�g�z��rO)rPrQr%rarK�atanhrSrTrUrVrWrX)rArrr�	testAtanh�szMathTests.testAtanhcCs�|jttj�|jdtjd%d�tjd�|jdtjd&d�tjd�|jdtjdd�d�|jdtjdd�tjd�|jd	tjdd�tjd�|jd
tjdt�tj�|jdtjdd'�tj�|jdtjdd(�tj�|jtjdd�d�|jtjdd
�d�|jtjdt�d�|j	tj
tjdt���|jdtjd)t�tj�|jdtjd*d+�tj�|jdtjd,d-�tj�|jtjd.d�d/�|jtjd0d
�d1�|jtjd2t�d3�|j	tj
tjd4t���|jdtjtt�tjdd�|jdtjtd5�tjd�|jdtjtd6�tjd�|jdtjtd�tjd�|jdtjtd
�tjd�|jdtjtt�tjd�|j	tj
tjtt���|jdtjtt�tjdd�|jdtjtd7�tjd�|jdtjtd8�tjd�|jdtjtd�tjd�|jdtjtd
�tjd�|jdtjtt�tjd�|j	tj
tjtt���|jdtjd
t�tj�|jd tjd
d9�tjd�|jd!tjd
d�tjd�|jtjd
t�d�|j	tj
tjd
t���|jd"tjd:t�tj�|jd#tjd;d<�tjd�|jd$tjd=d�tjd�|jtjd>t�d?�|j	tj
tjd@t���|j	tj
tjtt���|j	tj
tjtdA���|j	tj
tjtdB���|j	tj
tjtd���|j	tj
tjtd
���|j	tj
tjtt���|j	tj
tjtt���dS)CNzatan2(-1, 0)rrr
zatan2(-1, 1)rzatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(0., -inf)gzatan2(0., -2.3)gffffff@zatan2(0., -0.)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.)rOrOgffffff�g�g�g�gffffff�g�g�g�g�g�g�g�g�g�gffffff�g�gffffff�g�g�gffffff�gffffff�g�gffffff�gffffff�g�gffffff�gffffff�g�)rPrQr%�atan2rKrLrUr[rTrVrWrX)rArrr�	testAtan2sf''&&""""###"*&&&&&"+'''''""&&"#''"""""""zMathTests.testAtan2cCs�|jttj�|jtttjd���|jdtjd�d�|jdtjd�d�|jdtjd�d�|jd	tjd�d
�|jdtjd�d�|jdtjd�d�Gd
d�d�}Gdd�d�}|jdtj|��d�|jttj|��|�}dd�|_|jttj|�|jttj|d
�dS)Ng�?z	ceil(0.5)rz	ceil(1.0)g�?z	ceil(1.5)g�?r
z
ceil(-0.5)rz
ceil(-1.0)z
ceil(-1.5)c@seZdZdd�ZdS)z$MathTests.testCeil.<locals>.TestCeilcSsdS)N�*r)rArrr�__ceil__Msz-MathTests.testCeil.<locals>.TestCeil.__ceil__N)rDrErFrirrrr�TestCeilLsrjc@seZdZdS)z&MathTests.testCeil.<locals>.TestNoCeilN)rDrErFrrrr�
TestNoCeilOsrkzceil(TestCeil())rhcWs|S)Nr)�argsrrr�<lambda>Usz$MathTests.testCeil.<locals>.<lambda>g�g�rOg��rO)	rPrQr%�ceilr[�int�typerKri)rArjrk�trrr�testCeil?s 	zMathTests.testCeilcCs�|jtjdd�d�|jtjdd�d�|jtjdd	�d
�|jtjdd�d�|jtjdd�d�|jttj�|jtjdd�d�|jtjdd
�d�|jtjtd�t�|jtjtd�t�|jtjtd�t�|jtjtd�t�|jtjdt�d�|jtjdt�d�|jtjtt�t�|jtjtt�t�|jtjtt�t�|jtjtt�t�|jtjtjt	d���|jtjtjt	t���|jtjtjt	t���|jtjtjt	t	���|jtj
tjtt	���|jttjdt	��d�dS)Nrrhg�?greg@g@g@i���g�g�g�g�g�g�g�g�)r[r%�copysignrPrQrTrUrVrWrXr&r)rArrr�testCopysignYs0"""""zMathTests.testCopysigncCs;|jttj�|jdtjtjd�d�|jdtjd�d�|jdtjtjd�d�|jdtjtj�d�yB|jtjtjt���|jtjtjt	���Wn>t
k
r|jt
tjt�|jt
tjt	�YnX|jtjtjt���dS)	Nz
cos(-pi/2)r
rzcos(0)rz	cos(pi/2)zcos(pi)rO)rPrQr%�cosrKrLrVrWrTrUrSrX)rArrr�testCos{s$##
zMathTests.testCoscCs�|jttj�|jdtjd�d�|jdtjd�dtjd�dd�|jtjt�t�|jtjt�t�|jtj	tjt
���dS)Nzcosh(0)rrzcosh(2)-2*cosh(1)**2r
rO)rPrQr%�coshrKr[rTrUrVrWrX)rArrr�testCosh�s1zMathTests.testCoshcCs}|jttj�|jdtjtj�d�|jdtjtjd�d�|jdtjtjd�d	�dS)
Nzdegrees(pi)g�f@z
degrees(pi/2)r
g�V@zdegrees(-pi/4)rg�F@g�F�)rPrQr%�degreesrKrL)rArrr�testDegrees�s#zMathTests.testDegreescCs�|jttj�|jdtjd�dtj�|jdtjd�d�|jdtjd�tj�|jtjt�t�|jtjt�d�|j	tj
tjt���dS)Nzexp(-1)rzexp(0)rzexp(1)grO)rPrQr%r:rKrMr[rTrUrVrWrX)rArrr�testExp�s#zMathTests.testExpcCsk|jttj�|jdtjd�d�|jdtjd�d�|jdtjd�d�dS)Nzfabs(-1)rzfabs(0)rzfabs(1)rO)rPrQr%�fabsrK)rArrr�testFabs�szMathTests.testFabscCs(|jtjd�d�|jtjd�d�d}xxtdd�D]g}||9}|jtj|�|�|jtjt|��|�|jtj|�t|��qHW|jttjd	�|jttjd
�|jttjd�|jttjd
�|jttjtj�dS)Nrrgi�g�?�
�dg}Ô%�I�TrOg�lDG��d�r���Y�|g�O�s&YR5Il��DG��d�r���Y�|g�O�s&YR5Ig}Ô%�I��)	r[r%�	factorialr r0r$rPrSrL)rA�totalr#rrr�
testFactorial�s
#zMathTests.testFactorialcCs0|jttjd�|jttjd�dS)Nr~rg}Ô%�I�TlDG��d�r���Y�|g�O�s&YR5I)rP�
OverflowErrorr%r�)rArrr�testFactorialHugeInputs�sz!MathTests.testFactorialHugeInputscCs�|jttj�|jtttjd���|jdtjd�d�|jdtjd�d�|jdtjd�d�|jd	tjd�d�|jd
tjd�d�|jdtjd�d�|jd
tjd�d�|jdtjd�d�Gdd�d�}Gdd�d�}|jdtj|��d�|jttj|��|�}dd�|_|jttj|�|jttj|d�dS) Ng�?z
floor(0.5)rz
floor(1.0)g�?rz
floor(1.5)g�?zfloor(-0.5)zfloor(-1.0)zfloor(-1.5)r
zfloor(1.23e167)g��Nݯ�bzfloor(-1.23e167)c@seZdZdd�ZdS)z&MathTests.testFloor.<locals>.TestFloorcSsdS)Nrhr)rArrr�	__floor__�sz0MathTests.testFloor.<locals>.TestFloor.__floor__N)rDrErFr�rrrr�	TestFloor�sr�c@seZdZdS)z(MathTests.testFloor.<locals>.TestNoFloorN)rDrErFrrrr�TestNoFloor�sr�zfloor(TestFloor())rhcWs|S)Nr)rlrrrrm�sz%MathTests.testFloor.<locals>.<lambda>g�rOg�rOg�����g��Nݯ��g��Nݯ��)	rPrQr%�floorr[rorprKr�)rAr�r�rqrrr�	testFloor�s$	zMathTests.testFloorcCsC|jttj�|jdtjdd�d�|jdtjdd�d�|jdtjdd�d	�|jd
tjdd�d�|jdtjdd�d�|jdtjdd�d�|jtjtjtd	���|jtjtjd	t���|jtjtjtt���|jttjd	d�|jttjt	d	�|jttjt
d	�|jttjt	d�|jtjd
t	�d
�|jtjdt	�d�|jtjd
t
�d
�|jtjdt
�d�|jtjdd
�d�|jtjdt
�d�dS)Nzfmod(10, 1)r~rgz
fmod(10, 0.5)g�?z
fmod(10, 1.5)g�?g�?zfmod(-10, 1)zfmod(-10, 0.5)zfmod(-10, 1.5)g@i����g�i����g�i����g�g�g�g�g�)rPrQr%�fmodrKrVrWrXrSrTrUr[)rArrr�testFmod�s("""zMathTests.testFmodcs��jttj��fdd�}|dtjd�d
�|dtjd�d�|dtjd�d�|d	tjd
�d��jtjt�dt��jtjt�dt��jtjtjt	�d��dS)NcsY||\}}\}}t||�tks;||krU�jd|||f�dS)Nz%s returned %r, expected %r)rrHrI)rJ�resultr�mantr:ZemantZeexp)rArr�	testfrexp�s"	z&MathTests.testFrexp.<locals>.testfrexpz	frexp(-1)r��?zfrexp(0)rzfrexp(1)zfrexp(2)r
rO��)r�r)rr)r�r)r�r
)
rPrQr%�frexpr[rTrUrVrWrX)rAr�r)rAr�	testFrexp�szMathTests.testFrexpz2fsum is not exact on machines with double roundingcs�ddlm}|j�|j����fdd�}gdfdgdfddd.dd	d/d0gdfd1d2d5gd7fd8dd:gd<fd>dd@gdBfdDddFgdHfdd�tdd�D�tjd�fdd�tdd�D�tjd�fdd�td�D�dJgdKfdddgdfdLdOdQdUgdfd d�tdVd"d#�D�dXgtjd%�fg
}x�t|�D]�\}\}}ytj	|�}WnWt
k
r�|jd&|||f�Yn,tk
r|jd'|||f�YnX|j
||�q�Wdd(lm}m}	m}
x�td�D]�}d)ddYdZd[d+gd,}d}xEtd-�D]7}|	d|��d)|}
||
7}|j|
�q�W|
|�||�}|j
||�tj	|��qQWdS)\Nr)�
float_infocsd\}}x�|D]y}tj|�\}}ttj|���|�}}||krt|||K}|}n|||K}||7}qWtttt|���d��|�}|dkrd|d>}|d|t||@o�|d|d@�}||7}tj||�S)Nrr
rre)rr)	r%r�ro�ldexpr'�len�binr�bool)�iterableZtmantZtexprr�r:�tail�h)�etiny�mant_digrr�msums
#	-.
z MathTests.testFsum.<locals>.msumgg}Ô%�I�Tg�?g0��.�++g�d~�QJg@�5g�?�6rg$@g(@g@g@cSsg|]}d|�qS)g�?r)�.0rrrr�
<listcomp>9s	z&MathTests.testFsum.<locals>.<listcomp>ri�z0x1.df11f45f4e61ap+2cSsg|]}d||�qS)g�?g�r)r�rrrrr�;s	z-0x1.62a2af1bd3624p-1cSs&g|]}d|dd|�qS)g333333�?rr)r�r#rrrr�=s	i�g333333�?g��7y�ACg��ؗ�Ҝ<g��7y�ACcSs2g|](}d|d|dd|d�qS)g@�2�4r)r�rrrrr�As	i2i�r
i�z0x1.5555555555555p+970zDtest %d failed: got OverflowError, expected %r for math.fsum(%.100r)zAtest %d failed: got ValueError, expected %r for math.fsum(%.100r))�random�gauss�shuffle�gh�$.5��;g#B����;r~��g}Ô%�I��g�g�d~�Q�g@Cg�i���g�<g��g@Cg������?Cg@Ci����g�9g@Cg@Cg@Cg@Ci����g�9g@Cg@Cg@Cg������?Ci���g�<g@Cg������?Cg����-�og����-��g�g��7y�ACi���g�<g�������?g��7y�ACg��7y�A�i���g�<g�������?g�������i���g�g�i����g}Ô%�I��gh�$.5���)�sysr�r��min_expr r0�fromhex�	enumerater%�fsumr�rIrSr[r�r�r��append)rAr�r�Ztest_valuesr#�valsr�actualr�r�r��j�s�vr)r�r�r�testFsumsT	
	#
	
	

zMathTests.testFsumcCsQtj}|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|d	d
�d�d}d
}d}||}||}|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�d}||}||}|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|jt|dd�|jt|dd�|j|td�td��d�dS)Nrrr����x�T�l j9W P)�}l "o�`T"-� i�	l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k lZ��'^%#�>�;�*Q!/61^g^@gU@rOrOrOi��i����)r%�gcdr[rPrQr?)rAr��cr�y�a�brrr�testGcd^sP	




zMathTests.testGcdcCs	|jttj�|jdtjdd�d�|jdtjdd�d�|jtjtt�t�|jtjtt�t�|jtjtt�t�|jtjtt�t�|j	tj
tjdt���|j	tj
tjtd	���dS)
Nz
hypot(0,0)rz
hypot(3,4)rer�g�?g@g�)rPrQr%�hypotrKr[rXrTrUrVrW)rArrr�	testHypot�s"zMathTests.testHypotcCs	|jttj�|jdtjdd�d�|jdtjdd�d�|jdtjdd�d�|jdtjdd�d�|jttjd	d
�|jttjdd
�|jtjd	d�d�|jtjdd�d�|jtjtd�t�|jtjtd�t�|j	tj
tjtd���x�ddddgD]�}|jtjt|�t�|jtjt|�t�|jtjd	|�d�|jtjd|�d �|jtjd|�d�|jtjd!|�d"�|j	tj
tjt|���|jttjd	|�|jttjd#|�|jtjd|�d�|jtjd$|�d%�|jtjt|�t�|jtjt|�t�|j	tj
tjt|���qfWdS)&Nz
ldexp(0,1)rrz
ldexp(1,1)r
zldexp(1,-1)g�?zldexp(-1,1)g�?i@Bg���r~r�r�(rOrOr�g�i���g�i���g�i+���i��ld(	l F�x:^Vl	�O�z��p�cg�g�g�g�g�g�g�)rPrQr%r�rKr�r[rTrUrVrWrX)rArrrr�	testLdexp�s6"#zMathTests.testLdexpcCsh|jttj�|jdtjdtj�d�|jdtjd�d�|jdtjtj�d�|jdtjdd�d	�|jd
tjdd�d�|jd
tjdd�d�|jdtjd�d�|jttjd�|jttjd�|jttjt�|jtjt	�t	�|j
tjtjt���dS)Nzlog(1/e)rzlog(1)rzlog(e)z	log(32,2)r�r
r�zlog(10**40, 10)r~r�zlog(10**40, 10**20)rz
log(10**1000)i�gO�+��@g�?rOl	�O�z��p�cl	�O�z��p�cl F�x:^Vl�3qvN�h�iKa��K�P�"�q����!��a�0mvK0<tI	D�[��7�fj�wld:,"�P�S�^
g�2�$�({P_R�U��vD9�{�)P�Anf�YD8�5PgH�#�q�EgS�d27�}��W>�Y��y�{A\<	�z�kZ� �p�+�*�eX9��E��i�/�\;��:�8bG�((ema!� �6�o�}Zs'%COd�
�YP]��[BT�vWL?F�Ch_"!�x"'��j�j�4�x�o�CD<Y#!*�vYyv�#�e�JU>�+i[�9*-Jc+`�S;?lcyg��l�3qvN�h�iKa��K�P�"�q����!��a�0mvK0<tI	D�[��7�fj�wld:,"�P�S�^
g�2�$�({P_R�U��vD9�{�)P�Anf�YD8�5PgH�#�q�EgS�d27�}��W>�Y��y�{A\<	�z�kZ� �p�+�*�eX9��E��i�/�\;��:�8bG�((ema!� �6�o�}Zs'%COd�
�YP]��[BT�vWL?F�Ch_"!�x"'��j�j�4�x�o�CD<Y#!*�vYyv�#�e�JU>�+i[�9*-Jc+`�S;?lcyl"���3qvN�h�iKa��K�P�"�q����!��a�0mvK0<tI	D�[��7�fj�wld:,"�P�S�^
g�2�$�({P_R�U��vD9�{�)P�Anf�YD8�5PgH�#�q�EgS�d27�}��W>�Y��y�{A\<	�z�kZ� �p�+�*�eX9��E��i�/�\;��:�8bG�((ema!� �6�o�}Zs'%COd�
�YP]��[BT�vWL?F�Ch_"!�x"'��j�j�4�x�o�CD<Y#!*�vYyv�#�e�JU>�+i[�9*-Jc+`�S;?lcy)
rPrQr%�logrKrMrSrUr[rTrVrWrX)rArrr�testLog�s#zMathTests.testLogcCsE|jttj�d}|jtj|�tjt|���dS)Nr
�Zl)rPrQr%�log1pZassertAlmostEqualr0)rArrrr�	testLog1p�szMathTests.testLog1pcCs�|jttj�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d
�|jtjd�d�|jttjd�|jttjt�|jtjtjt	���dS)Nrgr
g�?rg@i�g��@ig�@i�g@�@g�?lElEl� g��)
rPrQr%�log2r[rSrUrVrWrX)rArrr�testLog2�szMathTests.testLog2r~r�cCsLdd�tdd�D�}dd�tdd�D�}|j||�dS)NcSs+g|]!}tjtjd|���qS)g�?)r%r�r�)r�rrrrr��s	z+MathTests.testLog2Exact.<locals>.<listcomp>i2icSsg|]}t|��qSr)r0)r�rrrrr��s	i���i���)r r[)rAr�rrrr�
testLog2Exact�szMathTests.testLog2ExactcCs|jttj�|jdtjd�d�|jdtjd�d�|jdtjd�d�|jdtjd
�d
�|jttjd�|jttjd�|jttjt�|jtjt	�t	�|j
tjtjt���dS)Nz
log10(0.1)g�������?rzlog10(1)rz	log10(10)r~zlog10(10**1000)i�g@�@g�?rOl�3qvN�h�iKa��K�P�"�q����!��a�0mvK0<tI	D�[��7�fj�wld:,"�P�S�^
g�2�$�({P_R�U��vD9�{�)P�Anf�YD8�5PgH�#�q�EgS�d27�}��W>�Y��y�{A\<	�z�kZ� �p�+�*�eX9��E��i�/�\;��:�8bG�((ema!� �6�o�}Zs'%COd�
�YP]��[BT�vWL?F�Ch_"!�x"'��j�j�4�x�o�CD<Y#!*�vYyv�#�e�JU>�+i[�9*-Jc+`�S;?lcyg��l�3qvN�h�iKa��K�P�"�q����!��a�0mvK0<tI	D�[��7�fj�wld:,"�P�S�^
g�2�$�({P_R�U��vD9�{�)P�Anf�YD8�5PgH�#�q�EgS�d27�}��W>�Y��y�{A\<	�z�kZ� �p�+�*�eX9��E��i�/�\;��:�8bG�((ema!� �6�o�}Zs'%COd�
�YP]��[BT�vWL?F�Ch_"!�x"'��j�j�4�x�o�CD<Y#!*�vYyv�#�e�JU>�+i[�9*-Jc+`�S;?lcyl"���3qvN�h�iKa��K�P�"�q����!��a�0mvK0<tI	D�[��7�fj�wld:,"�P�S�^
g�2�$�({P_R�U��vD9�{�)P�Anf�YD8�5PgH�#�q�EgS�d27�}��W>�Y��y�{A\<	�z�kZ� �p�+�*�eX9��E��i�/�\;��:�8bG�((ema!� �6�o�}Zs'%COd�
�YP]��[BT�vWL?F�Ch_"!�x"'��j�j�4�x�o�CD<Y#!*�vYyv�#�e�JU>�+i[�9*-Jc+`�S;?lcy)
rPrQr%�log10rKrSrUr[r�rTrVrWrX)rArrr�	testLog10�szMathTests.testLog10cs��jttj��fdd�}|dtjd�d�|dtjd�d��jtjt�dtf��jtjt�dtf�tjt�}�jtj	|d	���jtj	|d
��dS)Ncs]||\}}\}}t||�tks?t||�rY�jd|||f�dS)Nz%s returned %r, expected %r)rrHrI)rJr�rZv1Zv2Ze1Ze2)rArr�testmodf�s&	z$MathTests.testModf.<locals>.testmodfz	modf(1.5)g�?��?��?z
modf(-1.5)grr)r�r�g������)r�r�g�)
rPrQr%�modfr[rTrUrXrVrW)rAr�Zmodf_nanr)rAr�testModf�szMathTests.testModfcCs�|jttj�|jdtjdd�d�|jdtjdd�d�|jdtjdd�d�|jdtjdd �d�|jtjtd�t�|jtjtd�t�|jtjdt�d	�|jtjdt�d	�|jtj	tjt
d���|jtj	tjdt
���|jtj	tjdt
���|jtjdt
�d�|jtjd
t�d
�|jtjd
d�d
�|jtjd
d�d
�|jtjd
d
�d
�|jtjd
d
�d	�|jtjd
d!�d	�|jttjd
d"�|jttjd
d#�|jttjd
d$�|jttjd
t�|jtj	tjd
t
���|jtjtt�t�|jtjtd�t�|jtjtd�t�|jtjtd
�t�|jtjtd
�d	�|jtjtd%�d	�|jtjtd&�d
�|jtjtd'�d
�|jtjtd(�d
�|jtjtt�d
�|jtj	tjtt
���|jtjd)t�d
�|jtjd*d�d+�|jtjd,d�d
�|jtjd-d
�d
�|jtjd.d
�d	�|jtjd/d0�d	�|jttjd1d2�|jttjd3d4�|jttjd5d6�|jttjd7t�|jtj	tjd8t
���|jtjtt�t�|jtjtd�t�|jtjtd�t�|jtjtd
�t�|jtjtd
�d	�|jtjtd9�d	�|jtjtd:�d
�|jtjtd;�d
�|jtjtd<�d=�|jtjtt�d
�|jtj	tjtt
���|jtjd>t�d	�|jtjd?d�d@�|jttjdAd�|jtjdBd
�d	�|jtjdCd
�d	�|jtjdDdE�d	�|jtjdFdG�d	�|jttjdHdI�|jtjdJdK�dL�|jtjdMt�d	�|jtj	tjdNt
���|jtjd	t�d	�|jtjd	d�d	�|jtjd	d�d	�|jtjd	d
�d	�|jtjd	d
�d	�|jtjd	dO�d	�|jtjd	dP�d	�|jtjd	dQ�d	�|jtjd	dR�d	�|jtjd	t�d	�|jtjd	t
�d	�|jtjdd
�d	�|jtjdSd
�d	�|jtjt
d
�d	�|jtjddT�d	�|jtjdUdV�d	�|jtjt
dW�d	�|jttjdXd�|jttjdYdZ�|jtjdt�d
�|jtjdt�d
�|jtjdt�t�|jtjdt�t�|jtjd[t�t�|jtjd\t�t�|jtjd]t�d
�|jtjd^t�d
�|jtjdt�t�|jtjdt�t�|jtjdt�d
�|jtjdt�d
�|jtjd_t�d
�|jtjd`t�d
�|jtjdat�t�|jtjdbt�t�|jdtjdcd�dd�|jdtjded
�d�|jdtjdfd	�dg�|jdtjdhd
�d	�|jdtjdidj�d	�|jdtjdkdl�dm�|jdtjdndo�d�|jdtjdpdq�dr�|jttjdsdt�|jttjdud�dS)vNzpow(0,1)rrzpow(1,0)zpow(2,1)r
z	pow(2,-1)g�?g�?gg@gffffff@g@g.@g������@gffffff�?g�������?g�������?g�������?z	(-2.)**3.g @z	(-2.)**2.g@z	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.z
(-2.)**-2.g�?z
(-2.)**-3.g�?rOg�g�gffffff�g�g�g�gffffff�g�g�g�g�g�g�g�g�g�g�g�g�gffffff�g�g�g�g�g�g�gffffff�g�g�g�g�g�g�g�g�g�g�g�g�g�gffffff�g�g�g�g�g�g�g�gffffff�g�gffffff�g�gffffff�g�g�g�g.�g�������g��������g�������g�������gffffff��g��������g�������g�������gffffff��g�g �g�g�g�g�g�g�g�g�g�g�g�g�g�g��g�g�g�)rPrQr%�powrKr[rTrUrVrWrXrS)rArrr�testPows�""""""""zMathTests.testPowcCs}|jttj�|jdtjd�tj�|jdtjd�tjd�|jdtjd	�tjd�dS)
Nzradians(180)�zradians(90)r�r
zradians(-45)�-ri���)rPrQr%�radiansrKrL)rArrr�testRadians�s#zMathTests.testRadianscCs|jttj�|jdtjd�d�|jdtjtjd�d�|jdtjtjd�d�yB|jtjtjt���|jtjtjt	���Wn>t
k
r�|jt
tjt�|jt
tjt	�YnX|jtjtjt���dS)Nzsin(0)rz	sin(pi/2)r
rz
sin(-pi/2)rO)rPrQr%�sinrKrLrVrWrTrUrSrX)rArrr�testSin�s#$#
zMathTests.testSincCs�|jttj�|jdtjd�d�|jdtjd�dtjd�dd�|jdtjd�tjd�d�|jtjt�t�|jtjt�t�|j	tj
tjt���dS)	Nzsinh(0)rzsinh(1)**2-cosh(1)**2rr
zsinh(1)+sinh(-1)rOrO)rPrQr%�sinhrKrwr[rTrUrVrWrX)rArrr�testSinh�s1)zMathTests.testSinhcCs�|jttj�|jdtjd�d�|jdtjd�d�|jdtjd�d�|jtjt�t�|jttjt�|j	tj
tjt���dS)Nzsqrt(0)rzsqrt(1)rzsqrt(4)rr
)rPrQr%�sqrtrKr[rTrSrUrVrWrX)rArrr�testSqrt�szMathTests.testSqrtc
Cs|jttj�|jdtjd�d�|jdtjtjd�d�|jdtjtjd�d�yB|jtjtjt���|jtjtjt	���Wn4|jt
tjt�|jt
tjt	�YnX|jtjtjt���dS)Nztan(0)rz	tan(pi/4)rrz
tan(-pi/4)rO)rPrQr%�tanrKrLrVrWrTrUrSrX)rArrr�testTan�s#$#zMathTests.testTancCs�|jttj�|jdtjd�d�|jdtjd�tjd�d�|jdtjt�d�|jdtjt�d�|jtjtjt	���dS)	Nztanh(0)rztanh(1)+tanh(-1)rz	tanh(inf)z
tanh(-inf)rOrO)
rPrQr%�tanhrKrTrUrVrWrX)rArrr�testTanh�s)zMathTests.testTanh�TANH_PRESERVES_ZERO_SIGNrz,system tanh() function doesn't copy the signcCsN|jtjd�d�|jtjdtjd��tjdd��dS)Ngg�?g�g�g�g�)r[r%r�rs)rArrr�testTanhSign�szMathTests.testTanhSigncCs�|jtjd�d�|jtjd�d�|jttjd��t�|jttjd��t�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�Gdd	�d	t�}Gd
d�dt�}|jtj|��d�|jttj�|jttjdd
�|jttj|��dS)Nrg�?g����?g�!��?rg-���?Y@rc@seZdZdd�ZdS)z'MathTests.test_trunc.<locals>.TestTrunccSsdS)Nr�r)rArrr�	__trunc__�sz1MathTests.test_trunc.<locals>.TestTrunc.__trunc__N)rDrErFr�rrrr�	TestTrunc�sr�c@seZdZdS)z)MathTests.test_trunc.<locals>.TestNoTruncN)rDrErFrrrr�TestNoTrunc�sr�r�r
rOrOg��rOg�����rOg�!��rg-���?Y�i����)r[r%�truncrpro�objectrPrQ)rAr�r�rrr�
test_trunc�s zMathTests.test_trunccCs�|jtjd��|jtjd��|jtjd��|jtjd��|jtjtd���|jtjtd���|jtjtd���dS)Ngg�?rrz-infg�g�)rVr%�isfinite�assertFalser0)rArrr�testIsfinite�szMathTests.testIsfinitecCs�|jtjtd���|jtjtd�d��|jtjtd���|jtjd��|jtjd��dS)Nrrgg�?)rVr%rWr0r�)rArrr�	testIsnan�s
 zMathTests.testIsnancCs�|jtjtd���|jtjtd���|jtjd��|jtjd��|jtjtd���|jtjd��|jtjd��dS)Nrz-infg�rgg�?g�)rVr%r&r0r�)rArrr�	testIsinfszMathTests.testIsinfcCs|jtjtj��dS)N)rVr%rWr)rArrr�test_nan_constant
szMathTests.test_nan_constantcCsc|jtjtj��|jtjd�|jtjtd��|jtjtd��dS)Ngrz-inf)rVr%r&rZ
assertGreaterr[r0)rArrr�test_inf_constantszMathTests.test_inf_constantzrequires verbose modecCs�ytjd�}Wn|jd�YnX|dkrD|jd�ytjd�}Wntk
rkYnX|jd�ytjd	�}Wntk
r�YnX|jd�dS)
Niʚ;z6underflowing exp() should not have raised an exceptionrz)underflowing exp() should have returned 0z.overflowing exp() didn't trigger OverflowErrorg�?z sqrt(-1) didn't raise ValueErrori6e�g�)r%r:rIr�r�rS)rArrrr�test_exceptionss 



zMathTests.test_exceptionscCs*x#tt�D]\}}}}}}}|dks
|dks
|rIq
|d
krXq
tt|�}y||�}	Wn�tk
r�}
z3dd|
jd|||f}|j|�WYdd}
~
Xn6tk
rdd|||f}|j|�YnX|jd	|||f|	|�q
WdS)Ng�rect�polarz"Unexpected ValueError: %s
        zin test %s:%s(%r)
rzUnexpected OverflowError in ztest %s:%s(%r)
z	%s:%s(%r))r�r�)	r>�	test_file�getattrr%rSrlrIr�rK)rAr6r7�arZaiZer�eir;�funcr��exc�messagerrr�
test_testfile=s"(
zMathTests.test_testfilecCsd}g}x�tt�D]�\}}}}}tt|�}d|ksUd|kr^d}nd|krpd}y||�}	Wn/tk
r�d}	Yntk
r�d}	YnXd}
t|	t�r�t|t�r�tj|�r�tj|	�r�qtj|�r�tj|	�r�|dkrAt	||	dd	d
d	�}
n3|dkrbt
||	d�}
nt
||	d
�}
|
dkr�qt|	t�r�t|t�r�|	|kr�q|j|||||	�}|
dk	r�|dj|
�7}|j
|�qW|r|jddj|��dS)Nz${}:{}({!r}): expected {!r}, got {!r}�invalidzdivide-by-zerorSZoverflowr��lgammar(g�+�����<r)�erfci�rz ({})zFailures in test_mtestfile:
  z
  )r<�math_testcasesr�r%rSr��
isinstancer0rWr+r�strrr�rI�join)rAZfail_fmtZfailuresr6r7r8rr;rrZaccuracy_failureZfail_msgrrr�test_mtestfileTsL"	


 	zMathTests.test_mtestfileN)>rDrErFrKrNrYr\r^r`rbrdrgrrrrtrvrxrzr{r}r�rZcpython_onlyr�r�r�r��unittestZskipIf�HAVE_DOUBLE_ROUNDINGr�r�r�r�r�r�r�Zrequires_mac_verr�r�r�r�r�r�r�r�r�r��	sysconfig�get_config_varr�r�r�r�r�r�r�Z
skipUnlessrr�rrrrrrrG�sj		
			="		Y+ !�
		
		 rGc@s�eZdZejZdd�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) �IsCloseTestscOs3|j|j||||�dd||f�dS)N�msgz%s and %s should be close!)rV�isclose)rAr�r�rl�kwargsrrr�
assertIsClose�szIsCloseTests.assertIsClosecOs3|j|j||||�dd||f�dS)Nrz%s and %s should not be close!)r�r)rAr�r�rlrrrr�assertIsNotClose�szIsCloseTests.assertIsNotClosecOs1x*|D]"\}}|j||||�qWdS)N)r)rA�examplesrlrr�r�rrr�assertAllClose�szIsCloseTests.assertAllClosecOs1x*|D]"\}}|j||||�qWdS)N)r)rArrlrr�r�rrr�assertAllNotClose�szIsCloseTests.assertAllNotClosecCsd|jt��|jdddd�WdQRX|jt��!|jdddddd�WdQRXdS)Nr�rel_tolg0��.�++�abs_tolg _�Bg0��.�+�g _��)rPrSr)rArrr�test_negative_tolerances�sz%IsCloseTests.test_negative_tolerancescCs5d
ddd
ddg}|j|ddd	d�dS)N�@�N���@i�;����90���@��NFrr)rr)rr)rr)rr ��)r!r#)r"r")r)rAZidentical_examplesrrr�test_identical�s	zIsCloseTests.test_identicalcCs9d
d
dg}|j|dd�|j|dd�dS)N��חArg:�0�yE>g��n�yE>�	ѭ��?�fN�ӭ��?rg��&�.>��חA)r%r(�:�0�yE�縦n�yE�)r)r*)r&r')rr)rAZeight_decimal_places_examplesrrr�test_eight_decimal_places�s
	z&IsCloseTests.test_eight_decimal_placescCs9dd
dg}|j|dd�|j|dd�dS)
N��&�.>�gu�?j�/� rg�������?rg:�0�yE>)r,r-��&�.�)r.r-�u�?j�/ʠ)r/r-)rr)rAZnear_zero_examplesrrr�test_near_zero�s
	zIsCloseTests.test_near_zerocCsP|jtt�|jttdd�|jtt�|jttdd�dS)Nrg)rrTrU)rArrr�test_identical_infinite�sz$IsCloseTests.test_identical_infinitecCswttftdfdtfttfttfttftdfdtftdfdtfg
}|j|dd�dS)Ng0��.�++g�?g������rg�������?)rXrTrUr)rAZnot_close_examplesrrr�test_inf_ninf_nan�s									zIsCloseTests.test_inf_ninf_nancCsHd
d
dg}|j|dd�dddg}|j|dd�dS)N��?g333333@gY��n�rg��?������?�Zb���ti�Tb���ti)r3r3�333333��333333�)r8r9�Y��n���Y��n��)r:r;)r3r4)r5r3)r6r7)rr)rAZzero_tolerance_close_examplesZ!zero_tolerance_not_close_examplesrrr�test_zero_tolerance�s		z IsCloseTests.test_zero_tolerancecCs|jddgdd�dS)N�	r~rg�������?)r=r~)r~r=)r)rArrr�test_asymmetry�szIsCloseTests.test_asymmetrycCs6dd	g}|j|dd�|j|dd�dS)
N������[��[rg:�0�yE>g��&�.>)r?r@)rArB)rr)rAZinteger_examplesrrr�
test_integers�s	zIsCloseTests.test_integerscCsddlm}|d�|d�f|d�|d�f|d�|d�fg}|j|d	d
�|j|d	d�dS)Nr)�Decimalz
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100rg:�0�yE>g��&�.>)�decimalrDrr)rArDZdecimal_examplesrrr�
test_decimals�szIsCloseTests.test_decimalscCs\ddlm}|dd�d|d�fg}|j|dd�|j|dd�dS)Nr)�Fractionri�rg:�0�yE>g��&�.>)Z	fractionsrGrr)rArGZfraction_examplesrrr�test_fractions�s"zIsCloseTests.test_fractionsN)rDrErFr%rrrrrrr$r+r0r1r2r<r>rCrFrHrrrrr�s 	


rcCsiddlm}tj�}|jtjt��|jtjt��|j|d��t|�dS)Nr)�DocFileSuitezieee754.txt)	�doctestrIrZ	TestSuiteZaddTestZ	makeSuiterGrr)rIZsuiterrr�	test_main	srK).Ztest.supportrrrZtestrrr%�os�platformr�rrrHr0rXrTrUrr�r
rD�argv�file�__file__�path�dirname�curdirZtest_dirr
rr�rrrrr$r+r<r>r�r?ZTestCaserGrrKrrrr�<module>sJ!����x