Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_math.cpython-312.opt-2.pyc

�

'Μg+����ddlmZmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZdZed�Zed�Zed�Zej(j*Zej(j.Zd\ZZeezd	k(Zed
k(rej:dZneZe
j@jCe�xse
jDZ#e
j@jIe#d�Z%e
j@jIe#d�Z&d
�Z'd�Z(d�Z)d�Z*d�Z+d�Z,d�Z-d"d�Z.Gd�d�Z/Gd�de0�Z1Gd�de2�Z3Gd�d�Z4Gd�dejj�Z6Gd�d ejj�Z7d!�Z8ed
k(rejr�yy)#�)�verbose�requires_IEEE_754)�supportNg�h㈵��>�nan�inf�-inf)���7y�ACg�):��@g��7y�AC�__main__zmath_testcases.txtzcmath_testcases.txtc�x�	tjdtjd|��d}|dkr|dz}|S)Nz<qz<drl)�struct�unpack�pack)�x�ns  �+/usr/local/lib/python3.12/test/test_math.py�to_ulpsr(s@��	�	�
�
�d�F�K�K��a�0�1�!�4�A��1�u���g�J���H�c�4�	|rdt||dz
z�zSdS)N�r)�count_set_bits)rs rrrNs$��K�,-�1�~�a�!�a�%�i�(�(�4�1�4rc�j�	||z
dz	}|sy|dk(r|S||zdz}t||�t||�zS�Nr)�partial_product)�start�stop�
numfactors�mids    rrrRsQ�����,�1�$�J���	�q�����z�!�Q�&���u�c�*�_�S�$�-G�G�Grc���	dx}}tt|j���D]+}|t||dzz	dzdz||z	dzdz�z}||z}�-||t	|�z
zSr)�reversed�range�
bit_lengthrr)r�inner�outer�is    r�py_factorialr%`s}�����E�E�
�e�A�L�L�N�+�
,��
��!�q�1�u�*��!1�A�!5��Q��!�|�a�7G�H�H��
����-��Q���*�*�+�+rc��	tt|�t|�z
�}t||z
�}||ks||kryd}|j||||�S)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_checkr0ks_����G�H�%����4�5�I��H�s�N�#�I��G��y�G�3��7���z�z�)�Y���A�Arc#�nK�	t|d��5}|D]�}d|vr|d|jd�}|j�s�,|jd�\}}|j�\}}}|j�}|d}	|dd}
||t	|�t	|	�|
f����	ddd�y#1swYyxYw�w)N�utf-8��encoding�--�->rr)�open�index�strip�split�float)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagss           r�parse_mtestfilerG}s������
�e�g�	&�"��D��t�|��-�T�Z�Z��-�.���:�:�<���z�z�$�'�H�C���)�)�+�K�B��C�����J��Q�-�C��q�r�N�E��r�5��:�u�S�z�5�9�9��
'�	&�	&�s�B5�BB)� 	B5�)B2�.B5c
#�K�	t|d��5}|D]�}|jd�s|j�s�%|jd�\}}|j�\}}}}|j�}	|	d|	d}}
|	dd}||t	|�t	|�t	|
�t	|�|f����	ddd�y#1swYyxYw�w)Nr2r3r5r6rr�)r7�
startswithr9r:r;)
r<r=r>r?r@rArB�arg_real�arg_imagrD�exp_real�exp_imagrFs
             r�parse_testfilerO�s������

�e�g�	&�"��D����t�$�D�J�J�L���z�z�$�'�H�C��),����&�B��H�h�����J�!+�A��
�1�
�h�H��q�r�N�E��r���?�E�(�O���?�E�(�O���
��
'�	&�	&�s�C�B!B<�3	C�<C�Cc��	||k(r;|s8|s6tjd|�tjd|�k7r	d|�d|�d�Syd}t|t�rt|t�rt|�}n+t|t�rt|t�rt|�}t|t�rvt|t�rftj
|�rtj
|�rd}n9tj|�stj|�rnt||||�}|�*d}|j||�}|dj|�z
}|Sy)Nrz	expected z, got z (zero has wrong sign)z	not equalzexpected {!r}, got {!r}z ({}))	�math�copysign�
isinstancer;�int�isnan�isinfr0r()r)r*r+r,�failure�fail_fmt�fail_msgs       r�result_checkrZ�s��	��h���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��G�
�Z�Z��
!�T�Z�Z��_��$�H�c�7�G�D�G���,���?�?�8�S�1���G�N�N�7�+�+����rc��eZdZd�Zd�Zy)�	FloatLikec��||_y�N��value��selfr`s  r�__init__zFloatLike.__init__��	����
rc��|jSr^r_�rbs r�	__float__zFloatLike.__float__�����z�z�rN)�__name__�
__module__�__qualname__rcrg�rrr\r\�����rr\c��eZdZy)�IntSubclassN�rirjrkrlrrroro�s��rroc��eZdZd�Zd�Zy)�MyIndexablec��||_yr^r_ras  rrczMyIndexable.__init__�rdrc��|jSr^r_rfs r�	__index__zMyIndexable.__index__�rhrN�rirjrkrcrurlrrrrrr�rmrrrc��eZdZdd�Zy)�BadDescrNc��t�r^)�
ValueError)rb�obj�objtypes   r�__get__zBadDescr.__get__�s���rr^)rirjrkr}rlrrrxrx�s��rrxc�Z�eZdZdRd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
ed
��Zd�Zej$ej(dk(xrej*�dvd�d��Zd�Zd�Zd�Zd�Zd�Zd�Zej<d��Zd�Z d�Z!d�Z"eej$e#d�d���Z$d�Z%d �Z&eej$e#d!�d"���Z'd#�Z(d$�Z)d%�Z*d&�Z+d'�Z,d(�Z-d)�Z.ed*��Z/eej`d+d�d,���Z1d-�Z2d.�Z3eej$e#d/�ej<d0����Z4ejjd1�d2��Z6eej$e#d/�ej<ejjd1�d3�����Z7d4�Z8d5�Z9d6�Z:ed7��Z;d8�Z<d9�Z=d:�Z>d;�Z?d<�Z@ed=��ZAd>�ZBd?�ZCd@�ZDdA�ZEdB�ZFdC�ZGej�eIdD�dE��ZJedF��ZKedG��ZLdH�ZMdI�ZNdJ�ZOedK��ZPedL��ZQdM�ZRdN�ZSdO�ZTdP�ZUyQ)S�	MathTests�c�j�	t||||�}|�"|jdj||��yy)Nz{}: {})rZ�failr()rb�namer*r)r+r,rWs       r�ftestzMathTests.ftest�s;��	��x��g�w�?�����I�I�h�o�o�d�G�4�5�rc���|jdtjd�|jdtjd�|j	tj
dtjz�y)N�pig-DT�!	@�egiW�
�@rI)r�rQr�r��assertEqual�taurfs r�
testConstantszMathTests.testConstantssH���
�
�4����"<�=��
�
�3���� :�;�������1�T�W�W�9�-rc�8�|jttj�|j	dtjd�tj
�|j	dtjd�tj
dz�|j	dtjd�d�|jttjt�|jttjt�|jttjdtz�|jttjdtz
�|jtjtjt���y)Nzacos(-1)���zacos(0)rrIzacos(1)r)
�assertRaises�	TypeErrorrQ�acosr�r�rz�INF�NINF�eps�
assertTruerU�NANrfs r�testAcoszMathTests.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��|jttj�|j	dtjd�d�|j	dtjd�d�|jt
tjd�|jt
tjd�|j
tjt�t�|jt
tjt�|jtjtjt���y)Nzacosh(1)rrzacosh(2)rIg5�qB�?r�)r�r�rQ�acoshr�rzr�r�r�r�rUr�rfs r�	testAcoshzMathTests.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�@�|jttj�|j	dtjd�tj
dz�|j	dtjd�d�|j	dtjd�tj
dz�|jttjt�|jttjt�|jttjdtz�|jttjdtz
�|jtjtjt���y)Nzasin(-1)r�rIzasin(0)rzasin(1)r)
r�r�rQ�asinr�r�rzr�r�r�r�rUr�rfs r�testAsinzMathTests.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�Z�|jttj�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�|jtjt�t�|jtjt�t�|jtjtjt���y)	Nzasinh(0)rzasinh(1)rg'�ya64�?z	asinh(-1)r�g'�ya64�)r�r�rQ�asinhr�r�r�r�r�rUr�rfs r�	testAsinhzMathTests.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���|jttj�|j	dtjd�tj
dz�|j	dtjd�d�|j	dtjd�tj
dz�|j	dtjt�tj
d	z�|j	d
tjt�tj
d	z�|jtjtjt���y)Nzatan(-1)r��zatan(0)rzatan(1)rz	atan(inf)rIz
atan(-inf))r�r�rQ�atanr�r�r�r�r�rUr�rfs r�testAtanzMathTests.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���|jttj�|j	dtj
d�d�|j	dtj
d�d�|j	dtj
d�d�|jttj
d	�|jttj
d
�|jttj
t�|jttj
t�|jtjtj
t���y)Nzatanh(0)rz
atanh(0.5)��?g�z��?zatanh(-0.5)��g�z��rr�)r�r�rQr�r��atanhrzr�r�r�rUr�rfs r�	testAtanhzMathTests.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��|jttj�|j	dtjdd�tj
dz�|j	dtjdd�tj
dz�|j	dtjdd�d�|j	d	tjdd�tj
dz�|j	d
tjdd�tj
dz�|j	dtjdd�dtj
zdz�|j	d
tjdt�tj
�|j	dtjdd�tj
�|j	dtjdd�tj
�|jtjdd�d�|jtjdd�d�|jtjdt�d�|jtjtjdt���|j	dtjdt�tj
�|j	dtjdd�tj
�|j	dtjdd�tj
�|jtjdd�d�|jtjdd�d�|jtjdt�d�|jtjtjdt���|j	dtjtt�tj
dzdz�|j	dtjtd�tj
dz�|j	dtjtd�tj
dz�|j	dtjtd�tj
dz�|j	dtjtd�tj
dz�|j	dtjtt�tj
dz�|jtjtjtt���|j	dtjtt�tj
dzdz�|j	dtjtd�tj
dz�|j	dtjtd�tj
dz�|j	d tjtd�tj
dz�|j	d!tjtd�tj
dz�|j	d"tjtt�tj
dz�|jtjtjtt���|j	d#tjdt�tj
�|j	d$tjdd�tj
dz�|j	d%tjdd�tj
dz�|jtjdt�d�|jtjtjdt���|j	d&tjdt�tj
�|j	d'tjdd�tj
dz�|j	d(tjdd�tj
dz�|jtjdt�d�|jtjtjdt���|jtjtjtt���|jtjtjtd���|jtjtjtd���|jtjtjtd���|jtjtjtd���|jtjtjtt���|jtjtjtt���y))Nzatan2(-1, 0)r�rrIzatan2(-1, 1)rr�zatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(1, -1)�zatan2(0., -inf)�zatan2(0., -2.3)�ffffff�zatan2(0., -0.)���ffffff@zatan2(-0., -inf)zatan2(-0., -2.3)zatan2(-0., -0.)zatan2(inf, -inf)zatan2(inf, -2.3)zatan2(inf, -0.)zatan2(inf, 0.)zatan2(inf, 2.3)zatan2(inf, inf)zatan2(-inf, -inf)zatan2(-inf, -2.3)zatan2(-inf, -0.)zatan2(-inf, 0.)zatan2(-inf, 2.3)zatan2(-inf, inf)zatan2(2.3, -inf)zatan2(2.3, -0.)zatan2(2.3, 0.)zatan2(-2.3, -inf)zatan2(-2.3, -0.)zatan2(-2.3, 0.))r�r�rQ�atan2r�r�r�r�r�r�rUr�rfs r�	testAtan2zMathTests.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�n�|jttj�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�|j	dtjd	�d	�|j	d
tjd�d�|j	dtjd
�d�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�|jtjt�t�|jtjt�t�|jtjtjt���y)Nzcbrt(0)rzcbrt(1)rzcbrt(8)�rIz	cbrt(0.0)r�z
cbrt(-0.0)r�z	cbrt(1.2)g333333�?ggA�E��?z
cbrt(-2.6)g�������g�L]6H��zcbrt(27)�r�zcbrt(-1)r�z	cbrt(-27)i�����)r�r�rQ�cbrtr�r�r�r�r�rUr�rfs r�testCbrtzMathTests.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�r�|jttj�|j	t
t
tjd���|j	tjd�d�|j	tjd�d�|j	tjd�d�|j	tjd�d�|j	tjd�d	�|j	tjd
�d	�|j	tjd�d�|j	tjd�d�Gd
�d�}Gd�dt�}Gd�d�}Gd�d�}|j	tj|��d�|j	tj|��d�|j	tjtd��d�|jttj|��|jttj|��|�}d�|_
|jttj|�|jttj|d�|j	tjtd��d�|j	tjtd��d�y)Nr�r��?��?rIr�r��r����r�r�c��eZdZd�Zy)�$MathTests.testCeil.<locals>.TestCeilc��y�N�*rlrfs r�__ceil__z-MathTests.testCeil.<locals>.TestCeil.__ceil__����rN�rirjrkr�rlrr�TestCeilr�����
rr�c��eZdZd�Zy)�%MathTests.testCeil.<locals>.FloatCeilc��yr�rlrfs rr�z.MathTests.testCeil.<locals>.FloatCeil.__ceil__�r�rNr�rlrr�	FloatCeilr��r�rr�c��eZdZy)�&MathTests.testCeil.<locals>.TestNoCeilNrprlrr�
TestNoCeilr�����rr�c��eZdZe�Zy)�'MathTests.testCeil.<locals>.TestBadCeilN)rirjrkrxr�rlrr�TestBadCeilr��s	���z�Hrr�r�g@E@�+c��|Sr^rl��argss r�<lambda>z$MathTests.testCeil.<locals>.<lambda>�s��4r)r�r�rQ�ceilr�rT�typer;r\rzr�)rbr�r�r�r��ts      r�testCeilzMathTests.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���|jtjdd�d�|jtjdd�d�|jtjdd�d�|jtjdd�d�|jtjd	d
�d�|jttj�|jtjdd�d�|jtjdd
�d�|jtjt
d�t
�|jtjt
d
�t�|jtjtd�t
�|jtjtd
�t�|jtjdt
�d�|jtjdt�d�|jtjt
t
�t
�|jtjt
t�t�|jtjtt
�t
�|jtjtt�t�|jtjtjtd���|jtjtjtt
���|jtjtjtt���|jtjtjtt���|jtjtjt
t���|jttjdt��d�y)
Nrr�r�r�i���r�r��@�@r����@)r�rQrRr�r�r�r�r�rUr�rVr'rfs r�testCopysignzMathTests.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�X�|jttj�|j	dtjtj
dz�dtjd���|j	dtjd�d�|j	dtjtj
dz�dtjd���|j	dtjtj
�d	�	|jtjtjt���|jtjtjt���|jtjtjt���y#t$rU|jttjt�|jttjt�Y��wxYw)
Nz
cos(-pi/2)rIrr�r,zcos(0)z	cos(pi/2)zcos(pi)r�)
r�r�rQ�cosr�r��ulpr�rUr�r�rzr�rfs r�testCoszMathTests.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�A6G�AH)�(H)�win32)�ARM�ARM64zEWindows UCRT is off by 2 ULP this test requires accuracy within 1 ULPc�F�|jttj�|j	dtjd�d�|j	dtjd�dtjd�dzzz
d�|jtjt�t�|jtjt�t�|jtjtjt���y)Nzcosh(0)rrzcosh(2)-2*cosh(1)**2rIr�)r�r�rQ�coshr�r�r�r�r�rUr�rfs r�testCoshzMathTests.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���|jttj�|j	dtjtj
�d�|j	dtjtj
dz�d�|j	dtjtj
dz�d�|j	d	tjd
�d
�y)Nzdegrees(pi)g�f@z
degrees(pi/2)rIg�V@zdegrees(-pi/4)r�g�F�z
degrees(0)r)r�r�rQ�degreesr�r�rfs r�testDegreeszMathTests.testDegrees�s������)�T�\�\�2��
�
�=�$�,�,�t�w�w�"7��?��
�
�?�D�L�L������$;�T�B��
�
�#�T�\�\�4�7�7�(�1�*�%=�u�E��
�
�<����a��!�4rc���|jttj�|j	dtjd�dtj
z�|j	dtjd�d�|j	dtjd�tj
�|j
tjt�t�|j
tjt�d�|jtjtjt���|jttjd�y)	Nzexp(-1)r�rzexp(0)rzexp(1)r��@B)
r�r�rQrEr�r�r�r�r�r�rUr��
OverflowErrorrfs r�testExpzMathTests.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���|jttj�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�|j	d	tjd
�d�|jtjt�t�|jtjt�d�|jtjtjt���|jttjd
�y)Nzexp2(-1)r�r�zexp2(0)rrzexp2(1)rIz	exp2(2.3)r�g)��{IJ@r�r�)r�r�rQ�exp2r�r�r�r�r�rUr�r�rfs r�testExp2zMathTests.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�0�|jttj�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�y)Nzfabs(-1)r�rzfabs(0)rzfabs(1))r�r�rQ�fabsr�rfs r�testFabszMathTests.testFabss^�����)�T�Y�Y�/��
�
�:�t�y�y��}�a�0��
�
�9�d�i�i��l�A�.��
�
�9�d�i�i��l�A�.rc��|jtjd�d�d}tdd�D]Z}||z}|jtj|�|�|jtj|�t	|���\|jttjd�|jttjddz�y)Nrr��r��
�d)r�rQ�	factorialr r%r�rz)rb�totalr$s   r�
testFactorialzMathTests.testFactorials����������*�A�.����q�$��A��Q�J�E����T�^�^�A�.��6����T�^�^�A�.��Q��@� �	
���*�d�n�n�b�9����*�d�n�n�r�3�w�h�?rc�V�|jttjd�|jttjd�|jttjd�|jttjd�|jttjt	j
d��|jttjt	j
d��|jttjd�y)N�@g������@r��}Ô%�I���5z5.2)r�r�rQr��decimal�Decimalrfs r�testFactorialNonIntegersz"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��|jttjddz�|jttjd�y)Nr�r��}Ô%�I�T)r�r�rQr�r�rfs r�testFactorialHugeInputsz!MathTests.testFactorialHugeInputs,s4��	
���-�����S��A����)�T�^�^�U�;rc���|jttj�|j	t
t
tjd���|j	tjd�d�|j	tjd�d�|j	tjd�d�|j	tjd�d�|j	tjd�d�|j	tjd	�d
�Gd�d�}Gd
�dt�}Gd�d�}Gd�d�}|j	tj|��d�|j	tj|��d�|j	tjtd��d�|jttj|��|jttj|��|�}d�|_
|jttj|�|jttj|d�|j	tjtd��d�|j	tjtd��d�y)Nr�rr�rr�r�r�r�r����c��eZdZd�Zy)�&MathTests.testFloor.<locals>.TestFloorc��yr�rlrfs r�	__floor__z0MathTests.testFloor.<locals>.TestFloor.__floor__Ar�rN�rirjrkr
rlrr�	TestFloorr@r�rrc��eZdZd�Zy)�'MathTests.testFloor.<locals>.FloatFloorc��yr�rlrfs rr
z1MathTests.testFloor.<locals>.FloatFloor.__floor__Dr�rNrrlrr�
FloatFloorrCr�rrc��eZdZy)�(MathTests.testFloor.<locals>.TestNoFloorNrprlrr�TestNoFloorrFr�rrc��eZdZe�Zy)�)MathTests.testFloor.<locals>.TestBadFloorN)rirjrkrxr
rlrr�TestBadFloorrH�	�� �
�Irrr�g33333�D@�)c��|Sr^rlr�s rr�z%MathTests.testFloor.<locals>.<lambda>Qs��Dr)r�r�rQ�floorr�rTr�r;r\rzr
)rbrrrrr�s      r�	testFloorzMathTests.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�$�|jttj�|j	dtjdd�d�|j	dtjdd�d�|j	dtjdd�d	�|j	d
tjdd�d�|j	d
tjdd�d�|j	dtjdd�d�|jtjtjtd	���|jtjtjd	t���|jtjtjtt���|jttjd	d�|jttjtd	�|jttjtd	�|jttjtd�|jtjdt�d�|jtjdt�d�|jtjdt�d�|jtjdt�d�|jtjdd�d�|jtjdt�d�|jttjtt�y)Nzfmod(10, 1)r�rr�z
fmod(10, 0.5)r�z
fmod(10, 1.5)r�r�zfmod(-10, 1)���r�zfmod(-10, 0.5)zfmod(-10, 1.5)r�r���)r�r�rQ�fmodr�r�rUr�rzr�r�r�rfs r�testFmodzMathTests.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�|���jttj��fd�}|dtjd�d�|dtjd�d�|dtjd	�d
�|dtjd�d
��j	tjt
�dt
��j	tjt�dt��jtjtjt�d��y)Nc���||c\}}\}}t||z
�tkDs||k7r�j|�d|�d|���yy�Nz
 returned z, expected �r'r�r�)r��resultr)�mantrE�emant�eexprbs       �r�	testfrexpz&MathTests.testFrexp.<locals>.testfrexprsJ���)/��&�K�T�3��%���4��:���$��t���	�	����3�4�)4rz	frexp(-1)r�)r�rzfrexp(0)r�rrzfrexp(1)r)r�rzfrexp(2)rI)r�rI)
r�r�rQ�frexpr�r�r�r�rUr�)rbr,s` r�	testFrexpzMathTests.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�����ddlm}|j�|j�z
���fd�}gdfdgdfgd�dfgd�dfgd�d	fgd
�dfgd�d
fgd�dft	dd�D�cgc]}d|z��	c}t
j
d�ft	dd�D�cgc]
}d|z|z��c}t
j
d�fgd�dfgd�dft	ddd�D�cgc]}d|zd|dzzz
d|dzzz��c}dgzt
j
d �fg
}t	d�D�cgc]}d!|z��	}}|jt	d"�D�cgc]}||dz||z
��c}|d"gz|df�t|�D]0\}\}}	tj|�}	|j	|��2dd%lm}
m}m}t	d"�D]�}
gd&�d'z}d}t	d(�D],}|d|
��d)z|z
}||z
}|j|��.||�||�}|j||�tj|����|jtjdtj$g�tj$�|j'tj(tjtj*dg���|jtjd*t-d�d+dd,t-d�d-g�d�|j/ttjd.d.g�|j/ttjtj$tj$g�|j/t0tjd/g�|j/t0tjd�|j/ttjd'd"zg�d0�}|j/t2tj|��ycc}wcc}wcc}wcc}wcc}w#t$r|jd#|||fz�Y���t$r|jd$|||fz�Y���wxYw)1Nr)�
float_infoc	����	d\}}|D][}tj|�\}}ttj|�	��|�	z
}}||kDr|||z
z}|}n|||z
z}||z
}�]t	tt
t|���dz
�	z
�|z
�}|dkDr1d|dz
z}|d|zzt||zxr|d|zdz
z�z}||z
}tj||�S)Nr-rIrrr�)	rQr.rT�ldexp�max�len�binr'�bool)
�iterable�tmant�texprr)rE�tail�h�etiny�mant_digs
        ��r�msumz MathTests.testFsum.<locals>.msum�s����
�
�K�E�4��� �J�J�q�M�	��c���
�
�4�� :�;�S�8�^�c���#�:��d�3�h�&�E��D��S��X�%�D���
����s�3�s�5�z�?�+�A�-��8�%�$�,�G�D��a�x��$�q�&�M���!�A�#���e�a�i�.I�E�A�a�C��E�M�)J�J�������:�:�e�T�*�*rr�)rr�r�0��.�++�d~�QJr��d~�Q�r@)rr�rr@rAr�rB)�@Cr�g��g������?C)rCr���9g@C)g@Cr�rDg@C)g������?Cr�g�<g������?Cri�r�z0x1.df11f45f4e61ap+2r�z-0x1.62a2af1bd3624p-1)r	r�缉ؗ�Ҝ<g��7y�AC)g��7y�ACg�������?g��7y�A�g�����������i�rIr��2�4g�z0x1.5555555555555p+970g333333�?r�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)�ri����rgh�$.5���g#B����;r���rLrrrArB�������spamc3�K�d��t��w�Nr�)�ZeroDivisionErrorrlrr�bad_iterz$MathTests.testFsum.<locals>.bad_iter�s�����I�#�#�s�
)�sysr1r>�min_expr r;�fromhex�append�	enumeraterQ�fsumr�r�rzr�rIrJrKrr�rUrr\r�r�rR)rbr1r?r�test_valuesr$�terms�valsr)�actualrIrJrK�j�s�vrSr=r>s                 @@r�testFsumzMathTests.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�U�1�Q�3�Z�%��(�
"�K�8�U�4�[�L�>�I�
�1�X�I�
�	�
$-�[�#9��A���h�
I����4���
���V�X�.�$:�	2�1��t��A�8�2�=�D��A��3�Z���!�V�X�&�!�+�a�/���Q������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�
P�P�;P$�:P)�) Q/�Q/�.Q/c� �tj}|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d	�|j|dd
�d	�|j|dd�d
�d}d}dD]�}||z}||z}|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|���|j|�d�|j|d�d�|j|d
�d�|j|ddd�d�|j|ddd�d�|jt|d�|jt|dd�|jt|dd�|jt|ddd�|j|td�td��d	�y)Nrrr�rL�����x�T����� j9W P)�}� "o�`T"-� l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k )��	lZ��'^%#�>�;�*Q!/61^�f��^@�U@)rQ�gcdr�r�r�rr)rbrqr�y�c�a�bs       r�testGcdzMathTests.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��A��A����S��A�Y��*����S��A�Y��*����S�!��Q�Z��+����S��Q�B�Z��+����S��Q�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�p
�ddlm}ddlm}tj
}tjtjt	jd�t	jd�t	jd�f}tt|�dz�D]@}|j||d|�t	jtd�|d|D�����B|j|d	d
�d�|j|dd
�d�|j|dd�d�|j|dd�d�|j|dt!d��d�|j|t!d�d�d�|j||d�|d
��d�|j||dd�|d
d��|dd��|j|ddddd�d�|j|dd�d�|j|d�d�|j|�d�|jdt	j"d|d���|j|ddd�|ddd��|j%t&�5|d��ddd�|j%t&�5|ddd �ddd�d!t(j*j,d
zz}|j%t.t0f�5|d|�ddd�|j|t2�t2�|j|dt2�t2�|j|d!t2�t2�|j|d"t2�t2�|j|t4t2�t2�|j|t2t4�t2�|j|t6t4�t2�|j|t4t6�t2�|j|t2t2�t2�|j|t2t2�t2�|j|d!t2�t2�|j9t	j:|t4���|j9t	j:|dt4���|j9t	j:|t4d!���|j9t	j:|d!t4���|j9t	j:|t4t4���|j9t	j:|t4���t<d#z}td�D]D}|j9t	j>||g|z�|t	j|�z���Ftd�D]=}	t@d|	zz}
|jt	j
d$|
zd%|
z�d
|
z��?|j$t&tj
gdgd&z�d'���y#1swY���xYw#1swY���xYw#1swY���xYw)(Nr�r��Fractionr��@g������@rc3�&K�|]	}|dz���y�w)rINrl)�.0r_s  r�	<genexpr>z&MathTests.testHypot.<locals>.<genexpr>)s����5�H�q�a��d�H�s�g(@r��*@rgr��
g�?r�g�?r�rkTFr��%��%@r�r�r�r��r皙�����?�string皙����@r�r r�r�r��rO)!rr�	fractionsrzrQ�hypotr�r��sqrt�gamma�sinr r5�assertAlmostEqual�sumr�r\rRr�r�rTr1�
max_10_exprzr�r�r�r�r�rU�	FLOAT_MAX�isclose�	FLOAT_MIN)rbrrzr�r�r$�int_too_big_for_float�	fourthmaxrrE�scales           r�	testHypotzMathTests.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�<Z�

Z+�Z�Z(�+Z5z7hypot() loses accuracy on machines with double roundingc	��tj}tj}tjd��}dD]�\}}t
j
|�}t
j
|�}|j||||��5tj|�5t||�dz||�dzzj��}ddd�|j|||��ddd���y#1swY�-xYw#1swY��xYw)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�hyrrrrI)rQr�rr�Contextr;rV�subTest�localcontextr�r�)	rbr�r�high_precisionr�r�rrr�zs	         r�testHypotAccuracyzMathTests.testHypotAccuracyns����
�
���/�/�� ���c�2��$
�F�B��J�
�
�b�!�A��
�
�b�!�A������a�1��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$�>C;�/C/�!C;�/C8�4C;�;D	c��ddlm}ddlm}tj
}tj}|j|dd�d�|j|dd�d�td	�D]�}td
�D]q}td�t|�D��}td�t|�D��}|j|||�|td
�t||�D�����s��|j|gd�gd��d�|j|tgd��tgd���d�|j|dd�d�|j|dd�d�|j|td�dfd�d�|j|dtd�df�d�|j|dtd�fd�d�|j|dd�d�|j||d�|d�f|d�|d�f�|d��|j||dd�|dd�f|dd�|dd�f�|dd��|j|dd�d �|j|d!d!�d"�|j|d#d#�d"�|jd$t	jd$|d%d&���|jd$t	jd$|d&d%���|j|d'd(�|d)d(��Gd*�d+t�}	|j||	d�d�d�|j!t"�5|dd,�-�ddd�|j!t"�5|d�ddd�|j!t"�5|dd,d.�ddd�|j!t"�5|dd�ddd�|j!t"�5|d/d�ddd�|j!t$�5|d0d1�ddd�|j!t$�5|dd2�ddd�|j!t"�5|d3d4�ddd�|j!t"�5|d5d6�ddd�d7t&j(j*d
zz}
|j!t$t,f�5|d|
fd8�ddd�|j!t$t,f�5|d8d|
f�ddd�|j!t"�5|d9d�ddd�|j!t"�5|dgd�ddd�Gd:�d;�}|j!t$�5|dg|�g�ddd�td<�D]Q}t/j.�t/j.�}}|j||f|f�t1||z
���St2d=d>d"d?t4t6g}t9j:|d@�A�D]�}t9j:|d@�A�D]�}t||�D�
�cgc]
\}
}|
|z
��}}
}t=t?tj@|��r|j|||�t4��et=t?tjB|��s��|jEt	jB|||�������tFdBz}td�D]�}|f|z}d&|z}|jEt	jH|||�|t	j|�z��|jEt	jH|||�|t	j|�z����td�D]l}tJd |zz}dC|zd@|zf}dD}|jt	j
||�d
|z�|jt	j
||�d
|z��ny#1swY���xYw#1swY���xYw#1swY���xYw#1swY��yxYw#1swY��_xYw#1swY��ExYw#1swY��+xYw#1swY��xYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY��yxYw#1swY��^xYw#1swY��3xYwcc}}
w)ENrrxry)r�r�r�)r�r�r�r��rrIr�)r�rIr��	r�c3�HK�|]}tjdd����y�w����r�N�rI�uniform�r}�ks  rr~z%MathTests.testDist.<locals>.<genexpr>������B��A�&�.�.��Q�/���� "c3�HK�|]}tjdd����y�wr�r�r�s  rr~z%MathTests.testDist.<locals>.<genexpr>�r�r�c3�2K�|]\}}||z
dz���y�w)r�Nrl)r}�px�qxs   rr~z%MathTests.testDist.<locals>.<genexpr>�s����F�I�&�"�b�b�2�g�#�-�I�s�)�,@r�)r�r�r)�r)rI���r�r�r)�rr�r�r�)rIi����)r�r�rIrk)TTFFTT)TFTFFFr�)��*@g)@�
�r�rlr�)r�)r�)r�r�r�)rrr)r�r�r�c��eZdZy)�MathTests.testDist.<locals>.TNrprlrr�Tr��r�rr�)r�r�rn��p�q)rLr�r�)r�r�r�)rrIr�r�)r�rnrL)r�r�rnrL)rrrrrrrrrrrrrrrrrrO)rrrrrrrrrrrrrrrrrr�abc�xyzr�)rIr��rc��eZdZe�Zy)�$MathTests.testDist.<locals>.BadFloatN)rirjrkrxrgrlrr�BadFloatr�rrr��r�r�r�r���repeatr�r�)r�r�)&rrr�rzrQ�distr�r�r �tupler�r��zip�iterr\rRr�r�rzrTr1r�r�rIr'r�r�r��	itertools�product�any�maprVrUr�r�r�r�)rb�D�Fr�r�r$r^r�r�r�r�r��valuesr�r��diffsr�rrEr�s                    r�testDistzMathTests.testDist�sF��(�+��y�y���y�y��	
����o�/?�@�#�F�����i��4�c�:��q��A��1�X���B��q��B�B���B��q��B�B���&�&���A�J���F�C��1�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�A����T�1�$���-�s�1�q�5�z�:��
��t�S�$��S�9���"�"�6�!�4�A��&�&�v�a�8��/2�1�a�y�9�y�V�R���b��y��9��s�4�:�:�u�-�.��$�$�T�!�Q�Z��5���T�Z�Z��/�0��O�O�D�J�J�t�A�q�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��4a�	a�a�*
a+�
a8�8
b�
b�
b�-
b,�:b9�)c�
c�9c �+c-�;c:
�a�a�a(�+a5�8b�b�b�b)�,b6�9c�c�c� c*�-c7c��|jt�5tjddggd��ddd�y#1swYyxYw)NrrI)r�r�r�)r�rzrQr�rfs r�test_math_dist_leakzMathTests.test_math_dist_leak.s.��
�
�
�z�
*��I�I�q�!�f�i�(�+�
*�
*�s	�:�Ac	���ttd��ttdd��ztdd�D��cgc]}tdd�D]
}d|z|z���c}}zd	d
zddzgz}|D]�}|j|�
�5tj|�}|jt
|�t�|j||z|�|j||dz|dzz�ddd���|jt�5tjd�ddd�tjd�}|jt
|�t�|j|d�tjd�}|jt
|�t�|j|d�Gd�dt�}tj|d��}|jt
|�t�|j|d�|jt�5tj|d��ddd�ddtjd�dddg}|D]P}|j|�
�5|jt �5tj|�ddd�ddd��Rycc}}w#1swY��XxYw#1swY���xYw#1swY��xYw#1swY�@xYw#1swY��xYw)Nr�iX>i(F�<rMi����(rIr�i'r�i�r_rr�TFrc��eZdZd�Zd�Zy)�(MathTests.testIsqrt.<locals>.IntegerLikec��||_yr^r_ras  rrcz1MathTests.testIsqrt.<locals>.IntegerLike.__init__Qs	��"��
rc��|jSr^r_rfs rruz2MathTests.testIsqrt.<locals>.IntegerLike.__index__Ts���z�z�!rNrvrlrr�IntegerLiker�Ps��
#�
"rr�i�rr�r{za stringz3.5y@gY@r�)�listr r�rQ�isqrt�assertIsr�rT�assertLessEqual�
assertLessr�rzr��objectrrr�)rbr�r$rZr`r_r��
bad_valuess        r�	testIsqrtzMathTests.testIsqrt3sa��
��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�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� J4�A%J:�K�K�5K,�K �!K,�:K	�K�K� K)�%K,�,K5	c�0�tj}|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd	�d
�|j|d	d�d
�|j|dd
�d�d}d}dD]�}||z}||z}||z|z}|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|�|j|||�|���|j|�d�|j|d�d�|j|d�d�|j|dd	d�d�|j|ddd	�d�|jt|d�|jt|dd	�|jt|dd�|jt|ddd�|j|td�td	��d
�y)Nrrr�rLrcrdiYrerfiHrhrirjl ,�`aUx�-�xB�:Vn
Ldbl�m�e%Y%l};T^�	)rll�|/Kr2rmi�7rorp)rQ�lcmr�r�r�rr)rbr�rrrrsrtru�ds        r�test_lcmzMathTests.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��A��A���	�A����S��A�Y��*����S��A�Y��*����S�!��Q�Z��+����S��Q�B�Z��+����S��Q�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	�	�|jttj�|jttjdd�|j	dtjdd�d�|j	dtjdd�d�|j	dtjdd	�d
�|j	dtjd	d�d�|jt
tjd
d�|jt
tjdd�|j
tjd
d�d�|j
tjdd�d�|j
tjtd�t�|j
tjtd�t�|jtjtjtd���dddddzfD�]j}|j
tjt|�t�|j
tjt|�t�|j
tjd
|�d�|j
tjd|�d�|j
tjd|�d�|j
tjd|�d�|jtjtjt|���|jt
tjd
|�|jt
tjd|�|j
tjd|�d�|j
tjd|�d�|j
tjt|�t�|j
tjt|�t�|jtjtjt|�����my)Nr�r�z
ldexp(0,1)rrz
ldexp(1,1)rIzldexp(1,-1)r�r�zldexp(-1,1)r	r�r�r�i���r�r��i+���順�d(	� F�x:^Vr�r�)r�r�rQr3r�r�r�r�r�r�rUr��rbrs  r�	testLdexpzMathTests.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��|jttj�|jttjddd�|j	dtjdtj
z�d�|j	dtjd�d�|j	dtjtj
�d�|j	d	tjd
d�d�|j	dtjd
dzd
�d�|j	dtjd
dzd�d�|j	dtjd
dz�d�|jttjd�|jttjd
dz�|jttjd
d�|jttjt�|jtjt�t�|jtjtjt���y)NrrIr�zlog(1/e)r�zlog(1)rzlog(e)z	log(32,2)rkr�zlog(10**40, 10)r�r�zlog(10**40, 10**20)r�z
log(10**1000)r�gO�+��@r�r )
r�r�rQ�logr�r�rzr�r�r�r�rUr�rfs r�testLogzMathTests.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	��|jttj�dddzddzfD]C}|j	tj|�tjt|����E|jttjd�|jtjt�t�y)NrI�Zi,r�)	r�r�rQ�log1pr�r;rzr�r�r�s  r�	testLog1pzMathTests.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�,�|jttj�|j	tjd�d�|j	tjd�d�|j	tjd�d�|j	tjddz�d�|j	tjdd	z�d
�|j	tjddz�d�|jt
tjd
�|jt
tjt�|jtjtjt���y)Nrr�rIr�r�r�i�g��@�g�@i�g@�@r�)
r�r�rQ�log2r�rzr�r�rUr�rfs r�testLog2zMathTests.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�3rr�c	��tdd�D�cgc]+}tjtjd|����-}}tdd�D�cgc]
}t	|���}}|j||�ycc}wcc}w)NrFr�r�)r rQr�r3r;r�)rbrr]r)s    r�
testLog2ExactzMathTests.testLog2Exact�so��
:?�u�d�9K�L�9K�A�$�)�)�D�J�J�s�A�.�/�9K��L�&+�E�4�&8�9�&8��E�!�H�&8��9������*��M��9s�0A6�A;c�@�|jttj�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�|j	d	tjdd
z�d�|jt
tjd�|jt
tjdd
z�|jt
tjt�|jtjt�t�|jtjtjt���y)
Nz
log10(0.1)皙�����?r�zlog10(1)rrz	log10(10)r�zlog10(10**1000)r�g@�@r�)
r�r�rQ�log10r�rzr�r�r�r�r�rUr�rfs r�	testLog10zMathTests.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�d�tj}tj}tj
}|j
|tgd��d�d�|j
|ddgddg�d�|j
|gg�d	�|j
|d
gdg�d
�|j
|dgd
g�d
�dd|d
d�|dd�f|d�|d�fdd|d
d�fd|d
d�fd|d�ffD]�}||f||ddd
�ffD]~\}}|j||��5td�t||d��D��}|||�}|j
||�|j
t|�t|��ddd�����|jt|�|jt|g�|jt|ggg�|jt|ddg�|jt|dgd�|jt|dgdg�|jt|ddgdg�|jt|dgddg�|j
|dgdg�d�|j
|dgdg�d�|j
|dgdg�d�|j
|dgdzdgdz�d�|jt|dd zgdg�|jt|dgdd zg�d!�}	|jt �5|t#d�|	d��ddd�|jt �5||	d�t#d��ddd�d	d"lm}
|j
||
d�dg�d	�|j
|dg|
d��d	�Gd#�d$�}|jt �5|d|�dggd��ddd�|jt �5|gd�d|�dg�ddd�|jt�5|d%d
gddg�ddd�|jt�5|ddgd%d
g�ddd�|j
|d&tj(gd'd(g�tj(�|j
|d&tj(gtj(d(g�tj(�|j
|d&tj(gtj(tj(g�tj(�|j
|d&tj(gd'd(g�tj(�|j+tj,|d&tj(gtj(tj(g���|j+tj,|d&tj.gd'd(g���|j+tj,|d&tj(gtj.d(g���|j+tj,|d&tj(gd)tj.g���d*}|j
||�d+�y#1swY���xYw#1swY���xYw#1swY���xYw#1swY��
xYw#1swY���xYw#1swY���xYw#1swY���xYw),N)r�r�r�r��r��@r{g@g�0@rr�r�)r�g�r�r�r�)rr��r�c3�,K�|]\}}||z���y�wr^rl)r}�p_i�q_is   rr~z(MathTests.testSumProd.<locals>.<genexpr>s����"T�=S���c�3��9�=S�s�T��strictr�rr�r�r�rr�i���r�l�9Vr�c3�>K�t|�D]}|���t��wr^)r �RuntimeError)rr$s  r�raise_afterz*MathTests.testSumProd.<locals>.raise_after(s�����1�X�������s�)�BasicIterClassc��eZdZd�Zd�Zy)�*MathTests.testSumProd.<locals>.BadMultiplyc��t�r^�r�rb�others  r�__mul__z2MathTests.testSumProd.<locals>.BadMultiply.__mul__8���"�"rc��t�r^rrs  r�__rmul__z3MathTests.testSumProd.<locals>.BadMultiply.__rmul__:rrN)rirjrkrrrlrr�BadMultiplyr7s��
#�
#rrr�g333333$@g3333334@g�����L>@g�����L4@))r�r�r�)r���r�)rQ�sumprodrrr�rzr�r�r�r�r�r�r�r�rzr�rr �test.test_iterrrr�rUr)
rbrrrzr`r�r�r)r]r
rrr�s
             r�testSumProdzMathTests.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��Q��!�Q�t��t�W��.���1��\�\�A��\�+�"�"T�S��A�d�=S�"T�T�H�$�Q��]�F��$�$�X�v�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[�#[$�[1�[>�\�\�,\%�[!�$[.�1[;�>\�\�\"�%\/zBsumprod() accuracy not guaranteed on machines with double roundingc�,�tj}|j|dgdzdgdz�d�|j|dgdzddgdz�d�|j|ddgdzdgdz�d�|j|gd�dgd	z�d
�y)Nr�r�rr�r�TF)r�g\�n��Tr�g\�n���r�r�)rQrr�)rbrs  r�test_sumprod_accuracyzMathTests.test_sumprod_accuracyVs���
�,�,������#����a�S��V�4�c�:�����#����d�E�]�R�-?�@�#�F�����$����!3�c�U�R�Z�@�#�F�����!<�s�e�A�g�F��Lr�cpuc�P��tj}tj}tj
}tj}G�fd�dt��G�fd�dt�}d�}d�}ddd	d
ddd
ddzd�d�f
ddddzzdddzzdddzzdddddddzf	dd d!td"�td"�td#�d$d%d&|d'�d(fd)d*|d+�|d,�|d'd-�|d.d/�d0d1d2�d�f
|d3�|d4�|d5�|d6�|d7�|d7�|d#�d8d9f	d:dddzzddd;d<d=d>fd?d@dAdBdCdDdEd�dF�fg	}|D]U}	tdG�D]E}
||	|
�H�D]6}||	|
�H�D]'}||f}
|j||g|
���||g|
���|
��)�8�G�Wy)INc�0��eZdZ�fd�Z�fd�ZeZeZd�Zy)�*MathTests.test_sumprod_stress.<locals>.Intc�>���t|�t|�z�Sr^�rT�rbr�Ints  �r�__add__z2MathTests.test_sumprod_stress.<locals>.Int.__add__i�����3�t�9�s�5�z�1�2�2rc�>���t|�t|�z�Sr^r&r's  �rrz2MathTests.test_sumprod_stress.<locals>.Int.__mul__kr*rc� �dt|��d�S)NzInt(�)r&rfs r�__repr__z3MathTests.test_sumprod_stress.<locals>.Int.__repr__o����c�$�i�[��*�*rN�rirjrkr)r�__radd__rr.�r(s�rr(r$h����
3�
3��H��H�
+rr(c�0��eZdZ�fd�Z�fd�ZeZeZd�Zy)�*MathTests.test_sumprod_stress.<locals>.Fltc�>���t|�t|�z�Sr^r&r's  �rr)z2MathTests.test_sumprod_stress.<locals>.Flt.__add__sr*rc�>���t|�t|�z�Sr^r&r's  �rrz2MathTests.test_sumprod_stress.<locals>.Flt.__mul__ur*rc� �dt|��d�S)NzFlt(r-r&rfs rr.z3MathTests.test_sumprod_stress.<locals>.Flt.__repr__yr/rNr0r2s�r�Fltr5rr3rr9c�H�	d}t||d��D]
\}}|||zz
}�|S)NrTr	)r�)r�r�r�rrs     r�baseline_sumprodz7MathTests.test_sumprod_stress.<locals>.baseline_sumprod|s8��
��E���1�T�2���S���s��"��3��Lrc��		||�}dt|�t	|�fS#ttf$r�t$r}t|�ddfcYd}~Sd}~wwxYw)N�None)�AssertionError�	NameError�	Exceptionr��repr)�funcr�r(r�s    r�runz*MathTests.test_sumprod_stress.<locals>.run�s]��V�
-��t���
��f��t�F�|�3�3��	#�I�.�
���
-��A�w��f�,�,��
-�s��A�
A
�A�
Ar�r�i�llrrrI�Pr�rL)	�@g�g@��&@gy@g�?��?r�g���3�r�r�r�r�i�i:,rEr�g8�r�ig@rr�r�NaNr�r�y@@r�r�r�g�z10.5z-2.25r�i�����y@�?�ai���z6.125z12.375z-2.75r�Infrgg+@gp�l�����gp�g`�g�)g<�g��rHg�rFg�g�g`7@TFr�r�r�)rQrr�r�rrr�rzrTr;r r�)rbrr�rrzr9r;rC�pools�pool�size�args1�args2r�r(s              @r�test_sumprod_stresszMathTests.test_sumprod_stressas�����,�,���#�#���/�/���%�%��	+�#�	+�	+�%�	+�	�	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�!(��d�!;�� %�u�~���(�(�� 0�8�4�8���/�$�/� ��"<�8�!�rc	�R�����	�
���
����������ddl�ddlm�ddlm�ddlm}ddlm�m	�m
�ddlm�
m
�m�ddlm}|dd	�����fd
���fd��d������
�����f	d
��	��fd��
�	�
fd��d}d�d�|���fd�t#|�D��}|j%|d�y)Nrry)�starmap)�
namedtuple)r�r�r�)�choicesr�rK)�median�
DotExample)rrr�target_sumprod�	conditionc
���t�|�}t�|�}t��jt||d����S)NTr	)r�r��mulr�)rrr�vec1�vec2rz�operatorrUs    ���r�DotExactzDMathTests.test_sumprod_extended_precision_accuracy.<locals>.DotExact�s:����x��#�D��x��#�D��w�x�|�|�S��t�D�-I�J�K�Krc�z��d�tt|�tt|��zt�||��zS)Nr�)r�r')rrrras  �r�	ConditionzEMathTests.test_sumprod_extended_precision_accuracy.<locals>.Condition�s1�����#�c�1�+�s�3��{�;�;�c�(�1�a�.�>Q�Q�Qrc�`�||z
|dz
z}t|�D�cgc]
}|||zz��c}Scc}wr)r )�lo�hir�widthr$s     r�linspacezDMathTests.test_sumprod_extended_precision_accuracy.<locals>.linspace�s8���"�W��Q��'�E�,1�!�H�5�H�q�B����N�H�5�5��5s�+c���	�	|dz}dg|z}dg|z}�|�}�
tt|dz��|��}t|dz�dz|d<d|d<|D�cgc]}�dd��|�z��c}|d||D�cgc]}�dd��|�z��c}|d|ttt�|dzd||z
���}t||�D]H}�dd��|||z
�z||<�dd��|||z
�z�||�z
||z||<�Jtt||��}	�|	�t|	�\}}�||�||��
||��Scc}wcc}w)	NrIr�)r�rrr�r�r�)r rTr�r��roundr�)rrs�n2rrrrur�r�r$�pairsrcrarYrWr�rhr�rKr�s          ���������r�GenDotzBMathTests.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�A�>�A�c�r�F�<=�>�A�q�g�d�C�(�4��7�2�A�>�A�c�r�F��S����1��c�A�b�D� 9�:�;�A��2�q�\���t�S�)�D��1�r�6��O�;��!����c�*�T�!�A��F�)�_�<�x��1�~�M�QR�ST�QU�U��!��"�
��Q���O�E��E�N���;�D�A�q��a��H�Q��N�I�a��O�D�D��?��>s�E�;Ec�p��|\}}}}�t|�|gzt|�dgz�}�||z�Sr)r�)	�res�exrrrrZr[rrar�s	       ��r�
RelativeErrorzIMathTests.test_sumprod_extended_precision_accuracy.<locals>.RelativeError�sD���.0�+�A�q�.�)���a��S�D�6�)�4��7�a�S�=�9�A���N�*�+�+rc�b���d|�}||j|j�}�||�S)Nr�)rrr)�dotfuncrsrrprormrqs     ��r�TrialzAMathTests.test_sumprod_extended_precision_accuracy.<locals>.Trial�s/�����A��B��"�$�$����%�C� ��b�)�)rr�r�gꌠ9Y>)Fc3�N�K�|]}�tj������y�wr^)rQr)r}r$rtrsrs  ���rr~zEMathTests.test_sumprod_extended_precision_accuracy.<locals>.<genexpr>s�����N��A�e�D�L�L�!�Q�7��s�"%rE)r`r�rzr�rU�collectionsrVrQr�r�r�rIrWr�rK�
statisticsrXr r�)rbrVrX�times�relative_errrcrarYrzrmrqrtrsrWr�r�rhr�rr`rKrUr�s     @@@@@@@@@@@@@@@@@@r�(test_sumprod_extended_precision_accuracyz2MathTests.test_sumprod_extended_precision_accuracy�s������	�&�%�*�)�)�4�4�%���.W�X�
�	L�
	R�	6�$	E�$	E�L	,�
	*�
�������N��u��N�N������e�,rc�V���jttj��fd�}|dtjd�d�|dtjd�d��j	tjt
�dt
f��j	tjt�d	tf�tjt�}�jtj|d
���jtj|d��y)Nc���||c\}}\}}t||z
�tkDst||z
�r�j|�d|�d|���yyr&r')r�r(r)�v1�v2�e1�e2rbs       �r�testmodfz$MathTests.testModf.<locals>.testmodfsN���!'���H�R��h�r�2��2�b�5�z�C��3�r�"�u�:��	�	����3�4�$.rz	modf(1.5)r�)r�r�z
modf(-1.5)r�)r�r�r�r�rr)
r�r�rQ�modfr�r�r�r�r�rU)rbr��modf_nans`  r�testModfzMathTests.testModfs�������)�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�%�|jttj�|j	dtjdd�d�|j	dtjdd�d�|j	dtjdd�d�|j	dtjdd�d	�|jtjtd�t�|jtjtd�t�|jtjdt�d
�|jtjdt�d
�|jtjtjtd���|jtjtjdt���|jtjtjdt���|jtjdt�d�|jttjdd�|jtjdt�d�|jtjdd
�d�|jtjdd�d�|jtjdd�d�|jtjdd�d
�|jtjdd�d
�|jttjdd�|jttjdd�|jttjdd�|jtjdt�t�|jtjtjdt���|jtjtt�t�|jtjtd
�t�|jtjtd�t�|jtjtd�t�|jtjtd�d
�|jtjtd�d
�|jtjtd�d�|jtjtd�d�|jtjtd�d�|jtjtt�d�|jtjtjtt���|jtjdt�d�|jtjdd
�d�|jtjdd�d�|jtjdd�d�|jtjdd�d
�|jtjdd�d
�|jttjdd�|jttjdd�|jttjdd�|jtjdt�t�|jtjtjdt���|jtjtt�t�|jtjtd
�t�|jtjtd�t�|jtjtd�t�|jtjtd�d
�|jtjtd�d
�|jtjtd�d�|jtjtd�d�|jtjtd�d�|jtjtt�d�|jtjtjtt���|jtjdt�d
�|jtjdd
�d�|jttjdd�|jtjdd�d
�|jtjdd�d
�|jtjdd�d
�|jtjdd�d
�|jttjdd�|jtjdd�d�|jtjdt�d
�|jtjtjdt���|jtjd
t�d
�|jtjd
d
�d
�|jtjd
d�d
�|jtjd
d�d
�|jtjd
d�d
�|jtjd
d�d
�|jtjd
d�d
�|jtjd
d�d
�|jtjd
d�d
�|jtjd
t�d
�|jtjd
t�d
�|jtjdd�d
�|jtjdd�d
�|jtjtd�d
�|jtjdd�d
�|jtjdd�d
�|jtjtd�d
�|jttjdd�|jttjdd�|jtjdt�d�|jtjdt�d�|jtjdt�t�|jtjdt�t�|jtjdt�t�|jtjdt�t�|jtjdt�d�|jtjdt�d�|jtjdt�t�|jtjdt�t�|jtjdt�d�|jtjdt�d�|jtjdt�d�|jtjdt�d�|jtjdt�t�|jtjdt�t�|j	dtjdd
�d �|j	d!tjdd�d"�|j	d#tjdd
�d�|j	d$tjdd�d
�|j	d%tjdd�d
�|j	d&tjdd�d'�|j	d(tjdd�d)�|j	d*tjdd�d+�|jttjdd'�|jttjdd	�y),Nzpow(0,1)rrzpow(1,0)zpow(2,1)rIz	pow(2,-1)r�r�r�rr�r�r�r�r�g�r�r!r�g.�g�������gffffff�?r���������?r�g��������g�������g�������gffffff��z	(-2.)**3.g �z	(-2.)**2.r�z	(-2.)**1.z	(-2.)**0.z
(-2.)**-0.z
(-2.)**-1.r�z
(-2.)**-2.rGz
(-2.)**-3.g��)
r�r�rQ�powr�r�r�r�r�rUr�r�rzrfs r�testPowzMathTests.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���|jttj�|j	dtjd�tj
�|j	dtjd�tj
dz�|j	dtjd�tj
dz�|j	d	tjd
�d
�y)Nzradians(180)�zradians(90)r�rIzradians(-45)i���r�z
radians(0)r)r�r�rQ�radiansr�r�rfs r�testRadianszMathTests.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����ddlm���fd�}gd�}|D]�}�j|��5|j�\}}}tj|�}tj|�}tj|�}	||||	�t
j||�}
�j|
j�|	j��ddd���tjd�}tdd�D]d}|dk(r�	||z}td	�D]I}
|
|z}t
j||�}
||||
�t
j||�}
||||
��K�ftd
ddd
ttfD]T}�jt
jt|���jt
j|t���VdD]V}�jt
j|t�|��jt
j|t�|��Xtd
dd
dtfD]�}�jt �5t
jt|�ddd��jt �5t
jt|�ddd��jt �5t
j|d
�ddd��jt �5t
j|d�ddd���y#1swY��xYw#1swY��xYw#1swY��xYw#1swY�exYw#1swY��xYw)Nrryc�D��	�|��|��|�}}}�jt|�t|dz��||z
|z}�j|t|��t|�t|dz�k(r"�j|dzt|dz��yy)NrI)r�r'r�rT)	rrr�r�fx�fy�frrrzrbs	       ��r�
validate_specz.MathTests.testRemainder.<locals>.validate_spec�s����
�"�!��h�q�k�8�A�;�B��B�� � ��R��#�b��d�)�4��b��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��rr�r�r�r�r�)r�r�r�r�r�)r�rzr�r:r;rVrQ�	remainderr��hexr r�r�r��assertIsNaNr�rz)rbr��	testcasesr��x_hex�y_hex�expected_hexrrrr)r]�tinyr�mr`rzs`              @r�
testRemainderzMathTests.testRemainder�s����&�
	0� 9
�	�v�D����4��(�-1�Z�Z�\�*��u�l��M�M�%�(���M�M�%�(�� �=�=��6���a��H�-�����1�-��� � �����x�|�|�~�>�)�(���}�}�Y�'���s�B��A��A�v���D��A��3�Z����H������1�-���a��F�+������A�.���q�b�!�V�,� �	 ��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�
L �L,�=L8�1M�L	� L)	�,L5	�8M	�M	c��|jttj�|j	dtjd�d�|j	dtjtj
dz�d�|j	dtjtj
dz�d�	|j
tjtjt���|j
tjtjt���|j
tjtjt���y#t$rU|jttjt�|jttjt�Y��wxYw)Nzsin(0)rz	sin(pi/2)rIrz
sin(-pi/2)r�)r�r�rQr�r�r�r�rUr�r�rzr�rfs r�testSinzMathTests.testSin5s
�����)�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�	:�s�;A6E-�-AG�
Gc��|jttj�|j	dtjd�d�|j	dtjd�dztj
d�dzz
d�|j	dtjd�tjd�zd�|j
tjt�t�|j
tjt�t�|jtjtjt���y)Nzsinh(0)rzsinh(1)**2-cosh(1)**2rrIr�zsinh(1)+sinh(-1))r�r�rQ�sinhr�r�r�r�r�r�rUr�rfs r�testSinhzMathTests.testSinhBs������)�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���|jttj�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d�|j	dtjd�d	�|j	d
tjd�d�|j	d
tjd�d�|j	dtjd�d�|jtjt�t�|jttjd�|jttjt�|jtjtjt���y)Nzsqrt(0)rr�z	sqrt(2.5)rgS[�:XL�?z
sqrt(0.25)rGr�zsqrt(25.25)g@9@g�)#L�@zsqrt(1)rzsqrt(4)r�rIr�)r�r�rQr�r�r�r�rzr�r�rUr�rfs r�testSqrtzMathTests.testSqrtKs"�����)�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��|jttj�|j	dtjd�d�|j	dtjtj
dz�d�|j	dtjtj
dz�d�	|j
tjtjt���|j
tjtjt���|j
tjtjt���y#|jttjt�|jttjt�Y��xYw)Nztan(0)rz	tan(pi/4)r�rz
tan(-pi/4)r�)r�r�rQ�tanr�r�r�rUr�r�rzr�rfs r�testTanzMathTests.testTanYs�����)�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�s�;A6E-�-AGc�X�|jttj�|j	dtjd�d�|j	dtjd�tjd�zdtj
d���|j	dtjt�d�|j	dtjt�d�|jtjtjt���y)	Nztanh(0)rztanh(1)+tanh(-1)rr�r�z	tanh(inf)z
tanh(-inf))r�r�rQ�tanhr�r�r�r�r�rUr�rfs r�testTanhzMathTests.testTanhfs������)�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���|jtjd�d�|jtjdtjd��tjdd��y)Nr�r�)r�rQr�rRrfs r�testTanhSignzMathTests.testTanhSignosM��	
������3���-�������r�4�9�9�S�>�:����r�3�/�	1rc��|jtjd�d�|jtjd�d�|jttjd��t�|jttjd��t�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd	�d
�Gd�d�}Gd
�dt
�}Gd�d�}Gd�d�}|jtj|��d�|jtj|��d�|j
ttj�|j
ttjdd�|j
ttjtd��|j
ttj|��|j
ttj|��y)Nrr�r�r�g����?g�����g�!��rg-���?Y�i����c��eZdZd�Zy)�'MathTests.test_trunc.<locals>.TestTruncc��y�N�rlrfs r�	__trunc__z1MathTests.test_trunc.<locals>.TestTrunc.__trunc__�r�rN�rirjrkr�rlrr�	TestTruncr��r�rr�c��eZdZd�Zy)�(MathTests.test_trunc.<locals>.FloatTruncc��yr�rlrfs rr�z2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__�r�rNr�rlrr�
FloatTruncr��r�rr�c��eZdZy)�)MathTests.test_trunc.<locals>.TestNoTruncNrprlrr�TestNoTruncr��r�rr�c��eZdZe�Zy)�*MathTests.test_trunc.<locals>.TestBadTruncN)rirjrkrxr�rlrr�TestBadTruncr��rrr�r�rIg�7@)
r�rQ�truncr�rTr;r�r�r\rz)rbr�r�r�r�s     r�
test_trunczMathTests.test_truncvs���������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�2�|jtjd��|jtjd��|jtjd��|jtjd��|jtjt	d���|jtjt	d���|jtjt	d���y)Nr�r�r�r�rrr)r�rQ�isfinite�assertFalser;rfs r�testIsfinitezMathTests.testIsfinite�s�������
�
�c�*�+�����
�
�d�+�,�����
�
�c�*�+�����
�
�d�+�,�������u�U�|�4�5�������u�U�|�4�5�������u�V�}�5�6rc��|jtjtd���|jtjtd���|jtjtd�dz��|j	tjtd���|j	tjd��|j	tjd��y)Nrz-nanrr�r�)r�rQrUr;r�rfs r�	testIsnanzMathTests.testIsnan�s�������
�
�5��<�0�1�����
�
�5��=�1�2�����
�
�5��<�"�#4�5�6�������E�%�L�1�2�������B��(�������B��(rc�2�|jtjtd���|jtjtd���|jtjd��|jtjd��|j	tjtd���|j	tjd��|j	tjd��y)Nrrg�g�rr�r�)r�rQrVr;r�rfs r�	testIsinfzMathTests.testIsinf�s�������
�
�5��<�0�1�����
�
�5��=�1�2�����
�
�5�)�*�����
�
�6�*�+�������E�%�L�1�2�������B��(�������B��(rc���|jtjtj��|j	tj
dtj�d�yrQ)r�rQrUrr�rRrfs r�test_nan_constantzMathTests.test_nan_constant�s:������
�
�4�8�8�,�-�������r�4�8�8�4�b�9rc�N�|jtjtj��|j	tjd�|jtjt
d��|jtjt
d��y)Nr�rr)r�rQrVr�
assertGreaterr�r;rfs r�test_inf_constantzMathTests.test_inf_constant�sa������
�
�4�8�8�,�-����4�8�8�S�)�������5��<�0����$�(�(��E�&�M�2rzrequires verbose modec�d�	tjd�}dk7r|jd�	tjd�}|jd�	tjd�}|jd�y#|jd�Y�zxYw#t$rY�KwxYw#t
$rYywxYw)	Ni6e�z6underflowing exp() should not have raised an exceptionrz)underflowing exp() should have returned 0iʚ;z.overflowing exp() didn't trigger OverflowErrorr�z sqrt(-1) didn't raise ValueError)rQrEr�r�r�rz�rbrs  r�test_exceptionszMathTests.test_exceptions�s���	(�����%�A�
��6��I�I�A�B�	H�����$�A�
�I�I�F�G�	:��	�	�$��A�
�I�I�8�9��5	(�
�I�I�'�
(���	��	���	��	�s.�A<�B�B#�<B�	B �B �#	B/�.B/c���dh}d}tjdk(r@tj�d}	tt	t
|j
d���}d}g}tt�D]�\}}}}	}
}}|	dk7s|dk7r�|dvr�|�
|dkr||vr�'tt|�}
d	|vsd
|vrd}
nd|vrd
}
	|
|�}|dvrtj|
|�}
d\}}t|
|||�}|���|j||||�}|j!|���|r$|j#ddj%|�z�yy#t$rY��wxYw#t$rd}Y��t$rd
}Y��wxYw)N�tan0064�darwinr�.�{}: {}({!r}): {}r�)�rect�polar)r�r��invalid�divide-by-zerorz�overflowr�)�sqrt0002�sqrt0003�sqrt1001�sqrt1023�r�r�zFailures in test_testfile:
  �
  )rT�platform�mac_verr�r�rTr:rzrO�	test_file�getattrrQr�rRrZr(rWr��join)rb�
SKIP_ON_TIGER�osx_version�version_txtrX�failuresrArB�ar�ai�er�eirFrBr(r+r,rW�msgs                   r�
test_testfilezMathTests.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�r�*�� &��G�W�"�2�v�w��@�G�����/�/�"�b�"�g�6�C��O�O�C� �S.G�V��I�I�6��k�k�(�+�,�
-���c�
��
��6�
&�%�� �
)�(��
)�s)�(D;�5E
�;	E�E�
E$�
E$�#E$c���d}g}tt�D]�\}}}}}tt|�}d|vsd|vrd}nd|vrd}	||�}	d\}
}|dk(rd	}
n$|d
k(rd}n|dk(r|d
k\r|dkrd}
n
|dkrd}
nd}
t
||	|
|�}|��u|j||||�}
|j|
���|r$|jddj|�z�yy#t$rd}	Y��t
$rd}	Y��wxYw)Nr�r�r�rzr�r�r�r�r��lgammagV瞯�<�erfcr�r�r��$@r�r�zFailures in test_mtestfile:
  r�)rG�math_testcasesr�rQrzr�rZr(rWr�r�)rbrXr�rArBrCr)rFrBr*r+r,rWr�s              r�test_mtestfilezMathTests.test_mtestfile sA��%����,;�N�,K�(�B��C��5��4��$�D��E�!�%5��%>�'���u�$�*��
&��3�i�� &��G�W��W�}����x��
 ���v��#��*���9� �G��4�Z�!�G�"�G�"�8�S�'�7�C�G�����/�/�"�b�#�w�7�C��O�O�C� �q-L�t��I�I�7��k�k�(�+�,�
-���a�
#�"�� �
&�%��
&�s�C�C1�$
C1�0C1c�n�ddlm}tj}|j	|g�d�|j	|gd��d�|j	|tt
dd���d�|j	|ttt
dd����d�|j	|t
dd	�d	��d
�|j	|gd��d�|j	|gd
��d�|j	|gd��d�|j	|gd��d�|j	|d|dd�g�d�Gd�d�}|jt�5|d|�g�ddd�|j	|gd��d�|j	|gd��td��|jt|�|jt|d�|jt|gd��|jt|gd�d��|jt|ddgd��td�td �g}|jt||td���|jt|dgdgdgg�|jt|ddig�|jt|ddigdzddi��|jt|dgdgdggg��|j	|ddgd!��d"�|j	|ddgddg��gd#��|j	|gddi��ddi�|jt�5|d	d$gd�ddd�|j	|gd%��d�|j	|gd&��d�|j	|gd'��d�d7d(�}t
dd)�}|j	||�||��t
d*d+�}|j	||�||��t
d,d-�}|j	||�d�t
dd-�D�cgc]
}t|���}}|j	||�||��t
d,d+�D�cgc]
}t|���}}|j	||�||��t
d,d-�D�cgc]
}t|���}}|j||��|j|dddtd.�ddg��|j|ddtd.�ddg��|j|dtd.�ddg��|j|dtd/�td.�dg��|j|dtd0�td.�dg��|j|dtd.�td/�dg��|j|dtd.�td0�dg��|j	|dddtd/�d1d2g�td0��|j	|dddtd0�d1d2g�td/��|j|dddtd/�d1d2g��|j|dddtd0�d1d2g��|j|dddtd/�d1ddg��|j|dddtd0�d1ddg��|j	t|gd3���t�|j	t|gd4���t�|j	t|t
dd)���t�|j	t|t
dd)�d���t�|j	t|dt!j"d5�dd2dd6g��t j"�y#1swY���xYw#1swY���xYwcc}wcc}wcc}w)8Nrryrr�)rrIr�i�r�i_7)rrIr�r�r�re)r�r�r�r�r�ro)rrIr�r�r�)r�r�r�r�r�r�r�r�c��eZdZd�Zy)�(MathTests.test_prod.<locals>.BadMultiplyc��t�r^rrs  rrz1MathTests.test_prod.<locals>.BadMultiply.__rmul__urrN)rirjrkrrlrrrr�ts��
#rrr�)rr�rrr�)r�r�r�rrr�)rtrurs��a�cr�b�ab�abababababab)rrIrrIrrIrrIrrIrrIr�)rrrIr�)rrrIr�)rrIr�rc��|D]}||z}�	|Sr^rl)r8r�elems   r�_naive_prodz(MathTests.test_prod.<locals>._naive_prod�s�� ����
��!��Lri'i���r�i���r�rrrr�r�)rrIr�r�r�rn)rr�r�r�r�rnr�rnr�)r�rzrQ�prodr�r�r r�r�rr;r��	bytearrayr�r�rTrr)rbr�rrr�rr8rs        r�	test_prodzMathTests.test_prodcs��+��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�6��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*�4`�#`�`(�`-�`2�`�`%c�	�tj}tj}td�D]`}|dkrt|dz�n|dkrtd�n
td�D]-}|j	|||�||�|||z
�z��/�btdd�D]I}td|�D]8}|j	|||�||dz
|dz
�|z||dz
|�z��:�Ktdd�D]S}|j	||d�d�|j	||d�|�|j	|||�||���Utd�D]?}|j	||�||��|j	||d�||���A|jt|dd	�|jt|dtjd	��|jt|dd
�|jt|dd�|jt|tjd�d�|jt|dd�|jt|�|jt|ddd
�|jt|�|jt|dd�|jt|ddzd�|jt|dd�|jt|dddz�|j	|dd�d�|j	|dddz�d�ddz}|j	||d�d�|j	||d�|�|j	||d�||dz
z�tjd��r|jt|||�dD]D\}}|j	|||�d�|jt|||��t��F|j	|t!d�t!d��d�|j	|t#d�t#d��d�td
�D]r}|jt|t!d�t!|���t�|jt|t#d�t#|���t��ty)Nr�r�rrMr�r�rr�r��1r��10r�r�rIr�T��cpython�)TT)TF)FFr�)rQ�permr�r r�r�r�rrrzr�check_impl_detailr�r�r�rTrorr)rbrr�rr�s     r�testPermzMathTests.testPerm�s���y�y���N�N�	��s��A�&'�#�g�e�A��E�l��C��5��9�U�SU�Y�V��� � ��a���!*�1���1�q�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�!�Q�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�1�a�8�?�D�A�q����T�!�Q�Z��+��M�M�$�t�A�q�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�
�tj}tj}td�D]i}|dkrt|dz�n|dkrtd�n
td�D]6}|j	|||�||�||�|||z
�zz��8�ktdd�D]F}td|�D]5}|j	|||�||dz
|dz
�||dz
|�z��7�Htd�D]4}|j	||d�d�|j	|||�d��6tdd�D]7}|j	||d�|�|j	|||dz
�|��9td�D]8}t|dz�D]%}|j	|||�||||z
���'�:|jt|dd	�|jt|dtjd	��|jt|dd
�|jt|dd�|jt|tjd�d�|jt|dd�|jt|d�|jt|ddd
�|jt|�|jt|dd�|jt|ddzd�|jt|dd�|jt|dddz�|j	|dd�d�|j	|dddz�d�ddz}|j	||d�d�|j	||d�|�|j	||d�||dz
zdz�|j	|||�d�|j	|||dz
�|�|j	|||dz
�||dz
zdz�tjd��r|jt|||dz�dD]D\}}|j	|||�d�|jt|||��t��F|j	|t!d�t!d��d�|j	|t#d�t#d��d�td
�D]r}|jt|t!d�t!|���t�|jt|t#d�t#|���t��ty)Nr�r�rrMr�r�rrIr�r
r�rr�r�r�Trrr�)rQ�combr�r r�r�r�rrrzrrr�r�r�rTrorr)rbrr�rr�s     r�testCombzMathTests.testComb		s����y�y���N�N�	��s��A�&'�#�g�e�A��E�l��C��5��9�U�SU�Y�V��� � ��a���Y�q�\�!�!��y��Q��'7�7�.9�:�W���q�#��A��1�a�[��� � ��a���T�!�a�%��Q��-?�$�q�1�u�a�.�-P�Q�!��
�s��A����T�!�Q�Z��+����T�!�Q�Z��+���q�#��A����T�!�Q�Z��+����T�!�Q��U�^�Q�/��
�s��A��1��6�]��� � ��a���T�!�Q��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�a�C�y�A�~�6��$�$�T�2����m�T�1�a��d�;�?�D�A�q����T�!�Q�Z��+��M�M�$�t�A�q�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��|jtjdt�d�|jtjdt�d�|jtjdd�d�|jtjdd�d�|jtjd	t�tjd
��|jtjd	t�tjd��|jtjd	td�
�tjd
��|jtjd	td�
�tjd��|jtjd	td�
�tjd��|jtjd	td�
�tjd��t
dd�D]z}|jtjdd|�
�d�|jtjdd|�
�d�|jtjdd|�
�d��|tjjtjjz}|jtjdt�|�|jtjdt�|�|jtjdt�|�|jtjdt�|�|jtj|d�d�|jtj|d�d�|jtj|d�d�|jtj|d�d�tjj}|jtjtd�|�|jtjtd�|�|jtj|t�t�|jtj|t�t�|jtjtd	��|jtjd	t��|jtjtt��|jd	tjd	td�
��|jt �5tjd	td�
�ddd�y#1swYyxYw)Ng0Cg������/Cg0Cg�Cr�g�������Cg��g��������r�z0x1.fffffffffffffp-1z0x1.0000000000001p+0r)�stepsr�z0x1.ffffffffffffdp-1z0x1.0000000000003p+0r�r�r�rr�)r�rQ�	nextafterr�r;rVr �assertEqualSignrTr1�min�epsilonr4r�r�r�rz)rbr�smallest_subnormal�largest_normals    r�test_nextafterzMathTests.test_nextafterO	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�.W�Wc�D�|jtjd�tjj
�|jtjd�d�|jtjd�d�|jtjd�d�|jtjd�tjjtjj
z�|jtjt�ttjtt�z
�|jtjt�t�|jtjtj��ddddtfD]V}|j|��5|jtj|�tj|��ddd��Xy#1swY�cxYw)	Nr�l�lr�lg�@r�r�)
r�rQr�rTr1rrr�rr�r�rr�r�s  r�test_ulpzMathTests.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�,�Gd�d�}tjtjtjfD]L}|�}|j	t
�5|d|�ddd�|j
t|dd���Ny#1swY�(xYw)Nc��eZdZd�Zy)�$MathTests.test_issue39871.<locals>.Fc��d|_ddzy)NTrr)�	convertedrfs rrgz.MathTests.test_issue39871.<locals>.F.__float__�	s��!%����!�rN)rirjrkrgrlrrr�r"�	s��
rr�znot a numberr$F)rQr�rRr�r�r�r�r�)rbr�rBrrs    r�test_issue39871zMathTests.test_issue39871�	so��	�	��J�J��
�
�t�~�~�=�D���A��"�"�9�-��^�Q�'�.�

���W�Q��U�;�<�>�-�-�s�
B
�
B	c���|jttjd�|jttjd�|jttj
dd�|jttj
dd�|jttj
d�|jttj
ddd�y)NrOr�r�r�)r�r�rQrE�erfr�rfs r�test_input_exceptionszMathTests.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�p�tj|�s!|jdj|��yy)NzExpected a NaN, got {!r}.)rQrUr�r(ras  rr�zMathTests.assertIsNaN�	s+���z�z�%� ��I�I�1�8�8��?�@�!rc��	|j||�|jtjd|�tjd|��yrQ)r�rQrR)rbrrrs   rrzMathTests.assertEqualSign�	s?��	�	
����A��������s�A�.��
�
�c�1�0E�FrNr�)Vrirjrkr�r�r�r�r�r�r�r�r�r�r�rr�r��unittest�skipIfrTr��machiner�r�r�r�r�r�rr�cpython_onlyrrr#r/�HAVE_DOUBLE_ROUNDINGrarvr�r�r�r�r�r�r�r�r�r��requires_mac_verr�rrr �requires_resourcerSrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��
skipUnlessrr�r�r�rrrrrr%r(r�rrlrrrr�s���6�.�	4�5�	4�5�4�	5�<:�|4� %;�N�:��:�B3��X�_�_�S�\�\�W�,�W�1A��1A�1A�1C�GW�1W�[�]�4�]�4�5�<�	=�/�@�:�
���<��<�#<�J;�.8�$��X�_�_�)�M�O�mD�O��mD�^(E�TOF�b��X�_�_�)�N�P�:1�P��:1�x7�B)�
3&�j*F�X<�B3�$/��4��4�"��W���b�!�$�+�%��+�
5�^.�B��X�_�_�)�]�_����M��_��M��W���u�%�H�&�H�T��X�_�_�)�]�_�����W���u�%�Q-�&��_��
Q-�f1�&H;�l5��~,��~,�@3�4�4�3�4��1��1�B�@7�)�)�:�
3��X����"9�:�:�;�:�>�=-��=-�~�@-��@-�Dd*�L>K�@DK�L�8/��8/�v�<��<�,=� @�A�Grrc�~�eZdZejZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zy)�IsCloseTestsc�`�|j|j||g|��i|��|�d|�d���y)N� and z should be close!�r�)r�r��rbrtrur��kwargss     r�
assertIsClosezIsCloseTests.assertIsClose�	s5���������Q��;�D�;�F�;�<=�q�A�	�	Crc�`�|j|j||g|��i|��|�d|�d���y)Nr6z should not be close!r7)r�r�r8s     r�assertIsNotClosezIsCloseTests.assertIsNotClose�	s7���������a��<�T�<�V�<�AB�A�F�	�	Hrc�F�|D]\}}|j||g|��i|���yr^)r:�rb�examplesr�r9rtrus      r�assertAllClosezIsCloseTests.assertAllClose�	s,���D�A�q��D���q�!�5�d�5�f�5�rc�F�|D]\}}|j||g|��i|���yr^)r<r>s      r�assertAllNotClosezIsCloseTests.assertAllNotClose�	s,���D�A�q�!�D�!�!�!�Q�8��8��8�rc��|jt�5|jddd��ddd�|jt�5|jdddd��ddd�y#1swY�=xYw#1swYyxYw)Nrg0��.�+���rel_tolr@g _�©rEr,)r�rzr:rfs r�test_negative_tolerancesz%IsCloseTests.test_negative_tolerances�	sg��
�
�
�z�
*����q�!�W��5�+�
�
�
�z�
*����q�!�V�U��C�+�
*�+�
*��
*�
*�s�A'�A3�'A0�3A<c�4�gd�}|j|dd��y)N))r�r�)�N���@irI)�;���rJ)i90g��@)r�r�)�NFrKr�rF�r@)rb�identical_exampless  r�test_identicalzIsCloseTests.test_identical�	s"��0��	
���.��S��Irc�X�gd�}|j|d��|j|d��y)N))g�חAg�חA)g:�0�yE�g��n�yE�)g�	ѭ��?gfN�ӭ��?�:�0�yE>rD��&�.>�r@rB)rb�eight_decimal_places_exampless  r�test_eight_decimal_placesz&IsCloseTests.test_eight_decimal_places�	s5��)C�%�	
���9�4��H����<�d��Krc�X�gd�}|j|d��|j|d��y)N))rQr�)g��&�.�r�)gu�?j�/ʠr�r�rDrPr�)rBr@)rb�near_zero_exampless  r�test_near_zerozIsCloseTests.test_near_zero�	s4��.��	
���1�3��?����.���=rc���|jtt�|jttd��|jtt�|jttd��y)Nr�r�)r:r�r�rfs r�test_identical_infinitez$IsCloseTests.test_identical_infinite�	sL�����3��$����3��S��1����4��&����4��s��3rc���ttftdfdtfttfttfttftdfdtftdfdtfg
}|j|d��y)Nr@r�rNg�������?r�)r�r�r�rB)rb�not_close_exampless  r�test_inf_ninf_nanzIsCloseTests.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�`�gd�}|j|d��gd�}|j|d��y)N))r�r�)�333333�r^)�Y��n��r_r�rD))r�g�?)g�������?r�)gZb���tigTb���tirR)rb�zero_tolerance_close_examples�!zero_tolerance_not_close_exampless   r�test_zero_tolerancez IsCloseTests.test_zero_tolerance
s?��)=�%�	
���9�3��G�-N�)�	
���@�#��Nrc�.�|jddgd��y)N)r�r�)r�r�r�rDrLrfs r�test_asymmetryzIsCloseTests.test_asymmetry!
s�����W�g�.���<rc�X�ddg}|j|d��|j|d��y)N)����)i�[i�[rPrDrQrR)rb�integer_exampless  r�
test_integerszIsCloseTests.test_integers%
s:��2�2�4��	
���,�d��;����/���>rc���ddlm}|d�|d�f|d�|d�f|d�|d�f|d	�|d
�fg}|j|d��|j|d
��y)Nrrxz
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20rPrDrQ)rrr@rB)rbr�decimal_exampless   r�
test_decimalszIsCloseTests.test_decimals-
s���#�$�\�2�G�E�N�C�$�%5�6��	�8J�K�$�%6�7���9L�M�$�_�5�w�x�7H�I�K��	
���,�d��;����/���>rc���ddlm}|dd�dz|d�f|d�|d�f|dd�|dd�fg}|j|d�	�|j|d
�	�y)Nrryrrgrfl �	(q�e�	r�rPrDrQ)r�rzr@rB)rbrz�fraction_exampless   r�test_fractionszIsCloseTests.test_fractions8
sz��&��a��
#�a�
'��!��5�
�i�
 �(�9�"5�6�
�i��
(�(�1�f�*=�>�@��	
���-�t��<����0�$��?rN)rirjrkrQr�r:r<r@rBrGrNrTrWrYr\rbrdrirlrorlrrr4r4�	s^���l�l�G�C�H�6�9�D�J�L�>�4�
N�
O�=�?�	?�	@rr4c�@�ddlm}|j|d��|S)Nr)�DocFileSuitezieee754.txt)�doctestrq�addTest)�loader�tests�patternrqs    r�
load_testsrwD
s��$�	�M�M�,�}�-�.��Lrr�):�test.supportrr�testrr+r�r�rrQ�osr�rIrrTr�r;r�r�r�r1r4r�rr�rrrr/ri�argv�file�__file__�path�dirname�curdir�test_dirr�r�r�rrrr%r0rGrOrZr\rTror�rrrx�TestCaserr4rw�mainrlrr�<module>r�s���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�(<�=���G�G�L�L��#8�9�	�
�L5�H�	,�B�$:�4�0.�`��	�#�	��&����Q#G��!�!�Q#G�hFx@�8�$�$�x@�v�
�z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists