403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.64
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 :  C:/Python315/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python315/Lib/test/__pycache__/test_math.cpython-315.opt-1.pyc
R
>lqj@�c��]QHGsGs]QHGs]PHs]PHs]PHs]PH s]PH$s	]PH(s
]PH,s]PH0s]PH4s
]PH8sQs\Q2s\Q2s\Q2s\Q2s\O*O,s\O*O0sQQ	tss\\*Q$6Hs\Q
6Xc\O<]*sL\ s\
OBOE\29%f
\
OFs$\
OBOK\$QQ2s&\
OBOK\$QQ
2s'Qs(Qs)Qs*Qs+Q%Qks,QQ2s-QQ\.2s/QQ\02s1QQ2s2QQ2s3QQ\Oh2s5QQ \Oh2s6Q!Q"\Oh2s7Q#s8\Q
6Xc\Or2P!P!)&�)�verbose�requires_IEEE_754)�supportg�h㈵��>�nan�-nan�inf�-inf���7y�ACg�):��@�__main__�mathdatazmath_testcases.txtzcmath_testcases.txtc��[OQ[OQU22]*oU]6cUQ*&oU!)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<dl)�struct�unpack�pack)�x�ns& �#C:\Python315\\Lib\test\test_math.py�to_ulpsr)s;��	�
�
�d�F�K�K��a�0�1�!�4�A��1�u���g�J���H�c��[[U2[U2*
2o[V*
2oVS6:fVB6:cP!QoUOVTV22!)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.
zAerror = {:.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_checkr:sP���G�H�%����4�5�I��H�N�#�I���y�3��7���z�z�)��A�Arc
#� �[UQQ59^tt^2oSFD�oQU7cUPUOQ2oUO2%fJ6UOQ2vq4UO2vqVoUO2oU]*o	UQ*o
VV[	U2[	U	2U
1w�J�	PPP2P!)%fhP!9h3h)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�--�->:�NN)�open�index�strip�split�float)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagss&          r�parse_mtestfiler7Ls����
�e�g�	&�	&�"��D��t�|��-�T�Z�Z��-�.���:�:�<�<���z�z�$�'�H�C��)�)�+�K�B�C�����J��Q�-�C��r�N�E��5��:�u�S�z�5�9�9��
'�	&�	&�	&�s.�C�
C�)C�A)C�:
C�C	�
C	�	Cc#�� �[UQQ59^tt^2oSFD�oUOQ2%fUO2%fJ2UOQ2vq4UO2vqVqxUO2o	U	]*U	]*q�U	Q*oVV[	U2[	U2[	U
2[	U2U1w�J�	PPP2P!)%fhP!9h3h)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
r!r"r$r%:�NN)r'�
startswithr)r*r+)
r,r-r.r/r0r1r2�arg_real�arg_imagr4�exp_real�exp_imagr6s
&            r�parse_testfiler?fs����
�e�g�	&�	&�"��D����t�$�$�D�J�J�L�L���z�z�$�'�H�C�),����&�B�H�����J�!+�A��
�1�
�h��r�N�E����?�E�(�O���?�E�(�O���
��
'�	&�	&�	&�s.�C0�C�C�
BC�
C0�C-	�%C-	�'	C0c�H�V6XcMU%fCU%f;[O]U2[O]U26wc
QUQUQ0!P!Qo[U[2%c#[U[2%c
[U2oL7[U[2%c"[U[2%c[U2o[U[2%c�[U[2%c�[O
U2%c [O
U2%cPoLE[OU2%f[OU2%cL[VV#2oUd.QoUOV2oUQOU2*
oU!P!)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.
z	expected z, got z (zero has wrong sign)z	not equalzexpected {!r}, got {!r}z ({}))	�math�copysign�
isinstancer+�int�isnan�isinfrr)rrrr�failure�fail_fmt�fail_msgs&&&&   r�result_checkrJ~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�.`�\sQs]�snQsQsQsUsP!)�	FloatLikec��VmP!�N��value��selfrPs&&r�__init__�FloatLike.__init__�����
rc��UO!rNrO�rRs&r�	__float__�FloatLike.__float__�����z�z�rrO)�__name__�
__module__�__qualname__�__firstlineno__rSrX�__static_attributes__�__classdictcell__��
__classdict__s@rrLrL��������rrLc��\sQs]�sQsP!)�IntSubclass��r[r\r]r^r_rfrrrere�s��rrec�.`�\sQs]�snQsQsQsUsP!)�MyIndexablec��VmP!rNrOrQs&&rrS�MyIndexable.__init__�rUrc��UO!rNrOrWs&r�	__index__�MyIndexable.__index__�rZrrO)r[r\r]r^rSrmr_r`ras@rriri�rcrric�4`�\sQs]�snQsQsQsQsUsP!)�IndexableFloatLikec� �VmV mP!rN��float_value�index_value)rRrsrts&&&rrS�IndexableFloatLike.__init__�s��&��&�rc�t�[UO[2%c
UOgUO!rN)rCrs�
BaseExceptionrWs&rrX�IndexableFloatLike.__float__��-���d�&�&�
�6�6��"�"�"����rc�t�[UO[2%c
UOgUO!rN)rCrtrwrWs&rrm�IndexableFloatLike.__index__�ryrrr)	r[r\r]r^rSrXrmr_r`ras@rrprp�s����'� �
 � rrpc�,`�\sQs]�snQQksQsUsP!)�BadDescrc��[grN)�
ValueError)rR�obj�objtypes&&&r�__get__�BadDescr.__get__�s���rrfrN)r[r\r]r^r�r_r`ras@rr}r}�s�����rr}c�$`�\sQs]�snQWQksQsQsQsQsQs	Qs
Qs\O\OO!Q	2Q
2Q2sQsQ
s\Q2sQsQs\O\OQ6H9%c\O02QX7Q2Q2sQsQsQsQsQsQsQs \Q2s!Qs"\Q2s#Qs$\\O\%Q2Q 22s&Q!s'Q"s(\\O\%Q#2Q$22s)Q%s*Q&s+Q's,Q(s-\Q)2s.Q*s/Q+s0\Q,2s1\\2Of]
]2Q-22s4Q.s5\2OlQYQ/Q05Q12s7Q2s8\\O\%Q32\2OrQ4222s:\2OvQ52Q62s<\\O\%Q32\2Or\2OvQ52Q72222s=Q8s>Q9s?Q:s@\Q;2sAQ<sBQ=sCQ>sDQ?sEQ@sF\QA2sGQBsHQCsIQDsJQEsKQFsLQGsMQHsNQIsO\O�\QQJ2QK2sR\QL2sS\QM2sTQNsU\QO2sV\QP2sWQQsXQRsYQSsZQTs[QUs\QVs]Us^P!)Z�	MathTestsc�l�[V2VE2oUd#UOQOV22P!P!)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.
z{}: {})rJ�failr)rR�namerrrrrGs&&&&&& r�ftest�MathTests.ftest�s0���x�g�?�����I�I�h�o�o�d�4�5�rc��UOQ[OQ2UOQ[OQ2UO	[O
][O*2P!)�pig-DT�!	@�egiW�
�@)r�rAr�r��assertEqual�taurWs&r�
testConstants�MathTests.testConstants�sH���
�
�4����"<�=��
�
�3���� :�;�������1�T�W�W�9�-rc�^�UO[[O2UO	Q[OP2[O
2UO	Q[O]2[O
]*2UO	Q[O]2]2UO[[O[2UO[[O[2UO[[O][*2UO[[OP[*
2UO[O[O[222P!)zacos(-1)zacos(0)zacos(1))
�assertRaises�	TypeErrorrA�acosr�r�r�INF�NINF�eps�
assertTruerE�NANrWs&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��UO[[O2UO	Q[O]2]2UO	Q[O]2Q2UO[
[O]2UO[
[OP2UO
[O[2[2UO[
[O[2UO[O[O[222P!)zacosh(1)zacosh(2)g5�qB�?)r�r�rA�acoshr�rr�r�r�r�rEr�rWs&r�	testAcosh�MathTests.testAcosh�s������)�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�n�UO[[O2UO	Q[OP2[O
']*2UO	Q[O]2]2UO	Q[O]2[O
]*2UO[[O[2UO[[O[2UO[[O][*2UO[[OP[*
2UO[O[O[222P!)zasin(-1)zasin(0)zasin(1))
r�r�rA�asinr�r�rr�r�r�r�rEr�rWs&r�testAsin�MathTests.testAsin�s������)�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�l�UO[[O2UO	Q[O]2]2UO	Q[O]2Q2UO	Q[OP2Q2UO[O[2[2UO[O[2[2UO[O[O[222P!)zasinh(0)zasinh(1)g'�ya64�?z	asinh(-1)g'�ya64�)r�r�rA�asinhr�r�r�r�r�rEr�rWs&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��UO[[O2UO	Q[OP2[O
']*2UO	Q[O]2]2UO	Q[O]2[O
]*2UO	Q[O[2[O
]*2UO	Q[O[2[O
']*2UO[O[O[222P!)zatan(-1)zatan(0)zatan(1)z	atan(inf)z
atan(-inf))r�r�rA�atanr�r�r�r�r�rEr�rWs&r�testAtan�MathTests.testAtans������)�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���UO[[O2UO	Q[O
]2]2UO	Q[O
Q2Q2UO	Q[O
Q2Q2UO[[O
]2UO[[O
P2UO[[O
[2UO[[O
[2UO[O[O
[222P!)zatanh(0)z
atanh(0.5)��?g�z��?zatanh(-0.5)��g�z��)r�r�rAr�r��atanhrr�r�r�rEr�rWs&r�	testAtanh�MathTests.testAtanhs������)�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�4r�sunoszskipping, see gh-138573c���UO[[O2UO	Q[OP]2[O
']*2UO	Q[OP]2[O
']*2UO	Q[O]]2]2UO	Q[O]]2[O
]*2UO	Q[O]]2[O
]*2UO	Q[O]P2][O
*]*2UO	Q[OQ[2[O
2UO	Q[OQQ 2[O
2UO	Q
[OQQ!2[O
2UO[OQQ2Q2UO[OQQ	2Q2UO[OQ[2Q2UO[O[OQ[222UO	Q[OQ![2[O
'2UO	Q[OQ!Q 2[O
'2UO	Q
[OQ!Q!2[O
'2UO[OQ!Q2Q!2UO[OQ!Q	2Q!2UO[OQ![2Q!2UO[O[OQ![222UO	Q[O[[2[O
]*]*2UO	Q[O[Q 2[O
]*2UO	Q[O[Q!2[O
]*2UO	Q[O[Q2[O
]*2UO	Q[O[Q	2[O
]*2UO	Q[O[[2[O
]*2UO[O[O[[222UO	Q[O[[2[O
']*]*2UO	Q[O[Q 2[O
']*2UO	Q[O[Q!2[O
']*2UO	Q[O[Q2[O
']*2UO	Q[O[Q	2[O
']*2UO	Q[O[[2[O
']*2UO[O[O[[222UO	Q[OQ	[2[O
2UO	Q[OQ	Q!2[O
]*2UO	Q[OQ	Q2[O
]*2UO[OQ	[2Q2UO[O[OQ	[222UO	Q[OQ [2[O
'2UO	Q[OQ Q!2[O
']*2UO	Q[OQ Q2[O
']*2UO[OQ [2Q!2UO[O[OQ [222UO[O[O[[222UO[O[O[Q 222UO[O[O[Q!222UO[O[O[Q222UO[O[O[Q	222UO[O[O[[222UO[O[O[[222P!)"zatan2(-1, 0)zatan2(-1, 1)zatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(1, -1)zatan2(0., -inf)�zatan2(0., -2.3)�ffffff@zatan2(0., -0.)zatan2(-0., -inf)zatan2(-0., -2.3)zatan2(-0., -0.)zatan2(inf, -inf)zatan2(inf, -2.3)zatan2(inf, -0.)zatan2(inf, 0.)zatan2(inf, 2.3)zatan2(inf, inf)zatan2(-inf, -inf)zatan2(-inf, -2.3)zatan2(-inf, -0.)zatan2(-inf, 0.)zatan2(-inf, 2.3)zatan2(-inf, inf)zatan2(2.3, -inf)zatan2(2.3, -0.)zatan2(2.3, 0.)zatan2(-2.3, -inf)zatan2(-2.3, -0.)zatan2(-2.3, 0.)�ffffff���)r�r�rA�atan2r�r�r�r�r�r�rEr�rWs&r�	testAtan2�MathTests.testAtan2&s���	
���)�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��UO[[O2UO	Q[O]2]2UO	Q[O]2]2UO	Q[O]2]2UO	Q[OQ2Q2UO	Q[OQ
2Q
2UO	Q[OQ2Q2UO	Q	[OQ2Q2UO	Q
[O]2]2UO	Q[OP2P2UO	Q[OQ2Q2UO[O[2[2UO[O[2[2UO[O[O[222P!)zcbrt(0)zcbrt(1)zcbrt(8)z	cbrt(0.0)r�z
cbrt(-0.0)z	cbrt(1.2)g333333�?ggA�E��?z
cbrt(-2.6)zcbrt(27)zcbrt(-1)z	cbrt(-27)r�g�������g�L]6H��i�����)r�r�rA�cbrtr�r�r�r�r�rEr�rWs&r�testCbrt�MathTests.testCbrtfsU�����)�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��UO[[O2UO	[
[
[OQ222UO	[OQ2]2UO	[OQ2]2UO	[OQ2]2UO	[OQ2]2UO	[OQ2P2UO	[OQ2P2UO	[OQ2]2UO	[OQ2]2QQ2oQQ[2oQQ	2oQ
Q2oUO	[OU22]*2UO	[OU22]*2UO	[O[Q22]+2UO[[OU22UO[[OU22U2oQ
Um
UO[[OU2UO[[OU]2UO	[O[Q22Q2UO	[O[Q22Q2P!)r���?��?r�c�(`�\sQsQsnQsQsUsP!)�$MathTests.testCeil.<locals>.TestCeil�c��]*!��*rfrWs&r�__ceil__�-MathTests.testCeil.<locals>.TestCeil.__ceil__����rrf�r[r\r]r^r�r_r`ras@r�TestCeilr�������
�
rr�c�(`�\sQsQsnQsQsUsP!)�%MathTests.testCeil.<locals>.FloatCeil�c��]*!r�rfrWs&rr��.MathTests.testCeil.<locals>.FloatCeil.__ceil__�r�rrfr�ras@r�	FloatCeilr��r�rr�c��\sQsQsQsP!)�&MathTests.testCeil.<locals>.TestNoCeil�rfrgrfrr�
TestNoCeilr�����rr�c�&�\sQsQs\2sQsP!)�'MathTests.testCeil.<locals>.TestBadCeil�rf)r[r\r]r^r}r�r_rfrr�TestBadCeilr��s	���z�Hrr�g@E@c��U!rNrf��argss*r�<lambda>�$MathTests.testCeil.<locals>.<lambda>�s��4rr������r�)r�r�rA�ceilr�rD�typer+rLrr�)rRr�r�r�r��ts&     r�testCeil�MathTests.testCeilvs�����)�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�"	�UO[O]]*2Q2UO[OQ]*2Q2UO[OQQ2Q2UO[O]Q2Q2UO[OQQ2Q	2UO[[O2UO[OQQ2Q2UO[OQQ2Q2UO[O[
Q2[
2UO[O[
Q2[2UO[O[Q2[
2UO[O[Q2[2UO[OQ[
2Q2UO[OQ[2Q2UO[O[
[
2[
2UO[O[
[2[2UO[O[[
2[
2UO[O[[2[2UO[O[O[Q222UO[O[O[[
222UO[O[O[[222UO[O[O[[222UO[O[O[
[222UO[[OQ[22Q2P!)
r&r�r��@�@�@i���r�r���)r�rArBr�r�r�r�r�rEr�rFrrWs&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��UO[[O2UO[[OQ2UO	[OQ2[
2QQ[[1FDNoUO[OU22UO[OU'22JP	P!)�1.0r�r�)
r�r�rA�signbit�assertIsInstance�boolr�r��assertFalser�)rRr3s& r�test_signbit�MathTests.test_signbit�s������)�T�\�\�2����)�T�\�\�5�9�
	
���d�l�l�3�/��6���C��%�C����T�\�\�#�.�/��O�O�D�L�L�#��.�/�&rc��UO[[O2UO	Q[O[O
']*2][O]2Q5UO	Q[O]2]2UO	Q[O[O
]*2][O]2Q5UO	Q[O[O
2P2UO[O[O[222UO[O[O[222UO[O[O[222P![cVSO[[O[2SO[[O[2K�h9h)z
cos(-pi/2)�rzcos(0)z	cos(pi/2)zcos(pi))
r�r�rA�cosr�r��ulpr�rEr�r�rr�rWs&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!�!	I�+AI�I�win32zEWindows UCRT is off by 2 ULP this test requires accuracy within 1 ULPc�p�UO[[O2UO	Q[O]2]2UO	Q[O]2][O]2]***
P2UO[O[2[2UO[O[2[2UO[O[O[222P!)zcosh(0)zcosh(2)-2*cosh(1)**2)r�r�rA�coshr�r�r�r�r�rEr�rWs&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��UO[[O2UO	Q[O[O
2Q2UO	Q[O[O
]*2Q2UO	Q[O[O
']*2Q2UO	Q[O]2]2P!)zdegrees(pi)g�f@z
degrees(pi/2)g�V@zdegrees(-pi/4)z
degrees(0)g�F�)r�r�rA�degreesr�r�rWs&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���UO[[O2UO	Q[OP2][O
*2UO	Q[O]2]2UO	Q[O]2[O
2UO
[O[2[2UO
[O[2Q2UO[O[O[222UO[[OQ2P!)zexp(-1)zexp(0)zexp(1)r��@B)
r�r�rAr5r�r�r�r�r�r�rEr��
OverflowErrorrWs&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��UO[[O2UO	Q[OP2Q2UO	Q[O]2]2UO	Q[O]2]2UO	Q[OQ2Q2UO[O[2[2UO[O[2Q2UO[O[O[222UO[[OQ2P!)	zexp2(-1)r�zexp2(0)zexp2(1)z	exp2(2.3)r�g)��{IJ@r�r
)r�r�rA�exp2r�r�r�r�r�rEr�rrWs&r�testExp2�MathTests.testExp2�s������)�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�:�UO[[O2UO	Q[OP2]2UO	Q[O]2]2UO	Q[O]2]2P!)zfabs(-1)zfabs(0)zfabs(1))r�r�rA�fabsr�rWs&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�n�UO[[O2UO	[
[
[OQ222UO	[OQ2]2UO	[OQ2]2UO	[OQ2]2UO	[OQ2P2UO	[OQ2P2UO	[OQ2Q2QQ[2oQQ2oQQ[2oQ	Q
2oQQ2oUO	[OU22]*2UO	[OU22]*2UO	[O[Q
22])2UO[[OU22UO[[OU22UO[[OUQ22U2oQUm
UO[[OU2UO[[OU]2UO	[O[Q22Q2UO	[O[Q22Q2P!)r�r�r�c��\sQsQsPsQsP!)�,MathTests.testFloor.<locals>.TestFloorIsNone�rf)r[r\r]r^�	__floor__r_rfrr�TestFloorIsNoners���Irrc�(`�\sQsQsnQsQsUsP!)�&MathTests.testFloor.<locals>.TestFloor�c��]*!r�rfrWs&rr�0MathTests.testFloor.<locals>.TestFloor.__floor__r�rrf�r[r\r]r^rr_r`ras@r�	TestFloorrr�rr"c�(`�\sQsQsnQsQsUsP!)�'MathTests.testFloor.<locals>.FloatFloor�c��]*!r�rfrWs&rr�1MathTests.testFloor.<locals>.FloatFloor.__floor__r�rrfr!ras@r�
FloatFloorr$r�rr(c��\sQsQsQsP!)�(MathTests.testFloor.<locals>.TestNoFloor�rfrgrfrr�TestNoFloorr*r�rr,c�&�\sQsQs\2sQsP!)�)MathTests.testFloor.<locals>.TestBadFloor�rf)r[r\r]r^r}rr_rfrr�TestBadFloorr.�	�� �
�Irr0g33333�D@�@c��U!rNrfr�s*rr��%MathTests.testFloor.<locals>.<lambda>'s��Drr�r�r����)r�r�rA�floorr�rDr�r+rLrr)rRrr"r(r,r0r�s&      r�	testFloor�MathTests.testFloors�����)�T�Z�Z�0�����d�4�:�:�c�?�3�4�������C��!�,�������C��!�,�������C��!�,�������D�)�2�.�������D�)�2�.�������D�)�2�.�
	�e�	�	�	�	��	�	�	�	#�	#�������I�K�0�"�5�������J�L�1�2�6�������I�d�O�4�b�9����)�T�Z�Z���?����*�d�j�j�,�.�A����)�T�Z�Z���1E�F��M��(������)�T�Z�Z��3����)�T�Z�Z��A�6�������I�d�O�4�d�;�������I�d�O�4�d�;rc�L�UO[[O2UO	Q[O]
]2Q2UO	Q[O]
Q2Q2UO	Q[O]
Q2Q2UO	Q[OQ]2Q2UO	Q[OQQ2Q2UO	Q	[OQQ2Q
2UO[O[O[Q222UO[O[OQ[222UO[O[O[[222UO[[OQQ2UO[[O[Q2UO[[O[Q2UO[[O[Q2UO[OQ
[2Q
2UO[OQ[2Q2UO[OQ
[2Q
2UO[OQ[2Q2UO[OQQ
2Q2UO[OQ[2Q2UO[[O[[2P!)zfmod(10, 1)r�z
fmod(10, 0.5)r�z
fmod(10, 1.5)r�r�zfmod(-10, 1)zfmod(-10, 0.5)zfmod(-10, 1.5)r����r�r���)r�r�rA�fmodr�r�rEr�rr�r�r�rWs&r�testFmod�MathTests.testFmod.s4�����)�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
�~�UO[[O2UO[[OQQ2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2[
QQQQ[1FCDoUO[OU22UOU[O]U2]6Q59^tt^2UO	[O[U2[2UO	[OU[2[2UO	[O[
U2U2UO	[OU[
2U2PPP2CJ	P!)%fhCJ29h�r�yr�r�r��r�is_negativer�r�)r�r�rA�fmaxr�r�r�r�rE�subTestrB�rRrs& r�	test_fmax�MathTests.test_fmaxEs)�����)�T�Y�Y�/����)�T�Y�Y��S�9�������2�r�*�B�/�������2�r�*�B�/�������2�r�*�B�/�������3��,�b�1�������3��,�b�1�������3��,�b�1�������3��,�b�1�������3��,�b�1�������3��,�b�1�������3��,�b�1�������3��,�b�1���S�"�b�#�.�A����T�Z�Z��]�+�����t�}�}�Q��/B�Q�/F��G�G�� � ����3��!2�C�8�� � ����1�c�!2�C�8�� � ����4��!3�Q�7�� � ����1�d�!3�Q�7�	H�G�/�H�G�G���&B5L*	�*L<
�3L<
c���[QQQQ[1FCD8oUOU[O]U2]6Q59^tt^2UO[O[O[U222UO[O[OU[222UO[O[O[U222UO[O[OU[222PPP2CJ;	UO[O[O[[222UO[O[O[[222UO[O[O[[222UO[O[O[[222P!)%fhCJY9h�r�r�rBr�r�)r�r�rErArBr�rErDr��NNANr�rFs& r�test_fmax_nans�MathTests.test_fmax_nans`�^����S�"�b�#�.�A�����t�}�}�Q��/B�Q�/F��G�G�� � ����D�I�I�c�1�,=�!>�?�� � ����D�I�I�a��,=�!>�?�� � ����D�I�I�d�A�,>�!?�@�� � ����D�I�I�a��,>�!?�@�	H�G�/�	
����
�
�4�9�9�S�#�#6�7�8�����
�
�4�9�9�T�4�#8�9�:�����
�
�4�9�9�S�$�#7�8�9�����
�
�4�9�9�T�3�#7�8�9�H�G�G���
C9I	�I,
�#I,
c
�~�UO[[O2UO[[OQQ2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2UO	[OQQ2Q2[
QQQQ[1FCDoUO[OU22UOU[O]U2]6Q59^tt^2UO	[O[U2U2UO	[OU[2U2UO	[O[
U2[
2UO	[OU[
2[
2PPP2CJ	P!)%fhCJ29hr@)r�r�rA�fminr�r�r�r�rErErBrFs& r�	test_fmin�MathTests.test_fminps)�����)�T�Y�Y�/����)�T�Y�Y��S�9�������2�r�*�B�/�������2�r�*�B�/�������2�r�*�B�/�������3��,�b�1�������3��,�b�1�������3��,�b�1�������3��,�b�1�������3��,�c�2�������3��,�c�2�������3��,�c�2�������3��,�c�2���S�"�b�#�.�A����T�Z�Z��]�+�����t�}�}�Q��/B�Q�/F��G�G�� � ����3��!2�A�6�� � ����1�c�!2�A�6�� � ����4��!3�T�:�� � ����1�d�!3�T�:�	H�G�/�H�G�G�rIc���[QQQQ[1FCD8oUOU[O]U2]6Q59^tt^2UO[O[O[U222UO[O[OU[222UO[O[O[U222UO[O[OU[222PPP2CJ;	UO[O[O[[222UO[O[O[[222UO[O[O[[222UO[O[O[[222P!)%fhCJY9hrK)r�r�rErArBr�rErRr�rLr�rFs& r�test_fmin_nans�MathTests.test_fmin_nans�rOrPc�`�RO[[O2U1QkoUQ[OP2Q2UQ[O]2Q2UQ[O]2Q2UQ[O]2Q2RO	[O[
2]*[
2RO	[O[2]*[2RO[O[O[2]*22P!)	c�:�Vtvq4vqV[V5*
2[6�fVF6wcROU8QU8QU802P!P!�z
 returned z, expected �rr�r�)r��resultr�mantr5�emant�eexprRs&&&    �r�	testfrexp�&MathTests.testFrexp.<locals>.testfrexp�s@���)/�&�K�T��%��4�:���$����	�	����3�4�)4rz	frexp(-1)zfrexp(0)zfrexp(1)zfrexp(2))r�r&)rr)r�r&)r�r9)
r�r�rA�frexpr�r�r�r�rEr�)rRr`sf r�	testFrexp�MathTests.testFrexp�s�������)�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�	``�]QHGoUOnUOR*
nUU1Qko,Q1Q,Q1,QNQ1,QNQ1,QNQ1,QNQ1,Q NQ!1,Q"NQ#1[	]Q	2Tt,tFDoQU*MJ	to[
O
Q
21[	]Q	2Tt,tFDoQU*U*MJ	to[
O
Q21,Q$NQ1,Q%NQ1[	Q&Q
]2Tt,tFD6oQU*QU]2***
QU]4***MJ8	toQ',*[
O
Q21,
o[	Q	2Tt,tFDoQU*MJ	ooSO[	Q2Tt,tFDpVU]**Ve**
MJ!	toUQ*',*U]*'12[U2FD1vovqx[OU2o	UOW	U2J3	]QH>Go
GoGo[	Q2FD�o
,Q(N]
*o]o[	]�2FD8oU]U
22]*U*
oV�*
oUOU2J:	UU2UU2oUOUU2[OU22J�	UO[OQ[O$,2[O$2UO'[O([O[O*Q,222UO[OQ[-Q2QQQ[-Q2Q,2Q2UO/[[OQQ,2UO/[[O[O$[O$',2UO/[0[OQ,2UO/[0[O]2UO/[[O]
Q*,2QoUO/[2[OU22P!ttohttohttohttohttoh[cSOQXXS1*2CK�[cSOQXXS1*2CK
h9h))r)�
float_infoc	�j:�]]q!SFDro[OU2vqE[[OUR	22UR	*
qTV%6�cVU*
*oSoLVEU*
*oV*
oJt	[	[[
[U222]*
R	*
RU*
2oU]6�c^]U]*
*oU]U**[V*9%cU]U*]*
*2*oV&*
o[OV2!)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/

)	rArbrD�ldexp�max�len�binrr�)
�iterable�tmant�texprr]r5�tail�h�etiny�mant_digs
&       ��r�msum� MathTests.testFsum.<locals>.msum�s�����Q�4��� �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�.I�E�A�a�C��E�M�)J�J������:�:�e�*�*rr��}Ô%�I�Tr��0��.�++�d~�QJr���z0x1.df11f45f4e61ap+2z-0x1.62a2af1bd3624p-1g��7y�AC��z0x1.5555555555555p+970g333333�?��zDtest %d failed: got OverflowError, expected %r for math.fsum(%.100r)zAtest %d failed: got ValueError, expected %r for math.fsum(%.100r))�random�gauss�shuffle�������spamc3�" �Qw�	[g3h�r�)�ZeroDivisionErrorrfrr�bad_iter�$MathTests.testFsum.<locals>.bad_iters����I�#�#�s�
�}Ô%�I��r��d~�Q�)rur�r�rvrwr�r�)rur�r�rvrw���r�)�@Cr�g��g������?C)r�r���9g@C)g@Cr�r�g@C)g������?Cr�g�<g������?C)r	r�缉ؗ�Ҝ<)g��7y�ACg�������?g��7y�A�g�����������g�)�rui����r�gh�$.5���g#B����;)�sysrfrr�min_exp�ranger+�fromhex�append�	enumeraterA�fsumrr�rr�r{r|r}rr�rErrLr�r�r�)rRrfrsr�test_values�i�terms�valsr�actualr{r|r}�j�s�vr�rqrrs&                @@r�testFsum�MathTests.testFsum�s���	#��&�&���"�"�X�-��	+�8��I��U�C�L�
<�f�E�
:�F�C�
'��5�
&��4�
+�\�:�
)�;�7�!�!�T�N�
+�N�q�b��d�d�N�
+�
�]�]�1�
2�
4�"'��4�.�
1�.�Q�s�Q�h�q�j�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�sB�"R�R�$>R�R �<'R%�R*�*	S:�4S:�S:�S:�9S:c�.�[OoUOU]]2]2UOU]]2]2UOUP]2]2UOU]]2]2UOU]P2]2UOU]]2]2UOU]P2]2UOUQ]2]2UOU]x]T2]2UOU]TQ2]2UOUQQ2] 2QoQoQ	FD�oV$*oV4*oUOUVV2U2UOUVe2U2UOUU'U2U2UOUVe'2U2UOUVV'2U2UOUU'U2U2UOUU'U'2U2UOUU'U'2U2J�	UOU2]2UOU]x2]x2UOUQ2]x2UOU]x]T]f2]2UOU]x]]T2]2UO[UQ2UO[UQ]T2UO[U]xQ2UO[U]x]Q2UOU[]x2[]T22]2P!)
r� j9W P)�}� "o�`T"-l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k �^@�U@������)��	lZ��'^%#�>�;�*Q!/61^)rA�gcdr�r�r�ri)rRr�rrA�c�a�bs&      r�testGcd�MathTests.testGcds����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
�f�]QHGo]QH
Go[O
o[O[O[OQ2[OQ2[OQ21o[[U2]*2FDCoUOUUPU[O[QUPU2222JE	UOUQQ2Q	2UOU]]2]
2UOUQ
P2Q2UOUPQ
2Q2UOUQ
[!Q22Q2UOU[!Q2Q
2Q2UOUU]2U]22]
2UOUU]] 2U]] 22U]
] 22UOUP	P
P	P	P	2Q2UOUQ
Q
2Q
2UOUQ2Q2UOU2Q
2UOQ[O"QUQ222UOUQQQ2UQQQ22UO%[&29^tt^2U]Q5PPP2UO%[&29^tt^2UQQQ2PPP2]
[(O*O,]**oUO%[.[0129^tt^2U]U2PPP2UOU[22[22UOU][22[22UOU]
[22[22UOUQ[22[22UOU[4[22[22UOU[2[42[22UOU[6[42[22UOU[4[62[22UOU[2'[22[22UOU[2'[2'2[22UOU]
[2'2[22UO9[O:U[4222UO9[O:U][4222UO9[O:U[4]
222UO9[O:U]
[4222UO9[O:U[4[4222UO9[O:U[4222[<Q*o[] 2FDQoUO9[O>UU,U*U[OU2*22JS	[] 2FDSo	[@QU	**o
UO[O
]U
*]U
*2]U
*2JU	UO$[&[O
,Q,]*NQM3P!)%fhCKK9h)%fhCK/9h)%fhCK�9h)r��Decimal��Fractionr�r2g������@c3�>�SF �Dp]*w�	J	P!3h)r9rf)�.0r�s& r�	<genexpr>�&MathTests.testHypot.<locals>.<genexpr>Us��H���H�q��d�d�H�s�g(@�@�*@g�?��?r�r��%@r�r��r皙�����?�string皙����@r�rr��%�r�r:)!�decimalr��	fractionsr�rA�hypotr�r��sqrt�gamma�sinr�rj�assertAlmostEqual�sumr�rLrBr�r�r�rf�
max_10_exprrr�r�r�r�rE�	FLOAT_MAX�isclose�	FLOAT_MIN)rRr�r�r�r�r��int_too_big_for_float�	fourthmaxrr5�scales&          r�	testHypot�MathTests.testHypotIs��#�&��
�
���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*�
)�
)��
)�
)�
)��<�
;�
;�s6�+
[7�\�8
\�7\	�\	�\	�\	�\0	�(\0	z7hypot() loses accuracy on machines with double roundingc�j�[Oo[Oo[OQQ5oQFD�vqE[
O
U2o[
O
U2oUOVEVgQ59^tt^2[OU29^tt^2[UU2]*UU2]**O22oPPP2UOUVg2W2PPP2J�	P!)%fhK69h)%fhJ�9h)��)�prec)�hx�hyrrA))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)rAr�r�r��Contextr+r�rE�localcontextr�r�)	rRr�r��high_precisionr�r�rrA�zs	&        r�testHypotAccuracy�MathTests.testHypotAccuracy�s����
�
���/�/�� ���c�2��$
�F�B�J�
�
�b�!�A��
�
�b�!�A�����a��5�5��)�)�.�9�9��w�q�z�1�}�w�q�z�1�}�<�B�B�D�E�A�:�� � ��q��a�0�6�5�O$
�P:�9��6�5�5�s0�D!	�%;D
�  D!	�D�D�D!	�!D2
�*D2
c���]QHGo]QH
Go[O
o[OoUOUQQ2Q2UOUQQ2Q2[]	2FD�o[]2FD�o[9PIc,Q[U22DMJ	3LQ[U222o[9PIc,Q[U22DMJ	3LQ[U222oUOUVx2U[Q	[Vx22222J�	J�	UOU,QN,QN2Q2UOU[,QN2[,QN22Q2UOUQQ2Q2UOUQQ2]
2UOU[Q
2]1Q2]
2UOUQ [Q2Q12]
2UOU][Q21Q!2]
2UOUQ"Q!2]
2UOUU]2U]21U]2UQ212U]
22UOUU]] 2U]] 21U]] 2UQ] 212U]
] 22UOUQ#Q$2Q2UOUQ%Q%2Q2UOUQ&Q&2Q2UOQ[OQUQ(Q)222UOQ[OQUQ)Q(222UOUQ*Q+2UQ,Q+22Q
Q[2o	UOUU	Q2Q2Q2UO!["29^tt^2UQQ-Q5PPP2UO!["29^tt^2UQ2PPP2UO!["29^tt^2UQQ-Q.2PPP2UO!["29^tt^2U]]2PPP2UO!["29^tt^2UQ/Q2PPP2UO![$29^tt^2UQ0Q12PPP2UO![$29^tt^2UQQ22PPP2UO!["29^tt^2UQ4Q52PPP2UO!["29^tt^2UQQ2PPP2]
[&O(O*]**o
UO![$[,129^tt^2U]U
1Q62PPP2UO![$[,129^tt^2UQ6]U
12PPP2UO!["29^tt^2UQ3]2PPP2UO!["29^tt^2U],]2PPP2QQ2oUO![$29^tt^2U],U2,2PPP2[]2FDVo[.O.2[.O.2q�UOUU1U12[1Vx*
22JX	[2Q7Q'QQ[4[6,o[8O:U]Q5FD�o[8O:U]Q5FD�o[Vx2T
Tt,tFD
vq�V�*
MJ	oo
o[=[?[O@U22%cUOUVx2[42Jo[=[?[OBU22%fJ�UOE[OBUVx222J�	J�	[FQ*o[] 2FD�oU1U*oQ)U*oUOE[OHUVx2U[OU2*22UOE[OHUV�2U[OU2*22J�	[] 2FD�o[JQU**o]U*]U*1oQ8oUO[O
Vx2]U*2UO[O
V�2]U*2J�	P!)%fhCK�9h)%fhCKy9h)%fhCK]9h)%fhCKB9h)%fhCK'9h)%fhCK9h)%fhCK�9h)%fhCK�9h)%fhCK�9h)%fhCKp9h)%fhCKM9h)%fhCK29h)%fhCK9h)%fhCK�9httoo
h)9rr�r�r�r�r�r�c3�\�SF �Do[OQ]2w�	J	P!3h������r{�uniform�r��ks& rr��%MathTests.testDist.<locals>.<genexpr>��������A�&�.�.��Q�/�/����%,c3�\�SF �Do[OQ]2w�	J	P!3hr�r�r�s& rr�r��r�r�c3�P�SF �DvqV*
Q*w�	J	P!3h�r�rf)r��px�qxs&  rr�r��s��I���I�&�"�b�g�#�-�-�I�s�&�,@r�r�c��\sQsQsQsP!)�MathTests.testDist.<locals>.Tirfrgrfrr�Tr�r�rr���p�q�abc�xyzc�&�\sQsQs\2sQsP!)�$MathTests.testDist.<locals>.BadFloati3rf)r[r\r]r^r}rXr_rfrr�BadFloatr�3r1rr�r���repeat)r�r�r�r�)r�r�r��r&r9�)�r9r�)r�r�)r�r�)�r&���)r9r�)�r&)r9i����)r�r�)TTFFTT)TFTFFF)��*@g)@�
�rfr�)r�)r�)r�r�r�)rrr)r�r�r�)r�r��)r���	)r�r�r�)r&r9r�r�)r�rr�)r�r�rr��r&)r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r)r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&r&)r9r�r�)r�r�)&r�r�r�r�rA�distr�r�r��tupler�r��zip�iterrLrBr�r�rr�rfr�rr{rr�r�r��	itertools�product�any�maprFrEr�r�r�r�)rR�D�Frr�r�r�r�r�r�r�r��valuesr�r��diffsr�rr5r�s&                   r�testDist�MathTests.testDist�s���(�+��y�y���y�y��	
����o�/?�@�#�F�����i��4�c�:��q��A��1�X���E�B��q��B�E�E�B��q��B�B���E�B��q��B�E�E�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�4�A��&�&�v�a�8�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�e�6	e/�$f�
f�
f+�2
f?�!
g�
g'�?
g;�h�h#�
h7�3i�-i�i3�e,	�$e,	�/f	�8f	�f	�f	�f(	� f(	�+f<	�4f<	�?g	�g	�g$	�g$	�'g8	�0g8	�;h	�h	�h 	�h 	�#h4	�,h4	�7i	�i	�i	�i	�i0	�(i0	c��UO[29^tt^2[O]],,QN2PPP2P!)%fhP!9h)r&)r�r�r�)r�rrArrWs&r�test_math_dist_leak�MathTests.test_math_dist_leakZs4��
�
�
�z�
*�
*��I�I�q�!�f�i�(�+�
*�
*�
*�s�A�A	�A	c�L�[OoUOU]]2]2UOU]]2]2UOUP]2]2UOU]]2]2UOU]P2]2UOU]]2]2UOU]P2]2UOUQ]2Q2UOU]x]T2Q2UOU]TQ2Q2UOUQQ2Q2QoQoQ
FD�oV$*oV4*oV#*U*oUOUVV2U2UOUVe2U2UOUU'U2U2UOUVe'2U2UOUVV'2U2UOUU'U2U2UOUU'U'2U2UOUU'U'2U2J�	UOU2]2UOU]x2]x2UOUQ2]x2UOU]x]T]f2Q2UOU]x]]T2]2UO[UQ	2UO[UQ	]T2UO[U]xQ
2UO[U]x]Q
2UOU[]x2[]T22Q2P!)r�Y�Hr�r�l ,�`aUx�-�xB�:Vn
Ldbl�m�e%Y%l};T^�	i�7r�r�r�r�)r�l�|/Kr2)rA�lcmr�r�r�ri)rRrrrAr�r�r��ds&       r�test_lcm�MathTests.test_lcm_s����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
�`	�UO[[O2UO[[OQQ2UO	Q[O]]2]2UO	Q[O]]2]2UO	Q[O]P2Q2UO	Q[OP]2Q
2UO[
[OQQ2UO[
[OQQ2UO
[OQQ2Q	2UO
[OQQ2Q
2UO
[O[]2[2UO
[O[Q2[2UO[O[O[]222QQQ]
](*1FCDyoUO
[O[U'2[2UO
[O[U'2[2UO
[OQU'2Q	2UO
[OQU'2Q
2UO
[OQ	U'2Q	2UO
[OQ
U'2Q
2UO[O[O[U'222UO[
[OQU2UO[
[OQU2UO
[OQ	U2Q	2UO
[OQ
U2Q
2UO
[O[U2[2UO
[O[U2[2UO[O[O[U222CJ|	P!)r�r�z
ldexp(0,1)z
ldexp(1,1)zldexp(1,-1)r�zldexp(-1,1)r�r
r�r5r�i���r�i+���順�d(	� F�x:^V)r�r�rArhr�rr�r�r�r�rEr��rRrs& 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�V�UO[OQQ2Q2P!)l�s�@ba�gi����)r�rArhrWs&r�testLdexp_denormal�MathTests.testLdexp_denormal�s ��	
������$4�e�<�f�Erc
�6
�UO[[O2UO[[O]]]2UO	Q[O][O
*2P2UO	Q[O]2]2UO	Q[O[O
2]2UO	Q[O] ]2]2UO	Q[O]
](*]
2](2UO	Q[O]
](*Q2]2UO	Q[O]
Q*2Q	2UO	Q
[O]
Q*]
Q*2]2UO	Q[O[
] 2[
]22]2UO	Q
[O[
]
Q*22Q	2UO	Q[O[
]
Q*2[
]
Q*22]2UO[[OQ2UO[[O]2UO[[O[
]22UO[[OQ2UO[[OP2UO[[O[
P22UO[[O]
Q*'2UO[[O[
]
Q*'22UO[[O]
Q2UO[[O[2UO[O[2[2UO[O[O[222UO[O[[O
]
Q*22Q2UO[O[[!2]
Q*22Q	2P!)r&zlog(1/e)zlog(1)zlog(e)z	log(32,2)zlog(10**40, 10)zlog(10**40, 10**20)z
log(10**1000)rzgO�+��@zlog(10**2000, 10**1000)��z$log(MyIndexable(32), MyIndexable(2))zlog(MyIndexable(10**1000))z1log(MyIndexable(10**2000), MyIndexable(10**1000))r�r�r r�r:)r�r�rA�logr�r�rirr�r�r�r�rEr�rpr�rrWs&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�r�4�x��T��.J�A�N��
�
�9��8�8�K��O�[��^�<�a�	A��
�
�/��8�8�K��D��1�2�%�	'�	
�
�
�F��8�8�K��D��1�;�r�4�x�3H�I��	�	
���*�d�h�h��4����*�d�h�h��2����*�d�h�h��A��?����*�d�h�h��5����*�d�h�h��3����*�d�h�h��B��@����*�d�h�h��T��	�:����*�d�h�h��R��X�I�0F�G����*�d�h�h��C�8����*�d�h�h��5�������#���,�����
�
�4�8�8�C�=�1�2�������"4�T�V�V�R��X�"F�G��M����t�x�x�(:�=�?�B�PT�H�(U�V�1�	3rc
��UO[[O2]]]Z*]Q*1FDFoUO	[OU2[O[U222JH	UO[[OP2UO[O[2[2P!)r9�,)	r�r�rA�log1pr�r+rr�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	�j�UO[[O2UO	[O]2Q2UO	[O]2Q2UO	[O]2Q2UO	[O[]22Q2UO	[O]Q*2Q2UO	[O]Q*2Q2UO	[O]Q*2Q	2UO	[O[]Q*22Q	2UO[[OQ2UO[[O]2UO[[O[]22UO[[OQ2UO[[OP2UO[[O[P22UO[[O]Q*'2UO[[O[]Q*'22UO[[O[2UO[O[O[222UO	[O[Q
]Q*22Q2UO	[O[[2]Q*22Q	2P!)
r&r�r�r��g��@�g�@r(g@�@g @r�r�)
r�r�rA�log2r�rirr�r�rEr�rprrWs&r�testLog2�MathTests.testLog2�sA�����)�T�Y�Y�/�	
������1��s�+�������1��s�+�������1��s�+�������;�q�>�2�C�8�	
������1�d�7�+�V�4�������1�d�7�+�V�4�������1�d�7�+�V�4�������;�q�$�w�#7�8�&�A����*�d�i�i��5����*�d�i�i��3����*�d�i�i��Q��@����*�d�i�i��6����*�d�i�i��4����*�d�i�i��R��A����*�d�i�i�!�T�'��:����*�d�i�i��a��g�X�1F�G����*�d�i�i��6�����
�
�4�9�9�S�>�2�3�������#5�c�1�d�7�#C�D�c�J�������#5�m�o�q�$�w�#O�P�RX�Yrc
��[QQ2Tt,tFD.o[O[OQU22MJ0	oo[QQ2Tt,tFDo[	U2MJ	ooUOV#2P!ttohttoh)i2r3r�r�)r�rAr4rhr+r�)rRrr�rs&   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�6A?�Bc	��UO[[O2UO	Q[OQ2P2UO	Q[O]2]2UO	Q[O]
2]2UO	Q[O]
Q*2Q2UO	Q[O[]
22]2UO	Q[O[]
Q*22Q2UO[[OQ	2UO[[O]2UO[[O[]22UO[[OQ2UO[[OP2UO[[O[P22UO[[O]
Q*'2UO[[O[]
Q*'22UO[[O[2UO[O[2[2UO[O[O[222UO[O[Q
]
Q*22Q2UO[O[[2]
Q*22Q2P!)
z
log10(0.1)皙�����?zlog10(1)z	log10(10)zlog10(10**1000)rzg@�@zlog10(MyIndexable(10))zlog10(MyIndexable(10**1000))r�gY@r�r�)r�r�rA�log10r�rirr�r�r)r�r�rEr�rprrWs&r�	testLog10�MathTests.testLog10s!�����)�T�Z�Z�0��
�
�<����C��"�5��
�
�:�t�z�z�!�}�a�0��
�
�;��
�
�2���2��
�
�$�d�j�j��T��&:�F�C��
�
�+�T�Z�Z��B��-H�!�L��
�
�1��:�:�k�"�d�(�3�4�f�	>����*�d�j�j�#�6����*�d�j�j�!�4����*�d�j�j�+�a�.�A����*�d�j�j�$�7����*�d�j�j�"�5����*�d�j�j�+�b�/�B����*�d�j�j�2�t�8�)�<����*�d�j�j�+�r�4�x�i�2H�I����*�d�j�j�$�7�������#���,�����
�
�4�:�:�c�?�3�4�������$6�u�b�$�h�$G�H�#�N�������$6�}���D��$Q�R�TZ�[rg�������?)�memusec��]U*oUO[OU2U2UO[OU2UQ*2UO[OU2UQ*2P!)r&g�9��B.�?g�y�PD�?)r�rAr4r)r<)rR�sizer�s&& r�test_log_huge_integer�MathTests.test_log_huge_integers_��
��I�����t�y�y��|�T�2����t�x�x��{�D�3E�,E�F����t�z�z�!�}�d�5G�.G�Hrc�l�[Oo[Oo[O
oUO
U[,QN2Q2]�2UO
UQQ,QQ,2Q2UO
U,,2]2UO
UP,Q,2P2UO
UQ,P,2P2QQU]]2U]]21UQ2UQ21QQU]]21]U]]21]UQ211FD�oVD1VDPPP/*11FD�vqVUOVVQ59^tt^2[Q[VVP	Q	522oUVV2oUO
Vx2UO
[U2[U22PPP2J�	J�	UO[U2UO[U,2UO[U,,,2UO[UP]
,2UO[U]
,P2UO[UQ
,Q,2UO[U]
],],2UO[U]
,]],2UO
UQ,],2Q2UO
U],Q,2Q2UO
UQ,Q,2Q2UO
UQ,Q*Q,Q*2Q2UO[U]
Q*,Q,2UO[UQ,]
Q*,2Qo	UO[ 29^tt^2U[#]
2U	]22PPP2UO[ 29^tt^2UU	]2[#]
22PPP2]Q
HJGo
UO
UU
]2],2]2UO
U],U
]22]2QQ2oUO[ 29^tt^2U]
U2],,QN2PPP2UO[ 29^tt^2U,QN]
U2],2PPP2UO[29^tt^2UQ],]]
,2PPP2UO[29^tt^2U]]
,Q],2PPP2UO
UQ[O(,QQ,2[O(2UO
UQ[O(,[O(Q,2[O(2UO
UQ[O(,[O([O(,2[O(2UO
UQ[O(',QQ,2[O('2UO+[O,UQ[O(,[O('[O(,222UO+[O,UQ[O.,QQ,222UO+[O,UQ[O(,[O.Q,222UO+[O,UQ[O(,Q[O.,222QoUO
UUQ2P!)%fhCJ"9h)%fhCK�9h)%fhCK�9h)%fhCKI9h)%fhCK$9h)%fhCK9h)%fhCK�9h) �
r��@r2g@g�0@r�r�c3�B�SF �DvqV*w�	J	P!3hrNrf)r��p_i�q_is&  rr��(MathTests.testSumProd.<locals>.<genexpr>=s��=S���=S���3�9�9�=S�s���strictrrzc3�H �[U2FDoUw�	J
	[g3hrN)r��RuntimeError)rr�s& r�raise_after�*MathTests.testSumProd.<locals>.raise_afterWs����1�X�������s� ")�BasicIterClassc�.`�\sQsQsnQsQsQsUsP!)�*MathTests.testSumProd.<locals>.BadMultiplyifc��[grN�rN�rR�others&&r�__mul__�2MathTests.testSumProd.<locals>.BadMultiply.__mul__g���"�"rc��[grNrUrVs&&r�__rmul__�3MathTests.testSumProd.<locals>.BadMultiply.__rmul__irZrrf)r[r\r]r^rXr\r_r`ras@r�BadMultiplyrSfs����
#�
#�
#rr^r�g333333$@g3333334@g�����L>@g�����L4@r�)rE��r�)r�g�)rFrEr ri���rl�9V))r�r�rE)r���)rA�sumprodr�r�r�r�r�rrEr�rr�r�r�rrrNr��test.test_iterrQrr�rEr)
rRrcr�r�r�r�r�rr�rOrQr^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,�+�+��>-�
,�
,��
,�
,�
,��-�
,�
,��
,�
,�
,��*�
)�
)��
)�
)�
)�s�8A\)
�\>�]�]&�]:�^�7^"�)\;�2\;�>]	�]	�]#	�]#	�&]7	�/]7	�:^	�^	�^	�^	�"^3	�+^3	zBsumprod() accuracy not guaranteed on machines with double roundingc�h�[OoUOUQ,]
*],]
*2Q2UOUQ,]*P	P
,]
*2Q2UOUP	P
,]
*Q,]*2Q2UOU,QNQ,]*2Q2P!)r;r�r�)r�g\�n��Tr�g\�n���)rArcr�)rRrcs& 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��`�[Oo[Oo[O
o[OoU1QkQ[2nU1QkQ[2oQoQoQ]
QQQQ Q!]]P*QR]21
Q"Q#]Q	**]]Q
**Q$]Q**Q%QQ&Q']]Q*1	Q
QQ([Q2[Q2'[Q2]]	Q)U]
2Q1QQ*UQ2UQ2U]
]2UQ+]2Q,]aQ-R]21
UQ2UQ2UQ2U]2UQ2UQ2'UQ2]Q1	Q.]]Q
**]]Q/Q0Q1Q21Q3QQ4Q5QP	P
]R]21,	oSFD`o	[]2FDMo
UV�Q5FD<oUV�Q5FD+oV�1o
UOUU,U
N3UU,U
N3U
2J-	J>	JO	Jb	P!)6c�J:`�\sQsQsnU1QksU1Qks\s\sQsQs	Us
P!)�*MathTests.test_sumprod_stress.<locals>.Inti�c�H:�R[U2[U2*2!rN�rD�rRrW�Ints&&�r�__add__�2MathTests.test_sumprod_stress.<locals>.Int.__add__������3�t�9�s�5�z�1�2�2rc�H:�R[U2[U2*2!rNrorps&&�rrX�2MathTests.test_sumprod_stress.<locals>.Int.__mul__�rtrc�"�Q[U2Q0!)zInt(�)rorWs&r�__repr__�3MathTests.test_sumprod_stress.<locals>.Int.__repr__�����c�$�i�[��*�*rrf�r[r\r]r^rrrX�__radd__r\ryr_r`�rbrqs@�rrqrm��#����
3�
3��H��H�
+�
+rrqc�J:`�\sQsQsnU1QksU1Qks\s\sQsQs	Us
P!)�*MathTests.test_sumprod_stress.<locals>.Flti�c�H:�R[U2[U2*2!rNrorps&&�rrr�2MathTests.test_sumprod_stress.<locals>.Flt.__add__�rtrc�H:�R[U2[U2*2!rNrorps&&�rrX�2MathTests.test_sumprod_stress.<locals>.Flt.__mul__�rtrc�"�Q[U2Q0!)zFlt(rxrorWs&rry�3MathTests.test_sumprod_stress.<locals>.Flt.__repr__�r{rrfr|r~s@�r�Fltr��rrr�c�X�]o[VP	Q5FDvq4V#U**
oJ	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.
rK)r)r�r��totalrHrIs&&   r�baseline_sumprod�7MathTests.test_sumprod_stress.<locals>.baseline_sumprod�s0��
�E���T�2�2����s��"��3��Lrc��UUoP[U2[	U21![[1cg[co[S2PQ1tPo=!Po=hh9h)zHMake comparing functions easier. Returns error status, type, and result.�None)�AssertionError�	NameError�	Exceptionr��repr)�funcr�r\r�s&*  r�run�*MathTests.test_sumprod_stress.<locals>.run�sZ��
-��t���
��f��t�F�|�3�3��	#�I�.�
���
-��A�w��f�,�,��
-�s$�!�A�
A�A�
A�
A�Ar��@��&@r�rzi��g@rFr�NaNr�r�z10.5z-2.25z6.125z12.375z-2.75�Infg+@g`7@r�r�i�llrbra)	r�g�g@r�gy@g�?��?r�g���3�r�i:,rg8�r�y@@g�i����y@�?i���gp�l�����gp�g`�g�)g<�g��r�g�g�g�)rArcr	r
r�r�r�r�rDr+r�r�)rRrcr
r�r�r�r�r��pools�poolrA�args1�args2r�rqs&             @r�test_sumprod_stress�MathTests.test_sumprod_stress�s�����,�,���#�#���/�/���%�%��	+�#�	+�	+�%�	+�	�	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�7�E�!(��!;�!;�� %�~���(�(�� 0�8�4�8���/�$�/� ��"<�8�!�rc	�``````	`
```
`````````�]PHn]QHGn]QHGn]QHGo]QHGnG	nG
n]QH.Gn
G
nGn]QH>GoUQQ2nUUU1QknU1Q	knQ
nUUUU
UUUUU1	Qkn	UU1Qkn
U	U
1Q
knQo]nQnUUUU1Qk[#U222oUO%UQ2P!)rr�)�starmap)�
namedtuple)r4rr)�choicesr�r})�median�
DotExamplec�:�[RU2o[RU2o[RRO[V#P	Q522!)TrK)rr��mulr)rrA�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�:�QR[[U2[[U22*[RV22*!r�)rr)rrAr�s&&�r�	Condition�EMathTests.test_sumprod_extended_precision_accuracy.<locals>.Condition�s/�����#�c�1�+�s�3��{�;�;�c�(�1�.�>Q�Q�Qrc��V*
U]*
*o[U2Tt,tFDp@V4**MJ	to!ttohr)r�)�lo�hir�widthr�s&&&  r�linspace�DMathTests.test_sumprod_extended_precision_accuracy.<locals>.linspace�s4���W��Q��'�E�,1�!�H�5�H�q���N�N�H�5�5��5s�Ac�Z:	�U]*oQ,U*oQ,U*oRU2oR
[[U]*22UQ5o[U]*2]*U]$QUP$STt,tFDoRQQ2RU2*MJ	toUPU#STt,tFDoRQQ2RU2*MJ	toUPU#[[[RU]*QV*
222o[V 2FDgoRQQ2RVhU*
*2*V8$RQQ2RVhU*
*2*RV42*
V8**VH$Ji	[[V422o	RU	2[U	vq4RV4RV42R
V422!ttohttoh)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.
r�)r�r�r�)r�rD�listr�roundr)rr��n2rrAr�r�r�r��pairsr�r�r�r�rr�r4r}r�s&&        ���������r�GenDot�BMathTests.test_sumprod_extended_precision_accuracy.<locals>.GenDot�s{����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�2�A�>�A�c�r�F�<=�>�A�q�g�d�C�(�4��7�2�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�/!F#�!F(c�:�Uvq#qER[U2U',*[U2],*2oRVd*2!r)r�)	�res�exrrA�target_sumprod�	conditionrr�rs	&&     ��r�
RelativeError�IMathTests.test_sumprod_extended_precision_accuracy.<locals>.RelativeErrors>���.0�+�A�.���a��S�D�6�)�4��7�a�S�=�9�A���*�+�+rc�b:�R]
U2oUUOUO2oRVC2!)rE)rrA)�dotfuncr�rr�r�r�r�s&&&  ��r�Trial�AMathTests.test_sumprod_extended_precision_accuracy.<locals>.Trial!s-�����A��B��"�$�$����%�C� ��)�)rrzgꌠ9Y>)Fc3�`:�SF �DoR[ORR2w�	J 	P!3hrN)rArc)r�r�r�r�rs& ���rr��EMathTests.test_sumprod_extended_precision_accuracy.<locals>.<genexpr>/s ������A�e�D�L�L�!�Q�7�7��s�&.r�)rrAr�r�)r�r�r�r	r��collectionsr�rAr4rrr{r�r�r}�
statisticsr�r��
assertLess)rRr�r��times�relative_errr�r�r�r�r�r�r�r�r�rrr�r4rr�r}r�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�z`�RO[[O2U1QkoUQ[OQ2Q2UQ[OQ2Q2RO	[O[
2Q[
12RO	[O[2Q[12[O[2oRO[OU]*22RO[OU]*22P!)	c�:�Vtvq4vqV[V5*
2[6�f[VF*
2%cROU8QU8QU802P!P!rZr[)r�r\r�v1�v2�e1�e2rRs&&&    �r�testmodf�$MathTests.testModf.<locals>.testmodf5sF���!'��H�R�h�r��2�5�z�C��3�r�u�:�:��	�	����3�4�$.rz	modf(1.5)r�z
modf(-1.5)r�)r�r�r�)r�r�r�)
r�r�rA�modfr�r�r�r�r�rE)rRr��modf_nansf  r�testModf�MathTests.testModf2s�������)�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�&�UO[[O2UO	Q[O]]2]2UO	Q[O]]2]2UO	Q[O]]2]2UO	Q[O]P2Q2UO[O[]2[2UO[O[]2[2UO[O][2Q2UO[O][2Q2UO[O[O[]222UO[O[O][222UO[O[O][222UO[O][2]2UO[[OQQ2UO[OQ[2Q2UO[OQQ2Q2UO[OQQ	2Q2UO[OQQ
2Q2UO[OQQ2Q2UO[OQQ2Q2UO[[OQQ2UO[[OQQ2UO[[OQQ2UO[OQ[2[2UO[O[OQ[222UO[O[[2[2UO[O[Q2[2UO[O[Q	2[2UO[O[Q
2[2UO[O[Q2Q2UO[O[Q2Q2UO[O[Q2Q2UO[O[Q2Q2UO[O[Q2Q2UO[O[[2Q2UO[O[O[[222UO[OQ[2Q2UO[OQQ2Q2UO[OQQ	2Q2UO[OQQ
2Q2UO[OQQ2Q2UO[OQQ2Q2UO[[OQQ2UO[[OQQ2UO[[OQQ2UO[OQ[2[2UO[O[OQ[222UO[O[[2[2UO[O[Q2[2UO[O[Q	2[2UO[O[Q
2[2UO[O[Q2Q2UO[O[Q2Q2UO[O[Q2Q2UO[O[Q2Q2UO[O[Q2Q2UO[O[[2Q2UO[O[O[[222UO[OQ[2Q2UO[OQQ2Q2UO[[OQQ	2UO[OQQ
2Q2UO[OQQ2Q2UO[OQQ2Q2UO[OQQ2Q2UO[[OQQ2UO[OQQ2Q2UO[OQ[2Q2UO[O[OQ[222UO[OQ[2Q2UO[OQQ2Q2UO[OQQ	2Q2UO[OQQ
2Q2UO[OQQ2Q2UO[OQQ2Q2UO[OQQ2Q2UO[OQQ2Q2UO[OQQ2Q2UO[OQ[2Q2UO[OQ[2Q2UO[OQ	Q2Q2UO[OQQ2Q2UO[O[Q2Q2UO[OQ	Q2Q2UO[OQQ2Q2UO[O[Q2Q2UO[[OQQ	2UO[[OQQ2UO[OQ[2Q2UO[OQ[2Q2UO[OQ
[2[2UO[OQ[2[2UO[OQ [2[2UO[OQ![2[2UO[OQ"[2Q2UO[OQ#[2Q2UO[OQ[2[2UO[OQ[2[2UO[OQ
[2Q2UO[OQ[2Q2UO[OQ [2Q2UO[OQ![2Q2UO[OQ"[2[2UO[OQ#[2[2UO	Q[OQQ2Q$2UO	Q[OQQ
2Q2UO	Q[OQQ2Q2UO	Q[OQQ2Q2UO	Q[OQQ2Q2UO	Q[OQQ2Q%2UO	Q[OQQ2Q2UO	Q[OQQ2Q&2UO[[OQQ%2UO[[OQQ2P!)'zpow(0,1)zpow(1,0)zpow(2,1)z	pow(2,-1)r�r�rur�r�r�r�gffffff�?r���������?r;z	(-2.)**3.z	(-2.)**2.r�z	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.z
(-2.)**-2.r�z
(-2.)**-3.r���r�r;r�g.�g�������g��������g�������皙�����gffffff��g �r�g��)
r�r�rA�powr�r�r�r�r�rEr�rrrWs&r�testPow�MathTests.testPowEs�����)�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��UO[[O2UO	Q[O]�2[O
2UO	Q[O]Z2[O
]*2UO	Q[OQ2[O
']*2UO	Q[O]2]2P!)zradians(180)zradians(90)zradians(-45)z
radians(0)i���)r�r�rA�radiansr�r�rWs&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	�B``�]QHGnUU1Qko,QMQMQMQMQMQMQ	MQ
MQMQMQ
MQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQMQ MQ!MQ"MQ#MQ$MQ%MQ&MQ'MQ(MQ)MQ*MQ+MQ,MQ-MQ.MQ/MQ0MQ1MQ2MoSFD�oROUQ359^tt^2UO2vqEo[OU2o[OU2o[OU2o	UVxU	2[OVx2o
ROU
O2U	O22PPP2J�	[OQ42o[Q8]2FDpoU]6XcJV�*o[]d2FDLo
V�*o[OVx2o
UVxU
2[OU'U2o
UU'V�2JN	Jr	[Q5Q9Q6Q:[[1FDWoRO[O[U22RO[OU[22JY	Q;FDYoRO[OU[2U2RO[OU[2U2J[	[Q:Q9Q5Q7[1FCDoRO[ 29^tt^2[O[U2PPP2RO[ 29^tt^2[O[U2PPP2RO[ 29^tt^2[OUQ52PPP2RO[ 29^tt^2[OUQ92PPP2CJ	P!)%fhCJZ9h)%fhK�9h)%fhK�9h)%fhK�9h)%fhCJg9h)<rr�c�x:�RU2RU2RU2qToRO[U2[U]*22V5*
U*oROU[U22[U2[U]*26Xc,ROU]*[U]*22P!P!)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.
)�assertLessEqualrr�rD)	rrA�r�fx�fy�frrr�rRs	&&&    ��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�/�$rz-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-1074r�r�r�i��r�r�)r�r�r�r�)r�r�rEr*r+r�rA�	remainderr��hexr�r�r�r��assertIsNaNr�r)rRr��	testcasesr��x_hex�y_hex�expected_hexrrArr��tinyr�mrPr�sf              @r�
testRemainder�MathTests.testRemainder�s����&�
	0� 9
��9
�
�9
�
�	9
�

�9
�
�
9
�
�9
�
�9
�
�9
�
�9
�
�9
�
�9
�
�9
�
�9
�
�9
� 
�!9
�"
�#9
�$
�%9
�&
�'9
�,
5�-9
�.
N�/9
�0
N�19
�2
N�39
�4
N�59
�6
N�79
�8
?�99
�:
N�;9
�<
N�=9
�>
N�?9
�@
N�A9
�B
N�C9
�D
?�E9
�F
N�G9
�H
N�I9
�J
N�K9
�L
N�M9
�N
N�O9
�P
N�Q9
�V
�W9
�X
�Y9
�Z
�[9
�\
�]9
�^
�_9
�`
�a9
�b
�c9
�d
�e9
�l
3�m9
�n
3�o9
�p
3�q9
�	�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 N>	�O	�O&	�O9	�P	�>O
�O
�O#
�O#
�&O6
�/O6
�9P	
�P	
�P
�P
c���UO[[O2UO	Q[O]2]2UO	Q[O[O
]*2]2UO	Q[O[O
']*2P2UO
[O[O[222UO
[O[O[222UO
[O[O[222P![cVSO[[O[2SO[[O[2K�h9h)zsin(0)z	sin(pi/2)z
sin(-pi/2))r�r�rAr�r�r�r�rEr�r�rr�rWs&r�testSin�MathTests.testSinc�
�����)�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:F�	G �
AG �G c���UO[[O2UO	Q[O]2]2UO	Q[O]2]*[O
]2]**
P2UO	Q[O]2[OP2*]2UO
[O[2[2UO
[O[2[2UO[O[O[222P!)zsinh(0)zsinh(1)**2-cosh(1)**2zsinh(1)+sinh(-1))r�r�rA�sinhr�rr�r�r�r�rEr�rWs&r�testSinh�MathTests.testSinhps������)�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���UO[[O2UO	Q[O]2]2UO	Q[OQ2Q2UO	Q[OQ2Q2UO	Q[OQ2Q2UO	Q[OQ	2Q
2UO	Q[O]2]2UO	Q[O]2]2UO[O[2[2UO[[OP2UO[[O[2UO[O[O[222P!)
zsqrt(0)r�z	sqrt(2.5)rFgS[�:XL�?z
sqrt(0.25)r�r�zsqrt(25.25)g@9@g�)#L�@zsqrt(1)zsqrt(4))r�r�rAr�r�r�r�rr�r�rEr�rWs&r�testSqrt�MathTests.testSqrtys"�����)�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���UO[[O2UO	Q[O]2]2UO	Q[O[O
]*2]2UO	Q[O[O
']*2P2UO
[O[O[222UO
[O[O[222UO
[O[O[222P![cVSO[[O[2SO[[O[2K�h9h)ztan(0)z	tan(pi/4)z
tan(-pi/4))r�r�rA�tanr�r�r�rEr�r�rr�rWs&r�testTan�MathTests.testTan�rrc�t�UO[[O2UO	Q[O]2]2UO	Q[O]2[OP2*][O
]2Q5UO	Q[O[2]2UO	Q[O[2P2UO[O[O[222P!)ztanh(0)ztanh(1)+tanh(-1)r�z	tanh(inf)z
tanh(-inf))r�r�rA�tanhr�r�r�r�r�rEr�rWs&r�testTanh�MathTests.testTanh�s������)�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���UO[OQ2Q2UO[OQ[OQ22[OQQ22P!)r�r�r�)r�rArrBrWs&r�testTanhSign�MathTests.testTanhSign�sM��	
������3���-�������r�4�9�9�S�>�:����r�3�/�	1rc���UO[O]2]2UO[OP2P2UO[[O]22[2UO[[OQ22[2UO[OQ2]2UO[OQ2P2UO[OQ2]2UO[OQ
2P2UO[OQ2]2UO[OQ2Q2QQ2oQQ[
2oQQ2oQ	Q
2oUO[OU22]2UO[OU22]2UO
[[O2UO
[[O]]2UO
[[O[Q22UO
[[OU22UO
[[OU22P!)r&r�g����?c�(`�\sQsQsnQsQsUsP!)�'MathTests.test_trunc.<locals>.TestTrunci�c��]!��rfrWs&r�	__trunc__�1MathTests.test_trunc.<locals>.TestTrunc.__trunc__�r�rrf�r[r\r]r^rr_r`ras@r�	TestTruncr�r�rr!c�(`�\sQsQsnQsQsUsP!)�(MathTests.test_trunc.<locals>.FloatTrunci�c��]!rrfrWs&rr�2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__�r�rrfr ras@r�
FloatTruncr#�r�rr&c��\sQsQsQsP!)�)MathTests.test_trunc.<locals>.TestNoTrunci�rfrgrfrr�TestNoTruncr(�r�rr)c�&�\sQsQs\2sQsP!)�*MathTests.test_trunc.<locals>.TestBadTrunci�rf)r[r\r]r^r}rr_rfrr�TestBadTruncr+�r1rr,g�7@r�g�����g�!��g-���?Y�i����)
r�rA�truncr�rDr+r�r�rLr)rRr!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�D�UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[O[	Q222UO[O[	Q222UO[O[	Q222P!)r�r�rrrr�r�)r�rA�isfiniter�r+rWs&r�testIsfinite�MathTests.testIsfinite�s�������
�
�c�*�+�����
�
�d�+�,�����
�
�c�*�+�����
�
�d�+�,�������u�U�|�4�5�������u�U�|�4�5�������u�V�}�5�6rc���UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[O[22UO[O[
22UO[O[22UO[O[]*22UO[O[']*22P!�r�r�r�r�)r�rA�isnormalr�r�r�r�r�rWs&r�testIsnormal�MathTests.testIsnormal�s�������
�
�d�+�,�����
�
�d�+�,�������s�+�,�������t�,�-�������s�+�,�������t�,�-�������s�+�,�������y��{�3�4�������	�z�!�|�4�5rc���UO[OQ22UO[OQ22UO[OQ22UO[OQ22UO[O[22UO[O[22UO[O[
22UO
[O[]*22UO
[O[']*22P!r5)r�rA�issubnormalr�r�r�r�r�rWs&r�testIssubnormal�MathTests.testIssubnormal�s�������)�)�$�/�0�����)�)�$�/�0�����)�)�#�.�/�����)�)�$�/�0�����)�)�#�.�/�����)�)�$�/�0�����)�)�#�.�/�����(�(��1��5�6�����(�(�)��A��6�7rc��UO[O[Q222UO[O[Q222UO[O[Q2Q*22UO	[O[Q222UO	[OQ22UO	[OQ22P!)rrrr�r�)r�rArEr+r�rWs&r�	testIsnan�MathTests.testIsnan�s�������
�
�5��<�0�1�����
�
�5��=�1�2�����
�
�5��<�"�#4�5�6�������E�%�L�1�2�������B��(�������B��(rc�D�UO[O[Q222UO[O[Q222UO[OQ22UO[OQ22UO	[O[Q222UO	[OQ22UO	[OQ22P!)rrg�rr�r�g�)r�rArFr+r�rWs&r�	testIsinf�MathTests.testIsinf�s�������
�
�5��<�0�1�����
�
�5��=�1�2�����
�
�5�)�*�����
�
�6�*�+�������E�%�L�1�2�������B��(�������B��(rc���UO[O[O22UO	[O
Q[O2Q2P!r�)r�rArErr�rBrWs&r�test_nan_constant�MathTests.test_nan_constant�s:������
�
�4�8�8�,�-�������r�4�8�8�4�b�9rc�T�UO[O[O22UO	[OQ2UO[O[
Q22UO[O'[
Q22P!)r�rr)r�rArFr�
assertGreaterr�r+rWs&r�test_inf_constant�MathTests.test_inf_constant�sa������
�
�4�8�8�,�-����4�8�8�S�)�������5��<�0����$�(�(��E�&�M�2rzrequires verbose modec�|�[OQ2oW]6wcUOQ2[OQ2oUOQ2[OQ2oUOQ2P!SOQ2K9h[cKOh9h[
cP!h9h)iʚ;z6underflowing exp() should not have raised an exceptionz)underflowing exp() should have returned 0z.overflowing exp() didn't trigger OverflowErrorz sqrt(-1) didn't raise ValueErrori6e�r�)rAr5r�rr�rrFs& r�test_exceptions�MathTests.test_exceptionss���	(�����%�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)�(B)�,	B;�6B;�:B;c	�<�Q.oPo[OQ6XcF[O2]*o[[	[
UO
Q222oQo,o[[2FD�vqgq�q�oU	Q6wfUQ6wcJUQ7cJ!UdUQ
6c	Va7cJ4[[U2o
QU7fQU7cQo
L	QU7cQ	o
U
U2oUQ7c[OV�2o
]Qoo[V�UU2oUeJ�UOVgUU2oUO!U2J�	U%c*UO#Q
QO%U2*2P!P![cCKh9h[cQoK�[cQ	oK�h9h)�tan0064�darwin�.�{}: {}({!r}): {}r��invalid�divide-by-zeror�overflowrzFailures in test_testfile:
  �
  )�rect�polar)rEr�)�sqrt0002�sqrt0003�sqrt1001�sqrt1023)r��platform�mac_verrrrDr*rr?�	test_file�getattrrArrBrJrr�r��join)rR�
SKIP_ON_TIGER�osx_version�version_txtrH�failuresr1r2�ar�ai�er�eir6r�r\rrrG�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�*�� !�#�W�G�"�2�w��@�G�����/�/�"�"�g�6�C��O�O�C� �S.G�V��I�I�6��k�k�(�+�,�
-���c�
��
��6�
&�%�� �
)�(��
)�s;�(E+�E=�+	E:�5E:�9E:�=	F�F�F�F�Fc�0�Qo,o[[2FD�vq4qVo[[U2oQU7fQU7cQoL	QU7cQoUU2o	]Qq�UQ6Xc]o
L.UQ6XcQ	oL$UQ
6XcUQ6�cUQ6c]
o
LUQ6c]do
LQ
o
[
ViV�2oUeJ�UOV4V\2o
UOU
2J�	U%c*UOQQOU2*2P!P![cQo	K�[
cQo	K�h9h)rQrRrSrrTrr�r��lgammagV瞯�<�erfcr��$@rzzFailures in test_mtestfile:
  rU)r7�math_testcasesr_rArrrJrr�r�r`)rRrHrdr1r2r3rr6r�rrrrGris&             r�test_mtestfile�MathTests.test_mtestfileds2��%����,;�N�,K�(�B�C�5��4��$�D��E�!�%5��%>�'���u�$�*��
&��3�i�� !�#�W��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$�C7�7	D�D�D�D�Dc���]QHGo[OoUO	U,2]2UO	U,]Q5]2UO	U[[
]]222Q2UO	U[[[
]]2222Q2UO	U[
]]
2]
Q5Q2UO	U,QN2]x2UO	U,QN2Q2UO	U,QN2Q2UO	U,QN2Q2UO	UQU]]2,2Q2Q	Q
2oUO[29^tt^2UQU2,2PPP2UO	U,QN2Q2UO	U,QN2[Q22UO[U2UO[U]*2UO[U,QN2UO[U,QNPQ5UO[UQQ
,QQ5[Q2[Q2,oUO[V$[Q2Q5UO[U],],],,2UO[U]]-,2UO[U]]-,]*]]-Q5UO[U],],],,,Q5UO	U]],QQ5Q2UO	U]],]],Q5,Q N2UO	U,]]-Q5]]-2UO[29^tt^2U]
],]2PPP2UO	U,Q!N2]2UO	U,Q"N2]2UO	U,Q#N2]2Q$Qko[
]Q2oUO	UU2UU22[
Q%P2oUO	UU2UU22[
Q&Q2oUO	UU2]2[
]Q2Tt,tFDo[U2MJ	ooUO	UU2UU22[
Q&P2Tt,tFDo[U2MJ	ooUO	UU2UU22[
Q&Q2Tt,tFDo[U2MJ	ooUOUU22UOU]]][Q2]],22UOU]][Q2]],22UOU][Q2]],22UOU][Q2[Q2],22UOU][Q2[Q2],22UOU][Q2[Q2],22UOU][Q2[Q2],22UO	U]]][Q2Q'],2[Q22UO	U]]][Q2Q'],2[Q22UOU]]][Q2Q'],22UOU]]][Q2Q'],22UOU]]][Q2Q']],22UOU]]][Q2Q']],22UO	[U,Q(N22[2UO	[U,Q)N22[2UO	[U[
]Q222[2UO	[U[
]Q2QQ52[2UO	[U][ O"Q2]]]],22[ O"2P!)%fhCK�9h)%fhCK�9httohttohttoh)*rr�)�starti�i_7r�r�r�r�c�(`�\sQsQsnQsQsUsP!)�(MathTests.test_prod.<locals>.BadMultiplyi�c��[grNrUrVs&&rr\�1MathTests.test_prod.<locals>.BadMultiply.__rmul__�rZrrf)r[r\r]r^r\r_r`ras@rr^rv�s����
#�
#rr^ro�a�cr�b�ab�ababababababc�,�SFDoV*oJ
	U!rNrf)rlrt�elems&& r�_naive_prod�(MathTests.test_prod.<locals>._naive_prod�s�� ���
��!��Lri'rzrrr)r&r9r�r�r�)r�r�r�r�r�)r&r9r�r�r�)r�r�r�r�r��)r&r&r�r&r&)r�r�r�r&r&)r�r�r�)r&r9r&r9r&r9r&r9r&r9r&r9)rr&r9r�)r&rr9r�)r&r9r�rri���i���r�)r&r9r�r�r�r)r&r�r�r�r�r)r�r�rA�prodr�r�r�rr�rNr+r��	bytearrayr�r�rDr�r�)rRrr�r^rr�rlrs&       r�	test_prod�MathTests.test_prod�s��+��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��9s6�=`.�7a�#a�&a�)a �.`?	�7`?	�a	�a	c
�.�UO[OQ['2Q2UO[OQ[2Q2UO[OQQ2Q2UO[OQ
Q2Q2UO[OQ['2[OQ22UO[OQ[2[OQ22UO[OQ[']Q	5[OQ22UO[OQ[]Q	5[OQ22UO[OQ[']Q	5[OQ
22UO[OQ[]Q	5[OQ22[
]]2FD~oUO[OQQUQ	5Q2UO[OQQUQ	5Q2UO[OQQUQ	5Q2J�	[OO[OO*oUO[OQ[2U2UO[OQ[2U2UO[OQ['2U'2UO[OQ['2U'2UO[OUQ2Q2UO[OU'Q2Q2UO[OUQ2Q2UO[OU'Q2Q2[OOoUO[O[Q2U2UO[O['Q2U'2UO[OU[2[2UO[OU'['2['2UO[O[Q22UO[OQ[22UO[O[[22UOQ[OQ[]Q	52UO[ 29^tt^2[OQ[PQ	5PPP2P!)%fhP!9h)g0Cg������/Cg0Cg�Cr�g�������Cr�z0x1.fffffffffffffp-1z0x1.0000000000001p+0)�stepsz0x1.ffffffffffffdp-1z0x1.0000000000003p+0r�g��g��������r�)r�rA�	nextafterr�r+r�r��assertEqualSignr�rf�min�epsilonrir�r�r�r)rRr��smallest_subnormal�largest_normals&   r�test_nextafter�MathTests.test_nextafter
	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�X�X	�X	c
��UO[OQ2[OO
2UO[OQ2Q2UO[OQ2Q2UO[OQ2Q2UO[OQ2[OO[OO
*2UO[O[2[[O[['2*
2UO[O[2[2UO[O[O22QQQQ[1FDaoUOUQ59^tt^2UO[OU'2[OU22PPP2Jc	P!)%fhJx9h)r�r�g�@r�r�l�ll)
r�rAr�r�rfr�r�r�r�r�r�rrErFs& r�test_ulp�MathTests.test_ulpH	sf��������#�����(>�(>�?�������'�*�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�,<H6	�6I
�?I
c	�T�QQ2o[O[O[O1FDUoU2oUO	[
29^tt^2UQU2PPP2UO
[UQP
22JW	P!)%fhK29h)c�(`�\sQsQsnQsQsUsP!)�$MathTests.test_issue39871.<locals>.Fib	c�(�P	Um]]*P!)T��	convertedrWs&rrX�.MathTests.test_issue39871.<locals>.F.__float__c	s��!%����!��rr�)r[r\r]r^rXr_r`ras@rrr�b	s����
�
rrznot a numberr�)rAr�rBr�r�r�r�r_)rRrr�rAs&   r�test_issue39871�MathTests.test_issue39871_	sr��	�	��J�J��
�
�t�~�~�=�D���A��"�"�9�-�-��^�Q�'�.�

���W�Q��U�;�<�>�-�-�s�#
B	�B'
� B'
c���UO[[OQ2UO[[OQ2UO[[O
QQ2UO[[O
QQ2UO[[O
Q2UO[[O
QQQ2P!)rr�r�r�)r�r�rAr5�erfr�rWs&r�test_input_exceptions�MathTests.test_input_exceptionso	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���Q	oUO[QU029^tt^2[OU2PPP2UO[QU029^tt^2[OU2PPP2UO[QU029^tt^2[O]{U2PPP2UO[QU029^tt^2[OU]{2PPP2UO[QU029^tt^2[O
U2PPP2UO[QU029^tt^2[OU2PPP2[OQ2oUO[QU029^tt^2[OU2PPP2[O]]
Q*2oUO[Q[U2029^tt^2[OU2PPP2Q
oUO[Q29^tt^2[OU2PPP2UO[QU029^tt^2[OU2PPP2QoUO[QU029^tt^2[OU2PPP2P!)%fhCK�9h)%fhCK�9h)%fhCKz9h)%fhCKM9h)%fhCK!9h)%fhCK�9h)%fhCK�9h)%fhCK`9h)%fhCK59h)%fhCK	9h)%fhP!9h)r�z"expected a nonnegative input, got zexpected a positive input, got z-1.1�zexpected a positive input$z/expected a noninteger or positive integer, got r�z(expected a number between -1 and 1, got r�i����)�assertRaisesRegexrrAr�r)r4r<r�r�r�r�r+r�r�rFs& r�test_exception_messages�!MathTests.test_exception_messagesw	sL����
�
#�
#�J�&H���$L�N�N��I�I�a�L�N��
#�
#�J�&E�a�S�$I�K�K��H�H�Q�K�K��
#�
#�J�&E�a�S�$I�K�K��H�H�S�!��K��
#�
#�J�&E�a�S�$I�K�K��H�H�Q���K��
#�
#�J�&E�a�S�$I�K�K��I�I�a�L�K��
#�
#�J�&E�a�S�$I�K�K��J�J�q�M�K�
�O�O�F�#��
�
#�
#�J�&E�a�S�$I�K�K��H�H�Q�K�K�
���q�"�c�'�*��
�
#�
#�J�&E�e�A�h�Z�$P�R�R��H�H�Q�K�R�
��
�
#�
#�J�$@�B�B��H�H�Q�K�B��
#�
#�J�&U�VW�UX�$Y�[�[��J�J�q�M�[�
��
�
#�
#�J�&N�q�c�$R�T�T��J�J�q�M�T�T�EN�N�N��K�K�K��K�K�K��K�K�K��K�K�K��K�K�K��K�K�K��R�R�R��B�B�B��[�[�[��T�T�T�s��L�%L�%L.�&M�'M�'M*�=M>�$N�#N&�#N:�%O�L	�L	�L+	�#L+	�.L?	�7L?	�M	�M	�M'	�M'	�*M;	�3M;	�>N	�N	�N#	�N#	�&N7	�/N7	�:O	�O	�O	�O	c��[OU2%f#UOQOU22P!P!)zExpected a NaN, got {!r}.)rArEr�rrQs&&rr��MathTests.assertIsNaN�	s.���z�z�%� � ��I�I�1�8�8��?�@�!rc��UOV2UO[OQU2[OQU22P!)zoSimilar to assertEqual(), but compare also the sign with copysign().

Function useful to compare signed zeros.
r�)r�rArB)rRrrAs&&&rr��MathTests.assertEqualSign�	s8��
	
�����������s�A�.��
�
�c�1�0E�Frrf�r�r�)�ARM�ARM64r�)_r[r\r]r^r�r�r�r�r�r�r�r��unittest�skipIfr�r\r:r�r�r�rr�r�r��machinerrrrrr7r=rGrMrSrVrc�HAVE_DOUBLE_ROUNDINGr�r�r�r�rrrr"r%r*r/r5r�requires_mac_verr8r=�
bigmemtestrBre�cpython_onlyrh�requires_resourcer�r�r�r�r�r�rrrrrrr.r2r7r;r>rArDrH�
skipUnlessrrKrjrqr�r�r�r�r�r�r�r�r_r`ras@rr�r��s����6�.�	4�5�	4�5�4�	5��_�_�S�\�\�,�,�W�5�.�0�<:�0�<:�|4� %;�N�:��:�B0�3��_�_�S�\�\�W�,�W�W��1A�1A�1C�GW�1W�[�]�4�]�4�5�<�	=�/�&<�P;�.8�6�
:��
:�;�6�
:��
:�8�$�
�_�_�)�M�O�mD�O��mD�^(E�TOF�b�
�_�_�)�N�P�:1�P��:1�x7�B)�
*F�X<�B�F��F�
#3�J/��Z��Z�:����b�!�$�+�%��+�\�0
����c�*�I�+�I�^.�@�
�_�_�)�]�_����M��_��M�
���u�%�H�&�H�T�
�_�_�)�]�_�������u�%�Q-�&��_��
Q-�f1�&H;�l5��~,��~,�@3�4�4�3�4��1��1�B�@7�	6�	8�)�)�:�
3�����"9�:�:�;�:�>�=-��=-�~�@-��@-�Dd*�L�8/��8/�t�<��<�,=� @�&�TA�G�Grr�c�`�\sQsQsn\O
sQsQsQsQs	Qs
QsQsQ	s
Q
sQsQsQ
sQsQsQsQsUsP!)�IsCloseTestsi�	c�h�UOUOV,UN3-U@U8QU8Q0Q5P!)� and z should be close!�ri)r�r��rRr�r�r��kwargss&&&*,r�
assertIsClose�IsCloseTests.assertIsClose�	s1��������Q�;�D�;�F�;�<=�q�A�	�	Crc�h�UOUOV,UN3-U@U8QU8Q0Q5P!)r�z should not be close!r�)r�r�r�s&&&*,r�assertIsNotClose�IsCloseTests.assertIsNotClose�	s3��������a�<�T�<�V�<�AB�A�F�	�	Hrc�N�SFDvqEUOVE,UN3-U@J	P!rN)r��rR�examplesr�r�r�r�s&&*,  r�assertAllClose�IsCloseTests.assertAllClose�	s&���D�A����q�5�d�5�f�5�rc�N�SFDvqEUOVE,UN3-U@J	P!rN)r�r�s&&*,  r�assertAllNotClose�IsCloseTests.assertAllNotClose�	s&���D�A��!�!�!�8��8��8�rc	�@�UO[29^tt^2UO]]QQ5PPP2UO[29^tt^2UO]]QQQ5PPP2P!)%fhKM9h)%fhP!9h)r&rv��rel_tol�r�rg0��.�+�g _��)r�rr�rWs&r�test_negative_tolerances�%IsCloseTests.test_negative_tolerances�	sp��
�
�
�z�
*�
*����q�!�W��5�+�
�
�
�z�
*�
*����q�!�V�U��C�+�
*�+�
*��
*�
*�
*�s#�A9�B�9B		�B		�B	�B	c�8�,QNoUOUQQQ5P!)r�r�r�))r�r�)�N���@ir�)�;���r�)i90g��@�r�r�)�NFr��r�)rR�identical_exampless& r�test_identical�IsCloseTests.test_identical�	s"��0��	
���.��S��Irc�\�,QNoUOUQQ5UOUQQ5P!)��חA�:�0�yE>r���&�.>))r�g�חA)g:�0�yE�g��n�yE�)g�	ѭ��?gfN�ӭ��?�r�r�)rR�eight_decimal_places_exampless& r�test_eight_decimal_places�&IsCloseTests.test_eight_decimal_places�	s5��)C�%�	
���9�4��H����<�d��Krc�\�,QNoUOUQQ5UOUQQ5P!)r�r�r�r�r�))r�r�)g��&�.�r�)gu�?j�/ʠr�)r�r�)rR�near_zero_exampless& r�test_near_zero�IsCloseTests.test_near_zero�	s4��.��	
���1�3��?����.���=rc���UO[[2UO[[QQ5UO[[2UO[[QQ5P!)r�r�)r�r�r�rWs&r�test_identical_infinite�$IsCloseTests.test_identical_infinite�	sL�����3��$����3��S��1����4��&����4��s��3rc���[[1[Q1Q[1[[1[[1[[1[Q1Q[1[Q1Q[1,
oUOUQQ5P!)rvr�r~g�������?r�)r�r�r�r�)rR�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�d�,QNoUOUQQ5,QNoUOUQQ5P!)r�r�r�))r�r�)�333333�r�)�Y��n��r�))r�g�?)g�������?r�)gZb���tigTb���tir�)rR�zero_tolerance_close_examples�!zero_tolerance_not_close_exampless&  r�test_zero_tolerance� IsCloseTests.test_zero_tolerance�	s?��)=�%�	
���9�3��G�-N�)�	
���@�#��Nrc�2�UOQQ,QQ5P!)rr;r�)rrE)rErr�rWs&r�test_asymmetry�IsCloseTests.test_asymmetry
s�����W�g�.���<rc�\�QQ,oUOUQQ5UOUQQ5P!)��r�r�r�)r���)i�[i�[r�)rR�integer_exampless& r�
test_integers�IsCloseTests.test_integers

s:��2�2�4��	
���,�d��;����/���>rc���]QHGoUQ2UQ21UQ2UQ21UQ2UQ21UQ2UQ	21,oUOUQ
Q5UOUQQ5P!)
rr�z
1.00000001r�z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20r�r�r�)r�r�r�r�)rRr��decimal_exampless&  r�
test_decimals�IsCloseTests.test_decimals
s���#�$�\�2�G�E�N�C�$�%5�6��	�8J�K�$�%6�7���9L�M�$�_�5�w�x�7H�I�K��	
���,�d��;����/���>rc���]QHGoU]Q2]*U]21UQ2UQ21UQQ2U]Q21,oUOUQQ5UOUQQ5P!)	rr�r�r�r�r�r�l �	(q�e�	r )r�r�r�r�)rRr��fraction_exampless&  r�test_fractions�IsCloseTests.test_fractions
sz��&��a��
#�a�
'��!��5�
�i�
 �(�9�"5�6�
�i��
(�(�1�f�*=�>�@��	
���-�t��<����0�$��?rrf)r[r\r]r^rAr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr_r`ras@rr�r��	sg�����l�l�G�C�H�6�9�D�J�L�>�4�
N�
O�=�?�	?�	@�	@rr�c�R`�\sQsQsnQsQsQs\O\	OOQ29%fE\	OQ6H9%c\
O2Q6H9%f\
O2Q2Q2sQ	sQ
sQsQsQ
sQsQsUsP!)�FMATestsi)
zTests for math.fma. c�d�[O'QQQQ	QQQQ[O[O,o[OU]Q5FD�vq#UOV#Q59^tt^2UO
[O[OV#22UO
[OU[OU22UO
[OV#[O22PPP2J�	P!)%fhJ�9h)
�u�<�7~r��Y��n�r�r�)r�r��u�<�7�r�r�r�)rArrr	r
rEr��fma)rRrr�r�s&   r�test_fma_nan_results�FMATests.test_fma_nan_results,
s����X�X�I�v�t�W�d����e�T�X�X�t�x�x�
���%�%�f�Q�7�7�D�A������'�'�� � ����$�(�(�A�!9�:�� � ����!�T�X�X�q�!9�:�� � ����!����!9�:�(�'�8�'�'�'�s�2BD	�D/
�'D/
c���QQQ[O,o,Q	No[O'QQQQ[O,oSFD�o[O[O'1FD�oQ
FD�oUOVEUQ59^tt^2UO[29^tt^2[O
VVU2PPP2UO[29^tt^2[O
VeU2PPP2PPP2J�	J�	J�	SFCDoUOUQ59^tt^2UO[29^tt^2[O
[OU[O'2PPP2UO[29^tt^2[O
[OU'[O2PPP2UO[29^tt^2[O
[O'U'[O'2PPP2UO[29^tt^2[O
[O'U[O2PPP2UO[29^tt^2[O
U[O[O'2PPP2UO[29^tt^2[O
U'[O[O2PPP2UO[29^tt^2[O
U'[O'[O'2PPP2UO[29^tt^2[O
U[O'[O2PPP2PPP2CJ	SFCD�oUOUQ59^tt^2UO
[O
[OU[O2[O2UO
[O
[OU'[O'2[O'2UO
[O
[O'U'[O2[O2UO
[O
[O'U[O'2[O'2UO
[O
U[O[O2[O2UO
[O
U'[O[O'2[O'2UO
[O
U'[O'[O2[O2UO
[O
U[O'[O'2[O'2PPP2CJ�	[OV"2FD�vq�UOUQ59^tt^2UO
[O
V�[O2[O2UO
[O
V�[O'2[O'2PPP2J�	[OV2FCDSvqtUOVtQ59^tt^2UO
[O
[OVt2[O2UO
[O
[O'Vt2[O'2UO
[O
[O'U'U2[O2UO
[O
[OU'U2[O'2UO
[O
U[OU2[O2UO
[O
U[O'U2[O'2UO
[O
U'[O'U2[O2UO
[O
U'[OU2[O'2PPP2CJV	P!)%fhC	Kx9h)%fhC	KO9h)%fhC	J�9h)%fhCK�9h)%fhCK�9h)%fhCKW9h)%fhCK9h)%fhCK�9h)%fhCK�9h)%fhCK99h)%fhCK�9h)%fhC
J9h)%fhCJ9h)%fhCJ>9h)%fhCJ�9h)rr�rr�)r��infinity�zero�r�)r�r�r�r�)r	r�r�r�r�rr�rr�)	rArrEr�rr
r�r	r
)	rR�	positives�finites�non_nansr�rrr�r�s	&        r�test_fma_infinities�FMATests.test_fma_infinities:
s����S�%����2�	�H���X�X�I�t�T�3��T�X�X�>���A�!�X�X����y�1��'�D�����4��H�H�!�.�.�z�:�:� �H�H�X�Q�7�;�!�.�.�z�:�:� �H�H�T�Q�7�;�I�H�(�2���A������"�"��&�&�z�2�2��H�H�T�X�X�q�4�8�8�)�4�3��&�&�z�2�2��H�H�T�X�X��r�4�8�8�4�3��&�&�z�2�2��H�H�d�h�h�Y���T�X�X�I�6�3��&�&�z�2�2��H�H�d�h�h�Y��4�8�8�4�3��&�&�z�2�2��H�H�Q����4�8�8�)�4�3��&�&�z�2�2��H�H�a�R����4�8�8�4�3��&�&�z�2�2��H�H�a�R�$�(�(��T�X�X�I�6�3��&�&�z�2�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�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�H��3�2�2��2�2�2��2�2�2��2�2�2��2�2�2��2�2�2��2�2�2��2�2�2��#�"�"��(#�"�"��#�"�"��(�'�'�s��i�)h0�%i�&i�>i�;l
	�6i-
�%l
	�46j
�*%l
	�8j
�%l
	�,6j)
�"%l
	�6j=
�=%l
	�"6k
�%l
	�=8k%
�5%l
	�6k9
�l
	�J!l"	�*B	l7	�6H+m	�0i�9i�;	i�i�
i�	i�i*�!i*�-i>�6i>�8	l
	�j�
j�	l
	�j&�j&� 	l
	�)j:�2j:�4	l
	�=k�k�	l
	�k"�k"�	l
	�%k6�.k6�0	l
	�9l
�l
�	l
	�
l
�l
�"l4
�+l4
�7m	
�m	
�m
�m
�android�x86_64z5this platform doesn't implement IEE 754-2008 properlyc�Z�,QNoSFCD�oUOUQ59^tt^2UO[OQUQ22UO[OQUQ	22UO	[OQU'Q	22UO[OQU'Q22UO[OQ	U'Q22UO[OQ	U'Q	22UO	[OQ	UQ	22UO[OQ	UQ22UO[OUQQ22UO[OUQQ	22UO	[OU'QQ	22UO[OU'QQ22UO[OU'Q	Q22UO[OU'Q	Q	22UO	[OUQ	Q	22UO[OUQ	Q22PPP2CJ�	UO[OQQQ
22UO[OQQQ22UO[OQQQ
22UO[OQQQ22QoUO[OV3Q22UO	[OV3'Q22UO[OU'U'Q22UO	[OU'UQ22UO[OV3Q	22UO	[OV3'Q	22UO[OU'U'Q	22UO	[OU'UQ	22[
O
Q2o[
O
Q2o[
O
Q2oUO	[OVE*
VE*U'22UO[OVT*
VE*U22UO	[OVT*
VE*'U'22UO[OVE*
VE*'U22P!)%fhCJ�9h)r�rrr�r�z0x1p-500z0x1p-550z	0x1p-1000)r�rr�rr�r�r�)rE�assertIsPositiveZerorAr
�assertIsNegativeZeror+r�)rR�nonnegative_finitesr�r�rrAr�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�I9V	�V*
�!V*
c�`�[OQ29q[OQ2oUO[29^tt^2[O
VQ2PPP2UO
[O
VQ*Q2U2UO[29^tt^2[O
VQ*U2PPP2UO
[O
VU'2U2[OQ2o[OQ2o[OQ2oUO[29^tt^2[O
VQ2PPP2UO[29^tt^2[O
VU2PPP2UO
[O
VU'2[OQ22[OQ2o[OQ	2o[OQ2oUO
[O
VU'2U2P!)%fhCK9h)%fhCK�9h)%fhCK9h)%fhK�9h)
�0x1p512�0x1p1023r�r�z0x1.ffffffc000000p+511z0x1.0000002000000p+512z0x0.0000000000001p-1022z0x1.fffffffffffffp+1023z0x1.ae565943785f9p+512z0x1.3094665de9db8p+512)r+r�r�rrAr
r�)rRr�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.�
-�
-��.�
-�
-��.�
-�
-��
-�
-�sH�
I!�5I5� J	�J�!I2	�*I2	�5J	�>J	�	J	�J	�J-	�&J-	c��[OQ2oUO[OUQ*
UQ*Q2V*2P!)z0x1p-50r�)r+r�r�rAr
)rRr�s& r�test_fma_single_round�FMATests.test_fma_single_round�
s7���M�M�)�$��������!�c�'�1�s�7�C�8�!�#�>rc���,QNoSFD�vq#qEUOV#UUQ59^tt^2[OU2o[OU2o[OU2o[OU2o	UO[O
VgU2U	2UO[O
VvU2U	2PPP2J�	P!)%fhJ�9h)�0x1.694adde428b44p-1)�a_hex�b_hex�c_hexr�))r'z0x1.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)rEr+r�r�rAr
)
rRr�r(r)r*r�r�r�r�rs
&         r�test_random�FMATests.test_random�
s���
!
��D2=�-�E�%����E�e�+7��9�9��M�M�%�(���M�M�%�(���M�M�%�(�� �=�=��6��� � ����!��!2�H�=�� � ����!��!2�H�=�9�9�2=�9�9�9�s�B#C	�C-
�%C-
c�t�UO[OU2QOU2Q5P!)zExpected a NaN, got {!r}r�)r�rArErrQs&&rr��FMATests.assertIsNaNs-������J�J�u��*�1�1�%�8�	�	
rc��SOU]6H9%c[O]U2]6�QOU2Q5P!)rz"Expected a positive zero, got {!r}r��r�rArBrrQs&&rr�FMATests.assertIsPositiveZero�@������Q�J�6�6�4�=�=��E�2�Q�6�4�;�;�E�B�	�	
rc��SOU]6H9%c[O]U2]6QOU2Q5P!)rz"Expected a negative zero, got {!r}r�r0rQs&&rr�FMATests.assertIsNegativeZeror2rrf)�freebsd�wasi�netbsd�
emscripten)r[r\r]r^�__doc__rrr�r�r�r\r:r�r�linked_to_muslrr!r$r+r�rrr_r`ras@rrr)
s������;�AG�J�_�_������ K�L�	$�	$��L�L�I�%�H�H�(�*:�*:�*<��*H�	$�	$��!�!�#�
?�	B�1<�B�1<�f0�B?�/>�d
�
�
�
rrc�~�]QHGoUOU[OOQQ222U!)r)�DocFileSuiterzieee754.txt)�doctestr<�addTest�os�pathr`)�loader�tests�patternr<s&&& r�
load_testsrD$s*��$�	�M�M�,�r�w�w�|�|�J�
�F�G�H��Lrg��7y�ACr�):�test.supportrr�testrr�r�r	r�rAr?r\r{r
r�r�r+r�rLr�r�rfrir�r�r�rrAr�r[�argv�file�__file__r@�dirname�curdir�test_dirr`rpr^rrr7r?rJrLrDre�objectrirpr}�TestCaser�r�rrD�mainrfrr�<module>rPs���4�������	��
�
�
����E�l���V�}���E�l���V�}���N�N���	��N�N���	��V���1��A���)���z���8�8�A�;�D��D�
�7�7�?�?�4� �-�-�B�I�I�������h�
�4H�I���G�G�L�L��:�/D�E�	�
�"B�$:�4�0.�`��	�#�	��&��
 �
 � ��W#G��!�!�W#G�tFx@�8�$�$�x@�vx
�x� � �x
�v�
�z���M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit