HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_math.cpython-37.opt-2.pyc
B

��g���@spddlmZmZmZddlmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZdZ
ed�Zed�Zed�ZejjZd\ZZeed	kZed
kr�ejdZneZej�e�p�ejZej� ed�Z!ej� ed�Z"d
d�Z#dd�Z$dd�Z%dd�Z&dd�Z'dd�Z(dd�Z)dd�Z*d)dd �Z+Gd!d"�d"e,�Z-Gd#d$�d$ej.�Z/Gd%d&�d&ej.�Z0d'd(�Z1ed
k�rle1�dS)*�)�run_unittest�verbose�requires_IEEE_754)�supportNg�h㈵��>�nan�infz-inf)g��7y�ACg�):��@g��7y�AC�__main__zmath_testcases.txtzcmath_testcases.txtcCs.t�dt�d|��d}|dkr*|d}|S)Nz<qz<drl)�struct�unpack�pack)�x�n�r�*/usr/local/lib/python3.7/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)Nz<qz<dr�)�abs�float�math�isnan�isinfr	r
r)rr
Zx_nextZx_prevrrr�ulp4s
rcCs|rdt||d@�SdS)Nrr)�count_set_bits)r
rrrrasrcCsD||d?}|sdS|dkr |S||dB}t||�t||�SdS)Nr)�partial_product)�start�stopZ
numfactorsZmidrrrresrcCsdd}}xJtt|����D]6}|t||d?ddB||?ddB�9}||9}qW||t|�>S)Nr)�reversed�range�
bit_lengthrr)r
�innerZouter�irrr�py_factorialss
*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_errorZfmtrrr�
ulp_abs_check~sr'c	cs�t|���}x�|D]x}d|kr.|d|�d��}|��s8q|�d�\}}|��\}}}|��}|d}	|dd�}
||t|�t|	�|
fVqWWdQRXdS)Nz--z->rr)�open�index�strip�splitr)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagsrrr�parse_mtestfile�s	

r7c
	cs�t|���}x�|D]�}|�d�s|��s(q|�d�\}}|��\}}}}|��}	|	d|	d}
}|	dd�}||t|�t|�t|
�t|�|fVqWWdQRXdS)Nz--z->rr�)r(�
startswithr*r+r)
r,r-r.r/r0r1r2Zarg_realZarg_imagr4Zexp_realZexp_imagr6rrr�parse_testfile�s

r:��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&
rAc@seZdZdd�Zdd�ZdS)�MyIndexablecCs
||_dS)N)�value)�selfrCrrr�__init__�szMyIndexable.__init__cCs|jS)N)rC)rDrrr�	__index__�szMyIndexable.__index__N)�__name__�
__module__�__qualname__rErFrrrrrB�srBc@seZdZdpdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Ze
dd��Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zejd%d&��Zd'd(�Zd)d*�Zd+d,�Ze
e�ed-�d.d/���Zd0d1�Zd2d3�Z d4d5�Z!d6d7�Z"d8d9�Z#e
d:d;��Z$e
e�%d<d�d=d>���Z&d?d@�Z'dAdB�Z(dCdD�Z)dEdF�Z*e
dGdH��Z+dIdJ�Z,dKdL�Z-dMdN�Z.dOdP�Z/dQdR�Z0e
e�e1�2dS�dTkdU�dVdW���Z3dXdY�Z4dZd[�Z5d\d]�Z6d^d_�Z7e
d`da��Z8e
dbdc��Z9e�:e;dd�dedf��Z<e
dgdh��Z=e
didj��Z>dkdl�Z?dmdn�Z@doS)q�	MathTestsr;�cCs,t||||�}|dk	r(|�d�||��dS)Nz{}: {})rA�failr")rD�namer$r#r%r&r?rrr�ftest�s	zMathTests.ftestcCs8|�dtjd�|�dtjd�|�tjdtj�dS)N�pig-DT�!	@�egiW�
�@r8)rNrrOrP�assertEqualZtau)rDrrr�
testConstantsszMathTests.testConstantscCs�|�ttj�|�dt�d�tj�|�dt�d�tjd�|�dt�d�d�|�ttjt�|�ttjt�|�ttjdt	�|�ttjdt	�|�
t�t�t���dS)Nzacos(-1)���zacos(0)rr8zacos(1)r)
�assertRaises�	TypeErrorrZacosrNrO�
ValueError�INF�NINF�eps�
assertTruer�NAN)rDrrr�testAcosszMathTests.testAcoscCs�|�ttj�|�dt�d�d�|�dt�d�d�|�ttjd�|�ttjd�|�t�t�t�|�ttjt�|�	t�
t�t���dS)Nzacosh(1)rrzacosh(2)r8g5�qB�?rS)rTrUrZacoshrNrVrQrWrXrZrr[)rDrrr�	testAcoshszMathTests.testAcoshcCs�|�ttj�|�dt�d�tjd�|�dt�d�d�|�dt�d�tjd�|�ttjt�|�ttjt�|�ttjdt	�|�ttjdt	�|�
t�t�t���dS)Nzasin(-1)rSr8zasin(0)rzasin(1)r)
rTrUrZasinrNrOrVrWrXrYrZrr[)rDrrr�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)rSg'�ya64�)rTrUrZasinhrNrQrWrXrZrr[)rDrrr�	testAsinh,szMathTests.testAsinhcCs�|�ttj�|�dt�d�tjd�|�dt�d�d�|�dt�d�tjd�|�dt�t�tjd	�|�d
t�t�tjd	�|�t�	t�t
���dS)Nzatan(-1)rS�zatan(0)rzatan(1)rz	atan(inf)r8z
atan(-inf))rTrUr�atanrNrOrWrXrZrr[)rDrrr�testAtan5szMathTests.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�?g�z��?zatanh(-0.5)g�g�z��rrS)rTrUrrarNZatanhrVrWrXrZrr[)rDrrr�	testAtanh>szMathTests.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)rSrr8zatan2(-1, 1)rr`zatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(0., -inf)gzatan2(0., -2.3)gffffff�zatan2(0., -0.)g�gffffff@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.))rTrUr�atan2rNrOrXrQrWrZrr[)rDrrr�	testAtan2Isf "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)Ng�?z	ceil(0.5)rz	ceil(1.0)g�?z	ceil(1.5)g�?r8z
ceil(-0.5)g�rz
ceil(-1.0)g�rSz
ceil(-1.5)g��c@seZdZdd�ZdS)z$MathTests.testCeil.<locals>.TestCeilcSsdS)N�*r)rDrrr�__ceil__�sz-MathTests.testCeil.<locals>.TestCeil.__ceil__N)rGrHrIrhrrrr�TestCeil�sric@seZdZdS)z&MathTests.testCeil.<locals>.TestNoCeilN)rGrHrIrrrr�
TestNoCeil�srjzceil(TestCeil())rgcWs|S)Nr)�argsrrr�<lambda>��z$MathTests.testCeil.<locals>.<lambda>)	rTrUrZceilrQr>�typerNrh)rDrirj�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)
Nrrgg�?gi���g�rdg@g@g�g�g@)rQr�copysignrTrUrWrXrZrr[rr)rDrrr�testCopysign�s0zMathTests.testCopysigncCs�|�ttj�|jdt�tjd�dtd�d�|�dt�d�d�|jdt�tjd�dtd�d�|�dt�tj�d	�y0|�t�t�t	���|�t�t�t
���Wn4tk
r�|�ttjt	�|�ttjt
�YnX|�t�t�t���dS)
Nz
cos(-pi/2)r8rr)r&zcos(0)z	cos(pi/2)zcos(pi)rS)
rTrUrZcosrNrOrrZrrWrXrVr[)rDrrr�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)**2r8rS)rTrUr�coshrNrQrWrXrZrr[)rDrrr�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)r8g�V@zdegrees(-pi/4)r`g�F�z
degrees(0)r)rTrUrZdegreesrNrO)rDrrr�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)rSrzexp(0)rzexp(1)gi@B)
rTrUrr5rNrPrQrWrXrZrr[�
OverflowError)rDrrr�testExp�szMathTests.testExpcCsN|�ttj�|�dt�d�d�|�dt�d�d�|�dt�d�d�dS)Nzfabs(-1)rSrzfabs(0)rzfabs(1))rTrUrZfabsrN)rDrrr�testFabs�szMathTests.testFabscCs�|�t�d�d�|�t�d�d�d}xXtdd�D]J}||9}|�t�|�|�|�t�t|��|�|�t�|�t|��q4W|�ttjd�|�ttjd�|�ttjdd�|�ttjd	�|�ttjtj�dS)
Nrrgi�rSg��
�dg}Ô%�I��)	rQr�	factorialrrr!rTrVrO)rDZtotalr rrr�
testFactorial�szMathTests.testFactorialcCs(|�ttjdd�|�ttjd�dS)Nrzr{g}Ô%�I�T)rTrwrr|)rDrrr�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)Ng�?z
floor(0.5)rz
floor(1.0)g�?rz
floor(1.5)g�?zfloor(-0.5)g�rSzfloor(-1.0)g�zfloor(-1.5)g�����zfloor(1.23e167)g��Nݯ�bzfloor(-1.23e167)g��Nݯ��c@seZdZdd�ZdS)z&MathTests.testFloor.<locals>.TestFloorcSsdS)Nrgr)rDrrr�	__floor__sz0MathTests.testFloor.<locals>.TestFloor.__floor__N)rGrHrIr�rrrr�	TestFloorsr�c@seZdZdS)z(MathTests.testFloor.<locals>.TestNoFloorN)rGrHrIrrrr�TestNoFloorsr�zfloor(TestFloor())rgcWs|S)Nr)rkrrrrl rmz%MathTests.testFloor.<locals>.<lambda>)	rTrUrZfloorrQr>rnrNr�)rDr�r�rorrr�	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)rzrgz
fmod(10, 0.5)g�?z
fmod(10, 1.5)g�?g�?zfmod(-10, 1)i����g�zfmod(-10, 0.5)zfmod(-10, 1.5)g�g@g�)rTrUrZfmodrNrZrr[rVrWrXrQ)rDrrr�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)rrYrL)rM�resultr#�mantr5ZemantZeexp)rDrr�	testfrexp=sz&MathTests.testFrexp.<locals>.testfrexpz	frexp(-1)rS)g�rzfrexp(0)r)rrzfrexp(1)r)g�?rzfrexp(2)r8)g�?r8)
rTrUr�frexprQrWrXrZrr[)rDr�r)rDr�	testFrexp:s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 d�td!�D�d"gdfd#dd$gd%fd&d'd(d)gdfd*d�td+d,d-�D�d.gt�d/�fg
}x�t|�D]|\}\}}yt�	|�}WnRt
k
�r^|�d0|||f�Yn*tk
�r�|�d1|||f�YnX|�
||��qWdd2lm}m}	m}
x�td!�D]~}d3dd4dd5d6gd7}d}x8td8�D],}|	d|��d3|}
||
7}|�|
��q�W|
|�||�}|�
||�t�	|���q�WdS)9Nr)�
float_infocs�d\}}xb|D]Z}t�|�\}}tt�|���|�}}||krT|||K}|}n|||K}||7}qWtttt|���d��|�}|dkr�d|d>}|d|t||@o�|d|d@�}||7}t�||�S)N)rrr8rrrd)	rr�r>�ldexp�max�len�binr�bool)�iterableZtmantZtexprr�r5�tail�h)�etiny�mant_digrr�msum_s
"(z MathTests.testFsum.<locals>.msumgg}Ô%�I�Tg�?g}Ô%�I��g0��.�++g�d~�QJg�g�d~�Q�g@Cg�g��g������?Cg�9g@Cg@Cg@Cg������?Cg�?g�<g������?CcSsg|]}d|�qS)g�?r)�.0r
rrr�
<listcomp>�sz&MathTests.testFsum.<locals>.<listcomp>ri�z0x1.df11f45f4e61ap+2cSsg|]}d||�qS)g�r)r�r
rrrr��sz-0x1.62a2af1bd3624p-1cSs g|]}d|dd|�qS)g333333�?rr)r�r rrrr��si�g����-��g��7y�ACg��ؗ�Ҝ<g��7y�ACg��7y�ACg�������?g��7y�A�g�������cSs,g|]$}d|d|dd|d�qS)g@�2�4r)r�r
rrrr��si���i�r8g�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�i����gh�$.5���g#B����;rz��)�sysr�r��min_exprr�fromhex�	enumeraterZfsumrwrLrVrQr�r�r��append)rDr�r�Ztest_valuesr Zvalsr#�actualr�r�r��j�s�vr)r�r�r�testFsumLsT


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)NrrrSr�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^g^@gU@)r�gcdrQrTrUrB)rDr��cr�y�a�brrr�testGcd�sP
zMathTests.testGcdcCs�|�ttj�|�dt�dd�d�|�dt�dd�d�|�t�tt�t�|�t�tt�t�|�t�tt�t�|�t�tt�t�|�t	tjt
t
�|�t�t�dt���|�t�t�td���dS)	Nz
hypot(0,0)rz
hypot(3,4)rdr`r;g�?g�)
rTrUrZhypotrNrQr[rWrXrw�	FLOAT_MAXrZr)rDrrr�	testHypot�szMathTests.testHypotc	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����xFdddddgD�]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|����qWdS)Nz
ldexp(0,1)rrz
ldexp(1,1)r8zldexp(1,-1)rSg�?zldexp(-1,1)rg�?i@Bg�i���gg��i+���i��ld(	l F�x:^Vrz�()rTrUrr�rNrwrQrWrXrZrr[)rDr
rrr�	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)rrSzlog(1)rzlog(e)z	log(32,2)r�r8r;zlog(10**40, 10)rzr�zlog(10**40, 10**20)l F�x:^Vz
log(10**1000)i�gO�+��@g��)
rTrUr�logrNrPrVrXrQrWrZrr[)rDrrr�testLog�szMathTests.testLogcCsl|�ttj�x6dddddgD] }|�t�|�t�t|���q"W|�ttjd�|�t�t�t�dS)Nr8�Zi,rS)	rTrUrZlog1pZassertAlmostEqualrrVrQrW)rDr
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)Nrgr8g�?r`g@i�g��@ig�@i�g@�@g��)
rTrUr�log2rQrVrXrZrr[)rDrrr�testLog2szMathTests.testLog2rzcCs8dd�tdd�D�}dd�tdd�D�}|�||�dS)NcSsg|]}t�t�d|���qS)g�?)rr�r�)r�r
rrrr�,sz+MathTests.testLog2Exact.<locals>.<listcomp>i���icSsg|]}t|��qSr)r)r�r
rrrr�-s)rrQ)rDr�r#rrr�
testLog2Exact'szMathTests.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)g�������?rSzlog10(1)rrz	log10(10)rzzlog10(10**1000)i�g@�@g��)
rTrUrZlog10rNrVrXrQr�rWrZrr[)rDrrr�	testLog100szMathTests.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�dS)Nz%s returned %r, expected %r)rrYrL)rMr�r#Zv1Zv2Ze1Ze2)rDrr�testmodf?sz$MathTests.testModf.<locals>.testmodfz	modf(1.5)g�?)g�?g�?z
modf(-1.5)g��)g�g�gg�rr)
rTrUrZmodfrQrWrXr[rZr)rDr�Zmodf_nanr)rDr�testModf<s
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)r8z	pow(2,-1)rSg�?g�?gg@gffffff@g@g�g�gffffff�g�g�g.�g�������gffffff�?g�������?g�������?g�������?g��������g�������g�������gffffff��z	(-2.)**3.g �z	(-2.)**2.g@z	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.g�z
(-2.)**-2.g�?z
(-2.)**-3.g��)rTrUr�powrNrQrWrXrZrr[rV)rDrrr�testPowOs�zMathTests.testPowcCsr|�ttj�|�dt�d�tj�|�dt�d�tjd�|�dt�d�tjd�|�d	t�d
�d
�dS)Nzradians(180)�zradians(90)r�r8zradians(-45)i���r`z
radians(0)r)rTrUrZradiansrNrO)rDrrr�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}x||D]t}�j|d5��^|��\}}}t�|�}t�|�}t�|�}	||||	�t�||�}
��|
�	�|	�	��WdQRXq�Wt�d6�}xzt
d7d8�D]l}|dk�r$�q||}xNt
d9�D]B}
|
|}t�||�}
||||
�t�||�}
||||
��q6W�qWx@td:d;d<d=tt
gD]*}��t�t|����t�|t���q�Wx6d>D].}��t�|t
�|���t�|t�|��q�Wx�td=d;d:d?t
gD]�}��t��t�t
|�WdQRX��t��t�t|�WdQRX��t��t�|d:�WdQRX��t��t�|d;�WdQRX�qWdS)@Nr)�Fractioncs��|��|��|�}}}��t|�t|d��|||}��|t|��t|�t|d�kr|��|dt|d��dS)Nr8)ZassertLessEqualrrQr>)rr��rZfxZfy�frr
)r�rDrr�
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{gg�g@gffffff�)gffffff�g�ggffffff@gffffff@)�	fractionsr�ZsubTestr+rr�r�	remainderrQ�hexrr[rXrW�assertIsNaNrTrV)rDr�Z	testcasesr�Zx_hexZy_hexZexpected_hexrr�r#r�Ztinyr
�mrCr)r�rDr�
testRemainder�s�



"


zMathTests.testRemaindercCs�|�ttj�|�dt�d�d�|�dt�tjd�d�|�dt�tjd�d�y0|�t�t�t���|�t�t�t	���Wn4t
k
r�|�t
tjt�|�t
tjt	�YnX|�t�t�t���dS)Nzsin(0)rz	sin(pi/2)r8rz
sin(-pi/2)rS)rTrUrZsinrNrOrZrrWrXrVr[)rDrrr�testSinlszMathTests.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)**2rr8rSzsinh(1)+sinh(-1))rTrUrZsinhrNrtrQrWrXrZrr[)rDrrr�testSinhys&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)r`r8rS)rTrUr�sqrtrNrQrWrVrXrZrr[)rDrrr�testSqrt�szMathTests.testSqrtcCs�|�ttj�|�dt�d�d�|�dt�tjd�d�|�dt�tjd�d�y0|�t�t�t���|�t�t�t	���Wn,|�t
tjt�|�t
tjt	�YnX|�t�t�t���dS)Nztan(0)rz	tan(pi/4)r`rz
tan(-pi/4)rS)rTrUrZtanrNrOrZrrWrXrVr[)rDrrr�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)rrS)r&z	tanh(inf)z
tanh(-inf))rTrUr�tanhrNrrWrXrZrr[)rDrrr�testTanh�szMathTests.testTanhZTANH_PRESERVES_ZERO_SIGNrz,system tanh() function doesn't copy the signcCs8|�t�d�d�|�t�dt�d��t�dd��dS)Ng�g�?)rQrr�rq)rDrrr�testTanhSign�szMathTests.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)NrrSg�?g��g����?g�����g�!��rg-���?Y�i����c@seZdZdd�ZdS)z'MathTests.test_trunc.<locals>.TestTrunccSsdS)N�r)rDrrr�	__trunc__�sz1MathTests.test_trunc.<locals>.TestTrunc.__trunc__N)rGrHrIr�rrrr�	TestTrunc�sr�c@seZdZdS)z)MathTests.test_trunc.<locals>.TestNoTruncN)rGrHrIrrrr�TestNoTrunc�sr�r�r8)rQrZtruncrnr>�objectrTrU)rDr�r�rrr�
test_trunc�s zMathTests.test_trunccCs�|�t�d��|�t�d��|�t�d��|�t�d��|�t�td���|�t�td���|�t�td���dS)Ngg�g�?g�rrz-inf)rZrZisfinite�assertFalser)rDrrr�testIsfinite�szMathTests.testIsfinitecCsx|�t�td���|�t�td���|�t�td�d��|�t�td���|�t�d��|�t�d��dS)Nrz-nanrgg�?)rZrrrr�)rDrrr�	testIsnan�szMathTests.testIsnancCs�|�t�td���|�t�td���|�t�d��|�t�d��|�t�td���|�t�d��|�t�d��dS)Nrz-infg�g�rgg�?)rZrrrr�)rDrrr�	testIsinf�szMathTests.testIsinfcCs|�t�tj��dS)N)rZrrr)rDrrr�test_nan_constant�szMathTests.test_nan_constantcCsJ|�t�tj��|�tjd�|�tjtd��|�tjtd��dS)Ngrz-inf)rZrrrZ
assertGreaterrQr)rDrrr�test_inf_constant�szMathTests.test_inf_constantzrequires verbose modecCs�yt�d�}Wn|�d�YnX|dkr8|�d�yt�d�}Wntk
rZYnX|�d�yt�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 OverflowErrorg�z sqrt(-1) didn't raise ValueError)rr5rLrwr�rV)rDrrrr�test_exceptions�s 

zMathTests.test_exceptionsc	Cspdh}d}tjdkrNt��d}yttt|�d���}Wntk
rLYnXd}g}x�tt	�D]�\}}}}	}
}}|	dks`|dkr�q`|dkr�q`|dk	r�|dkr�||kr�q`t
t|�}
d	|ks�d
|kr�d}
nd|kr�d
}
y|
|�}Wn0tk
r�d}Yntk
�rd
}YnXd\}}t
|
|||�}|dk�r4q`|�||||�}|�|�q`W|�rl|�dd�|��dS)NZtan0064�darwinr�.z{}: {}({!r}): {}g)ZrectZpolar)rzr;�invalidzdivide-by-zerorV�overflowrw)r;gzFailures in test_testfile:
  z
  )r��platformZmac_ver�tuple�mapr>r+rVr:�	test_file�getattrrrwrAr"r�rL�join)rDZ
SKIP_ON_TIGERZosx_versionZversion_txtr@�failuresr1r2�arZaiZerZeir6�funcr�r%r&r?�msgrrr�
test_testfilesL



zMathTests.test_testfilec	Cs2d}g}�xtt�D]�\}}}}}tt|�}d|ks<d|krBd}nd|krNd}y||�}	Wn.tk
rrd}	Yntk
r�d}	YnXd\}
}|dkr�d	}
n>|d
kr�d}n0|dkr�|d
kr�|dkr�d}
n|dkr�d}
nd}
t||	|
|�}|dkr�q|�||||�}
|�|
�qW|�r.|�	dd�
|��dS)Nz{}: {}({!r}): {}r�zdivide-by-zerorVr�rw)r;gZgamma�ZlgammagV瞯�<Zerfcgg�?rzg$@r{i�zFailures in test_mtestfile:
  z
  )r7�math_testcasesr�rrVrwrAr"r�rLr�)rDr@r�r1r2r3r#r6r�r$r%r&r?r�rrr�test_mtestfileGsB

zMathTests.test_mtestfilec
CsdGdd�d�}xPtjtjtjfD]<}|�}|�t��|d|�WdQRX|�t|dd��q WdS)Nc@seZdZdd�ZdS)z$MathTests.test_issue39871.<locals>.FcSsd|_dddS)NTrr)�	converted)rDrrr�	__float__�sz.MathTests.test_issue39871.<locals>.F.__float__N)rGrHrIr�rrrr�F�sr�znot a numberr�F)rrerqr�rTrUr�r�)rDr�r�r�rrr�test_issue39871�szMathTests.test_issue39871cCst�|�s|�d�|��dS)NzExpected a NaN, got {!r}.)rrrLr")rDrCrrrr��s
zMathTests.assertIsNaNN)r;rK)ArGrHrIrNrRr\r]r^r_rbrcrfrprrrrsrurvrxryr}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�r��	sysconfigZget_config_varr�r�r�r�r�r�r�Z
skipUnlessrr�r�r�r�r�rrrrrJ�st


		="
Y+ 
	

			 9CrJc@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�)rZ�isclose)rDr�r�rk�kwargsrrr�
assertIsClose�szIsCloseTests.assertIsClosecOs*|j|j||f|�|�d||fd�dS)Nz%s and %s should not be close!)r�)r�r)rDr�r�rkrrrr�assertIsNotClose�szIsCloseTests.assertIsNotClosecOs*x$|D]\}}|j||f|�|�qWdS)N)r)rD�examplesrkrr�r�rrr�assertAllClose�szIsCloseTests.assertAllClosecOs*x$|D]\}}|j||f|�|�qWdS)N)r)rDrrkrr�r�rrr�assertAllNotClose�szIsCloseTests.assertAllNotClosec	CsR|�t��|jdddd�WdQRX|�t��|jddddd�WdQRXdS)Nrg0��.�+�)�rel_tolg0��.�++g _��)r	r&)rTrVr)rDrrr�test_negative_tolerances�sz%IsCloseTests.test_negative_tolerancescCs$ddddddg}|j|ddd�dS)	N)g@g@)g�N���@ig�N���@i)g;���g;���)i90g��@)gg�)iNFiNFg)r	r&)r)rDZidentical_examplesrrr�test_identical�szIsCloseTests.test_identicalcCs*dddg}|j|dd�|j|dd�dS)N)g�חAg�חA)g:�0�yE�g��n�yE�)g�	ѭ��?gfN�ӭ��?g:�0�yE>)r	g��&�.>)rr)rDZeight_decimal_places_examplesrrr�test_eight_decimal_places�s
z&IsCloseTests.test_eight_decimal_placescCs*dddg}|j|dd�|j|dd�dS)N)g��&�.>g)g��&�.�g)gu�?j�/ʠgg�������?)r	g:�0�yE>)r&)rr)rDZnear_zero_examplesrrr�test_near_zero�s
zIsCloseTests.test_near_zerocCs<|�tt�|jttdd�|�tt�|jttdd�dS)Ng)r&)rrWrX)rDrrr�test_identical_infinite�sz$IsCloseTests.test_identical_infinitecCsRttftdfdtfttfttfttftdfdtftdfdtfg
}|j|dd�dS)Ng0��.�++g�?g������g�������?)r&)r[rWrXr)rDZnot_close_examplesrrr�test_inf_ninf_nan�s
zIsCloseTests.test_inf_ninf_nancCs4dddg}|j|dd�dddg}|j|dd�dS)	N)g�?g�?)g333333�g333333�)gY��n��gY��n��g)r	)g�?g�?)g�������?g�?)gZb���tigTb���ti)rr)rDZzero_tolerance_close_examplesZ!zero_tolerance_not_close_examplesrrr�test_zero_tolerance�sz IsCloseTests.test_zero_tolerancecCs|jddgdd�dS)N)�	rz)rzrg�������?)r	)r)rDrrr�test_asymmetry�szIsCloseTests.test_asymmetrycCs(ddg}|j|dd�|j|dd�dS)N)i�i�)i�[i�[g:�0�yE>)r	g��&�.>)rr)rDZinteger_examplesrrr�
test_integers�szIsCloseTests.test_integerscCshddlm}|d�|d�f|d�|d�f|d�|d�f|d	�|d
�fg}|j|dd�|j|d
d�dS)Nr)�Decimalz
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20g:�0�yE>)r	g��&�.>)�decimalrrr)rDrZdecimal_examplesrrr�
test_decimalsszIsCloseTests.test_decimalscCsdddlm}|dd�d|d�f|d�|d�f|dd�|dd�fg}|j|dd	�|j|d
d	�dS)Nr)r�ri�i�l �	(q�e�	l F�x:^Vg:�0�yE>)r	g��&�.>)r�r�rr)rDr�Zfraction_examplesrrr�test_fractionsszIsCloseTests.test_fractionsN)rGrHrIrrrrrrr
rrr
rrrrrrrrrrrr�s 

rcCsNddlm}t��}|�t�t��|�t�t��|�|d��t|�dS)Nr)�DocFileSuitezieee754.txt)	Zdoctestrr�Z	TestSuiteZaddTestZ	makeSuiterJrr)rZsuiterrr�	test_mainsr)r;r<)2Ztest.supportrrrZtestrr�r�osr�r	r�rrYrr[rWrXr�r�r�rr�r�rG�argv�file�__file__�path�dirname�curdirZtest_dirr�r�r�rrrrr!r'r7r:rAr�rBZTestCaserJrrrrrr�<module>sZ-
.3{