403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /Python313/Lib/test/__pycache__/test_math.cpython-313.opt-1.pyc
�

��in���R�SSKJrJr SSKJr SSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKrSr\"S5r\"S5r\"S5r\R(R*r\R(R.rSurr\\-S	:Hr\S
:Xa\R:SrO\r\
R@RC\5=(d \
RDr#\
R@RI\#SS5r%\
R@RI\#SS
5r&Sr'Sr(Sr)Sr*Sr+Sr,Sr-S%Sjr."SS5r/"SS\05r1"SS\25r3"SS5r4"SS\Rj5r6"S S!\Rj5r7"S"S#\Rj5r8S$r9\S
:Xa\Rt"5 gg)&�)�verbose�requires_IEEE_754)�supportNg�h㈵��>�nan�inf�-inf)���7y�ACg�):��@g��7y�AC�__main__�mathdatazmath_testcases.txtzcmath_testcases.txtc�|�[R"S[R"SU55SnUS:aUS-)nU$)aConvert a non-NaN float x to an integer, in such a way that
adjacent floats are converted to adjacent integers.  Then
abs(ulps(x) - ulps(y)) gives the difference in ulps between two
floats.

The results from this function will only make sense on platforms
where native doubles are represented in IEEE 754 binary64 format.

Note: 0.0 and -0.0 are converted to 0 and -1, respectively.
z<qz<drl)�struct�unpack�pack)�x�ns  �#C:\Python313\\Lib\test\test_math.py�to_ulpsr(s;��	�
�
�d�F�K�K��a�0�1�!�4�A��1�u���g�J���H�c�:�U(aS[XS-
-5-$S$)zANumber of '1' bits in binary expansion of a nonnnegative integer.�r)�count_set_bits)rs rrrNs��,-�1�~�a�a�%�i�(�(�4�1�4rc�l�X-
S-	nU(dgUS:XaU$X-S-n[X5[X15-$)z|Product of integers in range(start, stop, 2), computed recursively.
start and stop should both be odd, with start <= stop.

r)�partial_product)�start�stop�
numfactors�mids    rrrRsD��
�,�1�$�J���	�q�����!�Q�&���u�*�_�S�-G�G�Grc���S=p[[UR555H)nU[XS--	S-S-X-	S-S-5-nX!-nM+ X [	U5-
-$)z�Factorial of nonnegative integer n, via "Binary Split Factorial Formula"
described at http://www.luschny.de/math/factorial/binarysplitfact.html

r)�reversed�range�
bit_lengthrr)r�inner�outer�is    r�py_factorialr%`sn��
��E�
�e�A�L�L�N�+�
,��
��!�1�u�*��!1�A�!5���!�|�a�7G�H�H��
���-����*�*�+�+rc��[[U5[U5-
5n[X-
5nXS::dXB::agSnURXTX25$)z�Given finite floats `expected` and `got`, check that they're
approximately equal to within the given number of ulps or the
given absolute tolerance, whichever is bigger.

Returns None on success and an error message on failure.
NzAerror = {:.3g} ({:d} ulps); permitted error = {:.3g} or {:d} ulps)�absr�format)�expected�got�ulp_tol�abs_tol�	ulp_error�	abs_error�fmts       r�
ulp_abs_checkr0ksP���G�H�%����4�5�I��H�N�#�I���y�3��7���z�z�)��A�Arc#�|# �[USS9nUH�nSU;aUSURS5nUR5(dM4URS5up4UR5upVnUR5nUSn	USSn
XV[	U5[	U	5U
4v� M� SSS5 g!,(df   g=f7f)z�Parse a file with test values

-- starts a comment
blank lines, or lines containing only a comment, are ignored
other lines are expected to have the form
  id fn arg -> expected [flag]*

�utf-8��encoding�--N�->rr)�open�index�strip�split�float)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagss           r�parse_mtestfilerG}s����
�e�g�	&�"��D��t�|��-�T�Z�Z��-�.���:�:�<�<���z�z�$�'�H�C��)�)�+�K�B�C�����J��Q�-�C��q�r�N�E��5��:�u�S�z�5�9�9��
'�	&�	&�s�B<�BB+�"	B<�+
B9�5B<c
#�# �[USS9nUH�nURS5(dUR5(dM0URS5up4UR5upVpxUR5n	U	SU	Sp�U	SSnXV[	U5[	U5[	U
5[	U5U4v� M� SSS5 g!,(df   g=f7f)	z�Parse a file with test values

Empty lines or lines starting with -- are ignored
yields id, fn, arg_real, arg_imag, exp_real, exp_imag
r2r3r5r6rr�N)r7�
startswithr9r:r;)
r<r=r>r?r@rArB�arg_real�arg_imagrD�exp_real�exp_imagrFs
             r�parse_testfilerO�s����
�e�g�	&�"��D����t�$�$�D�J�J�L�L���z�z�$�'�H�C�),����&�B�H�����J�!+�A��
�1�
�h��q�r�N�E����?�E�(�O���?�E�(�O���
��
'�	&�	&�s�C�B)B?�6	C�?
C
�	Cc��X:XaHU(d@U(d9[R"SU5[R"SU5:wa	SUSUS3$gSn[U[5(a![U[5(a[U5nO5[U[5(a [U[5(a[U5n[U[5(a�[U[5(a|[R
"U5(a[R
"U5(aSnOC[R"U5(d"U5(aO[XX#5nUb)SnURX5nUSRU5-
nU$g)	a�Compare arguments expected and got, as floats, if either
is a float, using a tolerance expressed in multiples of
ulp(expected) or absolutely (if given and greater).

As a convenience, when neither argument is a float, and for
non-finite floats, exact equality is demanded. Also, nan==nan
as far as this function is concerned.

Returns None on success and an error message on failure.
rz	expected z, got z (zero has wrong sign)Nz	not equalzexpected {!r}, got {!r}z ({}))	�math�copysign�
isinstancer;�int�isnan�isinfr0r()r)r*r+r,�failure�fail_fmt�fail_msgs       r�result_checkrZ�s+�����8��}�}�Q��$��
�
�a��(B�B�"�8�*�F�3�%�7M�N�N���G��(�E�"�"�z�#�s�';�';��C�j��	�C��	�	�J�x��$=�$=���?���(�E�"�"�z�#�u�'=�'=��:�:�h���D�J�J�s�O�O��G�
�Z�Z��
!�
!�T�Z�Z��_�_��$�H�7�D�G���,���?�?�8�1���G�N�N�7�+�+����rc� �\rSrSrSrSrSrg)�	FloatLike��c��Xlg�N��value��selfras  r�__init__�FloatLike.__init__�����
rc��UR$r_r`�rcs r�	__float__�FloatLike.__float__�����z�z�rr`N)�__name__�
__module__�__qualname__�__firstlineno__rdri�__static_attributes__�rrr\r\�����rr\c��\rSrSrSrg)�IntSubclass��rqN�rlrmrnrorprqrrrtrt�s��rrtc� �\rSrSrSrSrSrg)�MyIndexable��c��Xlgr_r`rbs  rrd�MyIndexable.__init__�rfrc��UR$r_r`rhs r�	__index__�MyIndexable.__index__�rkrr`N�rlrmrnrordr}rprqrrrxrx�rrrrxc��\rSrSrSSjrSrg)�BadDescr��Nc��[er_)�
ValueError)rc�obj�objtypes   r�__get__�BadDescr.__get__�s���rrqr_)rlrmrnror�rprqrrr�r��s��rr�c��\rSrSrSUSjrSrSrSrSrSr	S	r
S
rSrSr
S
r\S5rSr\R&"\R*S:H=(a \R,"5S;S5S5rSrSrSrSrSrSr\R>S5r Sr!Sr"Sr#\\R&"\$S5S55r%S r&S!r'\\R&"\$S"5S#55r(S$r)S%r*S&r+S'r,S(r-\S)5r.S*r/S+r0\S,5r1\\Rd"S-S5S.55r3S/r4S0r5\\R&"\$S15\R>S2555r6\Rn"S35S45r8\\R&"\$S15\R>\Rn"S35S55555r9S6r:S7r;S8r<\S95r=S:r>S;r?S<r@S=rAS>rB\S?5rCS@rDSArESBrFSCrGSDrHSErI\R�"\KSF5SG5rL\SH5rM\SI5rNSJrOSKrPSLrQ\SM5rR\SN5rSSOrTSPrUSQrVSRrWSSrXgT)V�	MathTests��c�d�[X2XE5nUb!URSRX55 gg)a1Compare arguments expected and got, as floats, if either
is a float, using a tolerance expressed in multiples of
ulp(expected) or absolutely, whichever is greater.

As a convenience, when neither argument is a float, and for
non-finite floats, exact equality is demanded. Also, nan==nan
in this function.
Nz{}: {})rZ�failr()rc�namer*r)r+r,rWs       r�ftest�MathTests.ftest�s0���x�g�?�����I�I�h�o�o�d�4�5�rc���URS[RS5 URS[RS5 UR	[R
S[R-5 g)N�pig-DT�!	@�egiW�
�@rI)r�rQr�r��assertEqual�taurhs r�
testConstants�MathTests.testConstantssH���
�
�4����"<�=��
�
�3���� :�;�������1�T�W�W�9�-rc�B�UR[[R5 UR	S[R"S5[R
5 UR	S[R"S5[R
S-5 UR	S[R"S5S5 UR[[R[5 UR[[R[5 UR[[RS[-5 UR[[RS[-
5 UR[R"[R"[555 g)Nzacos(-1)���zacos(0)rrIzacos(1)r)
�assertRaises�	TypeErrorrQ�acosr�r�r��INF�NINF�eps�
assertTruerU�NANrhs r�testAcos�MathTests.testAcos
s������)�T�Y�Y�/��
�
�:�t�y�y��}�d�g�g�6��
�
�9�d�i�i��l�D�G�G�A�I�6��
�
�9�d�i�i��l�A�.����*�d�i�i��5����*�d�i�i��6����*�d�i�i��S��9����*�d�i�i��c��:�����
�
�4�9�9�S�>�2�3rc��UR[[R5 UR	S[R"S5S5 UR	S[R"S5S5 UR[
[RS5 UR[
[RS5 UR
[R"[5[5 UR[
[R[5 UR[R"[R"[555 g)Nzacosh(1)rrzacosh(2)rIg5�qB�?r�)r�r�rQ�acoshr�r�r�r�r�r�rUr�rhs r�	testAcosh�MathTests.testAcoshs������)�T�Z�Z�0��
�
�:�t�z�z�!�}�a�0��
�
�:�t�z�z�!�}�.@�A����*�d�j�j�!�4����*�d�j�j�"�5�������C��#�.����*�d�j�j�$�7�����
�
�4�:�:�c�?�3�4rc�J�UR[[R5 UR	S[R"S5[R
*S-5 UR	S[R"S5S5 UR	S[R"S5[R
S-5 UR[[R[5 UR[[R[5 UR[[RS[-5 UR[[RS[-
5 UR[R"[R"[555 g)Nzasin(-1)r�rIzasin(0)rzasin(1)r)
r�r�rQ�asinr�r�r�r�r�r�r�rUr�rhs r�testAsin�MathTests.testAsins������)�T�Y�Y�/��
�
�:�t�y�y��}�t�w�w�h�q�j�9��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�D�G�G�A�I�6����*�d�i�i��5����*�d�i�i��6����*�d�i�i��S��9����*�d�i�i��c��:�����
�
�4�9�9�S�>�2�3rc�h�UR[[R5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR[R"[5[5 UR[R"[5[5 UR[R"[R"[555 g)	Nzasinh(0)rzasinh(1)rg'�ya64�?z	asinh(-1)r�g'�ya64�)r�r�rQ�asinhr�r�r�r�r�rUr�rhs r�	testAsinh�MathTests.testAsinh*s������)�T�Z�Z�0��
�
�:�t�z�z�!�}�a�0��
�
�:�t�z�z�!�}�.A�B��
�
�;��
�
�2��0D�E�������C��#�.�������D�)�4�0�����
�
�4�:�:�c�?�3�4rc���UR[[R5 UR	S[R"S5[R
*S-5 UR	S[R"S5S5 UR	S[R"S5[R
S-5 UR	S[R"[5[R
S	-5 UR	S
[R"[5[R
*S	-5 UR[R"[R"[555 g)Nzatan(-1)r��zatan(0)rzatan(1)rz	atan(inf)rIz
atan(-inf))r�r�rQ�atanr�r�r�r�r�rUr�rhs r�testAtan�MathTests.testAtan3s������)�T�Y�Y�/��
�
�:�t�y�y��}�t�w�w�h�q�j�9��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�D�G�G�A�I�6��
�
�;��	�	�#������	�:��
�
�<����4��4�7�7�(�1�*�=�����
�
�4�9�9�S�>�2�3rc���UR[[R5 UR	S[R
"S5S5 UR	S[R
"S5S5 UR	S[R
"S5S5 UR[[R
S	5 UR[[R
S
5 UR[[R
[5 UR[[R
[5 UR[R"[R
"[555 g)Nzatanh(0)rz
atanh(0.5)��?g�z��?zatanh(-0.5)��g�z��rr�)r�r�rQr�r��atanhr�r�r�r�rUr�rhs r�	testAtanh�MathTests.testAtanh<s������)�T�Y�Y�/��
�
�:�t�z�z�!�}�a�0��
�
�<����C��2E�F��
�
�=�$�*�*�T�"2�4H�I����*�d�j�j�!�4����*�d�j�j�"�5����*�d�j�j�#�6����*�d�j�j�$�7�����
�
�4�:�:�c�?�3�4rc�(�UR[[R5 UR	S[R"SS5[R
*S-5 UR	S[R"SS5[R
*S-5 UR	S[R"SS5S5 UR	S	[R"SS5[R
S-5 UR	S
[R"SS5[R
S-5 UR	S[R"SS5S[R
-S-5 UR	S
[R"S[5[R
5 UR	S[R"SS5[R
5 UR	S[R"SS5[R
5 UR[R"SS5S5 UR[R"SS5S5 UR[R"S[5S5 UR[R"[R"S[555 UR	S[R"S[5[R
*5 UR	S[R"SS5[R
*5 UR	S[R"SS5[R
*5 UR[R"SS5S5 UR[R"SS5S5 UR[R"S[5S5 UR[R"[R"S[555 UR	S[R"[[5[R
S-S-5 UR	S[R"[S5[R
S-5 UR	S[R"[S5[R
S-5 UR	S[R"[S5[R
S-5 UR	S[R"[S5[R
S-5 UR	S[R"[[5[R
S-5 UR[R"[R"[[555 UR	S[R"[[5[R
*S-S-5 UR	S[R"[S5[R
*S-5 UR	S[R"[S5[R
*S-5 UR	S [R"[S5[R
*S-5 UR	S![R"[S5[R
*S-5 UR	S"[R"[[5[R
*S-5 UR[R"[R"[[555 UR	S#[R"S[5[R
5 UR	S$[R"SS5[R
S-5 UR	S%[R"SS5[R
S-5 UR[R"S[5S5 UR[R"[R"S[555 UR	S&[R"S[5[R
*5 UR	S'[R"SS5[R
*S-5 UR	S([R"SS5[R
*S-5 UR[R"S[5S5 UR[R"[R"S[555 UR[R"[R"[[555 UR[R"[R"[S555 UR[R"[R"[S555 UR[R"[R"[S555 UR[R"[R"[S555 UR[R"[R"[[555 UR[R"[R"[[555 g))Nzatan2(-1, 0)r�rrIzatan2(-1, 1)rr�zatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(1, -1)�zatan2(0., -inf)�zatan2(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.))r�r�rQ�atan2r�r�r�r�r�r�rUr�rhs r�	testAtan2�MathTests.testAtan2Gs������)�T�Z�Z�0��
�
�>�4�:�:�b�!�#4�t�w�w�h�q�j�A��
�
�>�4�:�:�b�!�#4�t�w�w�h�q�j�A��
�
�=�$�*�*�Q��"2�A�6��
�
�=�$�*�*�Q��"2�D�G�G�A�I�>��
�
�=�$�*�*�Q��"2�D�G�G�A�I�>��
�
�>�4�:�:�a��#4�a����i��k�B�	
�
�
�$�d�j�j��T�&:�D�G�G�D��
�
�$�d�j�j��T�&:�D�G�G�D��
�
�#�T�Z�Z��C�%8�$�'�'�B�������B��+�R�0�������B��,�b�1�������B��,�b�1�����
�
�4�:�:�b�#�#6�7�8��
�
�%�t�z�z�#�t�'<�t�w�w�h�G��
�
�%�t�z�z�#�t�'<�t�w�w�h�G��
�
�$�d�j�j��c�&:�T�W�W�H�E�������C��,�c�2�������C��-�s�3�������C��-�s�3�����
�
�4�:�:�c�3�#7�8�9��
�
�%�t�z�z�#�t�'<�d�g�g�a�i��k�J��
�
�%�t�z�z�#�t�'<�d�g�g�a�i�H��
�
�$�d�j�j��d�&;�T�W�W�Q�Y�G��
�
�#�T�Z�Z��S�%9�4�7�7�1�9�E��
�
�$�d�j�j��c�&:�D�G�G�A�I�F��
�
�$�d�j�j��c�&:�D�G�G�A�I�F�����
�
�4�:�:�c�3�#7�8�9��
�
�&��
�
�4��(>������
�1��M��
�
�&��
�
�4��(>������
�K��
�
�%�t�z�z�$��'=����x��z�J��
�
�$�d�j�j��s�&;�d�g�g�X�a�Z�H��
�
�%�t�z�z�$��'<�t�w�w�h�q�j�I��
�
�%�t�z�z�$��'<�t�w�w�h�q�j�I�����
�
�4�:�:�d�C�#8�9�:��
�
�%�t�z�z�#�t�'<�d�g�g�F��
�
�$�d�j�j��c�&:�D�G�G�A�I�F��
�
�#�T�Z�Z��R�%8�$�'�'�!�)�D�������C��-�r�2�����
�
�4�:�:�c�3�#7�8�9��
�
�&��
�
�4��(>�����I��
�
�%�t�z�z�$��'<�t�w�w�h�q�j�I��
�
�$�d�j�j��r�&:�T�W�W�H�Q�J�G�������D�#�.��4�����
�
�4�:�:�d�C�#8�9�:�����
�
�4�:�:�c�4�#8�9�:�����
�
�4�:�:�c�4�#8�9�:�����
�
�4�:�:�c�3�#7�8�9�����
�
�4�:�:�c�2�#6�7�8�����
�
�4�:�:�c�3�#7�8�9�����
�
�4�:�:�c�3�#7�8�9�����
�
�4�:�:�c�3�#7�8�9rc��UR[[R5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S	5S	5 UR	S
[R"S5S5 UR	S[R"S
5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR[R"[5[5 UR[R"[5[5 UR[R"[R"[555 g)Nzcbrt(0)rzcbrt(1)rzcbrt(8)�rIz	cbrt(0.0)r�z
cbrt(-0.0)r�z	cbrt(1.2)g333333�?ggA�E��?z
cbrt(-2.6)g�������g�L]6H��zcbrt(27)�r�zcbrt(-1)r�z	cbrt(-27)i�����)r�r�rQ�cbrtr�r�r�r�r�rUr�rhs r�testCbrt�MathTests.testCbrt�sU�����)�T�Y�Y�/��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�A�.��
�
�;��	�	�#���4��
�
�<����4��$�7��
�
�;��	�	�#��0A�B��
�
�<����4��2D�E��
�
�:�t�y�y��}�a�0��
�
�:�t�y�y��}�b�1��
�
�;��	�	�#���3�������3���-�������4��$�/�����
�
�4�9�9�S�>�2�3rc��UR[[R5 UR	[
[
[R"S555 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S5S	5 UR	[R"S
5S	5 UR	[R"S5S5 UR	[R"S5S5 "S
S5n"SS[5n"SS5n"SS5nUR	[R"U"55S5 UR	[R"U"55S5 UR	[R"[S55S5 UR[[RU"55 UR[[RU"55 U"5nSUl
UR[[RU5 UR[[RUS5 UR	[R"[S55S5 UR	[R"[S55S5 g)Nr�r��?��?rIr�r��r����r�r�c��\rSrSrSrSrg)�$MathTests.testCeil.<locals>.TestCeili�c��g�N�*rqrhs r�__ceil__�-MathTests.testCeil.<locals>.TestCeil.__ceil__����rrqN�rlrmrnror�rprqrr�TestCeilr�����
rr�c��\rSrSrSrSrg)�%MathTests.testCeil.<locals>.FloatCeili�c��gr�rqrhs rr��.MathTests.testCeil.<locals>.FloatCeil.__ceil__�r�rrqNr�rqrr�	FloatCeilr��r�rr�c��\rSrSrSrg)�&MathTests.testCeil.<locals>.TestNoCeili�rqNrvrqrr�
TestNoCeilr�����rr�c�"�\rSrSr\"5rSrg)�'MathTests.testCeil.<locals>.TestBadCeili�rqN)rlrmrnror�r�rprqrr�TestBadCeilr��s	���z�Hrr�r�g@E@�+c��U$r_rq��argss r�<lambda>�$MathTests.testCeil.<locals>.<lambda>�s��4r)r�r�rQ�ceilr�rT�typer;r\r�r�)rcr�r�r�r��ts      r�testCeil�MathTests.testCeil�s�����)�T�Y�Y�/�����d�4�9�9�S�>�2�3�������3���+�������3���+�������3���+�������4��!�,�������4��"�-�������4��"�-�������3���+�������4��!�,�
	�	�	��	�	�	�	"�	"�������8�:�.��3�������9�;�/��4�������9�T�?�3�R�8����)�T�Y�Y�
��=����*�d�i�i���?��L��'��
����)�T�Y�Y��2����)�T�Y�Y��1�5�������9�T�?�3�T�:�������9�T�?�3�T�:rc�	�UR[R"SS5S5 UR[R"SS5S5 UR[R"SS5S5 UR[R"SS5S5 UR[R"S	S
5S5 UR[[R5 UR[R"SS5S5 UR[R"SS
5S5 UR[R"[
S5[
5 UR[R"[
S
5[5 UR[R"[S5[
5 UR[R"[S
5[5 UR[R"S[
5S5 UR[R"S[5S5 UR[R"[
[
5[
5 UR[R"[
[5[5 UR[R"[[
5[
5 UR[R"[[5[5 UR[R"[R"[S555 UR[R"[R"[[
555 UR[R"[R"[[555 UR[R"[R"[[555 UR[R"[R"[
[555 UR[[R"S[55S5 g)
Nrr�r�r�i���r�r��@�@r����@)r�rQrRr�r�r�r�r�rUr�rVr'rhs r�testCopysign�MathTests.testCopysign�s���������q�"�-�s�3�������r�2�.��4�������r�3�/��6�������q�"�-�s�3�������r�3�/��6����)�T�]�]�3�������r�2�.��3�������r�3�/��5�������s�B�/��5�������s�C�0�$�7�������t�R�0�#�6�������t�S�1�4�8�������r�3�/��4�������r�4�0�#�6�������s�C�0�#�6�������s�D�1�4�8�������t�S�1�3�7�������t�T�2�D�9�����
�
�4�=�=��b�#9�:�;�����
�
�4�=�=��c�#:�;�<�����
�
�4�=�=��d�#;�<�=�����
�
�4�=�=��c�#:�;�<�	
����
�
�4�=�=��c�#:�;�<�����T�]�]�2�s�3�4�b�9rc�f�UR[[R5 UR	S[R"[R
*S-5S[R"S5S9 UR	S[R"S5S5 UR	S[R"[R
S-5S[R"S5S9 UR	S[R"[R
5S	5 UR[R"[R"[555 UR[R"[R"[555 UR[R"[R"[555 g![aU UR[[R[5 UR[[R[5 N�f=f)
Nz
cos(-pi/2)rIrr�r,zcos(0)z	cos(pi/2)zcos(pi)r�)
r�r�rQ�cosr�r��ulpr�rUr�r�r�r�rhs r�testCos�MathTests.testCos�sB�����)�T�X�X�.��
�
�<����4�7�7�(�1�*�!5�q�$�(�(�1�+�
�N��
�
�8�T�X�X�a�[�!�,��
�
�;��������� 3�Q������
�L��
�
�9�d�h�h�t�w�w�/��4�	:��O�O�D�J�J�t�x�x��}�5�6��O�O�D�J�J�t�x�x��~�6�7�	
����
�
�4�8�8�C�=�1�2���	:����j�$�(�(�C�8����j�$�(�(�D�9�	:�s�A:G�AH0�/H0�win32)�ARM�ARM64zEWindows UCRT is off by 2 ULP this test requires accuracy within 1 ULPc�T�UR[[R5 UR	S[R"S5S5 UR	S[R"S5S[R"S5S---
S5 UR[R"[5[5 UR[R"[5[5 UR[R"[R"[555 g)Nzcosh(0)rrzcosh(2)-2*cosh(1)**2rIr�)r�r�rQ�coshr�r�r�r�r�rUr�rhs r�testCosh�MathTests.testCosh�s���	
���)�T�Y�Y�/��
�
�9�d�i�i��l�A�.��
�
�)�4�9�9�Q�<��$�)�)�A�,��/�8I�+I�2�N�������3���-�������4��#�.�����
�
�4�9�9�S�>�2�3rc���UR[[R5 UR	S[R"[R
5S5 UR	S[R"[R
S-5S5 UR	S[R"[R
*S-5S5 UR	S	[R"S
5S
5 g)Nzdegrees(pi)g�f@z
degrees(pi/2)rIg�V@zdegrees(-pi/4)r�g�F�z
degrees(0)r)r�r�rQ�degreesr�r�rhs r�testDegrees�MathTests.testDegrees�s������)�T�\�\�2��
�
�=�$�,�,�t�w�w�"7��?��
�
�?�D�L�L������$;�T�B��
�
�#�T�\�\�4�7�7�(�1�*�%=�u�E��
�
�<����a��!�4rc���UR[[R5 UR	S[R"S5S[R
-5 UR	S[R"S5S5 UR	S[R"S5[R
5 UR
[R"[5[5 UR
[R"[5S5 UR[R"[R"[555 UR[[RS5 g)	Nzexp(-1)r�rzexp(0)rzexp(1)r��@B)
r�r�rQrEr�r�r�r�r�r�rUr��
OverflowErrorrhs r�testExp�MathTests.testExp�s������)�T�X�X�.��
�
�9�d�h�h�r�l�A�d�f�f�H�5��
�
�8�T�X�X�a�[�!�,��
�
�8�T�X�X�a�[�$�&�&�1�������#���,�������$���,�����
�
�4�8�8�C�=�1�2����-����7�;rc��UR[[R5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S	[R"S
5S5 UR[R"[5[5 UR[R"[5S5 UR[R"[R"[555 UR[[RS
5 g)Nzexp2(-1)r�r�zexp2(0)rrzexp2(1)rIz	exp2(2.3)r�g)��{IJ@r�r)r�r�rQ�exp2r�r�r�r�r�rUr�r
rhs r�testExp2�MathTests.testExp2s������)�T�Y�Y�/��
�
�:�t�y�y��}�c�2��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�A�.��
�
�;��	�	�#��0A�B�������3���-�������4��"�-�����
�
�4�9�9�S�>�2�3����-����G�<rc�6�UR[[R5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 g)Nzfabs(-1)r�rzfabs(0)rzfabs(1))r�r�rQ�fabsr�rhs r�testFabs�MathTests.testFabss^�����)�T�Y�Y�/��
�
�:�t�y�y��}�a�0��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�A�.rc���UR[R"S5S5 Sn[SS5H\nX-nUR[R"U5U5 UR[R"U5[	U55 M^ UR[[RS5 UR[[RSS-*5 g)Nrr��r��
�d)r�rQ�	factorialr r%r�r�)rc�totalr$s   r�
testFactorial�MathTests.testFactorials����������*�A�.����q�$��A��J�E����T�^�^�A�.��6����T�^�^�A�.��Q��@� �	
���*�d�n�n�b�9����*�d�n�n�r�3�w�h�?rc�Z�UR[[RS5 UR[[RS5 UR[[RS5 UR[[RS5 UR[[R[R
"S55 UR[[R[R
"S55 UR[[RS5 g)N�@g������@r��}Ô%�I���5z5.2)r�r�rQr�decimal�Decimalrhs r�testFactorialNonIntegers�"MathTests.testFactorialNonIntegers"s������)�T�^�^�S�9����)�T�^�^�S�9����)�T�^�^�T�:����)�T�^�^�V�<����)�T�^�^�W�_�_�S�5I�J����)�T�^�^�W�_�_�U�5K�L����)�T�^�^�S�9rc��UR[[RSS-5 UR[[RS5 g)Nrr�}Ô%�I�T)r�r
rQrr�rhs r�testFactorialHugeInputs�!MathTests.testFactorialHugeInputs,s4��	
���-�����S��A����)�T�^�^�U�;rc��UR[[R5 UR	[
[
[R"S555 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S	5S
5 "SS5n"S
S[5n"SS5n"SS5nUR	[R"U"55S5 UR	[R"U"55S5 UR	[R"[S55S5 UR[[RU"55 UR[[RU"55 U"5nSUl
UR[[RU5 UR[[RUS5 UR	[R"[S55S5 UR	[R"[S55S5 g)Nr�rr�rr�r�r�r�r����c��\rSrSrSrSrg)�&MathTests.testFloor.<locals>.TestFloori@c��gr�rqrhs r�	__floor__�0MathTests.testFloor.<locals>.TestFloor.__floor__Ar�rrqN�rlrmrnror1rprqrr�	TestFloorr/@r�rr4c��\rSrSrSrSrg)�'MathTests.testFloor.<locals>.FloatFlooriCc��gr�rqrhs rr1�1MathTests.testFloor.<locals>.FloatFloor.__floor__Dr�rrqNr3rqrr�
FloatFloorr6Cr�rr9c��\rSrSrSrg)�(MathTests.testFloor.<locals>.TestNoFlooriFrqNrvrqrr�TestNoFloorr;Fr�rr<c�"�\rSrSr\"5rSrg)�)MathTests.testFloor.<locals>.TestBadFlooriHrqN)rlrmrnror�r1rprqrr�TestBadFloorr>H�	�� �
�Irr?r�g33333�D@�)c��U$r_rqr�s rr��%MathTests.testFloor.<locals>.<lambda>Qs��Dr)r�r�rQ�floorr�rTr�r;r\r�r1)rcr4r9r<r?r�s      r�	testFloor�MathTests.testFloor3s������)�T�Z�Z�0�����d�4�:�:�c�?�3�4�������C��!�,�������C��!�,�������C��!�,�������D�)�2�.�������D�)�2�.�������D�)�2�.�
	�	�	��	�	�	�	#�	#�������I�K�0�"�5�������J�L�1�2�6�������I�d�O�4�b�9����)�T�Z�Z���?����*�d�j�j�,�.�A��M��(������)�T�Z�Z��3����)�T�Z�Z��A�6�������I�d�O�4�d�;�������I�d�O�4�d�;rc�H�UR[[R5 UR	S[R"SS5S5 UR	S[R"SS5S5 UR	S[R"SS5S	5 UR	S
[R"SS5S5 UR	S
[R"SS5S5 UR	S[R"SS5S5 UR[R"[R"[S	555 UR[R"[R"S	[555 UR[R"[R"[[555 UR[[RS	S5 UR[[R[S	5 UR[[R[S	5 UR[[R[S5 UR[R"S[5S5 UR[R"S[5S5 UR[R"S[5S5 UR[R"S[5S5 UR[R"SS5S5 UR[R"S[5S5 UR[[R[[5 g)Nzfmod(10, 1)rrr�z
fmod(10, 0.5)r�z
fmod(10, 1.5)r�r�zfmod(-10, 1)���r�zfmod(-10, 0.5)zfmod(-10, 1.5)r�r���)r�r�rQ�fmodr�r�rUr�r�r�r�r�rhs r�testFmod�MathTests.testFmodXs4�����)�T�Y�Y�/��
�
�=�$�)�)�B��"2�C�8��
�
�?�D�I�I�b�#�$6��<��
�
�?�D�I�I�b�#�$6��<��
�
�>�4�9�9�S�!�#4�d�;��
�
�#�T�Y�Y�s�C�%8�$�?��
�
�#�T�Y�Y�s�C�%8�$�?�����
�
�4�9�9�S�"�#5�6�7�����
�
�4�9�9�R��#5�6�7�����
�
�4�9�9�S�#�#6�7�8����*�d�i�i��R�8����*�d�i�i��b�9����*�d�i�i��r�:����*�d�i�i��b�9�������3��,�c�2�������4��-�t�4�������3��-�s�3�������4��.��5�������3��,�c�2�������3��-�s�3����*�d�i�i��c�:rc�^�TR[[R5 U4SjnU"S[R"S5S5 U"S[R"S5S5 U"S[R"S	5S
5 U"S[R"S5S
5 TR	[R"[
5S[
5 TR	[R"[5S[5 TR[R"[R"[5S55 g)Nc�>�Xsup4upV[X5-
5[:�dXF:waTRU<SU<SU<35 gg�Nz
 returned z, expected �r'r�r�)r��resultr)�mantrE�emant�eexprcs       �r�	testfrexp�&MathTests.testFrexp.<locals>.testfrexprs@���)/�&�K�T��%��4�:���$����	�	����3�4�)4rz	frexp(-1)r�)r�rzfrexp(0)r�rrzfrexp(1)r)r�rzfrexp(2)rI)r�rI)
r�r�rQ�frexpr�r�r�r�rUr�)rcrUs` r�	testFrexp�MathTests.testFrexpos�������)�T�Z�Z�0�	4�	�+�t�z�z�"�~�y�9��*�d�j�j��m�V�4��*�d�j�j��m�X�6��*�d�j�j��m�X�6�������C���+�S�1�������D�)�!�,�d�3�����
�
�4�:�:�c�?�1�#5�6�7rz2fsum is not exact on machines with double roundingc�	^^�SSKJn URmURT-
mUU4Sjn/S4S/S4/SQS4/SQS4/SQS	4/S
QS4/SQS
4/SQS4[	SS5Vs/sHnSU-PM
 sn[
R
S54[	SS5Vs/sHnSU-U-PM
 sn[
R
S54/SQS4/SQS4[	SSS5Vs/sHnSU-SUS---
SUS---PM snS/-[
R
S 54/
n[	S5Vs/sHnS!U-PM
 nnUR[	S"5Vs/sHoVUS-Xe-
PM snUS"*/-US*45 [U5H1unupx[R"U5n	URW	U5 M3 SS%KJn
JnJn [	S"5H�n
/S&QS'-nSn[	S(5H,nU"SU
"55S)-U-
nX�-
nURU5 M. U"U5 U"U5nURU"U5[R"U55 M� UR[R"S[R$/5[R$5 UR'[R("[R"[R*S/555 UR[R"S*[-S5S+SS,[-S5S-/5S5 UR/[[RS.S./5 UR/[[R[R$[R$*/5 UR/[0[RS//5 UR/[0[RS5 UR/[[RS'S"-/5 S0nUR/[2[RU"55 gs snfs snfs snfs snfs snf![a URS#XXU4-5 GN�[a URS$XXU4-5 GN�f=f)1Nr)�
float_infoc	��>�SupUHYn[R"U5upE[[R"UT	55UT	-
pTX%:�a
XU-
-nUnOXEU-
-nX-
nM[ [	[[
[U555S-
T	-
TU-
5nUS:�a4SUS-
-nUSU--[X-=(a USU-S-
-5-nX&-
n[R"X5$)z�Full precision summation.  Compute sum(iterable) without any
intermediate accumulation of error.  Based on the 'lsum' function
at https://code.activestate.com/recipes/393090-binary-floating-point-summation-accurate-to-full-p/

rWrIrrr�)	rQrXrT�ldexp�max�len�binr'�bool)
�iterable�tmant�texprrRrE�tail�h�etiny�mant_digs
        ��r�msum� MathTests.testFsum.<locals>.msum�s�����K�E��� �J�J�q�M�	����
�
�4�� :�;�S�8�^�c��:��3�h�&�E��D���X�%�D��
����s�3�s�5�z�?�+�A�-��8�%�$�,�G�D��a�x��$�q�&�M���!�A�#���e�i�.I�E�A�a�C��E�M�)J�J������:�:�e�*�*rr�)r)r�r"�0��.�++�d~�QJr��d~�Q�rl)r)r�r"rlrmr�rn)�@Cr�g��g������?C)ror���9g@C)g@Cr�rpg@C)g������?Cr�g�<g������?Cri�r�z0x1.df11f45f4e61ap+2r�z-0x1.62a2af1bd3624p-1)r	r�缉ؗ�Ҝ<g��7y�AC)g��7y�ACg�������?g��7y�A�g�����������i�rIr��2�4g�z0x1.5555555555555p+970g333333�?rzDtest %d failed: got OverflowError, expected %r for math.fsum(%.100r)zAtest %d failed: got ValueError, expected %r for math.fsum(%.100r))�random�gauss�shuffle)�r)i����r"gh�$.5���g#B����;r��rxr)r"rmrn�������spamc3�# �Sv� [e7f�Nr�)�ZeroDivisionErrorrqrr�bad_iter�$MathTests.testFsum.<locals>.bad_iter�s����I�#�#�s�
)�sysr\ri�min_expr r;�fromhex�append�	enumeraterQ�fsumr
r�r�r�rurvrwrr�rUrr\r�r�r~)rcr\rjr�test_valuesr$�terms�valsr)�actualrurvrw�j�s�vrrhris                 @@r�testFsum�MathTests.testFsum�s���	#��&�&���"�"�X�-��	+�8��I��U�C�L�
<�f�E�
:�F�C�
'��5�
&��4�
+�\�:�
)�;�7�!�!�T�N�
+�N�q�b��d�N�
+�
�]�]�1�
2�
4�"'��4�.�
1�.�Q�s�Q�h�q�j�.�
1�
�]�]�2�
3�
5�
� 3�4�
=�s�C�7<�U�C��7K�
L�7K�!�b�!�e�b�1�R�4�j� �2��"��:�-�7K�
L��[��
�]�]�3�
4�
6�!��,"'�t��-��A��a����-����,1�$�K�8�K�q�1�Q�3�Z�%�(�
"�K�8�U�4�[�L�>�I�
�1�X�I�
�	�
$-�[�#9��A���
I����4���
���V�X�.�$:�	2�1��t��A�8�2�=�D��A��3�Z���!�V�X�&�!�+�a�/��������A�� �
�D�M��T�
�A����T�$�Z����4��9��	
������C����?�3�T�X�X�>�����
�
�4�9�9�d�h�h��_�#=�>�?�������E�9�S�>�6�6�$(�)�D�/�5�$B�C�DJ�	L����-����V�V�4D�E����*�d�i�i�$�(�(�T�X�X�I�1F�G����)�T�Y�Y���9����)�T�Y�Y��2����-����R��X�J�?�	$�	
���+�T�Y�Y��
�C��s,��
1��
M��.��8��!�
I��	�	�2�56�$�4G�H�I��
I��	�	�2�56�$�4G�H�I�
I�s6�P(�P-�!P2�P7�P<�Q� R�$R�Rc��[RnURU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S	5 URU"SS
5S	5 URU"SS5S
5 SnSnSH�nX$-nX4-nURU"XV5U5 URU"Xe5U5 URU"U*U5U5 URU"Xe*5U5 URU"XV*5U5 URU"U*U5U5 URU"U*U*5U5 URU"U*U*5U5 M� URU"5S5 URU"S5S5 URU"S
5S5 URU"SSS5S5 URU"SSS5S5 UR[US5 UR[USS5 UR[USS5 UR[USSS5 URU"[S5[S55S	5 g)Nrrr�rx�����x�T����� j9W P)�}� "o�`T"-� l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k )��	lZ��'^%#�>�;�*Q!/61^�f��^@�U@)rQ�gcdr�r�r�rx)rcr�r�y�c�a�bs       r�testGcd�MathTests.testGcd�s����h�h������Q���A�&�����Q���A�&�����R���Q�'�����Q���A�&�����Q���Q�'�����Q���A�&�����Q���Q�'�����S�"��q�)�����S�"��r�*�����R����+�����9�8�:�;=�	?�
O��4��V�A���A���A����S��Y��*����S��Y��*����S�!��Q�Z��+����S��B�Z��+����S��B�Z��+����S�!��Q�Z��+����S�!��a�R�[�!�,����S�!��a�R�[�!�,�V�	
������"�����S��3�'�����T��C�(�����S�"�c�*�A�.�����S�!�R��!�,����)�S�%�0����)�S�%��4����)�S�#�t�4����)�S�#�q�$�7�����[��-�{�2��?��Drc�
�SSKJn SSKJn [R
n[R[R[R"S5[R"S5[R"S54n[[U5S-5HBnURU"USU6[R"[SUSU5555 MD URU"S	S
5S5 URU"SS
5S5 URU"SS5S5 URU"SS5S5 URU"S[!S55S5 URU"[!S5S5S5 URU"U"S5U"S
55S5 URU"U"SS5U"S
S55U"SS55 URU"SSSSS5S5 URU"SS5S5 URU"S5S5 URU"5S5 URS[R""SU"S555 URU"SSS5U"SSS55 UR%[&5 U"SS9 SSS5 UR%[&5 U"SSS 5 SSS5 S![(R*R,S
--nUR%[.[045 U"SU5 SSS5 URU"[25[25 URU"S[25[25 URU"S![25[25 URU"S"[25[25 URU"[4[25[25 URU"[2[45[25 URU"[6[45[25 URU"[4[65[25 URU"[2*[25[25 URU"[2*[2*5[25 URU"S![2*5[25 UR9[R:"U"[4555 UR9[R:"U"S[4555 UR9[R:"U"[4S!555 UR9[R:"U"S![4555 UR9[R:"U"[4[4555 UR9[R:"U"[4555 [<S#-n[S5HGnUR9[R>"U"U/U-6U[R"U5-55 MI [S5H?n	[@SU	--n
UR[R
"S$U
-S%U
-5S
U
-5 MA UR$"[&[R
/S/S&-QS'P76 g!,(df   GN=f!,(df   GN�=f!,(df   GN�=f)(Nr�r%��Fractionr��@g������@rc3�*# �UH	oS-v� M g7f)rINrq)�.0r�s  r�	<genexpr>�&MathTests.testHypot.<locals>.<genexpr>)s���5�H�q��d�H�s�g(@r!�*@r�r��
g�?r�g�?r�r�TFr��%��%@r�r�r�r��r皙�����?�string皙����@rrHr�r�r��r{)!r$r%�	fractionsr�rQ�hypotr�r��sqrt�gamma�sinr r`�assertAlmostEqual�sumr�r\rRr�r�r�r\�
max_10_expr�r
r�r�r�r�rU�	FLOAT_MAX�isclose�	FLOAT_MIN)rcr%r�r�r�r$�int_too_big_for_float�	fourthmaxrrE�scales           r�	testHypot�MathTests.testHypots���#�&��
�
���v�v�t�w�w��	�	�#���
�
�3�����#��N���s�4�y��{�#�A��"�"��t�B�Q�x� ��	�	�#�5�D��!�H�5�5�6�
�$�	
����t�S�)�4�0�����r�1��r�*�����t�R��$�/�����r�4��$�/�����t�Y�s�^�4�d�;�����y��~�t�4�d�;�����w�r�{�G�A�J�7��<�����x��B�/��!�R��A�8�B�PR�CS�T�����t�U�D�$��=�s�C�	
����s�C��#�.�����u��t�,������#�&������M�M�#�u�T�{�+�	
�	
����#�s�C� ��#�s�C� �	
��
�
�y�
)��A�J�*�
�
�
�y�
)��#�x��%�*� "�s�~�~�'@�'@�1�'D� E��
�
�
�
�M�:�
;��!�*�+�<�	
����s��S�)�����q�#���,�����r�3���-�����s�C��#�.�����s�C��#�.�����s�C��#�.�����t�S�)�3�/�����s�D�)�3�/������t�S�)�3�/������t�c�T�*�C�0�����r�C�4��#�.�	
����
�
�5��:�.�/�����
�
�5��C�=�1�2�����
�
�5��b�>�2�3�����
�
�5��S�>�2�3�����
�
�5��c�?�3�4�����
�
�5��:�.�/���O�	��r��A��O�O�D�L�L��)��Q��)@�)2�T�Y�Y�q�\�)A�C�
D��
��9�C���s�
�*�E����T�Z�Z��%���5��9�1�U�7�C��	
���)�T�Z�Z�E�C�5��8�E�f�E�Q*�
)��
)�
)��<�
;�s$�Z"�Z4�
[�"
Z1�4
[�
[z7hypot() loses accuracy on machines with double roundingc	��[Rn[Rn[R"SS9nSH�upE[
R
U5n[
R
U5nURXEXgS9 [R"U5 [U"U5S-U"U5S--R55nSSS5 URU"Xg5W5 SSS5 M� g!,(df   N3=f!,(df   M�=f)N��)�prec))z0x1.10e89518dca48p+29z0x1.1970f7565b7efp+30)z0x1.10106eb4b44a2p+29z0x1.ef0596cdc97f8p+29)z0x1.459c058e20bb7p+30z0x1.993ca009b9178p+29)z0x1.378371ae67c0cp+30z0x1.fbe6619854b4cp+29)z0x1.f4cd0574fb97ap+29z0x1.50fe31669340ep+30)z0x1.494b2cdd3d446p+29z0x1.212a5367b4c7cp+29)z0x1.f84e649f1e46dp+29z0x1.1fa56bef8eec4p+30)z0x1.2e817edd3d6fap+30z0x1.eb0814f1e9602p+29)z0x1.0d3a6e3d04245p+29z0x1.32a62fea52352p+30)z0x1.888e19611bfc5p+29z0x1.52b8e70b24353p+29)z0x1.538816d48a13fp+29z0x1.7967c5ca43e16p+29)z0x1.57b47b7234530p+29z0x1.74e2c7040e772p+29)z0x1.821b685e9b168p+30z0x1.677dc1c1e3dc6p+29)z0x1.9e8247f67097bp+29z0x1.24bd2dc4f4baep+29)z0x1.b73b59e0cb5f9p+29z0x1.da899ab784a97p+28)z0x1.94a8d2842a7cfp+30z0x1.326a51d4d8d8ap+30)z0x1.e930b9cd99035p+29z0x1.5a1030e18dff9p+30)z0x1.1592bbb0e4690p+29z0x1.a9c337b33fb9ap+29)z0x1.1243a50751fd4p+29z0x1.a5a10175622d9p+29)z0x1.57a8596e74722p+30z0x1.42d1af9d04da9p+30)z0x1.ee7dbd9565899p+29z0x1.7ab4d6fc6e4b4p+29)z0x1.5c6bfbec5c4dcp+30z0x1.02511184b4970p+30)z0x1.59dcebba995cap+30z0x1.50ca7e7c38854p+29)z0x1.768cdd94cf5aap+29z0x1.9cfdc5571d38ep+29)z0x1.dcf137d60262ep+29z0x1.1101621990b3ep+30)z0x1.3a2d006e288b0p+30z0x1.e9a240914326cp+29)z0x1.62a32f7f53c61p+29z0x1.47eb6cd72684fp+29)z0x1.d3bcb60748ef2p+29z0x1.3f13c4056312cp+30)z0x1.282bdb82f17f3p+30z0x1.640ba4c4eed3ap+30)z0x1.89d8c423ea0c6p+29z0x1.d35dcfe902bc3p+29)�hx�hyrr�rI)rQr�r$r%�Contextr;r��subTest�localcontextr�r�)	rcr�r%�high_precisionr�r�rr��zs	         r�testHypotAccuracy�MathTests.testHypotAccuracyns����
�
���/�/�� ���c�2��$
�F�B�J�
�
�b�!�A��
�
�b�!�A�����a��5��)�)�.�9��w�q�z�1�}�w�q�z�1�}�<�B�B�D�E�A�:�� � ��q��a�0�6�5�O$
�P:�9��6�5�s$�6C:�
/C)�< C:�)
C7�3C:�:
D		c��SSKJn SSKJn [R
n[RnURU"SS5S5 URU"SS5S5 [S	5H�n[S
5Hpn[S[U555n[S[U555nURU"Xx5U"[S
[Xx55555 Mr M� URU"/SQ/SQ5S5 URU"[/SQ5[/SQ55S5 URU"SS5S5 URU"SS5S5 URU"[S5S4S5S5 URU"S[S5S45S5 URU"S[S54S5S5 URU"SS5S5 URU"U"S5U"S54U"S5U"S545U"S55 URU"U"SS5U"SS54U"SS5U"SS545U"SS55 URU"SS5S 5 URU"S!S!5S"5 URU"S#S#5S"5 URS$[R"S$U"S%S&555 URS$[R"S$U"S&S%555 URU"S'S(5U"S)S(55 "S*S+[5n	URU"U	"S5S5S5 UR!["5 U"SS,S-9 SSS5 UR!["5 U"S5 SSS5 UR!["5 U"SS,S.5 SSS5 UR!["5 U"SS5 SSS5 UR!["5 U"S/S5 SSS5 UR![$5 U"S0S15 SSS5 UR![$5 U"SS25 SSS5 UR!["5 U"S3S45 SSS5 UR!["5 U"S5S65 SSS5 S7[&R(R*S
--n
UR![$[,45 U"SU
4S85 SSS5 UR![$[,45 U"S8SU
45 SSS5 UR!["5 U"S9S5 SSS5 UR!["5 U"S/S5 SSS5 "S:S;5nUR![$5 U"S/U"5/5 SSS5 [S<5HRn[.R."5[.R."5p�URU"U4U45[1Xx-
55 MT [2S=S>S"S?[4[6/n[8R:"US@SA9H�n[8R:"US@SA9H�n[Xx5V
Vs/sH	up�X�-
PM nn
n[=[?[R@U55(aURU"Xx5[45 Mj[=[?[RBU55(dM�URE[RB"U"Xx555 M� M� [FSB-n[S5H�nU4U-nS&U-nURE[RH"U"Xx5U[R"U5-55 URE[RH"U"X�5U[R"U5-55 M� [S5Hmn[JS U--nSCU-S@U-4nSDnUR[R
"Xx5S
U-5 UR[R
"X�5S
U-5 Mo g!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GNv=f!,(df   GNa=f!,(df   GNL=f!,(df   GN7=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=fs snn
f)ENrr�r�)r�r�r�)r�r�r�r!�rrIr�)r�rIr��	r�c3�P# �UHn[R"SS5v� M g7f����r�N�ru�uniform�r��ks  rr��%MathTests.testDist.<locals>.<genexpr>�����B��A�&�.�.��Q�/�/����$&c3�P# �UHn[R"SS5v� M g7fr�r�r�s  rr�r��r�r�c3�4# �UHupX-
S-v� M g7f)r�Nrq)r��px�qxs   rr�r��s���F�I�&�"�b�g�#�-�I�s�)�,@r�)r�r�r�)�r)rI���r�r�r)�rr�r�r�)rIi����)r�r�rIr�)TTFFTT)TFTFFFr�)��*@g)@�
�r�rqr�)r�)r�)r�r�r�)rrr)r�r�r�c��\rSrSrSrg)�MathTests.testDist.<locals>.Ti�rqNrvrqrr�Tr��r�rr�)r�r�r���p�q)rxr�r�)r�r�r�)rrIr�r�)r�r�rx)r�r�r�rx)rrrrrrrrrrrrrrrrrr{)rrrrrrrrrrrrrrrrrr�abc�xyzr)rIr��rc�"�\rSrSr\"5rSrg)�$MathTests.testDist.<locals>.BadFloatirqN)rlrmrnror�rirprqrr�BadFloatr�r@rr��r�r�r�r���repeatr�r�)r�r�)&r$r%r�r�rQ�distr�r�r �tupler�r��zip�iterr\rRr�r�r�r�r\r�r
rur'r�r�r��	itertools�product�any�maprVrUr�r�r�r�)rc�D�Fr�r�r$r�r�r�r�r�r��valuesr�r��diffsr�rrEr�s                    r�testDist�MathTests.testDist�s2��(�+��y�y���y�y��	
����o�/?�@�#�F�����i��4�c�:��q��A��1�X���B��q��B�B���B��q��B�B���&�&���J���F�C��I�F�F�G����	
����o�/?�@�#�F�����d�?�3�T�:J�5K�L�c�R�	
����k�;�7��>�����g�w�/��4�����y��~�q�1�7�;�R�@�����g�	�#���';�<�b�A�����r�9�S�>�2�G�<�b�A�����h��0�"�5�����q��u�a��d�m�a��d�A�b�E�]�;�Q�r�U�C�����q��R�y�!�A�r�(�3�a��2�h��"�b�	�5J�K��2�r��	$�����D�F�H��	�
	
����2�2�4��	�	
����b�"��s�+������M�M�#�t�G�V�4�5�	
�	
�����M�M�#�t�F�G�4�5�	
�	
�����)�,���)�,�	
�	��	�����a�	�l�Z�9�3�?��
�
�y�
)��9�	�*�*�
�
�
�y�
)���O�*�
�
�
�y�
)���I�y�1�*�
�
�
�y�
)���A�J�*�
�
�
�y�
)��%�y�1�*�
�
�
�z�
*���y�)�+�
�
�
�z�
*���L�)�+�
�
�
�y�
)��$�g�.�*�
�
�
�y�
)�����*� "�s�~�~�'@�'@�1�'D� E��
�
�
�
�M�:�
;��!�*�+�V�4�<�
�
�
�
�M�:�
;���!�2�3�4�<�
�
�
�y�
)���q�M�*�
�
�
�y�
)��!��a�L�*�	#�	#��
�
�z�
*��!��x�z�l�#�+��r��A��=�=�?�F�M�M�O�q����T�1�$���-�s�1�5�z�:��
��t�S�$��S�9���"�"�6�!�4�A��&�&�v�a�8��/2�1�y�9�y�V�R���y��9��s�4�:�:�u�-�.�.��$�$�T�!�Z��5���T�Z�Z��/�0�0��O�O�D�J�J�t�A�z�$:�;�9�5���O�	��r��A���q� �A���
�A��O�O�D�L�L��a��Y����1��5M�N�O��O�O�D�L�L��a��Y����1��5M�N�O�	���9�C���s�
�*�E��5��!�E�'�"�A��A����T�Y�Y�q�_�a��g�6����T�Y�Y�q�_�a��g�6��y*�
)��
)�
)��
)�
)��
)�
)��
)�
)��
*�
*��
*�
*��
)�
)��
)�
)��<�
;��
;�
;��
)�
)��
)�
)��+�
*��:s��8a�	a*�a<�+
b�
b �9
b2� 
c�
c�.
c(�;c:�*d�
d�:d0�,e�9e
�
a'�*
a9�<
b�
b� 
b/�2
c�
c�
c%�(
c7�:
d	�
d�
d-�0
d?�
ec��UR[5 [R"SS//SQ5 SSS5 g!,(df   g=f)NrrI)r�r�r�)r�r�rQr�rhs r�test_math_dist_leak�MathTests.test_math_dist_leak.s.��
�
�
�z�
*��I�I�q�!�f�i�(�+�
*�
*�s	�;�
A	c	�:�[[S55[[SS55-[SS5VVs/sHn[SS5HnSU-U-PM
 M! snn-S	S
-SS-/-nUH~nURUS
9 [R"U5nUR[
U5[5 URXU-U5 URXES-US--5 SSS5 M� UR[5 [R"S5 SSS5 [R"S5nUR[
U5[5 URUS5 [R"S5nUR[
U5[5 URUS5 "SS[5n[R"U"S55nUR[
U5[5 URUS5 UR[5 [R"U"S55 SSS5 SS[R"S5SSS/nUHOnURUS
9 UR[ 5 [R"U5 SSS5 SSS5 MQ gs snnf!,(df   GMb=f!,(df   GN�=f!,(df   N�=f!,(df   NW=f!,(df   M�=f)NriX>i(F�<ryi����(rIr�i'ri�r`rr�TFrc� �\rSrSrSrSrSrg)�(MathTests.testIsqrt.<locals>.IntegerLikeiPc��Xlgr_r`rbs  rrd�1MathTests.testIsqrt.<locals>.IntegerLike.__init__Qs��"�
rc��UR$r_r`rhs rr}�2MathTests.testIsqrt.<locals>.IntegerLike.__index__Ts���z�z�!rr`Nrrqrr�IntegerLikerPs��
#�
"rri�rAr�r�za stringz3.5y@gY@r�)�listr r�rQ�isqrt�assertIsr�rT�assertLessEqual�
assertLessr�r�r��objectr$r%r�)rcr�r$r�rar�r�
bad_valuess        r�	testIsqrt�MathTests.testIsqrt3s]��
��t����5��|�4�5�
6�!&�r�3��H��A��s�B��A�q�!�t�a�x��x��H�
I��$�w��D��!�
"�	�!�E����E��*��J�J�u�%���
�
�d�1�g�s�+��$�$�Q�S�%�0�����!��a��c�{�3�	+�*�!��
�
�z�
*��J�J�r�N�+�
�J�J�t����
�
�d�1�g�s�#�����A���J�J�u����
�
�d�1�g�s�#�����A��	"�&�	"�
�J�J�{�4�(�)���
�
�d�1�g�s�#�����B��
�
�
�z�
*��J�J�{�2��'�+�

��W�_�_�U�3�T��4�
�
� �E����E��*��&�&�y�1��J�J�u�%�2�+�*� ��WI�
+�*��+�
*��.+�
*��2�1��+�*�sN�&J>�A$K�	K�'K)�<L�K:�)L�
K	�
K&�)
K7�:
L�L�
L	c�&�[RnURU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS5S5 URU"SS	5S
5 URU"S	S5S
5 URU"SS
5S5 SnSnSH�nX$-nX4-nX#-U-nURU"XV5U5 URU"Xe5U5 URU"U*U5U5 URU"Xe*5U5 URU"XV*5U5 URU"U*U5U5 URU"U*U*5U5 URU"U*U*5U5 M� URU"5S5 URU"S5S5 URU"S5S5 URU"SS	S5S5 URU"SSS	5S5 UR[US5 UR[USS	5 UR[USS5 UR[USSS5 URU"[S5[S	55S
5 g)Nrrr�rxr�r�iYr�r�iHr�r�r�l ,�`aUx�-�xB�:Vn
Ldbl�m�e%Y%l};T^�	)r�l�|/Kr2r�i�7r�r�)rQ�lcmr�r�r�rx)rcrrr�r�r�r��ds        r�test_lcm�MathTests.test_lcmhs����h�h������Q���A�&�����Q���A�&�����R���Q�'�����Q���A�&�����Q���Q�'�����Q���A�&�����Q���Q�'�����S�"��s�+�����S�"��s�+�����R����,�����9�8�:�R�	T�
!�� ��(�A���A���A����	�A����S��Y��*����S��Y��*����S�!��Q�Z��+����S��B�Z��+����S��B�Z��+����S�!��Q�Z��+����S�!��a�R�[�!�,����S�!��a�R�[�!�,�(�	
������"�����S��3�'�����T��C�(�����S�"�c�*�E�2�����S�!�R��!�,����)�S�%�0����)�S�%��4����)�S�#�t�4����)�S�#�q�$�7�����[��-�{�2��?��Erc	�R	�UR[[R5 UR[[RSS5 UR	S[R"SS5S5 UR	S[R"SS5S5 UR	S[R"SS	5S
5 UR	S[R"S	S5S5 UR[
[RS
S5 UR[
[RSS5 UR
[R"S
S5S5 UR
[R"SS5S5 UR
[R"[S5[5 UR
[R"[S5[5 UR[R"[R"[S555 SSSSS-4GHynUR
[R"[U*5[5 UR
[R"[U*5[5 UR
[R"S
U*5S5 UR
[R"SU*5S5 UR
[R"SU*5S5 UR
[R"SU*5S5 UR[R"[R"[U*555 UR[
[RS
U5 UR[
[RSU5 UR
[R"SU5S5 UR
[R"SU5S5 UR
[R"[U5[5 UR
[R"[U5[5 UR[R"[R"[U555 GM| g)Nr�r�z
ldexp(0,1)rrz
ldexp(1,1)rIzldexp(1,-1)r�r�zldexp(-1,1)r-r�rr�i���r�r��i+���順�d(	� F�x:^Vrr
)r�r�rQr^r�r
r�r�r�r�rUr��rcrs  r�	testLdexp�MathTests.testLdexp�s������)�T�Z�Z�0����)�T�Z�Z��c�:��
�
�<����A�a��!�4��
�
�<����A�a��!�4��
�
�=�$�*�*�Q�r�"2�C�8��
�
�=�$�*�*�R��"2�B�7����-����R��A����-����S�'�B�������B��1�2�6�������C��2�C�8�������C��,�c�2�������D�$�/��6�����
�
�4�:�:�c�1�#5�6�7�����R��0�A����T�Z�Z��a�R�0�#�6����T�Z�Z��q�b�1�4�8����T�Z�Z��Q�B�/��4����T�Z�Z��a�R�0�#�6����T�Z�Z��Q�B�/��4����T�Z�Z��a�R�0�#�6��O�O�D�J�J�t�z�z�#��r�':�;�<����m�T�Z�Z��Q�?����m�T�Z�Z��a�@����T�Z�Z��A�.��3����T�Z�Z��Q�/��5����T�Z�Z��Q�/��5����T�Z�Z��a�0�$�7��O�O�D�J�J�t�z�z�#�q�'9�:�;�1rc�R�UR[R"SS5S5 g)Nl�s�@ba�i����g)r�rQr^rhs r�testLdexp_denormal�MathTests.testLdexp_denormal�s ��	
������$4�e�<�f�Erc�"�UR[[R5 UR[[RSSS5 UR	S[R"S[R
-5S5 UR	S[R"S5S5 UR	S[R"[R
5S5 UR	S	[R"S
S5S5 UR	S[R"S
S-S
5S5 UR	S[R"S
S-S5S5 UR	S[R"S
S-5S5 UR[[RS5 UR[[RS
S-*5 UR[[RS
S5 UR[[R[5 UR[R"[5[5 UR[R"[R"[555 g)NrrIr�zlog(1/e)r�zlog(1)rzlog(e)z	log(32,2)r�r�zlog(10**40, 10)rr
zlog(10**40, 10**20)r'z
log(10**1000)rgO�+��@r�rH)
r�r�rQ�logr�r�r�r�r�r�r�rUr�rhs r�testLog�MathTests.testLog�s������)�T�X�X�.����)�T�X�X�q�!�Q�7��
�
�:�t�x�x��$�&�&��1�2�6��
�
�8�T�X�X�a�[�!�,��
�
�8�T�X�X�d�f�f�-�q�1��
�
�;�����A���2��
�
�$�d�h�h�r�2�v�r�&:�B�?��
�
�(�$�(�(�2�r�6�6�*B�A�F��
�
�?�D�H�H�R��X�$6�%�	'����*�d�h�h��5����*�d�h�h��T��	�:����*�d�h�h��C�8����*�d�h�h��5�������#���,�����
�
�4�8�8�C�=�1�2rc	��UR[[R5 SSS-SS-4HFnUR	[R"U5[R"[U555 MH UR[[RS5 UR[R"[5[5 g)NrI�Zi,r�)	r�r�rQ�log1pr�r;r�r�r�r(s  r�	testLog1p�MathTests.testLog1p�s������)�T�Z�Z�0��Q��U�A�s�F�#�A��"�"�4�:�:�a�=�$�*�*�U�1�X�2F�G�$����*�d�j�j�"�5�������C��#�.rc�<�UR[[R5 UR	[R"S5S5 UR	[R"S5S5 UR	[R"S5S5 UR	[R"SS-5S5 UR	[R"SS	-5S
5 UR	[R"SS-5S5 UR[
[RS
5 UR[
[R[5 UR[R"[R"[555 g)Nrr�rIr�r�r�i�g��@�g�@i�g@�@r�)
r�r�rQ�log2r�r�r�r�rUr�rhs r�testLog2�MathTests.testLog2�s�����)�T�Y�Y�/�	
������1��s�+�������1��s�+�������1��s�+�	
������1�d�7�+�V�4�������1�d�7�+�V�4�������1�d�7�+�V�4����*�d�i�i��6����*�d�i�i��6�����
�
�4�9�9�S�>�2�3rrc	��[SS5Vs/sH.n[R"[R"SU55PM0 nn[SS5Vs/sHn[	U5PM nnURX#5 gs snfs snf)Nrrr8r�)r rQr9r^r;r�)rcrr�r)s    r�
testLog2Exact�MathTests.testLog2Exact�sm��
:?�u�d�9K�L�9K�A�$�)�)�D�J�J�s�A�.�/�9K��L�&+�E�4�&8�9�&8��E�!�H�&8��9�����*��M��9s�5A=�Bc�N�UR[[R5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S	[R"SS
-5S5 UR[
[RS5 UR[
[RSS
-*5 UR[
[R[5 UR[R"[5[5 UR[R"[R"[555 g)
Nz
log10(0.1)皙�����?r�zlog10(1)rrz	log10(10)rzlog10(10**1000)rg@�@r�)
r�r�rQ�log10r�r�r�r�r/r�r�rUr�rhs r�	testLog10�MathTests.testLog10�s������)�T�Z�Z�0��
�
�<����C��"�5��
�
�:�t�z�z�!�}�a�0��
�
�;��
�
�2���2��
�
�$�d�j�j��T��&:�F�C����*�d�j�j�$�7����*�d�j�j�2�t�8�)�<����*�d�j�j�$�7�������#���,�����
�
�4�:�:�c�?�3�4rc��[Rn[Rn[R
nUR
U"[/SQ5S5S5 UR
U"SS/SS/5S5 UR
U"//5S	5 UR
U"S
/S/5S
5 UR
U"S/S
/5S
5 SSU"S
S5U"SS54U"S5U"S54SSU"S
S54SU"S
S54SU"S544H�nXD4XDSSS
244HtupVURXVS9 [S[XVSS955nU"XV5nUR
Xx5 UR
[U5[U55 SSS5 Mv M� UR[U5 UR[U/5 UR[U///5 UR[USS/5 UR[US/S5 UR[US/S/5 UR[USS/S/5 UR[US/SS/5 UR
U"S/S/5S5 UR
U"S/S/5S5 UR
U"S/S/5S5 UR
U"S/S-S/S-5S5 UR[USS -/S/5 UR[US/SS -/5 S!n	UR[ 5 U"[#S5U	"S55 SSS5 UR[ 5 U"U	"S5[#S55 SSS5 S	S"KJn
 UR
U"U
"S5S/5S	5 UR
U"S/U
"S55S	5 "S#S$5nUR[ 5 U"SU"5S//SQ5 SSS5 UR[ 5 U"/SQSU"5S/5 SSS5 UR[5 U"S%S
/SS/5 SSS5 UR[5 U"SS/S%S
/5 SSS5 UR
U"S&[R(/S'S(/5[R(5 UR
U"S&[R(/[R(S(/5[R(5 UR
U"S&[R(/[R([R(/5[R(5 UR
U"S&[R(*/S'S(/5[R(*5 UR+[R,"U"S&[R(/[R(*[R(/555 UR+[R,"U"S&[R./S'S(/555 UR+[R,"U"S&[R(/[R.S(/555 UR+[R,"U"S&[R(/S)[R./555 S*nUR
U"U6S+5 g!,(df   GM�=f!,(df   GN�=f!,(df   GN�=f!,(df   GN&=f!,(df   GN=f!,(df   GN�=f!,(df   GN�=f),N)rr�r$r��r��@r�g@g�0@rr�r�)r�g�r�r�r�)rFr�r�c3�.# �UHupX-v� M
 g7fr_rq)r��p_i�q_is   rr��(MathTests.testSumProd.<locals>.<genexpr>s���"T�=S���3�9�=S�s�T��strictrrr�r$r'rr&i���r%l�9Vrc3�B# �[U5HnUv� M	 [e7fr_)r �RuntimeError)rr$s  r�raise_after�*MathTests.testSumProd.<locals>.raise_after.s����1�X�������s�)�BasicIterClassc� �\rSrSrSrSrSrg)�*MathTests.testSumProd.<locals>.BadMultiplyi=c��[er_�rO�rc�others  r�__mul__�2MathTests.testSumProd.<locals>.BadMultiply.__mul__>���"�"rc��[er_rVrWs  r�__rmul__�3MathTests.testSumProd.<locals>.BadMultiply.__rmul__@r[rrqN)rlrmrnrorYr]rprqrr�BadMultiplyrT=s��
#�
#rr_r�g333333$@g3333334@g�����L>@g�����L4@))r�r�r)r���r�)rQ�sumprodr$r%r�r�r�r�r�r�r�r�r�r�r�r
rOr �test.test_iterrRrr�rUr)
rcrbr%r�r�r�r�r)r�rPrRr_r�s
             r�testSumProd�MathTests.testSumProd�s����,�,���/�/���%�%��	
�����l�!3�Y�?��E�����#�s��c�3�Z�8�$�?������R��!�,�����"���t�,�b�1�����"���t�,�b�1�
��
�a��^�X�a��^�,�
�S�\�7�3�<�(��
�(�1�a�.�!�
��!�Q�� �
�����	
�A���!�t��t�W��.����\�\�A�\�+�"�"T�S��d�=S�"T�T�H�$�Q�]�F��$�$�X�6��$�$�T�(�^�T�&�\�B�	,�+�/�	
�$	
���)�W�-����)�W�b�1����)�W�b�"�b�9����)�W�d�R�D�9����)�W�r�d�D�9����)�W�s�e�c�U�;�	
���*�g��B�x�"��>����*�g��t�b�"�X�>�	
����&��A�3�/��8�����!��v�h�/��8�����&��F�8�4�f�=�����%�������
�>��G����-��2�t�8�*�s�e�D����-��3�%�"�d�(��D�	��
�
�|�
,��E�"�I�{�1�~�.�-�
�
�
�|�
,��K��N�E�"�I�.�-�	2�������!2�Q�C�8�!�<�����!��n�Q�&7�8�!�<�	#�	#�
�
�
�|�
,��R����+�Y�7�-�
�
�
�|�
,��I��K�M�2�6�7�-��
�
�y�
)��U�A�J��B��(�*�
�
�
�y�
)��Q��G�e�Q�Z�(�*�	
����$����!1�D�$�<�@�$�(�(�K�����$����!1�D�H�H�d�3C�D�d�h�h�O�����$����!1�D�H�H�d�h�h�3G�H�$�(�(�S�����$����	�!2�T�4�L�A�D�H�H�9�M�����
�
�7�D�$�(�(�+;�t�x�x�i����=R�#S�T�U�����
�
�7�D�$�(�(�+;�d�D�\�#J�K�L�����
�
�7�D�$�(�(�+;�d�h�h��=M�#N�O�P�����
�
�7�D�$�(�(�+;�d�D�H�H�=M�#N�O�P�O������$���-�M,�+��>-�
,��
,�
,��-�
,��
,�
,��*�
)��
)�
)�sU�&A[�[%�[7�\	�\�8\-�#\?�
["�%
[4�7
\�	
\�
\*�-
\<�?
]zBsumprod() accuracy not guaranteed on machines with double roundingc�,�[RnURU"S/S-S/S-5S5 URU"S/S-SS/S-5S5 URU"SS/S-S/S-5S5 URU"/SQS/S	-5S
5 g)Nr@rrr�r�TF)r�g\�n��Tr�g\�n���r�r�)rQrbr�)rcrbs  r�test_sumprod_accuracy�MathTests.test_sumprod_accuracy\s���
�,�,������#����a�S��V�4�c�:�����#����d�E�]�R�-?�@�#�F�����$����!3�c�U�R�Z�@�#�F�����!<�s�e�A�g�F��Lr�cpuc�R^�[Rn[Rn[R
n[Rn"U4SjS[5m"U4SjS[5nSnSnSSS	S
SSS
SS-ST"S54
SSSS--SSS--SSS--SSSSSSS-4	SS S![S"5[S"5*[S#5S$S%S&U"S'5S(4S)S*U"S+5U"S,5U"S'S-5U"S.S/5S0S1S2T"S54
U"S35U"S45U"S55U"S65U"S75U"S75*U"S#5S8S94	S:SSS--SSS;S<S=S>4S?S@SASBSCSDSEST"SF54/	nUHSn	[SG5HAn
U"X�SH9H4nU"X�SH9H'nX�4n
URU"U/U
Q76U"U/U
Q76U
5 M) M6 MC MU g)INc�<>�\rSrSrU4SjrU4Sjr\r\rSrSr	g)�*MathTests.test_sumprod_stress.<locals>.Intinc�>>�T"[U5[U5-5$r_�rT�rcrX�Ints  �r�__add__�2MathTests.test_sumprod_stress.<locals>.Int.__add__o�����3�t�9�s�5�z�1�2�2rc�>>�T"[U5[U5-5$r_rnros  �rrY�2MathTests.test_sumprod_stress.<locals>.Int.__mul__qrsrc� �S[U5S3$)NzInt(�)rnrhs r�__repr__�3MathTests.test_sumprod_stress.<locals>.Int.__repr__u����c�$�i�[��*�*rrqN�
rlrmrnrorqrY�__radd__r]rxrp�rps�rrprln����
3�
3��H��H�
+rrpc�<>�\rSrSrU4SjrU4Sjr\r\rSrSr	g)�*MathTests.test_sumprod_stress.<locals>.Fltixc�>>�T"[U5[U5-5$r_rnros  �rrq�2MathTests.test_sumprod_stress.<locals>.Flt.__add__yrsrc�>>�T"[U5[U5-5$r_rnros  �rrY�2MathTests.test_sumprod_stress.<locals>.Flt.__mul__{rsrc� �S[U5S3$)NzFlt(rwrnrhs rrx�3MathTests.test_sumprod_stress.<locals>.Flt.__repr__rzrrqNr{r}s�r�Fltr�xr~rr�c�>�Sn[XSS9Hup4X#U--
nM U$)z�This defines the target behavior including exceptions and special values.
However, it is subject to rounding errors, so float inputs should be exactly
representable with only a few bits.
rTrL)r�)r�r�rrIrJs     r�baseline_sumprod�7MathTests.test_sumprod_stress.<locals>.baseline_sumprod�s-��
�E���T�2����s��"��3��Lrc��U"U6nS[U5[	U54$![[4a e[an[U5SS4sSnA$SnAff=f)zHMake comparing functions easier. Returns error status, type, and result.N�None)�AssertionError�	NameError�	Exceptionr��repr)�funcr�rQr�s    r�run�*MathTests.test_sumprod_stress.<locals>.run�sZ��
-��t���
��f��t�F�|�3�3��	#�I�.�
���
-��A�w��f�,�,��
-�s��A�
A�A�Ar�ri�llrar`rI�Pr�rx)	�@g�g@��&@gy@g�?��?r�g���3�r�r�rr�i�i:,r�r�g8�r�ig@rFr�r�NaNr�r�y@@r�r�r�g�z10.5z-2.25r�i�����y@�?�ai���z6.125z12.375z-2.75r�Infr�g+@gp�l�����gp�g`�g�)g<�g��r�g�r�g�g�g`7@TFr�r�r�)rQrbr�r�r$r%r�r�rTr;r r�)rcrbr�r%r�r�r�r��pools�pool�size�args1�args2r�rps              @r�test_sumprod_stress�MathTests.test_sumprod_stressgs�����,�,���#�#���/�/���%�%��	+�#�	+�	+�%�	+�	�	4���V�U�E�5�%��B���S��V�L�M�
�1�c�6�\�2�a��g�:�r�!�T�'�z�8��U�N�Q��3��
8�
�3��e�E�l�U�5�\�M�5��<���4��R��#�
'�
�E�7�6�?�G�G�,<�h�r�1�o��#�r�"�M�2�s�C��F�
D�
�W�
�w�x�0�'�'�2B�G�A�J����'�%�.��'�%�.�"�d�
L�
�B�q�$�w�J��1�i��Z��
�A�
�E�6�6�4���3�q�6�B�
��"�D��a���$�T�7�E�!(��!;�� %�~���(�(�� 0�8�4�8���/�$�/� ��"<�8�!�rc	�^^^^^^	^
^^^
^^^^^^^^^�SSKmSSKJm SSKJm SSKJn SSKJmJ	mJ
m SSKJm
J
mJm SSKJn U"SS	5mUUU4S
jmU4SjmSmUUUU
UUUUU4	S
jm	UU4Sjm
U	U
4SjmSnSmSmU"UUU4Sj[#U555nUR%US5 g)Nrr�)�starmap)�
namedtuple)r9rr)�choicesr�rw)�median�
DotExample)rr��target_sumprod�	conditionc�|>�[TU5n[TU5n[T"TR[X#SS955$)NTrL)rr��mulr�)rr��vec1�vec2r��operatorr�s    ���r�DotExact�DMathTests.test_sumprod_extended_precision_accuracy.<locals>.DotExact�s8����x��#�D��x��#�D��w�x�|�|�S��D�-I�J�K�Krc�x>�ST"[[U5[[U55-[T"X55-$)Nr�)rr')rr�r�s  �r�	Condition�EMathTests.test_sumprod_extended_precision_accuracy.<locals>.Condition�s/�����#�c�1�+�s�3��{�;�;�c�(�1�.�>Q�Q�Qrc�`�X-
US-
-n[U5Vs/sH	o@X4--PM sn$s snf�Nr)r )�lo�hir�widthr$s     r�linspace�DMathTests.test_sumprod_extended_precision_accuracy.<locals>.linspace�s2���W��Q��'�E�,1�!�H�5�H�q���N�H�5�5��5s�+c�>	�US-nS/U-nS/U-nT"U5nT
"[[US-55US9n[US-5S-US'SUS'UVs/sHnT"SS5T"U5-PM snUS	U&UVs/sHnT"SS5T"U5-PM snUS	U&[[[T"US-SX-
555n[X 5HCnT"SS5T"XhU-
5-X8'T"SS5T"XhU-
5-T"X45-
X8-XH'ME [[X455n	T"U	5 [U	6up4T"X4T"X45T
"X455$s snfs snf)
aHAlgorithm 6.1 (GenDot) works as follows. The condition number (5.7) of
the dot product xT y is proportional to the degree of cancellation. In
order to achieve a prescribed cancellation, we generate the first half of
the vectors x and y randomly within a large exponent range. This range is
chosen according to the anticipated condition number. The second half of x
and y is then constructed choosing xi randomly with decreasing exponent,
and calculating yi such that some cancellation occurs. Finally, we permute
the vectors x, y randomly and calculate the achieved condition number.
rIr�)r�rrr�r�r�N)r rTrr�roundr�)rr��n2rr�r�r�r�r$�pairsr�r�r�r�rr�r9rwr�s          ���������r�GenDot�BMathTests.test_sumprod_extended_precision_accuracy.<locals>.GenDot�su����a��B����	�A����	�A��Q��A���c�!�A�#�h��2�.�A��q�1�u�:��>�A�a�D��A�b�E�<=�>�A�q�g�d�C�(�4��7�2�A�>�A�c�r�F�<=�>�A�q�g�d�C�(�4��7�2�A�>�A�c�r�F��S����1��c�A�D� 9�:�;�A��2�\���t�S�)�D��r�6��O�;�����c�*�T�!��F�)�_�<�x��~�M�QR�QU�U���"�
��Q��O�E��E�N���;�D�A��a�H�Q�N�I�a�O�D�D��?��>s�E�:Ec�j>�Uup#pET"[U5U*/-[U5S/-5nT"Xd-5$r�)r)	�res�exrr�r�r�rr�rs	       ��r�
RelativeError�IMathTests.test_sumprod_extended_precision_accuracy.<locals>.RelativeError�s>���.0�+�A�.���a��S�D�6�)�4��7�a�S�=�9�A���*�+�+rc�`>�T"SU5nU"URUR5nT"XC5$)Nr)rr�)�dotfuncr�rr�r�r�r�s     ��r�Trial�AMathTests.test_sumprod_extended_precision_accuracy.<locals>.Trial�s-�����A��B��"�$�$����%�C� ��)�)rrr�gꌠ9Y>)Fc3�T># �UHnT"[RTT5v� M g7fr_)rQrb)r�r$r�r�rs  ���rr��EMathTests.test_sumprod_extended_precision_accuracy.<locals>.<genexpr>s!����N��A�e�D�L�L�!�Q�7�7��s�%(rq)r�r�r�r�r��collectionsr�rQr9rrrur�r�rw�
statisticsr�r r)rcr�r��times�relative_errr�r�r�r�r�r�r�r�r�rrr�r9rr�rwr�r�s     @@@@@@@@@@@@@@@@@@r�(test_sumprod_extended_precision_accuracy�2MathTests.test_sumprod_extended_precision_accuracy�s������	�&�%�*�)�)�4�4�%���.W�X�
�	L�
	R�	6�$	E�$	E�L	,�
	*�
�������N��u��N�N������e�,rc�f^�TR[[R5 U4SjnU"S[R"S5S5 U"S[R"S5S5 TR	[R"[
5S[
45 TR	[R"[5S	[45 [R"[5nTR[R"US
55 TR[R"US55 g)Nc�>�Xsup4upV[X5-
5[:�d[XF-
5(aTRU<SU<SU<35 ggrOrP)r�rQr)�v1�v2�e1�e2rcs       �r�testmodf�$MathTests.testModf.<locals>.testmodf
sF���!'��H�R�h�r��2�5�z�C��3�r�u�:�:��	�	����3�4�$.rz	modf(1.5)r�)r�r�z
modf(-1.5)r�)r�r�r�r�rr)
r�r�rQ�modfr�r�r�r�r�rU)rcr��modf_nans`  r�testModf�MathTests.testModf
s�������)�T�Y�Y�/�	4�	��d�i�i��n�j�9���t�y�y����=�������3��#�s��4�������4��4��,�7��9�9�S�>������
�
�8�A�;�/�0�����
�
�8�A�;�/�0rc�&�UR[[R5 UR	S[R"SS5S5 UR	S[R"SS5S5 UR	S[R"SS5S5 UR	S[R"SS5S	5 UR[R"[S5[5 UR[R"[S5[5 UR[R"S[5S
5 UR[R"S[5S
5 UR[R"[R"[S555 UR[R"[R"S[555 UR[R"[R"S[555 UR[R"S[5S5 UR[[RSS5 UR[R"S[5S5 UR[R"SS
5S5 UR[R"SS5S5 UR[R"SS5S5 UR[R"SS5S
5 UR[R"SS5S
5 UR[[RSS5 UR[[RSS5 UR[[RSS5 UR[R"S[5[5 UR[R"[R"S[555 UR[R"[[5[5 UR[R"[S
5[5 UR[R"[S5[5 UR[R"[S5[5 UR[R"[S5S
5 UR[R"[S5S
5 UR[R"[S5S5 UR[R"[S5S5 UR[R"[S5S5 UR[R"[[5S5 UR[R"[R"[[555 UR[R"S[5S5 UR[R"SS
5S5 UR[R"SS5S5 UR[R"SS5S5 UR[R"SS5S
5 UR[R"SS5S
5 UR[[RSS5 UR[[RSS5 UR[[RSS5 UR[R"S[5[5 UR[R"[R"S[555 UR[R"[[5[5 UR[R"[S
5[5 UR[R"[S5[5 UR[R"[S5[5 UR[R"[S5S
5 UR[R"[S5S
5 UR[R"[S5S5 UR[R"[S5S5 UR[R"[S5S5 UR[R"[[5S5 UR[R"[R"[[555 UR[R"S[5S
5 UR[R"SS
5S5 UR[[RSS5 UR[R"SS5S
5 UR[R"SS5S
5 UR[R"SS5S
5 UR[R"SS5S
5 UR[[RSS5 UR[R"SS5S5 UR[R"S[5S
5 UR[R"[R"S[555 UR[R"S
[5S
5 UR[R"S
S
5S
5 UR[R"S
S5S
5 UR[R"S
S5S
5 UR[R"S
S5S
5 UR[R"S
S5S
5 UR[R"S
S5S
5 UR[R"S
S5S
5 UR[R"S
S5S
5 UR[R"S
[5S
5 UR[R"S
[5S
5 UR[R"SS5S
5 UR[R"SS5S
5 UR[R"[S5S
5 UR[R"SS5S
5 UR[R"SS5S
5 UR[R"[S5S
5 UR[[RSS5 UR[[RSS5 UR[R"S[5S5 UR[R"S[5S5 UR[R"S[5[5 UR[R"S[5[5 UR[R"S[5[5 UR[R"S[5[5 UR[R"S[5S5 UR[R"S[5S5 UR[R"S[5[5 UR[R"S[5[5 UR[R"S[5S5 UR[R"S[5S5 UR[R"S[5S5 UR[R"S[5S5 UR[R"S[5[5 UR[R"S[5[5 UR	S[R"SS
5S 5 UR	S![R"SS5S"5 UR	S#[R"SS
5S5 UR	S$[R"SS5S
5 UR	S%[R"SS5S
5 UR	S&[R"SS5S'5 UR	S([R"SS5S)5 UR	S*[R"SS5S+5 UR[[RSS'5 UR[[RSS	5 g),Nzpow(0,1)rrzpow(1,0)zpow(2,1)rIz	pow(2,-1)r�r�r�r)r�r�r�r�r���r�rIr�g.�g�������gffffff�?r���������?r@g��������g�������g�������gffffff��z	(-2.)**3.g �z	(-2.)**2.r�z	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.r�z
(-2.)**-2.r�z
(-2.)**-3.g��)
r�r�rQ�powr�r�r�r�r�rUr�r
r�rhs r�testPow�MathTests.testPows�����)�T�X�X�.��
�
�:�t�x�x��!�}�a�0��
�
�:�t�x�x��!�}�a�0��
�
�:�t�x�x��!�}�a�0��
�
�;�����2���4�������#�q�)�3�/�������$��*�D�1����$�(�(�1�c�*�R�0����$�(�(�1�d�+�b�1�����
�
�4�8�8�C��#3�4�5�����
�
�4�8�8�A�s�#3�4�5�����
�
�4�8�8�A�s�#3�4�5�������!�S�)�1�-����-����6�6�B�	
������"�c�*�B�/�������"�b�)�2�.�������"�c�*�B�/�������"�b�)�2�.�������"�b�)�2�.�������"�c�*�B�/����*�d�h�h��C�8����*�d�h�h��D�9����*�d�h�h��C�8�������"�d�+�S�1�����
�
�4�8�8�B��#4�5�6�	
������#�s�+�S�1�������#�r�*�C�0�������#�s�+�S�1�������#�r�*�C�0�������#�r�*�B�/�������#�s�+�R�0�������#�s�+�R�0�������#�t�,�b�1�������#�s�+�R�0�������#�t�,�b�1�����
�
�4�8�8�C��#5�6�7�	
������#�s�+�R�0�������#�r�*�C�0�������#�s�+�R�0�������#�r�*�B�/�������#�r�*�B�/�������#�s�+�R�0����*�d�h�h��S�9����*�d�h�h��T�:����*�d�h�h��S�9�������#�t�,�c�2�����
�
�4�8�8�C��#5�6�7�	
������$��,�c�2�������$��+�T�2�������$��,�c�2�������$��+�S�1�������$��+�R�0�������$��,�b�1�������$��,�b�1�������$��-�r�2�������$��,�c�2�������$��-�r�2�����
�
�4�8�8�D�#�#6�7�8�	
������#�s�+�R�0�������#�r�*�C�0����*�d�h�h��S�9�������#�r�*�B�/�������#�r�*�B�/�������#�s�+�R�0�������#�s�+�R�0����*�d�h�h��T�:�������#�s�+�S�1�������#�t�,�b�1�����
�
�4�8�8�C��#5�6�7�	
������"�c�*�B�/�������"�b�)�2�.�������"�c�*�B�/�������"�b�)�2�.�������"�b�)�2�.�������"�c�*�B�/�������"�c�*�B�/�������"�d�+�R�0�������"�c�*�B�/�������"�d�+�R�0�������"�c�*�B�/�	
������#�r�*�B�/�������$��+�R�0�������#�r�*�B�/�������#�s�+�R�0�������$��,�b�1�������#�s�+�R�0�	
���*�d�h�h��S�9����*�d�h�h��d�;�	
������#�t�,�b�1�������#�t�,�b�1�������#�t�,�c�2�������#�t�,�c�2�������$��-�s�3�������$��-�s�3�������$��-�r�2�������$��-�r�2�	
������#�s�+�S�1�������#�s�+�S�1�������#�s�+�R�0�������#�s�+�R�0�������$��,�b�1�������$��,�b�1�������$��,�c�2�������$��,�c�2�	
�
�
�;�����s� 3�T�:��
�
�;�����s� 3�S�9��
�
�;�����s� 3�T�:��
�
�;�����s� 3�S�9��
�
�<����$��!5�s�;��
�
�<����$��!5�t�<��
�
�<����$��!5�t�<��
�
�<����$��!5�v�>����*�d�h�h��d�;����*�d�h�h��c�:rc���UR[[R5 UR	S[R"S5[R
5 UR	S[R"S5[R
S-5 UR	S[R"S5[R
*S-5 UR	S	[R"S
5S
5 g)Nzradians(180)�zradians(90)r3rIzradians(-45)i���r�z
radians(0)r)r�r�rQ�radiansr�r�rhs r�testRadians�MathTests.testRadians�s������)�T�\�\�2��
�
�>�4�<�<��#4�d�g�g�>��
�
�=�$�,�,�r�"2�D�G�G�A�I�>��
�
�>�4�<�<��#4�t�w�w�h�q�j�A��
�
�<����a��!�4rc�^^�SSKJm UU4Sjn/SQnUH�nTRUS9 UR5upEn[RU5n[RU5n[RU5n	U"XxU	5 [R"Xx5n
TRU
R5U	R55 SSS5 M� [RS5n[SS5HfnUS:XaMX�-n[S	5HHn
X�-n[R"Xx5n
U"XxU
5 [R"U*U5n
U"U*X�5 MJ Mh [S
SSS
[[4HWnTR[R"[U55 TR[R"U[55 MY SHYnTR[R"U[5U5 TR[R"U[5U5 M[ [S
SS
S[4H�nTR[ 5 [R"[U5 SSS5 TR[ 5 [R"[U5 SSS5 TR[ 5 [R"US
5 SSS5 TR[ 5 [R"US5 SSS5 M� g!,(df   GM=f!,(df   N�=f!,(df   N�=f!,(df   N}=f!,(df   GM:=f)Nrr�c�@>�T"U5T"U5T"U5pTnTR[U5[US-55 X5-
U-nTRU[U55 [U5[US-5:Xa"TRUS-[US-55 gg)z�
Check that r matches remainder(x, y) according to the IEEE 754
specification. Assumes that x, y and r are finite and y is nonzero.
rIN)rr'r�rT)	rr��r�fx�fy�frrr�rcs	       ��r�
validate_spec�.MathTests.testRemainder.<locals>.validate_spec�s����
"�!��h�q�k�8�A�;�B�B�� � ��R��#�b��d�)�4���B��A����Q��A��'��2�w�#�b��d�)�#�� � ��1��c�!�A�#�h�/�$r)0z-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��rGrr�r�r�r�)r�r�r�r�r�)r�r�r�r:r;r�rQ�	remainderr��hexr r�r�r��assertIsNaNr�r�)rcr��	testcasesr��x_hex�y_hex�expected_hexrr�r)r��tinyr�mrar�s`              @r�
testRemainder�MathTests.testRemainder�sy���&�
	0� 9
�	�v�D����4��(�-1�Z�Z�\�*��l��M�M�%�(���M�M�%�(�� �=�=��6���a�H�-�����-��� � �����x�|�|�~�>�)�(���}�}�Y�'���s�B��A��A�v����A��3�Z���H������-���a�F�+������A�.���q�b�!�,� �	 ��3��c�4��s�;�E����T�^�^�C��7�8����T�^�^�E�3�7�8�<�
,�E����T�^�^�E�3�7��?����T�^�^�E�4�8�%�@�,��D�$��S�#�6�E��"�"�:�.����s�E�*�/��"�"�:�.����t�U�+�/��"�"�:�.����u�c�*�/��"�"�:�.����u�d�+�/�.�7�O)�(��P/�.��.�.��.�.��.�.�s<�B L"�L5�M�M�=M(�"
L2	�5
M	�
M	�
M%	�(
M8	c��UR[[R5 UR	S[R"S5S5 UR	S[R"[R
S-5S5 UR	S[R"[R
*S-5S5 UR
[R"[R"[555 UR
[R"[R"[555 UR
[R"[R"[555 g![aU UR[[R[5 UR[[R[5 N�f=f)Nzsin(0)rz	sin(pi/2)rIrz
sin(-pi/2)r�)r�r�rQr�r�r�r�rUr�r�r�r�rhs r�testSin�MathTests.testSin;�
�����)�T�X�X�.��
�
�8�T�X�X�a�[�!�,��
�
�;��������� 3�Q�7��
�
�<����4�7�7�(�1�*�!5�r�:�	:��O�O�D�J�J�t�x�x��}�5�6��O�O�D�J�J�t�x�x��~�6�7�	
����
�
�4�8�8�C�=�1�2���	:����j�$�(�(�C�8����j�$�(�(�D�9�	:���>A:E6�6AG�Gc���UR[[R5 UR	S[R"S5S5 UR	S[R"S5S-[R
"S5S--
S5 UR	S[R"S5[R"S5-S5 UR
[R"[5[5 UR
[R"[5[5 UR[R"[R"[555 g)Nzsinh(0)rzsinh(1)**2-cosh(1)**2rrIr�zsinh(1)+sinh(-1))r�r�rQ�sinhr�rr�r�r�r�rUr�rhs r�testSinh�MathTests.testSinhHs������)�T�Y�Y�/��
�
�9�d�i�i��l�A�.��
�
�*�D�I�I�a�L�!�O�D�I�I�a�L�!�O�,K�R�P��
�
�%�t�y�y��|�D�I�I�b�M�'A�1�E�������3���-�������4��$�/�����
�
�4�9�9�S�>�2�3rc���UR[[R5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S5 UR	S[R"S5S	5 UR	S
[R"S5S5 UR	S
[R"S5S5 UR	S[R"S5S5 UR[R"[5[5 UR[[RS5 UR[[R[5 UR[R"[R"[555 g)Nzsqrt(0)rr�z	sqrt(2.5)rFgS[�:XL�?z
sqrt(0.25)r�r�zsqrt(25.25)g@9@g�)#L�@zsqrt(1)rzsqrt(4)r�rIr�)r�r�rQr�r�r�r�r�r�r�rUr�rhs r�testSqrt�MathTests.testSqrtQs"�����)�T�Y�Y�/��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��n�c�2��
�
�;��	�	�#��0B�C��
�
�<����4��#�6��
�
�=�$�)�)�E�"2�4E�F��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�A�.�������3���-����*�d�i�i��4����*�d�i�i��6�����
�
�4�9�9�S�>�2�3rc��UR[[R5 UR	S[R"S5S5 UR	S[R"[R
S-5S5 UR	S[R"[R
*S-5S5 UR
[R"[R"[555 UR
[R"[R"[555 UR
[R"[R"[555 g![aU UR[[R[5 UR[[R[5 N�f=f)Nztan(0)rz	tan(pi/4)r�rz
tan(-pi/4)r�)r�r�rQ�tanr�r�r�rUr�r�r�r�rhs r�testTan�MathTests.testTan_rrc�b�UR[[R5 UR	S[R"S5S5 UR	S[R"S5[R"S5-S[R
"S5S9 UR	S[R"[5S5 UR	S[R"[5S5 UR[R"[R"[555 g)	Nztanh(0)rztanh(1)+tanh(-1)rr�r�z	tanh(inf)z
tanh(-inf))r�r�rQ�tanhr�r�r�r�r�rUr�rhs r�testTanh�MathTests.testTanhls������)�T�Y�Y�/��
�
�9�d�i�i��l�A�.��
�
�%�t�y�y��|�D�I�I�b�M�'A�1��8�8�A�;�	�	(��
�
�;��	�	�#���2��
�
�<����4��"�5�����
�
�4�9�9�S�>�2�3rc���UR[R"S5S5 UR[R"S[R"S55[R"SS55 g)Nr�r�)r�rQrrRrhs r�testTanhSign�MathTests.testTanhSignusM��	
������3���-�������r�4�9�9�S�>�:����r�3�/�	1rc���UR[R"S5S5 UR[R"S5S5 UR[[R"S55[5 UR[[R"S55[5 UR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S	5S
5 "SS5n"S
S[
5n"SS5n"SS5nUR[R"U"55S5 UR[R"U"55S5 UR
[[R5 UR
[[RSS5 UR
[[R[S55 UR
[[RU"55 UR
[[RU"55 g)Nrr�r�r�g����?g�����g�!��rg-���?Y�i����c��\rSrSrSrSrg)�'MathTests.test_trunc.<locals>.TestTrunci�c��g�N�rqrhs r�	__trunc__�1MathTests.test_trunc.<locals>.TestTrunc.__trunc__�r�rrqN�rlrmrnrorrprqrr�	TestTruncr�r�rr c��\rSrSrSrSrg)�(MathTests.test_trunc.<locals>.FloatTrunci�c��grrqrhs rr�2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__�r�rrqNrrqrr�
FloatTruncr"�r�rr%c��\rSrSrSrg)�)MathTests.test_trunc.<locals>.TestNoTrunci�rqNrvrqrr�TestNoTruncr'�r�rr(c�"�\rSrSr\"5rSrg)�*MathTests.test_trunc.<locals>.TestBadTrunci�rqN)rlrmrnror�rrprqrr�TestBadTruncr*�r@rr+rrIg�7@)
r�rQ�truncr�rTr;r�r�r\r�)rcr r%r(r+s     r�
test_trunc�MathTests.test_trunc|s���������A���*�������B���,�����d�j�j��m�,�c�2�����d�j�j��o�.��4�������C��!�,�������D�)�2�.�������H�-�q�1�������I�.��3�������I�.��3�������H�-�t�4�	�	�	��	�	�	�	#�	#�	
������I�K�0�"�5�������J�L�1�2�6����)�T�Z�Z�0����)�T�Z�Z��A�6����)�T�Z�Z��4��A����)�T�Z�Z���?����*�d�j�j�,�.�Arc�@�UR[R"S55 UR[R"S55 UR[R"S55 UR[R"S55 UR[R"[	S555 UR[R"[	S555 UR[R"[	S555 g)Nr�r�r�r�rrr)r�rQ�isfinite�assertFalser;rhs r�testIsfinite�MathTests.testIsfinite�s�������
�
�c�*�+�����
�
�d�+�,�����
�
�c�*�+�����
�
�d�+�,�������u�U�|�4�5�������u�U�|�4�5�������u�V�}�5�6rc��UR[R"[S555 UR[R"[S555 UR[R"[S5S-55 UR	[R"[S555 UR	[R"S55 UR	[R"S55 g)Nrz-nanrr�r�)r�rQrUr;r1rhs r�	testIsnan�MathTests.testIsnan�s�������
�
�5��<�0�1�����
�
�5��=�1�2�����
�
�5��<�"�#4�5�6�������E�%�L�1�2�������B��(�������B��(rc�@�UR[R"[S555 UR[R"[S555 UR[R"S55 UR[R"S55 UR	[R"[S555 UR	[R"S55 UR	[R"S55 g)Nrrg�g�rr�r�)r�rQrVr;r1rhs r�	testIsinf�MathTests.testIsinf�s�������
�
�5��<�0�1�����
�
�5��=�1�2�����
�
�5�)�*�����
�
�6�*�+�������E�%�L�1�2�������B��(�������B��(rc���UR[R"[R55 UR	[R
"S[R5S5 gr})r�rQrUrr�rRrhs r�test_nan_constant�MathTests.test_nan_constant�s:������
�
�4�8�8�,�-�������r�4�8�8�4�b�9rc�P�UR[R"[R55 UR	[RS5 UR[R[
S55 UR[R*[
S55 g)Nr�rr)r�rQrVr�
assertGreaterr�r;rhs r�test_inf_constant�MathTests.test_inf_constant�sa������
�
�4�8�8�,�-����4�8�8�S�)�������5��<�0����$�(�(��E�&�M�2rzrequires verbose modec�p�[R"S5nWS:waURS5 [R"S5nURS5 [R"S5nURS5 g! URS5 N}=f![a NMf=f![
a gf=f)	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)rQrEr�r
r�r��rcrs  r�test_exceptions�MathTests.test_exceptions�s���	(�����%�A�
��6��I�I�A�B�	H�����$�A�
�I�I�F�G�	:��	�	�$��A�
�I�I�8�9��5	(�
�I�I�'�
(���	��	���	��	�s.�B�B�B(�B�
B%�$B%�(
B5�4B5c��S1nSn[RS:XaA[R"5Sn[[	[
UR
S555nSn/n[[5H�upgp�p�nU	S:wdUS:waMUS;aMUb
US:aXa;aM.[[U5n
S	U;dS
U;aSn
OSU;aS
n
U
"U5nUS;a[R"X�5n
Sunn[X�UU5nUcM�URXgUU5nUR!U5 M� U(a$UR#SSR%U5-5 gg![a GNf=f![a SnN�[a S
nN�f=f)N�tan0064�darwinr�.�{}: {}({!r}): {}r�)�rect�polar)rr��invalid�divide-by-zeror��overflowr
)�sqrt0002�sqrt0003�sqrt1001�sqrt1023�r�r�zFailures in test_testfile:
  �
  )r��platform�mac_verr�rrTr:r�rO�	test_file�getattrrQr
rRrZr(r�r��join)rc�
SKIP_ON_TIGER�osx_version�version_txtrX�failuresrArB�ar�ai�er�eirFr�rQr+r,rW�msgs                   r�
test_testfile�MathTests.test_testfile�s���#��
����<�<�8�#�"�*�*�,�Q�/�K�
�#�C��[�->�->�s�-C�$D�E��&����-;�I�-F�)�B�B�B�E��S�y�B�#�I���&�&���&�;��+@��&���4��$�D��E�!�%5��%>�!���u�$�$��
)��b����E�E��]�]�2�*�� &��G�W�"�2�w��@�G�����/�/�"�"�g�6�C��O�O�C� �S.G�V��I�I�6��k�k�(�+�,�
-���c�
��
��6�
&�%�� �
)�(��
)�s)�(E�E$�
E!� E!�$F�2F�?Fc��Sn/n[[5H�up4pVn[[U5nSU;dSU;aSnOSU;aSnU"U5n	Sup�US:XaS	n
O)US
:XaSnO US:XaUS
:�aUS:aSn
OUS:aSn
OSn
[
XiX�5nUcM~URX4X\5n
URU
5 M� U(a$URSSRU5-5 gg![a Sn	N�[
a Sn	N�f=f)NrIrLrMr�rNr
rSr�r��lgammagV瞯�<�erfcr�r�r�$@rrzFailures in test_mtestfile:
  rT)rG�math_testcasesrXrQr�r
rZr(r�r�rY)rcrXr]rArBrCr)rFr�r*r+r,rWrbs              r�test_mtestfile�MathTests.test_mtestfile&s3��%����,;�N�,K�(�B�C�5��4��$�D��E�!�%5��%>�'���u�$�*��
&��3�i�� &��G��W�}����x��
 ���v��#��*���9� �G��4�Z�!�G�"�G�"�8�'�C�G�����/�/�"�#�7�C��O�O�C� �q-L�t��I�I�7��k�k�(�+�,�
-���a�
#�"�� �
&�%��
&�s�C%�%D�3D�Dc�T�SSKJn [RnUR	U"/5S5 UR	U"/SS9S5 UR	U"[[
SS555S5 UR	U"[[[
SS5555S5 UR	U"[
SS	5S	S9S
5 UR	U"/SQ5S5 UR	U"/S
Q5S5 UR	U"/SQ5S5 UR	U"/SQ5S5 UR	U"SU"SS5/5S5 "SS5nUR[5 U"SU"5/5 SSS5 UR	U"/SQ5S5 UR	U"/SQ5[S55 UR[U5 UR[US5 UR[U/SQ5 UR[U/SQSS9 UR[USS/SS9 [S5[S 5/nUR[X$[S5S9 UR[US/S/S//5 UR[USS0/5 UR[USS0/S-SS0S9 UR[US/S/S///S9 UR	U"SS/S!S9S"5 UR	U"SS/SS/S9/S#Q5 UR	U"/SS0S9SS05 UR[5 U"S	S$/S5 SSS5 UR	U"/S%Q5S5 UR	U"/S&Q5S5 UR	U"/S'Q5S5 S7S(jn[
SS)5nUR	U"U5U"U55 [
S*S+5nUR	U"U5U"U55 [
S,S-5nUR	U"U5S5 [
SS-5Vs/sHn[U5PM nnUR	U"U5U"U55 [
S,S+5Vs/sHn[U5PM nnUR	U"U5U"U55 [
S,S-5Vs/sHn[U5PM nnURU"U55 URU"SSS[S.5SS/55 URU"SS[S.5SS/55 URU"S[S.5SS/55 URU"S[S/5[S.5S/55 URU"S[S05[S.5S/55 URU"S[S.5[S/5S/55 URU"S[S.5[S05S/55 UR	U"SSS[S/5S1S2/5[S055 UR	U"SSS[S05S1S2/5[S/55 URU"SSS[S/5S1S2/55 URU"SSS[S05S1S2/55 URU"SSS[S/5S1SS/55 URU"SSS[S05S1SS/55 UR	[U"/S3Q55[5 UR	[U"/S4Q55[5 UR	[U"[
SS)555[5 UR	[U"[
SS)5SS95[5 UR	[U"S[ R""S55SS2SS6/55[ R"5 g!,(df   GN�=f!,(df   GN�=fs snfs snfs snf)8Nrr�rr�)rrIr�i�ri_7)rrIr�r�r�r�)r�r�r�r�r!r�)rrIr�r�r!)r�r�r�r�r�r�r�r�c��\rSrSrSrSrg)�(MathTests.test_prod.<locals>.BadMultiplyizc��[er_rVrWs  rr]�1MathTests.test_prod.<locals>.BadMultiply.__rmul__{r[rrqN)rlrmrnror]rprqrrr_rnzs��
#rr_rh)rr�rrrq)r�r�rqrrr�)r�r�r���a�cr�b�ab�abababababab)rrIrrIrrIrrIrrIrrIr�)rrrIr�)rrrIr�)rrIr�rc� �UHnX-nM	 U$r_rq)rcr�elems   r�_naive_prod�(MathTests.test_prod.<locals>._naive_prod�s�� ���
��!��Lri'i���r�i���rrrrr�r�)rrIr�r�r�r�)rr�r�r�r�r�r�r�r�)r�r�rQ�prodr�rr r�r�rOr;r��	bytearrayr�r�rTr$r%)rcrr|r_rrzrcrs        r�	test_prod�MathTests.test_prodis��+��y�y������b��1�%�����b��*�A�.�����d�5��1�:�.�/��6�����d�4��a��
�#3�4�5�t�<�����e�A�r�l�"�5�w�?�����o�.��4�����7�8�%�@�����1�2�E�:�����3�4�e�<�����r�1�Q��7�m�,�c�2�	#�	#��
�
�|�
,��#�{�}�%�&�-�	
����1�2�E�:�����5�6��e��E����)�T�*����)�T�2�.����)�T�?�;����)�T�?�"��E����)�T�D�$�<�s��C��D�/�9�T�?�3�����)�T��3���H����)�T�Q�C�!��q�c�?�;����)�T�Q�q�E�7�3����)�T�Q�q�E�7�1�9�Q�q�E��B����)�T�Q�C�!��q�c�?�"��E�	
����q�!�f�D�1�>�B�����q�!�f�Q��F�3�5Y�Z�����b��A��/�!�A��7�
�
�
�y�
)��"�b��1��*�	
����l�+�Q�/�����l�+�Q�/�����l�+�Q�/�	���E�?������h���X�)>�?����$������h���X�)>�?����%������h���+�',�A�t�n�5�n��E�!�H�n��5�����h���X�)>�?�&+�E�2�&6�7�&6��E�!�H�&6��7�����h���X�)>�?�&+�E�4�&8�9�&8��E�!�H�&8��9�����h��(�	
����q�!�Q��e��a��;�<�=�����q�!�U�5�\�1�a�8�9�:�����q�%��,��1�5�6�7�����q�%��,��e��Q�?�@�A�����q�%��-��u��a�@�A�B�����q�%��,��e��Q�?�@�A�����q�%��,��f�
�a�@�A�B�����q�!�Q��e��R��:�;�U�6�]�K�����q�!�Q��f�
�b��;�<�e�E�l�K�����q��1�U�5�\�2�q�9�:�;�����q��1�U�6�]�B��:�;�<�����q�!�Q��e��b�!�Q�?�@�A�����q�!�Q��f�
�r�1�a�@�A�B�	
����d�#5�6�7��=�����d�#7�8�9�5�A�����d�5��E�?�3�4�c�:�����d�5��E�?�#�>�?��G�����d�A�w���s�';�Q��1�a�#H�I�J� ���	*�_-�
,��2*�
)��.6��7��9s*�._7�`	�1`�4` �7`%�7
`�	
`c�	�[Rn[Rn[S5HcnUS:a[US-5OUS:a[S5O
[S5H,nUR	U"X45U"U5U"X4-
5-5 M. Me [SS5HKn[SU5H8nUR	U"X45U"US-
US-
5U-U"US-
U5-5 M: MM [SS5HSnUR	U"US5S5 UR	U"US5U5 UR	U"X35U"U55 MU [S5H@nUR	U"U5U"U55 UR	U"US5U"U55 MB UR[USS	5 UR[US[R"S	55 UR[USS
5 UR[USS5 UR[U[R"S5S5 UR[USS5 UR[U5 UR[USSS
5 UR[U5 UR[USS5 UR[USS-*S5 UR[USS5 UR[USSS-*5 UR	U"SS5S5 UR	U"SSS-5S5 SS-nUR	U"US5S5 UR	U"US5U5 UR	U"US5X3S-
-5 [R"SS9(aUR[XU5 SHBup4UR	U"X45S5 UR[U"X455[5 MD UR	U"[!S5[!S55S5 UR	U"[#S5[#S55S5 [S
5HsnUR[U"[!S5[!U555[5 UR[U"[#S5[#U555[5 Mu g)Nr�rrryr$rrr�r��1rh�10r�r�rIrT��cpython�)TT)TF)FFr�)rQ�permrr r�r�r�r$r%r�r�check_impl_detailr
rr�rTrtrx)rcr�rrr�s     r�testPerm�MathTests.testPerm�s����y�y���N�N�	��s��A�&'�#�g�e�A��E�l��C��5��9�U�SU�Y�V��� � ��a��!*�1���1�5�1A�!A�C�W���q�#��A��1�a�[��� � ��a��T�!�a�%��Q��-?�!�-C�d�1�q�5�RS�n�-T�U�!��
�q�#��A����T�!�Q�Z��+����T�!�Q�Z��+����T�!�Z��1��6���r��A����T�!�W�i��l�3����T�!�T�]�I�a�L�9��	
���)�T�2�s�3����)�T�2�w���s�/C�D����)�T�2�s�3����)�T�4��3����)�T�7�?�?�4�+@�!�D����)�T�4��3����)�T�*����)�T�2�q�!�4����)�T�*�	
���*�d�B��2����*�d�Q��W�H�a�8����*�d�A�r�2����*�d�A��4��x�8�	
����a���Q�'�����a��D��)�1�-�
�t�G������a���Q�'�����a���Q�'�����a���Q�A�#�Y�/��$�$�T�2����m�T�a�8�?�D�A����T�!�Z��+��M�M�$�t�A�z�*�C�0�@�	
����k�!�n�k�!�n�=�r�B�����k�!�n�k�!�n�=�r�B��q��A��M�M�$�t�K��N�K��N�C�D�c�J��M�M�$�t�K��N�K��N�C�D�c�J�rc��
�[Rn[Rn[S5HlnUS:a[US-5OUS:a[S5O
[S5H5nUR	U"X45U"U5U"U5U"X4-
5--5 M7 Mn [SS5HHn[SU5H5nUR	U"X45U"US-
US-
5U"US-
U5-5 M7 MJ [S5H4nUR	U"US5S5 UR	U"X35S5 M6 [SS5H7nUR	U"US5U5 UR	U"X3S-
5U5 M9 [S5H9n[US-5H$nUR	U"X45U"X3U-
55 M& M; UR[USS	5 UR[US[R"S	55 UR[USS
5 UR[USS5 UR[U[R"S5S5 UR[USS5 UR[US5 UR[USSS
5 UR[U5 UR[USS5 UR[USS-*S5 UR[USS5 UR[USSS-*5 UR	U"SS5S5 UR	U"SSS-5S5 SS-nUR	U"US5S5 UR	U"US5U5 UR	U"US5X3S-
-S-5 UR	U"X35S5 UR	U"X3S-
5U5 UR	U"X3S-
5X3S-
-S-5 [R"SS9(aUR[XUS-5 SHBup4UR	U"X45S5 UR[U"X455[5 MD UR	U"[!S5[!S55S5 UR	U"[#S5[#S55S5 [S
5HsnUR[U"[!S5[!U555[5 UR[U"[#S5[#U555[5 Mu g)Nr�rrryr$rrrIr�r�rhr�r�r�rTr�r�r�)rQ�combrr r�r�r�r$r%r�rr�r
rr�rTrtrx)rcr�rrr�s     r�testComb�MathTests.testComb	su���y�y���N�N�	��s��A�&'�#�g�e�A��E�l��C��5��9�U�SU�Y�V��� � ��a��Y�q�\�!�!��y���'7�7�.9�:�W���q�#��A��1�a�[��� � ��a��T�!�a�%��Q��-?�$�q�1�u�a�.�-P�Q�!��
�s��A����T�!�Q�Z��+����T�!�Z��+���q�#��A����T�!�Q�Z��+����T�!��U�^�Q�/��
�s��A��1��6�]��� � ��a��T�!��U�^�<�#��	
���)�T�2�s�3����)�T�2�w���s�/C�D����)�T�2�s�3����)�T�4��3����)�T�7�?�?�4�+@�!�D����)�T�4��3����)�T�2�.����)�T�2�q�!�4����)�T�*�	
���*�d�B��2����*�d�Q��W�H�a�8����*�d�A�r�2����*�d�A��4��x�8�	
����a���Q�'�����a��D��)�1�-�
�t�G������a���Q�'�����a���Q�'�����a���Q�A�#�Y�!�^�4�����a��Q�'�����a�1���q�)�����a�1���q�a�C�y�A�~�6��$�$�T�2����m�T�a��d�;�?�D�A����T�!�Z��+��M�M�$�t�A�z�*�C�0�@�	
����k�!�n�k�!�n�=�r�B�����k�!�n�k�!�n�=�r�B��q��A��M�M�$�t�K��N�K��N�C�D�c�J��M�M�$�t�K��N�K��N�C�D�c�J�rc	���UR[R"S[*5S5 UR[R"S[5S5 UR[R"SS5S5 UR[R"SS5S5 UR[R"S	[*5[RS
55 UR[R"S	[5[RS55 UR[R"S	[*SS
9[RS
55 UR[R"S	[SS
9[RS55 UR[R"S	[*SS
9[RS55 UR[R"S	[SS
9[RS55 [
SS5HunUR[R"SSUS
9S5 UR[R"SSUS
9S5 UR[R"SSUS
9S5 Mw [RR[RR-nUR[R"S[5U5 UR[R"S[5U5 UR[R"S[*5U*5 UR[R"S[*5U*5 UR[R"US5S5 UR[R"U*S5S5 UR[R"US5S5 UR[R"U*S5S5 [RRnUR[R"[S5U5 UR[R"[*S5U*5 UR[R"U[5[5 UR[R"U*[*5[*5 UR[R"[S	55 UR[R"S	[55 UR[R"[[55 URS	[R"S	[SS
95 UR[ 5 [R"S	[SS
9 SSS5 g!,(df   g=f)Ng0Cg������/Cg0Cg�Cr�g�������Cg��g��������r�z0x1.fffffffffffffp-1z0x1.0000000000001p+0r)�stepsr�z0x1.ffffffffffffdp-1z0x1.0000000000003p+0r�r�r�rr�)r�rQ�	nextafterr�r;r�r �assertEqualSignr�r\�min�epsilonr_r�r�r�r�)rcr��smallest_subnormal�largest_normals    r�test_nextafter�MathTests.test_nextafterU	s��	
������(:�S�D�A�+�	-�������(:�C�@�+�	-�������(=�s�C�.�	0�������(>��D�/�	1�	
�������c�T�2����'=�>�	@��������S�1����'=�>�	@��������c�T��;����'=�>�	@��������S��:����'=�>�	@��������c�T��;����'=�>�	@��������S��:����'=�>�	@��1�a�[�E����T�^�^�C��E�B�C�H�� � �����d�%�!H�$�O�� � �����d�%�!H�$�O�!�!�^�^�/�/�#�.�.�2H�2H�H���������c�2�4F�G��������c�2�4F�G��������s�d�3�6H�5H�I��������s�d�3�6H�5H�I����T�^�^�,>��E�t�L����T�^�^�-?�,?��F��M����T�^�^�,>��E�t�L����T�^�^�-?�,?��F��M����+�+���������S�1�>�B���������c�2�^�O�D���������<�c�B���������#��>���E�	
�������S�1�2��������S�1�2��������S�1�2�����d�n�n�S�#�Q�?�@�
�
�
�z�
*��N�N�3��2�.�+�
*�
*�s�5W�
W'c�d�UR[R"S5[RR
5 UR[R"S5S5 UR[R"S5S5 UR[R"S5S5 UR[R"S5[RR[RR
-5 UR[R"[5[[R"[[*5-
5 UR[R"[5[5 UR[R"[R55 SSSS[4HVnURUS9 UR[R"U*5[R"U55 SSS5 MX g!,(df   Mj=f)	Nr�l�lr�lg�@r�r�)
r�rQr�r�r\r�r�r�r�r�r�rr�rBs  r�test_ulp�MathTests.test_ulp�	s`��������#�����(>�(>�?�������'�*�C�0�������'�*�C�0�������'�*�F�3�	
������#�����+�+�c�n�n�.D�.D�D�	F�������)�,�"�T�^�^�I��t�%D�D�	F�	
������#���,�������$�(�(�+�,��s�G�W�c�2�A������"�� � ����1�"��t�x�x��{�;�#�"�3�"�"�s�<H � 
H/	c�:�"SS5n[R[R[R4HMnU"5nUR	[
5 U"SU5 SSS5 UR
[USS55 MO g!,(df   N/=f)Nc��\rSrSrSrSrg)�$MathTests.test_issue39871.<locals>.Fi�	c��SUlSS- g)NTrr��	convertedrhs rri�.MathTests.test_issue39871.<locals>.F.__float__�	s��!%����!�rr�N)rlrmrnrorirprqrrrr��	s��
rrznot a numberr�F)rQr�rRr�r�r�r1rX)rcrr�r�s    r�test_issue39871�MathTests.test_issue39871�	so��	�	��J�J��
�
�t�~�~�=�D���A��"�"�9�-��^�Q�'�.�

���W�Q��U�;�<�>�-�-�s�
B�
B	c���UR[[RS5 UR[[RS5 UR[[R
SS5 UR[[R
SS5 UR[[R
S5 UR[[R
SSS5 g)Nr{r�r�r�)r�r�rQrE�erfr�rhs r�test_input_exceptions�MathTests.test_input_exceptions�	s������)�T�X�X�v�6����)�T�X�X�v�6����)�T�Z�Z���=����)�T�Z�Z��f�=����)�T�Z�Z��5����)�T�Z�Z��c�3�?rc�|�[R"U5(d!URSRU55 gg)NzExpected a NaN, got {!r}.)rQrUr�r(rbs  rr��MathTests.assertIsNaN�	s.���z�z�%� � ��I�I�1�8�8��?�@�!rc��URX5 UR[R"SU5[R"SU55 g)zoSimilar to assertEqual(), but compare also the sign with copysign().

Function useful to compare signed zeros.
r�N)r�rQrR)rcrr�s   rr��MathTests.assertEqualSign�	s8��
	
�����������s�A�.��
�
�c�1�0E�FrrqNrS)Yrlrmrnror�r�r�r�r�r�r�r�r�r�r�rr�r��unittest�skipIfr�rU�machinerr	rrrrr&r�cpython_onlyr*rErKrY�HAVE_DOUBLE_ROUNDINGr�r�r�r�rr	rr!r)r,r0r5r:�requires_mac_verr=rBrdrg�requires_resourcer�r�r�r�r�r�rrr
rrrr-r2r5r8r;r?�
skipUnlessrrCrcrjr~r�r�r�r�r�r�r�r�rprqrrr�r��s���6�.�	4�5�	4�5�4�	5�<:�|4� %;�N�:��:�B3��_�_�S�\�\�W�,�W��1A�1A�1C�GW�1W�[�]�4�]�4�5�<�	=�/�@�:�
���<��<�#<�J;�.8�$�
�_�_�)�M�O�mD�O��mD�^(E�TOF�b�
�_�_�)�N�P�:1�P��:1�x7�B)�
3&�j*F�X<�B�F��F�
3�$/��4��4�"����b�!�$�+�%��+�
5�^.�B�
�_�_�)�]�_����M��_��M�
���u�%�H�&�H�T�
�_�_�)�]�_�������u�%�Q-�&��_��
Q-�f1�&H;�l5��~,��~,�@3�4�4�3�4��1��1�B�@7�)�)�:�
3�����"9�:�:�;�:�>�=-��=-�~�@-��@-�Dd*�L>K�@DK�L�8/��8/�v�<��<�,=� @�A�Grr�c��\rSrSr\R
rSrSrSrSr	Sr
SrSrS	r
S
rSrSrS
rSrSrSrSrg)�IsCloseTestsi�	c�\�URUR"X/UQ70UD6U<SU<S3S9 g)N� and z should be close!�rb)r�r��rcr�r�r��kwargss     r�
assertIsClose�IsCloseTests.assertIsClose�	s1��������Q�;�D�;�F�;�<=�q�A�	�	Crc�\�URUR"X/UQ70UD6U<SU<S3S9 g)Nr�z should not be close!r�)r1r�r�s     r�assertIsNotClose�IsCloseTests.assertIsNotClose�	s3��������a�<�T�<�V�<�AB�A�F�	�	Hrc�F�UHupEUR"XE/UQ70UD6 M gr_)r��rc�examplesr�r�r�r�s      r�assertAllClose�IsCloseTests.assertAllClose�	s&���D�A����q�5�d�5�f�5�rc�F�UHupEUR"XE/UQ70UD6 M gr_)r�r�s      r�assertAllNotClose�IsCloseTests.assertAllNotClose�	s&���D�A��!�!�!�8��8��8�rc��UR[5 URSSSS9 SSS5 UR[5 URSSSSS9 SSS5 g!,(df   N?=f!,(df   g=f)Nrg0��.�+���rel_tolrlg _�©r�r,)r�r�r�rhs r�test_negative_tolerances�%IsCloseTests.test_negative_tolerances�	sg��
�
�
�z�
*����q�!�W��5�+�
�
�
�z�
*����q�!�V�U��C�+�
*�+�
*��
*�
*�s�A!�A2�!
A/�2
Bc�.�/SQnURUSSS9 g)N))r�r�)�N���@ir�)�;���r�)i90g��@�r�r�)�NFr�r�r��r�)rc�identical_exampless  r�test_identical�IsCloseTests.test_identical�	s"��0��	
���.��S��Irc�L�/SQnURUSS9 URUSS9 g)N))g�חAg�חA)g:�0�yE�g��n�yE�)g�	ѭ��?gfN�ӭ��?�:�0�yE>r���&�.>�r�r�)rc�eight_decimal_places_exampless  r�test_eight_decimal_places�&IsCloseTests.test_eight_decimal_places�	s5��)C�%�	
���9�4��H����<�d��Krc�L�/SQnURUSS9 URUSS9 g)N))r�r�)g��&�.�r�)gu�?j�/ʠr�r�r�r�r�)r�r�)rc�near_zero_exampless  r�test_near_zero�IsCloseTests.test_near_zero�	s4��.��	
���1�3��?����.���=rc���UR[[5 UR[[SS9 UR[[5 UR[[SS9 g)Nr�r�)r�r�r�rhs r�test_identical_infinite�$IsCloseTests.test_identical_infinite
sL�����3��$����3��S��1����4��&����4��s��3rc���[[4[S4S[4[[4[[4[[4[S4S[4[S4S[4/
nURUSS9 g)Nrlr�rzg�������?r�)r�r�r�r�)rc�not_close_exampless  r�test_inf_ninf_nan�IsCloseTests.test_inf_ninf_nan
sg��"�C�j�"�F�m�%�s�m�"�C�j�"�C�j�"�D�k�"�C�j�"�C�j�"�E�l�$�c�l�	,��	
���1�;L��Mrc�T�/SQnURUSS9 /SQnURUSS9 g)N))r�r�)�333333�r�)�Y��n��r�r�r�))r�g�?)g�������?r�)gZb���tigTb���tir�)rc�zero_tolerance_close_examples�!zero_tolerance_not_close_exampless   r�test_zero_tolerance� IsCloseTests.test_zero_tolerance
s?��)=�%�	
���9�3��G�-N�)�	
���@�#��Nrc�(�URSS/SS9 g)N)r�r)rr�r@r�r�rhs r�test_asymmetry�IsCloseTests.test_asymmetry'
s�����W�g�.���<rc�L�SS/nURUSS9 URUSS9 g)N)����)i�[i�[r�r�r�r�)rc�integer_exampless  r�
test_integers�IsCloseTests.test_integers+
s:��2�2�4��	
���,�d��;����/���>rc���SSKJn U"S5U"S54U"S5U"S54U"S5U"S54U"S	5U"S
54/nURUSS9 URUS
S9 g)Nrr�z
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20r�r�r�)r$r%r�r�)rcr%�decimal_exampless   r�
test_decimals�IsCloseTests.test_decimals3
s���#�$�\�2�G�E�N�C�$�%5�6��	�8J�K�$�%6�7���9L�M�$�_�5�w�x�7H�I�K��	
���,�d��;����/���>rc��SSKJn U"SS5S-U"S54U"S5U"S54U"SS5U"SS54/nURUSS	9 URUS
S	9 g)Nrr�rr�r�l �	(q�e�	r'r�r�r�)r�r�r�r�)rcr��fraction_exampless   r�test_fractions�IsCloseTests.test_fractions>
sz��&��a��
#�a�
'��!��5�
�i�
 �(�9�"5�6�
�i��
(�(�1�f�*=�>�@��	
���-�t��<����0�$��?rrqN)rlrmrnrorQr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rprqrrr�r��	s^���l�l�G�C�H�6�9�D�J�L�>�4�
N�
O�=�?�	?�	@rr�c�>�\rSrSrSrSrSr\R"\	RRS5=(dB \	RS:H=(a \
R"5S:H=(d \
R"5S5S	5rS
rSrSrS
rSrSrSrg)�FMATestsiJ
zTests for math.fma. c�>�[R*SSSSSSSS[R[R/n[R"US	S
9H�up#URX#S9 UR
[R"[RX#55 UR
[R"U[RU55 UR
[R"X#[R55 SSS5 M� g!,(df   M�=f)N�u�<�7�r�r�r�r��Y��n�r��u�<�7~rIr�)r�r�)rQrrr�r�r�r��fma)rcrr�r�s    r�test_fma_nan_results�FMATests.test_fma_nan_resultsM
s����X�X�I�v�t�W�d����e�T�X�X�t�x�x�
���%�%�f�Q�7�D�A������'�� � ����$�(�(�A�!9�:�� � ����!�T�X�X�q�!9�:�� � ����!����!9�:�(�'�8�'�'�s
�"BD
�
D	c
�f�SSS[R/n/SQn[R*SSSS[R/nUH�n[R[R*4H�nSH�nURXEUS	9 UR[5 [R
"XVU5 SSS5 UR[5 [R
"XeU5 SSS5 SSS5 M� M� M� UGH�nURUS
9 UR[5 [R
"[RU[R*5 SSS5 UR[5 [R
"[RU*[R5 SSS5 UR[5 [R
"[R*U*[R*5 SSS5 UR[5 [R
"[R*U[R5 SSS5 UR[5 [R
"U[R[R*5 SSS5 UR[5 [R
"U*[R[R5 SSS5 UR[5 [R
"U*[R*[R*5 SSS5 UR[5 [R
"U[R*[R5 SSS5 SSS5 GM� UGH�nURUS
9 UR
[R
"[RU[R5[R5 UR
[R
"[RU*[R*5[R*5 UR
[R
"[R*U*[R5[R5 UR
[R
"[R*U[R*5[R*5 UR
[R
"U[R[R5[R5 UR
[R
"U*[R[R*5[R*5 UR
[R
"U*[R*[R5[R5 UR
[R
"U[R*[R*5[R*5 SSS5 GM� [R"X"5H�up�URUS
9 UR
[R
"X�[R5[R5 UR
[R
"X�[R*5[R*5 SSS5 M� [R"X5GHHuptURXtS9 UR
[R
"[RXt5[R5 UR
[R
"[R*Xt5[R*5 UR
[R
"[R*U*U5[R5 UR
[R
"[RU*U5[R*5 UR
[R
"U[RU5[R5 UR
[R
"U[R*U5[R*5 UR
[R
"U*[R*U5[R5 UR
[R
"U*[RU5[R*5 SSS5 GMK g!,(df   GN�=f!,(df   GN�=f!,(df   G	Mk=f!,(df   GN�=f!,(df   GNA=f!,(df   GN�=f!,(df   GN�=f!,(df   GN|=f!,(df   GN;=f!,(df   GN�=f!,(df   GN�=f!,(df   G	Mz=f!,(df   GM�=f!,(df   GM
=f!,(df   GM^=f)Nrr�r)rr�r�r�r�rr�rr�r�r�r�)r��infinity�zero�r�)r�r�)	rQrr�r�r�rr�r�r�)	rc�	positives�finites�non_nansr�rrr�r�s	         r�test_fma_infinities�FMATests.test_fma_infinities[
s8���S�%����2�	�H���X�X�I�t�T�3��T�X�X�>���A�!�X�X����y�1��'�D�����4��H�!�.�.�z�:� �H�H�X�Q�7�;�!�.�.�z�:� �H�H�T�Q�7�;�I�H�(�2���A������"��&�&�z�2��H�H�T�X�X�q�4�8�8�)�4�3��&�&�z�2��H�H�T�X�X��r�4�8�8�4�3��&�&�z�2��H�H�d�h�h�Y���T�X�X�I�6�3��&�&�z�2��H�H�d�h�h�Y��4�8�8�4�3��&�&�z�2��H�H�Q����4�8�8�)�4�3��&�&�z�2��H�H�a�R����4�8�8�4�3��&�&�z�2��H�H�a�R�$�(�(��T�X�X�I�6�3��&�&�z�2��H�H�Q����	�4�8�8�4�3�#�"��(�A������"�� � ����$�(�(�A�t�x�x�!@�$�(�(�K�� � ����$�(�(�Q�B����	�!B�T�X�X�I�N�� � ����4�8�8�)�a�R����!B�D�H�H�M�� � ����4�8�8�)�Q����	�!B�T�X�X�I�N�� � ����!�T�X�X�t�x�x�!@�$�(�(�K�� � ����1�"�d�h�h����	�!B�T�X�X�I�N�� � ����1�"�t�x�x�i����!B�D�H�H�M�� � ����!�d�h�h�Y����	�!B�T�X�X�I�N�#�"���%�%�g�7�D�A������"�� � ����!����!9�4�8�8�D�� � ����!����	�!:�T�X�X�I�F�#�"�8��%�%�i�9�D�A������'�� � ����$�(�(�A�!9�4�8�8�D�� � ����4�8�8�)�Q�!:�T�X�X�I�F�� � ����4�8�8�)�a�R��!;�T�X�X�F�� � ����$�(�(�Q�B��!:�T�X�X�I�F�� � ����!�T�X�X�q�!9�4�8�8�D�� � ����!�d�h�h�Y��!:�T�X�X�I�F�� � ����1�"�t�x�x�i��!;�T�X�X�F�� � ����1�"�d�h�h��!:�T�X�X�I�F�(�'�:�Y;�:��:�:��I�H��3�2��2�2��2�2��2�2��2�2��2�2��2�2��2�2��#�"��(#�"��#�"��(�'�s/�<g	�f �*g	�f2�g	�i'�&6g�i'�96g)�/i'�8g;�i'�!6h
�i'�46h�*i'�6h1�=i'�8i�i'�/6i�%i'�J!i:�'B	j
�'H+j � 
f/�*g	�2
g�<g	�
g
�
g&�!i'�)
g8�3i'�;
h
�i'�
h�i'�
h.�)i'�1
i�;i'�
i�
i'�
i$�i'�'
i7	�:
j
	�
j	� 
j0	)�freebsd�wasi�netbsd�
emscripten�android�x86_64z5this platform doesn't implement IEE 754-2008 properlyc	�
�/SQnUGH�nURUS9 UR[R"SUS55 UR[R"SUS55 UR	[R"SU*S55 UR[R"SU*S55 UR[R"SU*S55 UR[R"SU*S55 UR	[R"SUS55 UR[R"SUS55 UR[R"USS55 UR[R"USS55 UR	[R"U*SS55 UR[R"U*SS55 UR[R"U*SS55 UR[R"U*SS55 UR	[R"USS55 UR[R"USS55 SSS5 GM� UR[R"SSS55 UR[R"SSS55 UR[R"SSS55 UR[R"SSS55 S	nUR[R"X3S55 UR	[R"X3*S55 UR[R"U*U*S55 UR	[R"U*US55 UR[R"X3S55 UR	[R"X3*S55 UR[R"U*U*S55 UR	[R"U*US55 [
R
S
5n[
R
S5n[
R
S5nUR	[R"XE-
XE-U*55 UR[R"XT-
XE-U55 UR	[R"XT-
XE-*U*55 UR[R"XE-
XE-*U55 g!,(df   GMs=f)
N)r�rr�rr
r�r�r�r�r�r�rz0x1p-500z0x1p-550z	0x1p-1000)r��assertIsPositiveZerorQr�assertIsNegativeZeror;r�)rc�nonnegative_finitesr�r�rr�r�s       r�test_fma_zero_result�FMATests.test_fma_zero_result�
s���8��%�A������"��)�)�$�(�(�3��3�*?�@��)�)�$�(�(�3��4�*@�A��)�)�$�(�(�3���D�*A�B��)�)�$�(�(�3���C�*@�A��)�)�$�(�(�4�!��S�*A�B��)�)�$�(�(�4�!��T�*B�C��)�)�$�(�(�4��D�*A�B��)�)�$�(�(�4��C�*@�A��)�)�$�(�(�1�c�3�*?�@��)�)�$�(�(�1�c�4�*@�A��)�)�$�(�(�A�2�s�D�*A�B��)�)�$�(�(�A�2�s�C�*@�A��)�)�$�(�(�A�2�t�S�*A�B��)�)�$�(�(�A�2�t�T�*B�C��)�)�$�(�(�1�d�D�*A�B��)�)�$�(�(�1�d�C�*@�A�##�"�%�*	
�!�!�$�(�(�3��T�":�;��!�!�$�(�(�3��c�":�;��!�!�$�(�(�4��t�"<�=��!�!�$�(�(�4��c�":�;����!�!�$�(�(�4�s�";�<��!�!�$�(�(�4���"<�=��!�!�$�(�(�D�5�4�%��"=�>��!�!�$�(�(�D�5�$��"<�=��!�!�$�(�(�4�t�"<�=��!�!�$�(�(�4���"=�>��!�!�$�(�(�D�5�4�%��">�?��!�!�$�(�(�D�5�$��"=�>�
�M�M�*�%���M�M�*�%���M�M�+�&���!�!�$�(�(�1�3���a�R�"8�9��!�!�$�(�(�1�3���Q�"7�8��!�!�$�(�(�1�3�!�#����";�<��!�!�$�(�(�1�3�!�#���":�;�Y#�"�s�I9U*�*
U:	c��[RS5=p[RS5nUR[5 [R
"XS5 SSS5 UR
[R
"XS-S5U5 UR[5 [R
"XS-U5 SSS5 UR
[R
"XU*5U5 [RS5n[RS5n[RS5nUR[5 [R
"XS5 SSS5 UR[5 [R
"XU5 SSS5 UR
[R
"XU*5[RS55 [RS	5n[RS
5n[RS5nUR
[R
"XU*5U5 g!,(df   GN�=f!,(df   GN�=f!,(df   GN=f!,(df   N�=f)N�0x1p512�0x1p1023r�r�z0x1.ffffffc000000p+511z0x1.0000002000000p+512z0x0.0000000000001p-1022z0x1.fffffffffffffp+1023z0x1.ae565943785f9p+512z0x1.3094665de9db8p+512)r;r�r�r
rQrr�)rcr�r�r�s    r�test_fma_overflow�FMATests.test_fma_overflow�
s����
�
�i�(�(���M�M�*�%��
�
�
�}�
-��H�H�Q�3��.�������!�s�U�C�0�!�4�
�
�
�}�
-��H�H�Q�#��q�!�.�	
������!���+�Q�/�

�M�M�2�3���M�M�2�3���M�M�3�4��
�
�
�}�
-��H�H�Q�3��.�
�
�
�}�
-��H�H�Q�1��.�������!���+����'@�A�	C�

�M�M�2�3���M�M�2�3���M�M�3�4��������!���+�Q�/�7.�
-��.�
-��.�
-��
-�
-�s0�H7� I	�?I�4I-�7
I�	
I�
I*�-
I;c��[RS5nUR[R"US-
US-S5X-5 g)Nz0x1p-50r�)r;r�r�rQr)rcr�s  r�test_fma_single_round�FMATests.test_fma_single_round�
s7���M�M�)�$��������!�c�'�1�s�7�C�8�!�#�>rc	��/SQnUH�up#pEURX#UUS9 [RU5n[RU5n[RU5n[RU5n	UR[R
"XgU5U	5 UR[R
"XvU5U	5 SSS5 M� g!,(df   M�=f)N))z0x1.694adde428b44p-1z0x1.371b0d64caed7p-1z0x1.f347e7b8deab8p-4z0x1.19f10da56c8adp-1)z0x1.605401ccc6ad6p-2z0x1.ce3a40bf56640p-2z0x1.96e3bf7bf2e20p-2z0x1.1af6d8aa83101p-1)z0x1.e5abd653a67d4p-2z0x1.a2e400209b3e6p-1z0x1.a90051422ce13p-1z0x1.37d68cc8c0fbbp+0)z0x1.f94e8efd54700p-2z0x1.123065c812cebp-1z0x1.458f86fb6ccd0p-1z0x1.ccdcee26a3ff3p-1)z0x1.bd926f1eedc96p-1z0x1.eee9ca68c5740p-1z0x1.960c703eb3298p-2z0x1.3cdcfb4fdb007p+0)z0x1.27348350fbccdp-1z0x1.3b073914a53f1p-1z0x1.e300da5c2b4cbp-1z0x1.4c51e9a3c4e29p+0)z0x1.2774f00b3497bp-1z0x1.7038ec336bff0p-2z0x1.2f6f2ccc3576bp-1z0x1.99ad9f9c2688bp-1)z0x1.51d5a99300e5cp-1z0x1.5cd74abd445a1p-1z0x1.8880ab0bbe530p-1z0x1.3756f96b91129p+0)z0x1.73cb965b821b8p-2z0x1.218fd3d8d5371p-1z0x1.d1ea966a1f758p-2z0x1.5217b8fd90119p-1)z0x1.4aa98e890b046p-1z0x1.954d85dff1041p-1z0x1.122b59317ebdfp-1z0x1.0bf644b340cc5p+0)z0x1.e28f29e44750fp-1z0x1.4bcc4fdcd18fep-1z0x1.fd47f81298259p-1z0x1.9b000afbc9995p+0)z0x1.d2e850717fe78p-3z0x1.1dd7531c303afp-1z0x1.e0869746a2fc2p-2z0x1.316df6eb26439p-1)z0x1.cf89c75ee6fbap-2z0x1.b23decdc66825p-1z0x1.3d1fe76ac6168p-1z0x1.00d8ea4c12abbp+0)z0x1.3265ae6f05572p-2z0x1.16d7ec285f7a2p-1z0x1.0b8405b3827fbp-1z0x1.5ef33c118a001p-1)z0x1.c4d1bf55ec1a5p-1z0x1.bc59618459e12p-2z0x1.ce5b73dc1773dp-1z0x1.496cf6164f99bp+0)z0x1.d350026ac3946p-1z0x1.9a234e149a68cp-2z0x1.f5467b1911fd6p-2z0x1.b5cee3225caa5p-1)�a_hex�b_hex�c_hexr�)r�r;r�r�rQr)
rcr�r(r)r*r�r�r�r�r)s
          r�test_random�FMATests.test_random�
s���
!
��D2=�-�E�%����E�e�+7��9��M�M�%�(���M�M�%�(���M�M�%�(�� �=�=��6��� � ����!��!2�H�=�� � ����!��!2�H�=�9�9�2=�9�9�s�B#C�
C	c�j�UR[R"U5SRU5S9 g)NzExpected a NaN, got {!r}r�)r�rQrUr(rbs  rr��FMATests.assertIsNaN/s-������J�J�u��*�1�1�%�8�	�	
rc��URUS:H=(a [R"SU5S:�SRU5S9 g)Nrrz"Expected a positive zero, got {!r}r��r�rQrRr(rbs  rr�FMATests.assertIsPositiveZero5�=������Q�J�6�4�=�=��E�2�Q�6�4�;�;�E�B�	�	
rc��URUS:H=(a [R"SU5S:SRU5S9 g)Nrrz"Expected a negative zero, got {!r}r�r0rbs  rr�FMATests.assertIsNegativeZero;r2rrqN)rlrmrnro�__doc__rrr�r�r�rUrJr�r�linked_to_muslrr"r%r+r�rrrprqrrrrJ
s����;�AG�J�_�_������ K�L�	$��L�L�I�%�H�(�*:�*:�*<��*H�	$��!�!�#�
?�	B�
1<�B�
1<�f0�B?�/>�d
�
�
rrc�|�SSKJn URU"[RRSS555 U$)Nr)�DocFileSuiterzieee754.txt)�doctestr8�addTest�os�pathrY)�loader�tests�patternr8s    r�
load_testsr@Bs*��$�	�M�M�,�r�w�w�|�|�J�
�F�G�H��LrrS);�test.supportrr�testrr�r�r�r$rQr;rUrur
r�r�r;r�r�r�r\r_r�r�r�rr�r�rl�argv�file�__file__r<�dirname�curdir�test_dirrYrirWrrrr%r0rGrOrZr\rTrtrrxr��TestCaser�r�rr@�mainrqrr�<module>rKs���4�������	��
�
�
����E�l���E�l���V�}���N�N���	��N�N���	����1��A���)���z���8�8�A�;�D��D�
�7�7�?�?�4� �-�B�I�I�������h�
�4H�I���G�G�L�L��:�/D�E�	�
�L5�H�	,�B�$:�4�0.�`��	�#�	��&����W#G��!�!�W#G�tFx@�8�$�$�x@�vu
�x� � �u
�p�
�z���M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit