403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.141
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:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_math.cpython-313.opt-2.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$)Nz<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$)N�r)�count_set_bits)rs rrrNs��,-�1�~�a�a�%�i�(�(�4�1�4rc�l�X-
S-	nU(dgUS:XaU$X-S-n[X5[X15-$�Nr)�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-
-$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$)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_checkr1ksP���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)N�utf-8��encoding�--�->rr)�open�index�strip�split�float)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagss           r�parse_mtestfilerH}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)Nr3r4r6r7rr�)r8�
startswithr:r;r<)
r=r>r?r@rArBrC�arg_real�arg_imagrE�exp_real�exp_imagrGs
             r�parse_testfilerP�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)Nrz	expected z, got z (zero has wrong sign)z	not equalzexpected {!r}, got {!r}z ({}))	�math�copysign�
isinstancer<�int�isnan�isinfr1r))r*r+r,r-�failure�fail_fmt�fail_msgs       r�result_checkr[�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��selfrbs  r�__init__�FloatLike.__init__�����
rc��UR$r`ra�rds r�	__float__�FloatLike.__float__�����z�z�rraN)�__name__�
__module__�__qualname__�__firstlineno__rerj�__static_attributes__�rrr]r]�����rr]c��\rSrSrSrg)�IntSubclass��rrN�rmrnrorprqrrrrruru�s��rruc� �\rSrSrSrSrSrg)�MyIndexable��c��Xlgr`rarcs  rre�MyIndexable.__init__�rgrc��UR$r`raris r�	__index__�MyIndexable.__index__�rlrraN�rmrnrorprer~rqrrrrryry�rsrryc��\rSrSrSSjrSrg)�BadDescr��Nc��[er`)�
ValueError)rd�obj�objtypes   r�__get__�BadDescr.__get__�s���rrrr`)rmrnrorpr�rqrrrrr�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)Nz{}: {})r[�failr))rd�namer+r*r,r-rXs       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�
�@rJ)r�rRr�r��assertEqual�tauris 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)rrJzacos(1)r)
�assertRaises�	TypeErrorrR�acosr�r�r��INF�NINF�eps�
assertTruerV�NANris 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)rJg5�qB�?r�)r�r�rR�acoshr�r�r�r�r�r�rVr�ris 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�rJzasin(0)rzasin(1)r)
r�r�rR�asinr�r�r�r�r�r�r�rVr�ris 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�rR�asinhr�r�r�r�r�rVr�ris 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)rJz
atan(-inf))r�r�rR�atanr�r�r�r�r�rVr�ris 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�rRr�r��atanhr�r�r�r�rVr�ris 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�rrJz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�rR�atan2r�r�r�r�r�r�rVr�ris 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)�rJz	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�rR�cbrtr�r�r�r�r�rVr�ris 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��?��?rJr�r��r����r�r�c��\rSrSrSrSrg)�$MathTests.testCeil.<locals>.TestCeili�c��g�N�*rrris r�__ceil__�-MathTests.testCeil.<locals>.TestCeil.__ceil__����rrrN�rmrnrorpr�rqrrrr�TestCeilr�����
rr�c��\rSrSrSrSrg)�%MathTests.testCeil.<locals>.FloatCeili�c��gr�rrris rr��.MathTests.testCeil.<locals>.FloatCeil.__ceil__�r�rrrNr�rrrr�	FloatCeilr��r�rr�c��\rSrSrSrg)�&MathTests.testCeil.<locals>.TestNoCeili�rrNrwrrrr�
TestNoCeilr�����rr�c�"�\rSrSr\"5rSrg)�'MathTests.testCeil.<locals>.TestBadCeili�rrN)rmrnrorpr�r�rqrrrr�TestBadCeilr��s	���z�Hrr�r�g@E@�+c��U$r`rr��argss r�<lambda>�$MathTests.testCeil.<locals>.<lambda>�s��4r)r�r�rR�ceilr�rU�typer<r]r�r�)rdr�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�rRrSr�r�r�r�r�rVr�rWr(ris 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)rJrr�r-zcos(0)z	cos(pi/2)zcos(pi)r�)
r�r�rR�cosr�r��ulpr�rVr�r�r�r�ris 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)**2rJr�)r�r�rR�coshr�r�r�r�r�rVr�ris 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)rJg�V@zdegrees(-pi/4)r�g�F�z
degrees(0)r)r�r�rR�degreesr�r�ris 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�rRrFr�r�r�r�r�r�rVr��
OverflowErrorris 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)rJz	exp2(2.3)r�g)��{IJ@r�r
)r�r�rR�exp2r�r�r�r�r�rVr�rris 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�rR�fabsr�ris 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�rR�	factorialr!r&r�r�)rd�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�rRr�decimal�Decimalris 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�rrRrr�ris 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�rrris r�	__floor__�0MathTests.testFloor.<locals>.TestFloor.__floor__Ar�rrrN�rmrnrorpr2rqrrrr�	TestFloorr0@r�rr5c��\rSrSrSrSrg)�'MathTests.testFloor.<locals>.FloatFlooriCc��gr�rrris rr2�1MathTests.testFloor.<locals>.FloatFloor.__floor__Dr�rrrNr4rrrr�
FloatFloorr7Cr�rr:c��\rSrSrSrg)�(MathTests.testFloor.<locals>.TestNoFlooriFrrNrwrrrr�TestNoFloorr<Fr�rr=c�"�\rSrSr\"5rSrg)�)MathTests.testFloor.<locals>.TestBadFlooriHrrN)rmrnrorpr�r2rqrrrr�TestBadFloorr?H�	�� �
�Irr@r�g33333�D@�)c��U$r`rrr�s rr��%MathTests.testFloor.<locals>.<lambda>Qs��Dr)r�r�rR�floorr�rUr�r<r]r�r2)rdr5r:r=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�rR�fmodr�r�rVr�r�r�r�r�ris 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*�mantrF�emant�eexprds       �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)rJ)r�rJ)
r�r�rR�frexpr�r�r�r�rVr�)rdrVs` 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$)NrXrJrrr�)	rRrYrU�ldexp�max�len�binr(�bool)
�iterable�tmant�texprrSrF�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�rm)r*r�r#rmrnr�ro)�@Cr�g��g������?C)rpr���9g@C)g@Cr�rqg@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�rJr��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��ryr*r#rnro�������spamc3�# �Sv� [e7f�Nr�)�ZeroDivisionErrorrrrr�bad_iter�$MathTests.testFsum.<locals>.bad_iter�s����I�#�#�s�
)�sysr]rj�min_expr!r<�fromhex�append�	enumeraterR�fsumrr�r�r�rvrwrxrr�rVrr]r�r�r)rdr]rkr�test_valuesr%�terms�valsr*�actualrvrwrx�j�s�vr�rirjs                 @@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�ry�����x�T����� j9W P)�}� "o�`T"-� l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k )��	lZ��'^%#�>�;�*Q!/61^�f��^@�U@)rR�gcdr�r�r�ry)rdr�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)rJNrr)�.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皙����@rrIr�r�r��r|)!r%r&�	fractionsr�rR�hypotr�r��sqrt�gamma�sinr!ra�assertAlmostEqual�sumr�r]rSr�r�r�r]�
max_10_expr�rr�r�r�r�rV�	FLOAT_MAX�isclose�	FLOAT_MIN)rdr&r�r�r�r%�int_too_big_for_float�	fourthmaxrrF�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�rJ)rRr�r%r&�Contextr<r��subTest�localcontextr�r�)	rdr�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"�rrJr�)r�rJr��	r�c3�P# �UHn[R"SS5v� M g7f����r�N�rv�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�Nrr)r��px�qxs   rr�r��s���F�I�&�"�b�g�#�-�I�s�)�,@r�)r�r�r�)�r)rJ���r�r�r)�rr�r�r�)rJi����)r�r�rJr�)TTFFTT)TFTFFFr�)��*@g)@�
�r�rrr�)r�)r�)r�r�r�)rrr)r�r�r�c��\rSrSrSrg)�MathTests.testDist.<locals>.Ti�rrNrwrrrr�Tr��r�rr�)r�r�r���p�q)ryr�r�)r�r�r�)rrJr�r�)r�r�ry)r�r�r�ry)rrrrrrrrrrrrrrrrrr|)rrrrrrrrrrrrrrrrrr�abc�xyzr)rJr��rc�"�\rSrSr\"5rSrg)�$MathTests.testDist.<locals>.BadFloatirrN)rmrnrorpr�rjrqrrrr�BadFloatr�rArr��r�r�r�r���repeatr�r�)r�r�)&r%r&r�r�rR�distr�r�r!�tupler�r��zip�iterr]rSr�r�r�r�r]r�rrvr(r�r�r��	itertools�product�any�maprWrVr�r�r�r�)rd�D�Fr�r�r%r�r�r�r�r�r��valuesr�r��diffsr�rrFr�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)NrrJ)r�r�r�)r�r�rRr�ris 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�<rzi����(rJr�i'ri�rarr�TFrc� �\rSrSrSrSrSrg)�(MathTests.testIsqrt.<locals>.IntegerLikeiPc��Xlgr`rarcs  rre�1MathTests.testIsqrt.<locals>.IntegerLike.__init__Qs��"�
rc��UR$r`raris rr~�2MathTests.testIsqrt.<locals>.IntegerLike.__index__Ts���z�z�!rraNr�rrrr�IntegerLikerPs��
#�
"rri�rBr�r�za stringz3.5y@gY@r�)�listr!r�rR�isqrt�assertIsr�rU�assertLessEqual�
assertLessr�r�r��objectr%r&r�)rdr�r%r�rbr�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�ryr�r�iYr�r�iHr�r�r�l ,�`aUx�-�xB�:Vn
Ldbl�m�e%Y%l};T^�	)r�l�|/Kr2r�i�7r�r�)rR�lcmr�r�r�ry)rdr rr�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)rJzldexp(1,-1)r�r�zldexp(-1,1)r.r�r
r�i���r�r��i+���順�d(	� F�x:^Vrr)r�r�rRr_r�rr�r�r�r�rVr��rdrs  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�rRr_ris 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)NrrJr�zlog(1/e)r�zlog(1)rzlog(e)z	log(32,2)r�r�zlog(10**40, 10)rrzlog(10**40, 10**20)r(z
log(10**1000)rgO�+��@r�rI)
r�r�rR�logr�r�r�r�r�r�r�rVr�ris 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)NrJ�Zi,r�)	r�r�rR�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�rJr�r�r�i�g��@�g�@i�g@�@r�)
r�r�rR�log2r�r�r�r�rVr�ris 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)Nrsr9r�)r!rRr:r_r<r�)rdrr�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�rR�log10r�r�r�r�r0r�r�rVr�ris 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�)rGr�r�c3�.# �UHupX-v� M
 g7fr`rr)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`�rP�rd�others  r�__mul__�2MathTests.testSumProd.<locals>.BadMultiply.__mul__>���"�"rc��[er`rWrXs  r�__rmul__�3MathTests.testSumProd.<locals>.BadMultiply.__rmul__@r\rrrN)rmrnrorprZr^rqrrrr�BadMultiplyrU=s��
#�
#rr`r�g333333$@g3333334@g�����L>@g�����L4@))r�r�r)r���r�)rR�sumprodr%r&r�r�r�r�r�r�r�r�r�r�r�rrPr!�test.test_iterrSrr�rVr)
rdrcr&r�r�r�r�r*r�rQrSr`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)NrArrr�r�TF)r�g\�n��Tr�g\�n���r�r�)rRrcr�)rdrcs  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`�rU�rdrY�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`rorps  �rrZ�2MathTests.test_sumprod_stress.<locals>.Int.__mul__qrtrc� �S[U5S3$)NzInt(�)roris r�__repr__�3MathTests.test_sumprod_stress.<locals>.Int.__repr__u����c�$�i�[��*�*rrrN�
rmrnrorprrrZ�__radd__r^ryrq�rqs�rrqrmn����
3�
3��H��H�
+rrqc�<>�\rSrSrU4SjrU4Sjr\r\rSrSr	g)�*MathTests.test_sumprod_stress.<locals>.Fltixc�>>�T"[U5[U5-5$r`rorps  �rrr�2MathTests.test_sumprod_stress.<locals>.Flt.__add__yrtrc�>>�T"[U5[U5-5$r`rorps  �rrZ�2MathTests.test_sumprod_stress.<locals>.Flt.__mul__{rtrc� �S[U5S3$)NzFlt(rxroris rry�3MathTests.test_sumprod_stress.<locals>.Flt.__repr__r{rrrNr|r~s�r�Fltr�xrrr�c�>�Sn[XSS9Hup4X#U--
nM U$)NrTrM)r�)r�r�rrJrKs     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)N�None)�AssertionError�	NameError�	Exceptionr��repr)�funcr�rRr�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�llrbrarJ�Pr�ry)	�@g�g@��&@gy@g�?��?r�g���3�r�r�rr�i�i:,r�r�g8�r�ig@rGr�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�)rRrcr�rr%r&r�r�rUr<r!r�)rdrcrr&r�r�r�r��pools�pool�size�args1�args2r�rqs              @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)r:rr)�choicesr�rx)�median�
DotExample)rr��target_sumprod�	conditionc�|>�[TU5n[TU5n[T"TR[X#SS955$)NTrM)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 snfr)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 snUSU&UVs/sHnT"SS5T"U5-PM snUSU&[[[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)	NrJr�)r�rrr�r�r�)r!rUrr�roundr�)rr��n2rr�r�r�r�r%�pairsr�r�r�r�rr�r:rxr�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`)rRrc)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�%(rr)r�r�r�r�r��collectionsr�rRr:rrrvr�r�rx�
statisticsr�r!r)rdr�r��times�relative_errr�r�r�r�r�r�r�r�r�rrr�r:rr�rxr�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 ggrPrQ)r�rRr*�v1�v2�e1�e2rds       �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�rR�modfr�r�r�r�r�rV)rdr��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)rJz	pow(2,-1)r�r�r�r*r�r�r�r�r���r�rJr�g.�g�������gffffff�?r���������?rAg��������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�rR�powr�r�r�r�r�rVr�rr�ris 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)r4rJzradians(-45)i���r�z
radians(0)r)r�r�rR�radiansr�r�ris 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)NrJ)rr(r�rU)	rr��r�fx�fy�frrr�rds	       ��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��rHrr�r�r�r�)r�r�r�r�r�)r�r�r�r;r<r�rR�	remainderr��hexr!r�r�r��assertIsNaNr�r�)rdr��	testcasesr��x_hex�y_hex�expected_hexrr�r*r��tinyr�mrbr�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)rJrz
sin(-pi/2)r�)r�r�rRr�r�r�r�rVr�r�r�r�ris 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)**2rrJr�zsinh(1)+sinh(-1))r�r�rR�sinhr�rr�r�r�r�rVr�ris 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)rGgS[�:XL�?z
sqrt(0.25)r�r�zsqrt(25.25)g@9@g�)#L�@zsqrt(1)rzsqrt(4)r�rJr�)r�r�rRr�r�r�r�r�r�r�rVr�ris 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�rR�tanr�r�r�rVr�r�r�r�ris 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�rR�tanhr�r�r�r�r�rVr�ris 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�rRrrSris 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�rrris r�	__trunc__�1MathTests.test_trunc.<locals>.TestTrunc.__trunc__�r�rrrN�rmrnrorprrqrrrr�	TestTruncr�r�rr c��\rSrSrSrSrg)�(MathTests.test_trunc.<locals>.FloatTrunci�c��grrrris rr�2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__�r�rrrNrrrrr�
FloatTruncr"�r�rr%c��\rSrSrSrg)�)MathTests.test_trunc.<locals>.TestNoTrunci�rrNrwrrrr�TestNoTruncr'�r�rr(c�"�\rSrSr\"5rSrg)�*MathTests.test_trunc.<locals>.TestBadTrunci�rrN)rmrnrorpr�rrqrrrr�TestBadTruncr*�rArr+rrJg�7@)
r�rR�truncr�rUr<r�r�r]r�)rdr 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�rR�isfinite�assertFalser<ris 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�rRrVr<r1ris 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�rRrWr<r1ris 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�rRrVrr�rSris 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�rRrWr�
assertGreaterr�r<ris 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)rRrFr�rr�r��rdrs  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�rrUr;r�rP�	test_file�getattrrRrrSr[r)r�r��join)rd�
SKIP_ON_TIGER�osx_version�version_txtrY�failuresrBrC�ar�ai�er�eirGr�rRr,r-rX�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�rNrrSr�r��lgammagV瞯�<�erfcr�r�r�$@rrzFailures in test_mtestfile:
  rT)rH�math_testcasesrXrRr�rr[r)r�r�rY)rdrYr]rBrCrDr*rGr�r+r,r-rXrbs              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�)rrJr�i�ri_7)rrJr�r�r�r�)r�r�r�r�r"r�)rrJr�r�r")r�r�r�r�r�r�r�r�c��\rSrSrSrSrg)�(MathTests.test_prod.<locals>.BadMultiplyizc��[er`rWrXs  rr^�1MathTests.test_prod.<locals>.BadMultiply.__rmul__{r\rrrN)rmrnrorpr^rqrrrrr`rnzs��
#rr`rh)rr�rrrq)r�r�rqrrr�)r�r�r���a�cr�b�ab�abababababab)rrJrrJrrJrrJrrJrrJr�)rrrJr�)rrrJr�)rrJr�rc� �UHnX-nM	 U$r`rr)rdr�elems   r�_naive_prod�(MathTests.test_prod.<locals>._naive_prod�s�� ���
��!��Lri'i���r�i���rrrrr�r�)rrJr�r�r�r�)rr�r�r�r�r�r�r�r�)r�r�rR�prodr�rr!r�r�rPr<r��	bytearrayr�r�rUr%r&)rdrr|r`rrzrdrs        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�rrrzr%rrr�r��1rh�10r�r�rJrT��cpython�)TT)TF)FFr�)rR�permrr!r�r�r�r%r&r�r�check_impl_detailrrr�rUrury)rdr�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�rrrzr%rrrJr�r�rhr�r�r�rTr�r�r�)rR�combrr!r�r�r�r%r&r�rr�rrr�rUrury)rdr�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�rR�	nextafterr�r<r�r!�assertEqualSignr�r]�min�epsilonr`r�r�r�r�)rdr��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�rRr�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��	convertedris rrj�.MathTests.test_issue39871.<locals>.F.__float__�	s��!%����!�rr�N)rmrnrorprjrqrrrrrr��	s��
rrznot a numberr�F)rRr�rSr�r�r�r1rX)rdrr�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�rRrF�erfr�ris 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}.)rRrVr�r)rcs  rr��MathTests.assertIsNaN�	s.���z�z�%� � ��I�I�1�8�8��?�@�!rc��URX5 UR[R"SU5[R"SU55 gr~)r�rRrS)rdrr�s   rr��MathTests.assertEqualSign�	s8��
	
�����������s�A�.��
�
�c�1�0E�FrrrNrS)Yrmrnrorpr�r�r�r�r�r�r�r�r�r�r�rr�r��unittest�skipIfr�rU�machinerr
rrrrr'r�cpython_onlyr+rFrLrZ�HAVE_DOUBLE_ROUNDINGr�r�r�r�rr
rr"r*r-r1r6r;�requires_mac_verr>rCrerh�requires_resourcer�r�r�r�r�r�rrr
rrrr-r2r5r8r;r?�
skipUnlessrrCrcrjr~r�r�r�r�r�r�r�r�rqrrrrr�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��rdr�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��rd�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_tolrmg _�©r�r-)r�r�r�ris 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�)rd�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�)rd�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�)rd�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�ris 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)Nrmr�r{g�������?r�)r�r�r�r�)rd�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�)rd�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�rAr�r�ris r�test_asymmetry�IsCloseTests.test_asymmetry'
s�����W�g�.���<rc�L�SS/nURUSS9 URUSS9 g)N)����)i�[i�[r�r�r�r�)rd�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�)rdr&�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�)rdr��fraction_exampless   r�test_fractions�IsCloseTests.test_fractions>
sz��&��a��
#�a�
'��!��5�
�i�
 �(�9�"5�6�
�i��
(�(�1�f�*=�>�@��	
���-�t��<����0�$��?rrrN)rmrnrorprRr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rqrrrrr�r��	s^���l�l�G�C�H�6�9�D�J�L�>�4�
N�
O�=�?�	?�	@rr�c�:�\rSrSrSrSr\R"\RRS5=(dB \RS:H=(a \	R"5S:H=(d \R"5S5S5rS	rS
rSrSrS
rSrSrg)�FMATestsiJ
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~rJr�)r�r�)rRrrr�rr�r��fma)rdrr�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�)	rRrr�r�r�rr�r�r)	rd�	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��assertIsPositiveZerorRr�assertIsNegativeZeror<r�)rd�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�rrRrr�)rdr�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�rRr)rdr�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�rRr)
rdr�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�rRrVr)rcs  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�rRrSr)rcs  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�r0rcs  rr�FMATests.assertIsNegativeZero;r2rrrN)rmrnrorprrr�r�r�rUrKr�r�linked_to_muslrr"r%r+r�rrrqrrrrrrJ
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)�doctestr7�addTest�os�pathrY)�loader�tests�patternr7s    r�
load_testsr?Bs*��$�	�M�M�,�r�w�w�|�|�J�
�F�G�H��LrrS);�test.supportrr�testrr�r�r�r%rRr:rUrvr
r�r�r<r�r�r�r]r`r�r�r�rr�r�rm�argv�file�__file__r;�dirname�curdir�test_dirrYrirWrrrr&r1rHrPr[r]rUrurryr��TestCaser�r�rr?�mainrrrr�<module>rJs���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