Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_math.cpython-311.opt-2.pyc
�

�Ke}p����ddlmZmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
dZed��Zed��Zed��Ze
jjZe
jjZd\ZZeezd	kZed
kre
jdZneZe	j� e��pe	j!Z"e	j�#e"d��Z$e	j�#e"d��Z%d
�Z&d�Z'd�Z(d�Z)d�Z*d�Z+d�Z,d"d�Z-Gd�d��Z.Gd�de/��Z0Gd�de1��Z2Gd�dej3��Z4Gd�d ej3��Z5d!�Z6ed
krej7��dSdS)#�)�verbose�requires_IEEE_754)�supportNg�h㈵��>�nan�inf�-inf)���7y�ACg�):��@g��7y�AC�__main__zmath_testcases.txtzcmath_testcases.txtc�|�	tjdtjd|����d}|dkr|dz}|S)Nz<qz<drl)�struct�unpack�pack)�x�ns  �8/usr/local/apps/python3/lib/python3.11/test/test_math.py�to_ulpsr'sD��	�	�
�d�F�K��a�0�0�1�1�!�4�A��1�u�u���g�J���H�c�<�	|rdt||dz
z��zndS)N�r)�count_set_bits)rs rrrMs*��K�,-�4�1�~�a�!�a�%�i�(�(�(�(�1�4rc�~�	||z
dz	}|sdS|dkr|S||zdz}t||��t||��zS�Nr)�partial_product)�start�stop�
numfactors�mids    rrrQsa�����,�1�$�J��H��q�	�q������z�!�Q�&���u�c�*�*�_�S�$�-G�-G�G�Grc���	dx}}tt|�������D]/}|t||dzz	dzdz||z	dzdz��z}||z}�0||t	|��z
zSr)�reversed�range�
bit_lengthrr)r�inner�outer�is    r�py_factorialr%_s������E�E�
�e�A�L�L�N�N�+�+�
,�
,����
��!�q�1�u�*��!1�A�!5��Q��!�|�a�7G�H�H�H��
������Q���*�*�*�+�+rc���	tt|��t|��z
��}t||z
��}||ks||krdSd}|�||||��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_checkr0jsu����G�H�%�%�����4�5�5�I��H�s�N�#�#�I��G���y�G�3�3��t�7���z�z�)�Y���A�A�Arc#��K�	t|d���5}|D]�}d|vr|d|�d���}|���s�8|�d��\}}|���\}}}|���}|d}	|dd�}
||t	|��t	|	��|
fV���	ddd��dS#1swxYwYdS)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�r�N�E��r�5��:�:�u�S�z�z�5�9�9�9�9�9�
	:�:�:�:�:�:�:�:�:�:�:�:�:����:�:�:�:�:�:s�B5C�C�Cc
#�K�	t|d���5}|D]�}|�d��s|���s�,|�d��\}}|���\}}}}|���}	|	d|	d}}
|	dd�}||t	|��t	|��t	|
��t	|��|fV���	ddd��dS#1swxYwYdS)Nr2r3r5r6rr�)r7�
startswithr9r:r;)
r<r=r>r?r@rArB�arg_real�arg_imagrD�exp_real�exp_imagrFs
             r�parse_testfilerO�sT�����

�e�g�	&�	&�	&��"��	�	�D����t�$�$�
�D�J�J�L�L�
���z�z�$�'�'�H�C��),�����&�B��H�h������J�!+�A��
�1�
�h�H��q�r�r�N�E��r���?�?�E�(�O�O���?�?�E�(�O�O���
�
�
�
�	���������������������s�CC1�1C5�8C5��c��	||krdSd}t|t��r%t|t��rt|��}n9t|t��r$t|t��rt|��}t|t��r{t|t��rftj|��rtj|��rd}n;tj|��stj|��rnt
||||��}|�2d}|�||��}|d�|��z
}|SdS)Nz	not equalzexpected {!r}, got {!r}z ({}))�
isinstancer;�int�math�isnan�isinfr0r()r)r*r+r,�failure�fail_fmt�fail_msgs       r�result_checkr[�sF��	��h����t��G��(�E�"�"�#�z�#�s�';�';�#��C�j�j���	�C��	�	�#�J�x��$=�$=�#���?�?���(�E�"�"�	E�z�#�u�'=�'=�	E��:�h���	E�D�J�s�O�O�	E��G�G�
�Z��
!�
!�	E�T�Z��_�_�	E��$�H�c�7�G�D�D�G���,���?�?�8�S�1�1���G�N�N�7�+�+�+�����trc��eZdZd�Zd�ZdS)�	FloatLikec��||_dS�N��value��selfras  r�__init__zFloatLike.__init__��
����
�
�
rc��|jSr_r`�rcs r�	__float__zFloatLike.__float__��
���z�rN)�__name__�
__module__�__qualname__rdrh�rrr]r]��2�������������rr]c��eZdZdS)�IntSubclassN�rjrkrlrmrrrprp�s�������Drrpc��eZdZd�Zd�ZdS)�MyIndexablec��||_dSr_r`rbs  rrdzMyIndexable.__init__�rerc��|jSr_r`rgs r�	__index__zMyIndexable.__index__�rirN�rjrkrlrdrvrmrrrsrs�rnrrsc��eZdZdLd�Zd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
ed���Zd�Zejejdkoej��dvd��d���Zd�Zd�Zd�Zd�Zd�Zd�Zejd���Zd�Z d�Z!d�Z"eeje#d��d�����Z$d �Z%d!�Z&eeje#d"��d#�����Z'd$�Z(d%�Z)d&�Z*d'�Z+d(�Z,d)�Z-d*�Z.ed+���Z/eej0d,d��d-�����Z1d.�Z2d/�Z3d0�Z4d1�Z5ed2���Z6d3�Z7d4�Z8d5�Z9d6�Z:d7�Z;ed8���Z<d9�Z=d:�Z>d;�Z?d<�Z@ed=���ZAed>���ZBejCeDd?��d@���ZEedA���ZFedB���ZGdC�ZHdD�ZIdE�ZJedF���ZKedG���ZLdH�ZMdI�ZNdJ�ZOdKS)M�	MathTestsrPrQc��	t||||��}|�+|�d�||����dSdS)Nz{}: {})r[�failr()rc�namer*r)r+r,rXs       r�ftestzMathTests.ftest�sP��	��x��g�w�?�?�����I�I�h�o�o�d�G�4�4�5�5�5�5�5��rc���|�dtjd��|�dtjd��|�tjdtjz��dS)N�pig-DT�!	@�egiW�
�@rI)r}rUrr��assertEqual�taurgs r�
testConstantszMathTests.testConstants�sX���
�
�4���"<�=�=�=��
�
�3��� :�;�;�;������1�T�W�9�-�-�-�-�-rc�T�|�ttj��|�dtjd��tj��|�dtjd��tjdz��|�dtjd��d��|�ttjt��|�ttjt��|�ttjdtz��|�ttjdtz
��|�
tjtjt������dS)Nzacos(-1)���zacos(0)rrIzacos(1)r)
�assertRaises�	TypeErrorrU�acosr}r�
ValueError�INF�NINF�eps�
assertTruerV�NANrgs r�testAcoszMathTests.testAcoss�����)�T�Y�/�/�/��
�
�:�t�y��}�}�d�g�6�6�6��
�
�9�d�i��l�l�D�G�A�I�6�6�6��
�
�9�d�i��l�l�A�.�.�.����*�d�i��5�5�5����*�d�i��6�6�6����*�d�i��S��9�9�9����*�d�i��c��:�:�:�����
�4�9�S�>�>�2�2�3�3�3�3�3rc���|�ttj��|�dtjd��d��|�dtjd��d��|�t
tjd��|�t
tjd��|�tjt��t��|�t
tjt��|�	tj
tjt������dS)Nzacosh(1)rrzacosh(2)rIg5�qB�?r�)r�r�rU�acoshr}r�r�r�r�r�rVr�rgs r�	testAcoshzMathTests.testAcosh
s������)�T�Z�0�0�0��
�
�:�t�z�!�}�}�a�0�0�0��
�
�:�t�z�!�}�}�.@�A�A�A����*�d�j�!�4�4�4����*�d�j�"�5�5�5������C���#�.�.�.����*�d�j�$�7�7�7�����
�4�:�c�?�?�3�3�4�4�4�4�4rc�\�|�ttj��|�dtjd��tjdz��|�dtjd��d��|�dtjd��tjdz��|�ttjt��|�ttjt��|�ttjdtz��|�ttjdtz
��|�
tjtjt������dS)Nzasin(-1)r�rIzasin(0)rzasin(1)r)
r�r�rU�asinr}rr�r�r�r�r�rVr�rgs r�testAsinzMathTests.testAsins�����)�T�Y�/�/�/��
�
�:�t�y��}�}�t�w�h�q�j�9�9�9��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��l�l�D�G�A�I�6�6�6����*�d�i��5�5�5����*�d�i��6�6�6����*�d�i��S��9�9�9����*�d�i��c��:�:�:�����
�4�9�S�>�>�2�2�3�3�3�3�3rc��|�ttj��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�tjt��t��|�tjt��t��|�tj	tjt������dS)	Nzasinh(0)rzasinh(1)rg'�ya64�?z	asinh(-1)r�g'�ya64�)r�r�rU�asinhr}r�r�r�r�rVr�rgs r�	testAsinhzMathTests.testAsinh"s������)�T�Z�0�0�0��
�
�:�t�z�!�}�}�a�0�0�0��
�
�:�t�z�!�}�}�.A�B�B�B��
�
�;��
�2���0D�E�E�E������C���#�.�.�.������D�)�)�4�0�0�0�����
�4�:�c�?�?�3�3�4�4�4�4�4rc���|�ttj��|�dtjd��tjdz��|�dtjd��d��|�dtjd��tjdz��|�dtjt��tjd	z��|�d
tjt��tjd	z��|�tj	tjt������dS)Nzatan(-1)r��zatan(0)rzatan(1)rz	atan(inf)rIz
atan(-inf))r�r�rU�atanr}rr�r�r�rVr�rgs r�testAtanzMathTests.testAtan+s������)�T�Y�/�/�/��
�
�:�t�y��}�}�t�w�h�q�j�9�9�9��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��l�l�D�G�A�I�6�6�6��
�
�;��	�#������	�:�:�:��
�
�<���4���4�7�(�1�*�=�=�=�����
�4�9�S�>�>�2�2�3�3�3�3�3rc��|�ttj��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�ttjd	��|�ttjd
��|�ttjt��|�ttjt��|�	tj
tjt������dS)Nzatanh(0)rz
atanh(0.5)��?g�z��?zatanh(-0.5)��g�z��rr�)r�r�rUr�r}�atanhr�r�r�r�rVr�rgs r�	testAtanhzMathTests.testAtanh4s
�����)�T�Y�/�/�/��
�
�:�t�z�!�}�}�a�0�0�0��
�
�<���C���2E�F�F�F��
�
�=�$�*�T�"2�"2�4H�I�I�I����*�d�j�!�4�4�4����*�d�j�"�5�5�5����*�d�j�#�6�6�6����*�d�j�$�7�7�7�����
�4�:�c�?�?�3�3�4�4�4�4�4rc��|�ttj��|�dtjdd��tjdz��|�dtjdd��tjdz��|�dtjdd��d��|�d	tjdd��tjdz��|�d
tjdd��tjdz��|�dtjdt��tj��|�d
tjdd��tj��|�dtjdd��tj��|�tjdd��d��|�tjdd��d��|�tjdt��d��|�	tj
tjdt������|�dtjdt��tj��|�dtjdd��tj��|�dtjdd��tj��|�tjdd��d��|�tjdd��d��|�tjdt��d��|�	tj
tjdt������|�dtjtt��tjdzdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�dtjtt��tjdz��|�	tj
tjtt������|�dtjtt��tjdzdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�d tjtd��tjdz��|�d!tjtt��tjdz��|�	tj
tjtt������|�d"tjdt��tj��|�d#tjdd��tjdz��|�d$tjdd��tjdz��|�tjdt��d��|�	tj
tjdt������|�d%tjdt��tj��|�d&tjdd��tjdz��|�d'tjdd��tjdz��|�tjdt��d��|�	tj
tjdt������|�	tj
tjtt������|�	tj
tjtd������|�	tj
tjtd������|�	tj
tjtd������|�	tj
tjtd������|�	tj
tjtt������|�	tj
tjtt������dS)(Nzatan2(-1, 0)r�rrIzatan2(-1, 1)rr�zatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(0., -inf)rQzatan2(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�rU�atan2r}rr�r�r�r�rVr�rgs r�	testAtan2zMathTests.testAtan2?s������)�T�Z�0�0�0��
�
�>�4�:�b�!�#4�#4�t�w�h�q�j�A�A�A��
�
�>�4�:�b�!�#4�#4�t�w�h�q�j�A�A�A��
�
�=�$�*�Q��"2�"2�A�6�6�6��
�
�=�$�*�Q��"2�"2�D�G�A�I�>�>�>��
�
�=�$�*�Q��"2�"2�D�G�A�I�>�>�>�	
�
�
�$�d�j��T�&:�&:�D�G�D�D�D��
�
�$�d�j��T�&:�&:�D�G�D�D�D��
�
�#�T�Z��C�%8�%8�$�'�B�B�B������B��+�+�R�0�0�0������B��,�,�b�1�1�1������B��,�,�b�1�1�1�����
�4�:�b�#�#6�#6�7�7�8�8�8��
�
�%�t�z�#�t�'<�'<�t�w�h�G�G�G��
�
�%�t�z�#�t�'<�'<�t�w�h�G�G�G��
�
�$�d�j��c�&:�&:�T�W�H�E�E�E������C��,�,�c�2�2�2������C��-�-�s�3�3�3������C��-�-�s�3�3�3�����
�4�:�c�3�#7�#7�8�8�9�9�9��
�
�%�t�z�#�t�'<�'<�d�g�a�i��k�J�J�J��
�
�%�t�z�#�t�'<�'<�d�g�a�i�H�H�H��
�
�$�d�j��d�&;�&;�T�W�Q�Y�G�G�G��
�
�#�T�Z��S�%9�%9�4�7�1�9�E�E�E��
�
�$�d�j��c�&:�&:�D�G�A�I�F�F�F��
�
�$�d�j��c�&:�&:�D�G�A�I�F�F�F�����
�4�:�c�3�#7�#7�8�8�9�9�9��
�
�&��
�4��(>�(>�����
�1��M�M�M��
�
�&��
�4��(>�(>�����
�K�K�K��
�
�%�t�z�$��'=�'=���x��z�J�J�J��
�
�$�d�j��s�&;�&;�d�g�X�a�Z�H�H�H��
�
�%�t�z�$��'<�'<�t�w�h�q�j�I�I�I��
�
�%�t�z�$��'<�'<�t�w�h�q�j�I�I�I�����
�4�:�d�C�#8�#8�9�9�:�:�:��
�
�%�t�z�#�t�'<�'<�d�g�F�F�F��
�
�$�d�j��c�&:�&:�D�G�A�I�F�F�F��
�
�#�T�Z��R�%8�%8�$�'�!�)�D�D�D������C��-�-�r�2�2�2�����
�4�:�c�3�#7�#7�8�8�9�9�9��
�
�&��
�4��(>�(>����I�I�I��
�
�%�t�z�$��'<�'<�t�w�h�q�j�I�I�I��
�
�$�d�j��r�&:�&:�T�W�H�Q�J�G�G�G������D�#�.�.��4�4�4�����
�4�:�d�C�#8�#8�9�9�:�:�:�����
�4�:�c�4�#8�#8�9�9�:�:�:�����
�4�:�c�4�#8�#8�9�9�:�:�:�����
�4�:�c�3�#7�#7�8�8�9�9�9�����
�4�:�c�2�#6�#6�7�7�8�8�8�����
�4�:�c�3�#7�#7�8�8�9�9�9�����
�4�:�c�3�#7�#7�8�8�9�9�9�����
�4�:�c�3�#7�#7�8�8�9�9�9�9�9rc���|�ttj��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�dtjd	��d	��|�d
tjd��d��|�dtjd
��d��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�tjt��t��|�tjt��t��|�tj	tjt������dS)Nzcbrt(0)rzcbrt(1)rzcbrt(8)�rIz	cbrt(0.0)rQz
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�rU�cbrtr}r�r�r�r�rVr�rgs r�testCbrtzMathTests.testCbrt|s������)�T�Y�/�/�/��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��l�l�A�.�.�.��
�
�;��	�#����4�4�4��
�
�<���4���$�7�7�7��
�
�;��	�#���0A�B�B�B��
�
�<���4���2D�E�E�E��
�
�:�t�y��}�}�a�0�0�0��
�
�:�t�y��}�}�b�1�1�1��
�
�;��	�#����3�3�3������3����-�-�-������4���$�/�/�/�����
�4�9�S�>�>�2�2�3�3�3�3�3rc���|�ttj��|�t
t
tjd������|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d	��|�tjd
��d	��|�tjd��d��|�tjd��d��Gd
�d��}Gd�dt��}Gd�d��}|�tj|����d��|�tj|����d��|�tjtd����d��|�ttj|����|��}d�|_	|�ttj|��|�ttj|d��dS)Nr�r��?��?rIr�r��r����rQr�c��eZdZd�ZdS)�$MathTests.testCeil.<locals>.TestCeilc��dS�N�*rmrgs r�__ceil__z-MathTests.testCeil.<locals>.TestCeil.__ceil__�����rrN�rjrkrlr�rmrr�TestCeilr���#������
�
�
�
�
rr�c��eZdZd�ZdS)�%MathTests.testCeil.<locals>.FloatCeilc��dSr�rmrgs rr�z.MathTests.testCeil.<locals>.FloatCeil.__ceil__�r�rNr�rmrr�	FloatCeilr��r�rr�c��eZdZdS)�&MathTests.testCeil.<locals>.TestNoCeilNrqrmrr�
TestNoCeilr����������Drr�r�g@E@�+c��|Sr_rm��argss r�<lambda>z$MathTests.testCeil.<locals>.<lambda>�s��4�r)
r�r�rU�ceilr�rT�typer;r]r�)rcr�r�r��ts     r�testCeilzMathTests.testCeil�s������)�T�Y�/�/�/�����d�4�9�S�>�>�2�2�3�3�3������3����+�+�+������3����+�+�+������3����+�+�+������4���!�,�,�,������4���"�-�-�-������4���"�-�-�-������3����+�+�+������4���!�,�,�,�
	�	�	�	�	�	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	�	�	�	������8�8�:�:�.�.��3�3�3������9�9�;�;�/�/��4�4�4������9�T�?�?�3�3�R�8�8�8����)�T�Y�
�
���=�=�=��J�L�L��'�'��
����)�T�Y��2�2�2����)�T�Y��1�5�5�5�5�5rc�	�|�tjdd��d��|�tjdd��d��|�tjdd��d��|�tjdd��d��|�tjd	d
��d��|�ttj��|�tjdd��d��|�tjdd
��d��|�tjt
d��t
��|�tjt
d
��t��|�tjtd��t
��|�tjtd
��t��|�tjdt
��d��|�tjdt��d��|�tjt
t
��t
��|�tjt
t��t��|�tjtt
��t
��|�tjtt��t��|�tjtjtd������|�tjtjtt
������|�tjtjtt������|�tjtjtt������|�tj
tjt
t������|�ttjdt����d��dS)
Nrr�r�rQi���r�r��@�@r����@)r�rU�copysignr�r�r�r�r�rVr�rWr'rgs r�testCopysignzMathTests.testCopysign�sV�������q�"�-�-�s�3�3�3������r�2�.�.��4�4�4������r�3�/�/��6�6�6������q�"�-�-�s�3�3�3������r�3�/�/��6�6�6����)�T�]�3�3�3������r�2�.�.��3�3�3������r�3�/�/��5�5�5������s�B�/�/��5�5�5������s�C�0�0�$�7�7�7������t�R�0�0�#�6�6�6������t�S�1�1�4�8�8�8������r�3�/�/��4�4�4������r�4�0�0�#�6�6�6������s�C�0�0�#�6�6�6������s�D�1�1�4�8�8�8������t�S�1�1�3�7�7�7������t�T�2�2�D�9�9�9�����
�4�=��b�#9�#9�:�:�;�;�;�����
�4�=��c�#:�#:�;�;�<�<�<�����
�4�=��d�#;�#;�<�<�=�=�=�����
�4�=��c�#:�#:�;�;�<�<�<�	
����
�4�=��c�#:�#:�;�;�<�<�<�����T�]�2�s�3�3�4�4�b�9�9�9�9�9rc�v�|�ttj��|�dtjtjdz��dtjd�����|�dtjd��d��|�dtjtjdz��dtjd�����|�dtjtj��d	��	|�tjtjt������|�tjtjt������nf#t$rY|�ttjt��|�ttjt��YnwxYw|�tjtjt������dS)
Nz
cos(-pi/2)rIrr�r,zcos(0)z	cos(pi/2)zcos(pi)r�)
r�r�rU�cosr}r�ulpr�rVr�r�r�r�rgs r�testCoszMathTests.testCos�s������)�T�X�.�.�.��
�
�<���4�7�(�1�*�!5�!5�q�$�(�1�+�+�
�N�N�N��
�
�8�T�X�a�[�[�!�,�,�,��
�
�;������� 3� 3�Q������
�L�L�L��
�
�9�d�h�t�w�/�/��4�4�4�	:��O�O�D�J�t�x��}�}�5�5�6�6�6��O�O�D�J�t�x��~�~�6�6�7�7�7�7���	:�	:�	:����j�$�(�C�8�8�8����j�$�(�D�9�9�9�9�9�	:����	
����
�4�8�C�=�=�1�1�2�2�2�2�2s�A<F�A G8�7G8�win32)�ARM�ARM64zEWindows UCRT is off by 2 ULP this test requires accuracy within 1 ULPc�n�|�ttj��|�dtjd��d��|�dtjd��dtjd��dzzz
d��|�tjt��t��|�tjt��t��|�tj	tjt������dS)Nzcosh(0)rrzcosh(2)-2*cosh(1)**2rIr�)r�r�rU�coshr}r�r�r�r�rVr�rgs r�testCoshzMathTests.testCosh�s���	
���)�T�Y�/�/�/��
�
�9�d�i��l�l�A�.�.�.��
�
�)�4�9�Q�<�<��$�)�A�,�,��/�8I�+I�2�N�N�N������3����-�-�-������4���#�.�.�.�����
�4�9�S�>�>�2�2�3�3�3�3�3rc���|�ttj��|�dtjtj��d��|�dtjtjdz��d��|�dtjtjdz��d��|�d	tjd
��d
��dS)Nzdegrees(pi)g�f@z
degrees(pi/2)rIg�V@zdegrees(-pi/4)r�g�F�z
degrees(0)r)r�r�rU�degreesr}rrgs r�testDegreeszMathTests.testDegrees�s������)�T�\�2�2�2��
�
�=�$�,�t�w�"7�"7��?�?�?��
�
�?�D�L�����$;�$;�T�B�B�B��
�
�#�T�\�4�7�(�1�*�%=�%=�u�E�E�E��
�
�<���a���!�4�4�4�4�4rc��|�ttj��|�dtjd��dtjz��|�dtjd��d��|�dtjd��tj��|�tjt��t��|�tjt��d��|�	tj
tjt������|�ttjd��dS)	Nzexp(-1)r�rzexp(0)rzexp(1)rQ�@B)
r�r�rUrEr}r�r�r�r�r�rVr��
OverflowErrorrgs r�testExpzMathTests.testExp�s������)�T�X�.�.�.��
�
�9�d�h�r�l�l�A�d�f�H�5�5�5��
�
�8�T�X�a�[�[�!�,�,�,��
�
�8�T�X�a�[�[�$�&�1�1�1������#����,�,�,������$����,�,�,�����
�4�8�C�=�=�1�1�2�2�2����-���7�;�;�;�;�;rc��|�ttj��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�d	tjd
��d��|�tjt��t��|�tjt��d��|�tj	tjt������|�ttjd
��dS)Nzexp2(-1)r�r�zexp2(0)rrzexp2(1)rIz	exp2(2.3)r�g)��{IJ@rQr�)r�r�rU�exp2r}r�r�r�r�rVr�r�rgs r�testExp2zMathTests.testExp2�s�����)�T�Y�/�/�/��
�
�:�t�y��}�}�c�2�2�2��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��l�l�A�.�.�.��
�
�;��	�#���0A�B�B�B������3����-�-�-������4���"�-�-�-�����
�4�9�S�>�>�2�2�3�3�3����-���G�<�<�<�<�<rc�F�|�ttj��|�dtjd��d��|�dtjd��d��|�dtjd��d��dS)Nzfabs(-1)r�rzfabs(0)rzfabs(1))r�r�rU�fabsr}rgs r�testFabszMathTests.testFabssz�����)�T�Y�/�/�/��
�
�:�t�y��}�}�a�0�0�0��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��l�l�A�.�.�.�.�.rc���|�tjd��d��d}tdd��D]d}||z}|�tj|��|��|�tj|��t	|�����e|�ttjd��|�ttjddz��dS)Nrr��r��
�d)r�rU�	factorialr r%r�r�)rc�totalr$s   r�
testFactorialzMathTests.testFactorial	s���������*�*�A�.�.�.����q�$���	A�	A�A��Q�J�E����T�^�A�.�.��6�6�6����T�^�A�.�.��Q���@�@�@�@����*�d�n�b�9�9�9����*�d�n�r�3�w�h�?�?�?�?�?rc�b�|�ttjd��|�ttjd��|�ttjd��|�ttjd��|�ttjt	jd����|�ttjt	jd����|�ttjd��dS)N�@g������@r��}Ô%�I���5z5.2)r�r�rUr��decimal�Decimalrgs r�testFactorialNonIntegersz"MathTests.testFactorialNonIntegerss������)�T�^�S�9�9�9����)�T�^�S�9�9�9����)�T�^�T�:�:�:����)�T�^�V�<�<�<����)�T�^�W�_�S�5I�5I�J�J�J����)�T�^�W�_�U�5K�5K�L�L�L����)�T�^�S�9�9�9�9�9rc��|�ttjddz��|�ttjd��dS)Nr�r��}Ô%�I�T)r�r�rUr�r�rgs r�testFactorialHugeInputsz!MathTests.testFactorialHugeInputssB��	
���-����S��A�A�A����)�T�^�U�;�;�;�;�;rc�B�|�ttj��|�t
t
tjd������|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd	��d
��Gd�d��}Gd
�dt��}Gd�d��}|�tj|����d��|�tj|����d��|�tjtd����d��|�ttj|����|��}d�|_	|�ttj|��|�ttj|d��dS)Nr�rr�rr�r�r�r�r����c��eZdZd�ZdS)�&MathTests.testFloor.<locals>.TestFloorc��dSr�rmrgs r�	__floor__z0MathTests.testFloor.<locals>.TestFloor.__floor__2r�rN�rjrkrlrrmrr�	TestFloorr1r�rrc��eZdZd�ZdS)�'MathTests.testFloor.<locals>.FloatFloorc��dSr�rmrgs rrz1MathTests.testFloor.<locals>.FloatFloor.__floor__5r�rNrrmrr�
FloatFloorr4r�rr
c��eZdZdS)�(MathTests.testFloor.<locals>.TestNoFloorNrqrmrr�TestNoFloorr7r�rr
r�g33333�D@�)c��|Sr_rmr�s rr�z%MathTests.testFloor.<locals>.<lambda>?s��D�r)
r�r�rU�floorr�rTr�r;r]r)rcrr
r
r�s     r�	testFloorzMathTests.testFloor$sW�����)�T�Z�0�0�0�����d�4�:�c�?�?�3�3�4�4�4������C���!�,�,�,������C���!�,�,�,������C���!�,�,�,������D�)�)�2�.�.�.������D�)�)�2�.�.�.������D�)�)�2�.�.�.�
	�	�	�	�	�	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	�	�	�	������I�I�K�K�0�0�"�5�5�5������J�J�L�L�1�1�2�6�6�6������I�d�O�O�4�4�b�9�9�9����)�T�Z�����?�?�?��K�M�M��(�(������)�T�Z��3�3�3����)�T�Z��A�6�6�6�6�6rc�@�|�ttj��|�dtjdd��d��|�dtjdd��d��|�dtjdd��d	��|�d
tjdd��d��|�d
tjdd��d��|�dtjdd��d��|�tjtjtd	������|�tjtjd	t������|�tjtjtt������|�ttjd	d��|�ttjtd	��|�ttjtd	��|�ttjtd��|�tjdt��d��|�tjdt��d��|�tjdt��d��|�tjdt��d��|�tjdd��d��|�tjdt��d��dS)Nzfmod(10, 1)r�rrQz
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�rU�fmodr}r�rVr�r�r�r�r�rgs r�testFmodzMathTests.testFmodCs������)�T�Y�/�/�/��
�
�=�$�)�B��"2�"2�C�8�8�8��
�
�?�D�I�b�#�$6�$6��<�<�<��
�
�?�D�I�b�#�$6�$6��<�<�<��
�
�>�4�9�S�!�#4�#4�d�;�;�;��
�
�#�T�Y�s�C�%8�%8�$�?�?�?��
�
�#�T�Y�s�C�%8�%8�$�?�?�?�����
�4�9�S�"�#5�#5�6�6�7�7�7�����
�4�9�R��#5�#5�6�6�7�7�7�����
�4�9�S�#�#6�#6�7�7�8�8�8����*�d�i��R�8�8�8����*�d�i��b�9�9�9����*�d�i��r�:�:�:����*�d�i��b�9�9�9������3��,�,�c�2�2�2������4��-�-�t�4�4�4������3��-�-�s�3�3�3������4��.�.��5�5�5������3��,�,�c�2�2�2������3��-�-�s�3�3�3�3�3rc�����ttj���fd�}|dtjd��d��|dtjd��d��|dtjd	��d
��|dtjd��d
����tjt
��dt
����tjt��dt����tjtjt��d����dS)Nc���||c\}}\}}t||z
��tks||kr��|�d|�d|����dSdS�Nz
 returned z, expected �r'r�r{)r|�resultr)�mantrE�emant�eexprcs       �r�	testfrexpz&MathTests.testFrexp.<locals>.testfrexp\sq���)/��&�K�T�3��%���4��:����$�$��t����	�	��4�4������3�4�4�4�4�4�)4�rz	frexp(-1)r�)r�rzfrexp(0)r�rrzfrexp(1)r)r�rzfrexp(2)rI)r�rI)
r�r�rU�frexpr�r�r�r�rVr�)rcrs` r�	testFrexpzMathTests.testFrexpYs������)�T�Z�0�0�0�	4�	4�	4�	4�	4�	�	�+�t�z�"�~�~�y�9�9�9��	�*�d�j��m�m�V�4�4�4��	�*�d�j��m�m�X�6�6�6��	�*�d�j��m�m�X�6�6�6������C����+�S�1�1�1������D�)�)�!�,�d�3�3�3�����
�4�:�c�?�?�1�#5�6�6�7�7�7�7�7rz2fsum is not exact on machines with double roundingc�����ddlm}|j�|j�z
���fd�}gdfdgdfgd�dfgd�dfgd	�d
fgd�dfgd
�dfd�t	dd��D��t
�d��fd�t	dd��D��t
�d��fgd�dfgd�dfd�t	ddd��D��dgzt
�d��fg}d�t	d��D���|��fd�t	d ��D���d gz�df��t|��D]�\}\}}	tj
|��}nQ#t$r|�d!|||fz��Yn*t$r|�d"|||fz��YnwxYw|�||����dd#lm}m}	m}
t	d ��D]�}gd$�d%z}d}t	d&��D]6}|	d|����d'z|z
}
||
z
}|�|
���7|
|��||��}|�||��tj
|������dS)(Nr)�
float_infoc	����	d\}}|D]^}tj|��\}}ttj|�	����|�	z
}}||kr|||z
z}|}n|||z
z}||z
}�_t	tt
t|������dz
�	z
�|z
��}|dkr3d|dz
z}|d|zzt||zo
|d|zdz
z��z}||z
}tj||��S)Nr rIrrr�)	rUr!rT�ldexp�max�len�binr'�bool)
�iterable�tmant�texprrrE�tail�h�etiny�mant_digs
        ��r�msumz MathTests.testFsum.<locals>.msum~s���
�
�K�E�4��
�
�� �J�q�M�M�	��c���
�4�� :� :�;�;�S�8�^�c���#�:�:��d�3�h�&�E��D�D��S��X�%�D���
���
�s�3�s�5�z�z�?�?�+�+�A�-��8�%�$�,�G�G�D��a�x�x��$�q�&�M���!�A�#���e�a�i�.I�E�A�a�C��E�M�)J�)J�J�������:�e�T�*�*�*rrQ)r�r�r��0��.�++g�d~�QJr�g�d~�Q�r3)�@Cr�g��g������?C)r4r���9g@C)g@Cr�r5g@C)g������?Cr�g�<g������?Cc��g|]}d|z��S�r�rm��.0rs  r�
<listcomp>z&MathTests.testFsum.<locals>.<listcomp>�s��
+�
+�
+�q�b��d�
+�
+�
+rri�z0x1.df11f45f4e61ap+2c��g|]
}d|z|z��S)r�rmr8s  rr:z&MathTests.testFsum.<locals>.<listcomp>�s ��
1�
1�
1�Q�s�Q�h�q�j�
1�
1�
1rz-0x1.62a2af1bd3624p-1)r	r�g��ؗ�Ҝ<g��7y�AC)g��7y�ACg�������?g��7y�A�g�������c�<�g|]}d|zd|dzzz
d|dzzz��S)r��2�4rmr8s  rr:z&MathTests.testFsum.<locals>.<listcomp>�s6��
L�
L�
L�!�b�!�e�b�1�R�4�j� �2��"��:�-�
L�
L�
Lr����i�rIg�z0x1.5555555555555p+970c��g|]}d|z��S)g333333�?rm)r9r$s  rr:z&MathTests.testFsum.<locals>.<listcomp>�s��-�-�-�A��a��-�-�-rc�8��g|]}�|dz�|z
��S�rrm)r9r$�termss  �rr:z&MathTests.testFsum.<locals>.<listcomp>�s*���8�8�8�q�U�1�Q�3�Z�%��(�
"�8�8�8rr�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)�r�i����r�gh�$.5���g#B����;r���rG)�sysr$r1�min_expr r;�fromhex�append�	enumeraterU�fsumr�r{r�r�rDrErF)rcr$r2�test_valuesr$�valsr)�actualrDrErF�j�s�vr0r1rCs              @@@r�testFsumzMathTests.testFsumks������	#�"�"�"�"�"��&���"�X�-��	+�	+�	+�	+�	+�	+�8��I��U�C�L�
<�
<�
<�f�E�
'�
'�
'��5�
&�
&�
&��4�
+�
+�
+�\�:�
)�
)�
)�;�7�
+�
+�E�!�T�N�N�
+�
+�
+�
�]�]�1�
2�
2�
4�
1�
1�%��4�.�.�
1�
1�
1�
�]�]�2�
3�
3�
5�
�
�
� 3�4�
=�
=�
=�s�C�
L�
L�u�U�C��7K�7K�
L�
L�
L��[��
�]�]�3�
4�
4�
6���*.�-��t���-�-�-�����8�8�8�8�E�$�K�K�8�8�8�U�4�[�L�>�I�
�1�X�I�
�	�	�	�
$-�[�#9�#9�		/�		/��A���h�
I���4������ �
I�
I�
I��	�	�2�56��$�4G�H�I�I�I�I�I��
I�
I�
I��	�	�2�56��$�4G�H�I�I�I�I�I�
I����
���V�X�.�.�.�.�1�1�1�1�1�1�1�1�1�1��t���
	:�
	:�A�8�8�8�2�=�D��A��3�Z�Z�
�
���E�!�V�V�X�X�&�&�!�+�a�/���Q������A������G�D�M�M�M���T�
�
�A����T�T�$�Z�Z���4���9�9�9�9�
	:�
	:s�E3�3%G�$G�Gc��tj}|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d	��|�|dd
��d	��|�|dd��d
��d}d}dD�]}||z}||z}|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|����|�|��d��|�|d��d��|�|d
��d��|�|ddd��d��|�|ddd��d��|�t|d��|�t|dd��|�t|dd��|�t|ddd��|�|td��td����d	��dS)Nrrr�rG�����x�T����� j9W P)�}� "o�`T"-� l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k )��	lZ��'^%#�>�;�*Q!/61^�f��^@�U@)rU�gcdr�r�r�rs)rcrer�y�c�a�bs       r�testGcdzMathTests.testGcd�s����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�S��A�Y�Y��*�*�*����S�S��A�Y�Y��*�*�*����S�S�!��Q�Z�Z��+�+�+����S�S��Q�B�Z�Z��+�+�+����S�S��Q�B�Z�Z��+�+�+����S�S�!��Q�Z�Z��+�+�+����S�S�!��a�R�[�[�!�,�,�,����S�S�!��a�R�[�[�!�,�,�,�,���������"�"�"������S���3�'�'�'������T���C�(�(�(������S�"�c�*�*�A�.�.�.������S�!�R���!�,�,�,����)�S�%�0�0�0����)�S�%��4�4�4����)�S�#�t�4�4�4����)�S�#�q�$�7�7�7������[��-�-�{�2���?�?��D�D�D�D�Drc���ddlm}ddlm}tj}tjtjt	jd��t	j	d��t	j
d��f}tt|��dz��D]T}|�
||d|��t	jtd�|d|�D���������U|�|d	d
��d��|�|dd
��d��|�||d��|d
����d��|�||dd��|d
d����|dd����|�|t!d��t!d��t!d��t!d����t	jd����|�|dd��d��|�|d��d��|�|��d��|�dt	jd|d������|�|ddd��|ddd����|�t&��5|d���ddd��n#1swxYwY|�t&��5|ddd��ddd��n#1swxYwYdt(jjd
zz}|�t.t0f��5|d|��ddd��n#1swxYwY|�|t2��t2��|�|dt2��t2��|�|dt2��t2��|�|dt2��t2��|�|t4t2��t2��|�|t2t4��t2��|�|t6t4��t2��|�|t4t6��t2��|�|t2t2��t2��|�|t2t2��t2��|�|dt2��t2��|�t	j|t4������|�t	j|dt4������|�t	j|t4d������|�t	j|dt4������|�t	j|t4t4������|�t	j|t4������t<dz}td��D]F}|�t	j||g|z�|t	j|��z�����Gtd��D]A}	t@d|	zz}
|�t	jd|
zd|
z��d
|
z���BdS) Nr�r���Fractionr��@g������@rc3� K�|]	}|dzV��
dS)rINrm)r9rSs  r�	<genexpr>z&MathTests.testHypot.<locals>.<genexpr>s&����5�5�q�a��d�5�5�5�5�5�5rg(@r��*@r[rP�
r_r�rQ�%��%@r�r�r�r��r皙�����?�string皙����@r�rr�r�)!r�r��	fractionsrnrU�hypotr�r�sqrt�gamma�sinr r(�assertAlmostEqual�sumr�r*r�r�r�rIr$�
max_10_expr�r�r�r�r�r�rV�	FLOAT_MAX�isclose�	FLOAT_MIN)rcr�rnr{r�r$�int_too_big_for_float�	fourthmaxrrE�scales           r�	testHypotzMathTests.testHypot�sT��#�#�#�#�#�#�&�&�&�&�&�&��
���v�t�w��	�#����
�3�����#���N���s�4�y�y��{�#�#�	�	�A��"�"���t�B�Q�B�x� ��	�#�5�5�D��!��H�5�5�5�5�5�6�6�
�
�
�
�	
�����t�S�)�)�4�0�0�0������r�1���r�*�*�*������w�w�r�{�{�G�G�A�J�J�7�7��<�<�<������x�x��B�/�/���!�R���A�A�8�8�B�PR�CS�CS�T�T�T������t�A�w�w��Q����a���$�q�'�'�B�B�D�I�a�L�L�Q�Q�Q�	
�����s�C���#�.�.�.������u���t�,�,�,��������#�&�&�&������M�#�u�u�T�{�{�+�+�	
�	
�	
�	
����E�#�s�C� � ��E�#�s�C� � �	
�	
�	
��
�
�y�
)�
)�	�	��E�A�J�J�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	&�	&��E�#�x��%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&� "�s�~�'@�1�'D� E��
�
�
�
�M�:�
;�
;�	,�	,��E�!�*�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	
�����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�0�0������r�C�4���#�.�.�.�	
����
�5�5��:�:�.�.�/�/�/�����
�5�5��C�=�=�1�1�2�2�2�����
�5�5��b�>�>�2�2�3�3�3�����
�5�5��S�>�>�2�2�3�3�3�����
�5�5��c�?�?�3�3�4�4�4�����
�5�5��:�:�.�.�/�/�/���O�	��r���	D�	D�A��O�O�D�L���)��Q��)@�)2�T�Y�q�\�\�)A�C�C�
D�
D�
D�
D���9�9�	D�	D�C���s�
�*�E����T�Z��%���5��9�9�1�U�7�C�C�C�C�	D�	Ds6�
K$�$K(�+K(�	L#�#L'�*L'�&
M?�?N�Nz7hypot() loses accuracy on machines with double roundingc	�J�tj}tj}tjd���}dD]�\}}t
�|��}t
�|��}|�||||���5tj|��5t||��dz||��dzz�	����}ddd��n#1swxYwY|�
|||��|��ddd��n#1swxYwY��dS)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�hyrrfrI)rUr{r�r��Contextr;rK�subTest�localcontextr|r�)	rcr{r��high_precisionr�r�rrf�zs	         r�testHypotAccuracyzMathTests.testHypotAccuracyAs����
���/�� ��c�2�2�2��$
�*	1�*	1�F�B��J�
�
�b�!�!�A��
�
�b�!�!�A������a�1��5�5�
1�
1��)�.�9�9�F�F��w�w�q�z�z�1�}�w�w�q�z�z�1�}�<�B�B�D�D�E�E�A�F�F�F�F�F�F�F�F�F�F�F����F�F�F�F�� � ���q�!���a�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1��O*	1�*	1s6�D�=C �D� C$�$D�'C$�(#D�D	�D	c���ddlm}ddlm}tj}tj}|�|dd��d��|�|dd��d��td	��D]�}td
��D]�}td�t|��D����}td�t|��D����}|�
|||��|td
�t||��D������������|�|gd�gd���d��|�|tgd���tgd�����d��|�|dd��d��|�|dd��d��|�||d��|d��f|d��|d��f��|d����|�||dd��|dd��f|dd��|dd��f��|dd����|�|dd��|d����|�|dd��d��|�|dd��d��|�dt	jd|d d!������|�dt	jd|d!d ������|�|d"d#��|d$d#����Gd%�d&t��}	|�||	d��d��d��|�t ��5|dd'�(��ddd��n#1swxYwY|�t ��5|d��ddd��n#1swxYwY|�t ��5|dd'd)��ddd��n#1swxYwY|�t ��5|dd��ddd��n#1swxYwY|�t ��5|d*d��ddd��n#1swxYwY|�t"��5|d+d,��ddd��n#1swxYwY|�t"��5|dd-��ddd��n#1swxYwY|�t ��5|d.d/��ddd��n#1swxYwYd0t$jjd
zz}
|�t"t*f��5|d|
fd1��ddd��n#1swxYwY|�t"t*f��5|d1d|
f��ddd��n#1swxYwYtd2��D]Z}t-j��t-j��}}|�||f|f��t/||z
�����[t0d3d4dd5t2t4g}t7j|d6�7��D]�}t7j|d6�7��D]�}d8�t||��D��}t;t=tj|����r&|�|||��t2���it;t=tj |����r1|�!t	j |||�������Œ�tDd9z}
td��D]�}|
f|z}d!|z}|�!t	j#|||��|
t	j|��z����|�!t	j#|||��|
t	j|��z������td��D]s}tHd|zz}d:|zd6|zf}d;}|�t	j||��d
|z��|�t	j||��d
|z���tdS)<Nrrlrm)r�r�r�)r�r�r�r�)rrIr�)r�rIr��	rPc3�@K�|]}tjdd��V��dS����rPN�rD�uniform�r9�ks  rrqz%MathTests.testDist.<locals>.<genexpr>��.����B�B�A�&�.��Q�/�/�B�B�B�B�B�Brc3�@K�|]}tjdd��V��dSr�r�r�s  rrqz%MathTests.testDist.<locals>.<genexpr>�r�rc3�,K�|]\}}||z
dzV��dS)r�Nrm�r9�px�qxs   rrqz%MathTests.testDist.<locals>.<genexpr>�s/����F�F�&�"�b�b�2�g�#�-�F�F�F�F�F�Fr)g,@r�)r�r�rr)�r)rI���rsr�rrIr�r_)TTFTF)TFTTFr�)g�*@g)@g
�rQrmr�)r�)rQ)r�r�r�)rrr)r�r�r�c��eZdZdS)�MathTests.testDist.<locals>.TNrqrmrr�Tr��r�rr�)r�rPrb)�p�q)rGr�r�)rwrxry)rrIr�r�)rPrbrG)r�rPrbrG�abc�xyzr�)rIr��rtr�rur�)�repeatc��g|]
\}}||z
��Srmrmr�s   rr:z&MathTests.testDist.<locals>.<listcomp>�s ��9�9�9�V�R���b��9�9�9rr�r�)rQrQ)%r�r�rzrnrU�distr|r�r �tuplerr��zip�iterr�r�r�r�rIr$r�r�rDr'r�r�r��	itertools�product�any�maprWrVr�r�r�r�)rc�D�Fr�r|r$rRr�r�r�r��values�diffsr�rrEr�s                 r�testDistzMathTests.testDist�s���(�(�(�(�(�(�+�+�+�+�+�+��y���y��	
�����o�/?�@�@�#�F�F�F������i��4�4�c�:�:�:��q���	�	�A��1�X�X�
�
���B�B��q���B�B�B�B�B���B�B��q���B�B�B�B�B���&�&��D��A�J�J��D��F�F�C��1�I�I�F�F�F�F�F�G�G�����
�	
�����o�o�o�/?�/?�/?�@�@�#�F�F�F������d�?�?�?�3�3�T�:J�:J�:J�5K�5K�L�L�c�R�R�R�	
�����k�;�7�7��>�>�>������g�w�/�/��4�4�4������q�q��u�u�a�a��d�d�m�a�a��d�d�A�A�b�E�E�]�;�;�Q�Q�r�U�U�C�C�C������q�q��R�y�y�!�!�A�r�(�(�3�a�a��2�h�h���"�b�	�	�5J�K�K���2�r���	$�	$�	$������>�>�@�@���c���	$�	$�	$�
	
�����2�2�4�4��	�	�	�	
�����b�"���s�+�+�+������M�#�t�t�G�V�4�4�5�5�	
�	
�	
�	
�����M�#�t�t�F�G�4�4�5�5�	
�	
�	
�	
����D��)�,�,��D��)�,�,�	
�	
�	
�	�	�	�	�	��	�	�	������a�a�	�l�l�Z�9�9�3�?�?�?��
�
�y�
)�
)�	+�	+��D�9�	�*�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�
�
�
�y�
)�
)�	�	��D��O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	2�	2��D��I�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
�
�
�y�
)�
)�	�	��D��A�J�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	2�	2��D�%�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
�
�
�z�
*�
*�	*�	*��D��y�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
�
�z�
*�
*�	*�	*��D��L�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
�
�y�
)�
)�	�	��D������	�	�	�	�	�	�	�	�	�	�	����	�	�	�	� "�s�~�'@�1�'D� E��
�
�
�
�M�:�
;�
;�	5�	5��D�!�*�+�V�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�
�
�
�
�M�:�
;�
;�	5�	5��D��!�2�3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5��r���	;�	;�A��=�?�?�F�M�O�O�q�A����T�T�1�$���-�-�s�1�q�5�z�z�:�:�:�:���t�S�$��S�9���"�6�!�4�4�4�	<�	<�A��&�v�a�8�8�8�
<�
<��9�9�s�1�a�y�y�9�9�9���s�4�:�u�-�-�.�.�<��$�$�T�T�!�Q�Z�Z��5�5�5�5���T�Z��/�/�0�0�<��O�O�D�J�t�t�A�q�z�z�$:�$:�;�;�;��
<���O�	��r���	P�	P�A���q� �A���
�A��O�O�D�L���a����Y���1���5M�N�N�O�O�O��O�O�D�L���a����Y���1���5M�N�N�O�O�O�O���9�9�	7�	7�C���s�
�*�E��5��!�E�'�"�A��A����T�Y�q�!�_�_�a��g�6�6�6����T�Y�q�!�_�_�a��g�6�6�6�6�	7�	7s��;O�O�O�:P�P�P�7Q�Q�Q�6
R�R�R�4
S
�
S�S�2
T�T�T�0
U	�	U
�U
�.
V�V�V�
W%�%W)�,W)�X,�,X0�3X0c��|�t��5tjddggd���ddd��dS#1swxYwYdS)NrrI)r�r�rP)r�r�rUr�rgs r�test_math_dist_leakzMathTests.test_math_dist_leak�s���
�
�
�z�
*�
*�	)�	)��I�q�!�f�i�i�i�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s�A�A�	Ac��ttd����ttdd����zd�tdd��D��zddzd	d
zgz}|D]�}|�|���5tj|��}|�t
|��t��|�||z|��|�	||dz|dzz��ddd��n#1swxYwY��|�
t��5tjd
��ddd��n#1swxYwYtjd��}|�t
|��t��|�|d��tjd��}|�t
|��t��|�|d��Gd�dt��}tj|d����}|�t
|��t��|�|d��|�
t��5tj|d����ddd��n#1swxYwYddtjd��dddg}|D]v}|�|���5|�
t ��5tj|��ddd��n#1swxYwYddd��n#1swxYwY�wdS)Nr�iX>i(Fc�D�g|]}tdd��D]
}d|z|z���S)i����(rI)r )r9r�r$s   rr:z'MathTests.testIsqrt.<locals>.<listcomp>�s5��H�H�H�A��s�B���H�H�A�q�!�t�a�x�H�H�H�Hr�<rHr�i'r�i�r`rr�TFrc��eZdZd�Zd�ZdS)�(MathTests.testIsqrt.<locals>.IntegerLikec��||_dSr_r`rbs  rrdz1MathTests.testIsqrt.<locals>.IntegerLike.__init__s
��"��
�
�
rc��|jSr_r`rgs rrvz2MathTests.testIsqrt.<locals>.IntegerLike.__index__s
���z�!rNrwrmrr�IntegerLiker�s2������
#�
#�
#�
"�
"�
"�
"�
"rr�i�rr�roza stringz3.5y@gY@r�)�listr r�rU�isqrt�assertIsr�rT�assertLessEqual�
assertLessr�r�r��objectr�r�r�)rcrOrarSr��
bad_valuess      r�	testIsqrtzMathTests.testIsqrt�sU��
��t������5��|�4�4�5�5�
6�H�H��r�3���H�H�H�
I��$�w��D��!�
"�	�!�	4�	4�E����E��*�*�
4�
4��J�u�%�%���
�
�d�1�g�g�s�+�+�+��$�$�Q�q�S�%�0�0�0������!��a��c�{�3�3�3�	
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4���
�
�z�
*�
*�	�	��J�r�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�J�t�����
�
�d�1�g�g�s�#�#�#�����A�����J�u�����
�
�d�1�g�g�s�#�#�#�����A����	"�	"�	"�	"�	"�&�	"�	"�	"�
�J�{�{�4�(�(�)�)���
�
�d�1�g�g�s�#�#�#�����B����
�
�
�z�
*�
*�	(�	(��J�{�{�2���'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�

��W�_�U�3�3�T��4�
�
� �	&�	&�E����E��*�*�
&�
&��&�&�y�1�1�&�&��J�u�%�%�%�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��	&�	&sm�;A5C<�<D	�D	�"E�E�
E�:J$�$J(�+J(�#L6�>L�L6�L#�#L6�&L#�'L6�6L:	�=L:	c��tj}|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd��d��|�|dd	��d
��|�|d	d��d
��|�|dd
��d��d}d}dD�]}||z}||z}||z|z}|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|��|�|||��|����|�|��d��|�|d��d��|�|d��d��|�|dd	d��d��|�|ddd	��d��|�t|d��|�t|dd	��|�t|dd��|�t|ddd��|�|td��td	����d
��dS)Nrrr�rGrWrXiYrYrZiHr\r]r^l ,�`aUx�-�xB�:Vn
Ldbl�m�e%Y%l};T^�	)r`l�|/Kr2rai�7rcrd)rU�lcmr�r�r�rs)rcr�rrfrgrhri�ds        r�test_lcmzMathTests.test_lcm+s���h�������Q����A�&�&�&������Q����A�&�&�&������R����Q�'�'�'������Q����A�&�&�&������Q����Q�'�'�'������Q����A�&�&�&������Q����Q�'�'�'������S�"���s�+�+�+������S�"���s�+�+�+������R�����,�,�,������9�8�:�:�R�	T�	T�	T�
!�� ��(�	-�	-�A��A��A��A��A��A���	�A����S�S��A�Y�Y��*�*�*����S�S��A�Y�Y��*�*�*����S�S�!��Q�Z�Z��+�+�+����S�S��Q�B�Z�Z��+�+�+����S�S��Q�B�Z�Z��+�+�+����S�S�!��Q�Z�Z��+�+�+����S�S�!��a�R�[�[�!�,�,�,����S�S�!��a�R�[�[�!�,�,�,�,���������"�"�"������S���3�'�'�'������T���C�(�(�(������S�"�c�*�*�E�2�2�2������S�!�R���!�,�,�,����)�S�%�0�0�0����)�S�%��4�4�4����)�S�#�t�4�4�4����)�S�#�q�$�7�7�7������[��-�-�{�2���?�?��E�E�E�E�Erc	�p	�|�ttj��|�dtjdd��d��|�dtjdd��d��|�dtjdd��d��|�d	tjdd��d
��|�t
tjdd��|�t
tjd
d��|�tjdd��d��|�tjd
d��d��|�tjtd��t��|�tjtd��t��|�	tj
tjtd������dddddzfD�]�}|�tjt|��t��|�tjt|��t��|�tjd|��d��|�tjd
|��d��|�tjd|��d��|�tjd|��d��|�	tj
tjt|������|�t
tjd|��|�t
tjd
|��|�tjd|��d��|�tjd|��d��|�tjt|��t��|�tjt|��t��|�	tj
tjt|���������dS)Nz
ldexp(0,1)rrz
ldexp(1,1)rIzldexp(1,-1)r�r�zldexp(-1,1)rr�r�r�i���rQr��i+���i��ld(	� F�x:^Vr�r�)r�r�rUr&r}r�r�r�r�r�rVr��rcrs  r�	testLdexpzMathTests.testLdexpWs������)�T�Z�0�0�0��
�
�<���A�a���!�4�4�4��
�
�<���A�a���!�4�4�4��
�
�=�$�*�Q�r�"2�"2�C�8�8�8��
�
�=�$�*�R��"2�"2�B�7�7�7����-���R��A�A�A����-���S�'�B�B�B������B��1�1�2�6�6�6������C��2�2�C�8�8�8������C��,�,�c�2�2�2������D�$�/�/��6�6�6�����
�4�:�c�1�#5�#5�6�6�7�7�7�����R��0�	<�	<�A����T�Z��a�R�0�0�#�6�6�6����T�Z��q�b�1�1�4�8�8�8����T�Z��Q�B�/�/��4�4�4����T�Z��a�R�0�0�#�6�6�6����T�Z��Q�B�/�/��4�4�4����T�Z��a�R�0�0�#�6�6�6��O�O�D�J�t�z�#��r�':�':�;�;�<�<�<����m�T�Z��Q�?�?�?����m�T�Z��a�@�@�@����T�Z��A�.�.��3�3�3����T�Z��Q�/�/��5�5�5����T�Z��Q�/�/��5�5�5����T�Z��a�0�0�$�7�7�7��O�O�D�J�t�z�#�q�'9�'9�:�:�;�;�;�;�	<�	<rc��|�ttj��|�dtjdtjz��d��|�dtjd��d��|�dtjtj��d��|�dtjdd	��d
��|�dtjdd
zd��d
��|�dtjdd
zd��d	��|�dtjddz��d��|�ttjd��|�ttjddz��|�ttjt��|�tjt��t��|�
tjtjt������dS)Nzlog(1/e)rr�zlog(1)rzlog(e)z	log(32,2)r_rIrPzlog(10**40, 10)r�r�zlog(10**40, 10**20)r�z
log(10**1000)r�gO�+��@r�)
r�r�rU�logr}r�r�r�r�r�r�rVr�rgs r�testLogzMathTests.testLogws������)�T�X�.�.�.��
�
�:�t�x��$�&��1�1�2�6�6�6��
�
�8�T�X�a�[�[�!�,�,�,��
�
�8�T�X�d�f�-�-�q�1�1�1��
�
�;����A����2�2�2��
�
�$�d�h�r�2�v�r�&:�&:�B�?�?�?��
�
�(�$�(�2�r�6�6�*B�*B�A�F�F�F��
�
�?�D�H�R��X�$6�$6�%�	'�	'�	'����*�d�h��5�5�5����*�d�h��T��	�:�:�:����*�d�h��5�5�5������#����,�,�,�����
�4�8�C�=�=�1�1�2�2�2�2�2rc	��|�ttj��dddzddzfD]I}|�tj|��tjt|�������J|�ttjd��|�tjt��t��dS)NrI�Zi,r�)	r�r�rU�log1prr;r�r�r�r�s  r�	testLog1pzMathTests.testLog1p�s������)�T�Z�0�0�0��Q��U�A�s�F�#�	H�	H�A��"�"�4�:�a�=�=�$�*�U�1�X�X�2F�2F�G�G�G�G����*�d�j�"�5�5�5������C���#�.�.�.�.�.rc�`�|�ttj��|�tjd��d��|�tjd��d��|�tjd��d��|�tjddz��d��|�tjdd	z��d
��|�tjddz��d��|�t
tjd
��|�t
tjt��|�tjtjt������dS)NrrQrIr�r�r�i�g��@�g�@i�g@�@r�)
r�r�rU�log2r�r�r�r�rVr�rgs r�testLog2zMathTests.testLog2�sB�����)�T�Y�/�/�/�	
�����1���s�+�+�+������1���s�+�+�+������1���s�+�+�+�	
�����1�d�7�+�+�V�4�4�4������1�d�7�+�+�V�4�4�4������1�d�7�+�+�V�4�4�4����*�d�i��6�6�6����*�d�i��6�6�6�����
�4�9�S�>�>�2�2�3�3�3�3�3rr�c��d�tdd��D��}d�tdd��D��}|�||��dS)Nc�\�g|])}tjtjd|������*Sr7)rUr�r&r8s  rr:z+MathTests.testLog2Exact.<locals>.<listcomp>�s.��L�L�L�A�$�)�D�J�s�A�.�.�/�/�L�L�Lrr?r�c�,�g|]}t|����Srm�r;r8s  rr:z+MathTests.testLog2Exact.<locals>.<listcomp>����9�9�9��E�!�H�H�9�9�9r)r r�)rcrQr)s   r�
testLog2ExactzMathTests.testLog2Exact�s[��
M�L��u�d�9K�9K�L�L�L��9�9�e�E�4�&8�&8�9�9�9�������*�*�*�*�*rc�t�|�ttj��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�d	tjdd
z��d��|�t
tjd��|�t
tjdd
z��|�t
tjt��|�tjt��t��|�
tjtjt������dS)
Nz
log10(0.1)皙�����?r�zlog10(1)rrz	log10(10)r�zlog10(10**1000)r�g@�@r�)
r�r�rU�log10r}r�r�r�r�r�r�rVr�rgs r�	testLog10zMathTests.testLog10�s5�����)�T�Z�0�0�0��
�
�<���C���"�5�5�5��
�
�:�t�z�!�}�}�a�0�0�0��
�
�;��
�2����2�2�2��
�
�$�d�j��T��&:�&:�F�C�C�C����*�d�j�$�7�7�7����*�d�j�2�t�8�)�<�<�<����*�d�j�$�7�7�7������#����,�,�,�����
�4�:�c�?�?�3�3�4�4�4�4�4rc�����ttj���fd�}|dtjd��d��|dtjd��d����tjt
��dt
f����tjt��d	tf��tjt��}��tj	|d
������tj	|d����dS)Nc���||c\}}\}}t||z
��tkst||z
��r��|�d|�d|����dSdSrr)r|rr)�v1�v2�e1�e2rcs       �r�testmodfz$MathTests.testModf.<locals>.testmodf�sy���!'���H�R��h�r�2��2�b�5�z�z�C���3�r�"�u�:�:���	�	��4�4������3�4�4�4�4�4� �rz	modf(1.5)r�)r�r�z
modf(-1.5)r�)r�r�rQr�rr)
r�r�rU�modfr�r�r�r�r�rV)rcr��modf_nans`  r�testModfzMathTests.testModf�s������)�T�Y�/�/�/�	4�	4�	4�	4�	4�	���d�i��n�n�j�9�9�9����t�y�����=�=�=������3���#�s��4�4�4������4���4��,�7�7�7��9�S�>�>������
�8�A�;�/�/�0�0�0�����
�8�A�;�/�/�0�0�0�0�0rc�(�|�ttj��|�dtjdd��d��|�dtjdd��d��|�dtjdd��d��|�dtjdd��d	��|�tjtd��t��|�tjtd��t��|�tjdt��d
��|�tjdt��d
��|�tj	tjtd������|�tj	tjdt������|�tj	tjdt������|�tjdt��d��|�tjdt��d��|�tjdd��d��|�tjdd
��d��|�tjdd��d��|�tjdd��d
��|�tjdd��d
��|�ttjdd��|�ttjdd��|�ttjdd��|�tjdt��t��|�tj	tjdt������|�tjtt��t��|�tjtd��t��|�tjtd
��t��|�tjtd��t��|�tjtd��d
��|�tjtd��d
��|�tjtd��d��|�tjtd��d��|�tjtd��d��|�tjtt��d��|�tj	tjtt������|�tjdt��d��|�tjdd��d��|�tjdd
��d��|�tjdd��d��|�tjdd��d
��|�tjdd��d
��|�ttjdd��|�ttjdd��|�ttjdd��|�tjdt��t��|�tj	tjdt������|�tjtt��t��|�tjtd��t��|�tjtd
��t��|�tjtd��t��|�tjtd��d
��|�tjtd��d
��|�tjtd��d��|�tjtd��d��|�tjtd��d��|�tjtt��d��|�tj	tjtt������|�tjdt��d
��|�tjdd��d��|�ttjdd
��|�tjdd��d
��|�tjdd��d
��|�tjdd��d
��|�tjdd��d
��|�ttjdd��|�tjdd��d��|�tjdt��d
��|�tj	tjdt������|�tjd
t��d
��|�tjd
d��d
��|�tjd
d
��d
��|�tjd
d��d
��|�tjd
d��d
��|�tjd
d��d
��|�tjd
d��d
��|�tjd
d��d
��|�tjd
d��d
��|�tjd
t��d
��|�tjd
t��d
��|�tjd
d��d
��|�tjdd��d
��|�tjtd��d
��|�tjd
d��d
��|�tjdd��d
��|�tjtd��d
��|�ttjdd
��|�ttjdd��|�tjdt��d��|�tjdt��d��|�tjdt��t��|�tjdt��t��|�tjdt��t��|�tjdt��t��|�tjdt��d��|�tjdt��d��|�tjdt��t��|�tjdt��t��|�tjdt��d��|�tjdt��d��|�tjdt��d��|�tjdt��d��|�tjdt��t��|�tjdt��t��|�dtjdd��d��|�d tjdd��d!��|�d"tjdd
��d��|�d#tjdd��d
��|�d$tjdd��d
��|�d%tjdd��d&��|�d'tjdd��d(��|�d)tjdd��d*��|�ttjdd&��|�ttjdd	��dS)+Nzpow(0,1)rrzpow(1,0)zpow(2,1)rIz	pow(2,-1)r�r�r�rQr�r�r�r�g�r�rr�g.�g�������gffffff�?rw��������?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.��?z
(-2.)**-3.g��)r�r�rU�powr}r�r�r�r�rVr�r�rgs r�testPowzMathTests.testPow�s������)�T�X�.�.�.��
�
�:�t�x��!�}�}�a�0�0�0��
�
�:�t�x��!�}�}�a�0�0�0��
�
�:�t�x��!�}�}�a�0�0�0��
�
�;����2����4�4�4������#�q�)�)�3�/�/�/������$��*�*�D�1�1�1����$�(�1�c�*�*�R�0�0�0����$�(�1�d�+�+�b�1�1�1�����
�4�8�C��#3�#3�4�4�5�5�5�����
�4�8�A�s�#3�#3�4�4�5�5�5�����
�4�8�A�s�#3�#3�4�4�5�5�5������!�S�)�)�1�-�-�-�	
�����"�c�*�*�B�/�/�/������"�b�)�)�2�.�.�.������"�c�*�*�B�/�/�/������"�b�)�)�2�.�.�.������"�b�)�)�2�.�.�.������"�c�*�*�B�/�/�/����*�d�h��C�8�8�8����*�d�h��D�9�9�9����*�d�h��C�8�8�8������"�d�+�+�S�1�1�1�����
�4�8�B��#4�#4�5�5�6�6�6�	
�����#�s�+�+�S�1�1�1������#�r�*�*�C�0�0�0������#�s�+�+�S�1�1�1������#�r�*�*�C�0�0�0������#�r�*�*�B�/�/�/������#�s�+�+�R�0�0�0������#�s�+�+�R�0�0�0������#�t�,�,�b�1�1�1������#�s�+�+�R�0�0�0������#�t�,�,�b�1�1�1�����
�4�8�C��#5�#5�6�6�7�7�7�	
�����#�s�+�+�R�0�0�0������#�r�*�*�C�0�0�0������#�s�+�+�R�0�0�0������#�r�*�*�B�/�/�/������#�r�*�*�B�/�/�/������#�s�+�+�R�0�0�0����*�d�h��S�9�9�9����*�d�h��T�:�:�:����*�d�h��S�9�9�9������#�t�,�,�c�2�2�2�����
�4�8�C��#5�#5�6�6�7�7�7�	
�����$��,�,�c�2�2�2������$��+�+�T�2�2�2������$��,�,�c�2�2�2������$��+�+�S�1�1�1������$��+�+�R�0�0�0������$��,�,�b�1�1�1������$��,�,�b�1�1�1������$��-�-�r�2�2�2������$��,�,�c�2�2�2������$��-�-�r�2�2�2�����
�4�8�D�#�#6�#6�7�7�8�8�8�	
�����#�s�+�+�R�0�0�0������#�r�*�*�C�0�0�0����*�d�h��S�9�9�9������#�r�*�*�B�/�/�/������#�r�*�*�B�/�/�/������#�s�+�+�R�0�0�0������#�s�+�+�R�0�0�0����*�d�h��T�:�:�:������#�s�+�+�S�1�1�1������#�t�,�,�b�1�1�1�����
�4�8�C��#5�#5�6�6�7�7�7�	
�����"�c�*�*�B�/�/�/������"�b�)�)�2�.�.�.������"�c�*�*�B�/�/�/������"�b�)�)�2�.�.�.������"�b�)�)�2�.�.�.������"�c�*�*�B�/�/�/������"�c�*�*�B�/�/�/������"�d�+�+�R�0�0�0������"�c�*�*�B�/�/�/������"�d�+�+�R�0�0�0������"�c�*�*�B�/�/�/�	
�����#�r�*�*�B�/�/�/������$��+�+�R�0�0�0������#�r�*�*�B�/�/�/������#�s�+�+�R�0�0�0������$��,�,�b�1�1�1������#�s�+�+�R�0�0�0�	
���*�d�h��S�9�9�9����*�d�h��d�;�;�;�	
�����#�t�,�,�b�1�1�1������#�t�,�,�b�1�1�1������#�t�,�,�c�2�2�2������#�t�,�,�c�2�2�2������$��-�-�s�3�3�3������$��-�-�s�3�3�3������$��-�-�r�2�2�2������$��-�-�r�2�2�2�	
�����#�s�+�+�S�1�1�1������#�s�+�+�S�1�1�1������#�s�+�+�R�0�0�0������#�s�+�+�R�0�0�0������$��,�,�b�1�1�1������$��,�,�b�1�1�1������$��,�,�c�2�2�2������$��,�,�c�2�2�2�	
�
�
�;����s� 3� 3�T�:�:�:��
�
�;����s� 3� 3�S�9�9�9��
�
�;����s� 3� 3�T�:�:�:��
�
�;����s� 3� 3�S�9�9�9��
�
�<���$��!5�!5�s�;�;�;��
�
�<���$��!5�!5�t�<�<�<��
�
�<���$��!5�!5�t�<�<�<��
�
�<���$��!5�!5�v�>�>�>����*�d�h��d�;�;�;����*�d�h��c�:�:�:�:�:rc���|�ttj��|�dtjd��tj��|�dtjd��tjdz��|�dtjd��tjdz��|�d	tjd
��d
��dS)Nzradians(180)�zradians(90)r�rIzradians(-45)i���r�z
radians(0)r)r�r�rU�radiansr}rrgs r�testRadianszMathTests.testRadians]s������)�T�\�2�2�2��
�
�>�4�<��#4�#4�d�g�>�>�>��
�
�=�$�,�r�"2�"2�D�G�A�I�>�>�>��
�
�>�4�<��#4�#4�t�w�h�q�j�A�A�A��
�
�<���a���!�4�4�4�4�4rc�f���ddlm���fd�}gd�}|D]�}��|���5|���\}}}t�|��}t�|��}t�|��}	||||	��t
j||��}
��|
�	��|	�	����ddd��n#1swxYwY��t�d��}tdd��D]k}|dkr�	||z}td	��D]M}
|
|z}t
j||��}
||||
��t
j||��}
||||
���N�ltd
ddd
ttfD]\}��t
jt|������t
j|t�����]dD]^}��t
j|t��|����t
j|t��|���_td
dd
dtfD�])}��t ��5t
jt|��ddd��n#1swxYwY��t ��5t
jt|��ddd��n#1swxYwY��t ��5t
j|d
��ddd��n#1swxYwY��t ��5t
j|d��ddd��n#1swxYwY��+dS)Nrrmc���	�|���|���|��}}}��t|��t|dz����||z
|z}��|t|����t|��t|dz��kr+��|dzt|dz����dSdS)NrI)r�r'r�rT)	rrf�r�fx�fy�frrrnrcs	       ��r�
validate_specz.MathTests.testRemainder.<locals>.validate_spechs����
�"��!���h�h�q�k�k�8�8�A�;�;�B��B�� � ��R���#�b��d�)�)�4�4�4��b��B��A����Q��A���'�'�'��2�w�w�#�b��d�)�)�#�#�� � ��1��c�!�A�#�h�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���r�rQr�r�r�)r�r�rQr�r�)rzrnr�r:r;rKrU�	remainderr��hexr r�r�r��assertIsNaNr�r�)rcr�	testcasesr�x_hex�y_hex�expected_hexrrfr)rQ�tinyr�mrarns`              @r�
testRemainderzMathTests.testRemainderds�����&�&�&�&�&�&�
	0�
	0�
	0�
	0�
	0�
	0� 9
�9
�9
�	�v�
	?�
	?�D����4��(�(�	
?�	
?�-1�Z�Z�\�\�*��u�l��M�M�%�(�(���M�M�%�(�(�� �=�=��6�6���
�a��H�-�-�-����1�-�-��� � ������x�|�|�~�~�>�>�>�	
?�	
?�	
?�	
?�	
?�	
?�	
?�	
?�	
?�	
?�	
?����	
?�	
?�	
?�	
?���}�}�Y�'�'���s�B���		-�		-�A��A�v�v���D��A��3�Z�Z�
-�
-����H�����1�-�-���
�a��F�+�+�+�����A�.�.���
�q�b�!�V�,�,�,�,�
-��3��c�4��s�;�	9�	9�E����T�^�C��7�7�8�8�8����T�^�E�3�7�7�8�8�8�8�,�	A�	A�E����T�^�E�3�7�7��?�?�?����T�^�E�4�8�8�%�@�@�@�@��D�$��S�#�6�	,�	,�E��"�"�:�.�.�
+�
+���s�E�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��"�"�:�.�.�
,�
,���t�U�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��"�"�:�.�.�
+�
+���u�c�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��"�"�:�.�.�
,�
,���u�d�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,sZ�CC<�<D	�D	�#K
�
K	�K	�/L�L	�L	�;M�M!	�$M!	�N$�$N(	�+N(	c��|�ttj��|�dtjd��d��|�dtjtjdz��d��|�dtjtjdz��d��	|�tjtjt������|�tjtjt������nf#t$rY|�ttjt��|�ttjt��YnwxYw|�tjtjt������dS)Nzsin(0)rz	sin(pi/2)rIrz
sin(-pi/2)r�)r�r�rUr~r}rr�rVr�r�r�r�rgs r�testSinzMathTests.testSin�sW�����)�T�X�.�.�.��
�
�8�T�X�a�[�[�!�,�,�,��
�
�;������� 3� 3�Q�7�7�7��
�
�<���4�7�(�1�*�!5�!5�r�:�:�:�	:��O�O�D�J�t�x��}�}�5�5�6�6�6��O�O�D�J�t�x��~�~�6�6�7�7�7�7���	:�	:�	:����j�$�(�C�8�8�8����j�$�(�D�9�9�9�9�9�	:����	
����
�4�8�C�=�=�1�1�2�2�2�2�2s�=A<D:�:A F�Fc���|�ttj��|�dtjd��d��|�dtjd��dztjd��dzz
d��|�dtjd��tjd��zd��|�tjt��t��|�tjt��t��|�	tj
tjt������dS)Nzsinh(0)rzsinh(1)**2-cosh(1)**2rrIr�zsinh(1)+sinh(-1))r�r�rU�sinhr}r�r�r�r�r�rVr�rgs r�testSinhzMathTests.testSinh�s������)�T�Y�/�/�/��
�
�9�d�i��l�l�A�.�.�.��
�
�*�D�I�a�L�L�!�O�D�I�a�L�L�!�O�,K�R�P�P�P��
�
�%�t�y��|�|�D�I�b�M�M�'A�1�E�E�E������3����-�-�-������4���$�/�/�/�����
�4�9�S�>�>�2�2�3�3�3�3�3rc��|�ttj��|�dtjd��d��|�dtjd��d��|�dtjd��d��|�dtjd��d	��|�d
tjd��d��|�d
tjd��d��|�dtjd��d��|�tjt��t��|�ttjd��|�ttjt��|�	tj
tjt������dS)Nzsqrt(0)rrQz	sqrt(2.5)g@gS[�:XL�?z
sqrt(0.25)r�r�zsqrt(25.25)g@9@g�)#L�@zsqrt(1)rzsqrt(4)r�rIr�)r�r�rUr|r}r�r�r�r�r�rVr�rgs r�testSqrtzMathTests.testSqrt�sl�����)�T�Y�/�/�/��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��n�n�c�2�2�2��
�
�;��	�#���0B�C�C�C��
�
�<���4���#�6�6�6��
�
�=�$�)�E�"2�"2�4E�F�F�F��
�
�9�d�i��l�l�A�.�.�.��
�
�9�d�i��l�l�A�.�.�.������3����-�-�-����*�d�i��4�4�4����*�d�i��6�6�6�����
�4�9�S�>�>�2�2�3�3�3�3�3rc��|�ttj��|�dtjd��d��|�dtjtjdz��d��|�dtjtjdz��d��	|�tjtjt������|�tjtjt������n]#|�ttjt��|�ttjt��YnxYw|�tjtjt������dS)Nztan(0)rz	tan(pi/4)r�rz
tan(-pi/4)r�)r�r�rU�tanr}rr�rVr�r�r�r�rgs r�testTanzMathTests.testTan	sC�����)�T�X�.�.�.��
�
�8�T�X�a�[�[�!�,�,�,��
�
�;������� 3� 3�Q�7�7�7��
�
�<���4�7�(�1�*�!5�!5�r�:�:�:�	:��O�O�D�J�t�x��}�}�5�5�6�6�6��O�O�D�J�t�x��~�~�6�6�7�7�7�7��	:����j�$�(�C�8�8�8����j�$�(�D�9�9�9�9�9��������
�4�8�C�=�=�1�1�2�2�2�2�2s�=A<D:�:AFc�z�|�ttj��|�dtjd��d��|�dtjd��tjd��zdtjd�����|�dtjt��d��|�dtjt��d��|�tj	tjt������dS)	Nztanh(0)rztanh(1)+tanh(-1)rr�r�z	tanh(inf)z
tanh(-inf))r�r�rU�tanhr}r�r�r�r�rVr�rgs r�testTanhzMathTests.testTanhs������)�T�Y�/�/�/��
�
�9�d�i��l�l�A�.�.�.��
�
�%�t�y��|�|�D�I�b�M�M�'A�1��8�A�;�;�	�	(�	(�	(��
�
�;��	�#����2�2�2��
�
�<���4���"�5�5�5�����
�4�9�S�>�>�2�2�3�3�3�3�3rc���|�tjd��d��|�tjdtjd����tjdd����dS)Nr�r�)r�rUrr�rgs r�testTanhSignzMathTests.testTanhSignsi��	
�����3����-�-�-������r�4�9�S�>�>�:�:���r�3�/�/�	1�	1�	1�	1�	1rc���|�tjd��d��|�tjd��d��|�ttjd����t��|�ttjd����t��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd	��d
��Gd�d��}Gd
�dt
��}Gd�d��}|�tj|����d��|�tj|����d��|�ttj��|�ttjdd��|�ttjtd����|�ttj|����dS)Nrr�r�r�g����?g�����g�!��rg-���?Y�i����c��eZdZd�ZdS)�'MathTests.test_trunc.<locals>.TestTruncc��dS�N�rmrgs r�	__trunc__z1MathTests.test_trunc.<locals>.TestTrunc.__trunc__3r�rN�rjrkrlr(rmrr�	TestTruncr$2r�rr*c��eZdZd�ZdS)�(MathTests.test_trunc.<locals>.FloatTruncc��dSr&rmrgs rr(z2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__6r�rNr)rmrr�
FloatTruncr,5r�rr.c��eZdZdS)�)MathTests.test_trunc.<locals>.TestNoTruncNrqrmrr�TestNoTruncr08r�rr1r'rIg�7@)	r�rU�truncr�rTr;r�r�r])rcr*r.r1s    r�
test_trunczMathTests.test_trunc&s��������A����*�*�*������B����,�,�,�����d�j��m�m�,�,�c�2�2�2�����d�j��o�o�.�.��4�4�4������C���!�,�,�,������D�)�)�2�.�.�.������H�-�-�q�1�1�1������I�.�.��3�3�3������I�.�.��3�3�3������H�-�-�t�4�4�4�	�	�	�	�	�	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	�	�	�	�	
�����I�I�K�K�0�0�"�5�5�5������J�J�L�L�1�1�2�6�6�6����)�T�Z�0�0�0����)�T�Z��A�6�6�6����)�T�Z��4���A�A�A����)�T�Z�����?�?�?�?�?rc�v�|�tjd����|�tjd����|�tjd����|�tjd����|�tjt	d������|�tjt	d������|�tjt	d������dS)NrQr�r�r�rrr)r�rU�isfinite�assertFalser;rgs r�testIsfinitezMathTests.testIsfiniteCs�������
�c�*�*�+�+�+�����
�d�+�+�,�,�,�����
�c�*�*�+�+�+�����
�d�+�+�,�,�,������u�U�|�|�4�4�5�5�5������u�U�|�|�4�4�5�5�5������u�V�}�}�5�5�6�6�6�6�6rc�H�|�tjtd������|�tjtd������|�tjtd��dz����|�tjtd������|�tjd����|�tjd����dS)Nrz-nanrrQr�)r�rUrVr;r6rgs r�	testIsnanzMathTests.testIsnanLs�������
�5��<�<�0�0�1�1�1�����
�5��=�=�1�1�2�2�2�����
�5��<�<�"�#4�5�5�6�6�6������E�%�L�L�1�1�2�2�2������B���(�(�(������B���(�(�(�(�(rc�v�|�tjtd������|�tjtd������|�tjd����|�tjd����|�tjtd������|�tjd����|�tjd����dS)Nrrg�g�rrQr�)r�rUrWr;r6rgs r�	testIsinfzMathTests.testIsinfTs�������
�5��<�<�0�0�1�1�1�����
�5��=�=�1�1�2�2�2�����
�5�)�)�*�*�*�����
�6�*�*�+�+�+������E�%�L�L�1�1�2�2�2������B���(�(�(������B���(�(�(�(�(rc�h�|�tjtj����dSr_)r�rUrVrrgs r�test_nan_constantzMathTests.test_nan_constant]s&������
�4�8�,�,�-�-�-�-�-rc�^�|�tjtj����|�tjd��|�tjt
d����|�tjt
d����dS)NrQrr)r�rUrWr�
assertGreaterr�r;rgs r�test_inf_constantzMathTests.test_inf_constantas|������
�4�8�,�,�-�-�-����4�8�S�)�)�)������5��<�<�0�0�0����$�(��E�&�M�M�2�2�2�2�2rzrequires verbose modec��	tjd��}n#|�d��YnxYw|dkr|�d��	tjd��}|�d��n#t$rYnwxYw	tjd��}|�d��dS#t
$rYdSwxYw)	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)rUrEr{r�r|r��rcrs  r�test_exceptionszMathTests.test_exceptionsms��	(����%�%�A�A��	(�
�I�I�'�
(�
(�
(�
(�
(������6�6��I�I�A�B�B�B�	H����$�$�A�
�I�I�F�G�G�G�G���	�	�	��D�	����	:��	�$���A�
�I�I�8�9�9�9�9�9���	�	�	��D�D�	���s,��0�A9�9
B�B�
B5�5
C�Cc��dh}d}tjdkr`tj��d}	tt	t
|�d������}n#t$rYnwxYwd}g}tt��D]�\}}}}	}
}}|	dks|dkr�|dvr�|�|dkr||vr�)tt|��}
d	|vsd
|vrd}
nd|vrd
}
	|
|��}n#t$rd}Ynt$rd
}YnwxYwd\}}t|
|||��}|���|�||||��}|�|����|r-|�dd�|��z��dSdS)N�tan0064�darwinr�.�{}: {}({!r}): {}rQ)�rect�polar)r�rP�invalid�divide-by-zeror��overflowr��rPrQzFailures in test_testfile:
  �
  )rI�platform�mac_verr�r�rTr:r�rO�	test_file�getattrrUr�r[r(rLr{�join)rc�
SKIP_ON_TIGER�osx_version�version_txtrY�failuresrArB�ar�ai�er�eirF�funcrr+r,rX�msgs                   r�
test_testfilezMathTests.test_testfile�s��#��
����<�8�#�#�"�*�,�,�Q�/�K�
�#�C��[�->�->�s�-C�-C�$D�$D�E�E�����
�
�
���
����&����-;�I�-F�-F�"	!�"	!�)�B��B��B��E��S�y�y�B�#�I�I���&�&�&���&�;��+@�+@���&�&���4��$�$�D��E�!�!�%5��%>�%>�!����u�$�$�$��
)���b�������
&�
&�
&�%���� �
)�
)�
)�(����
)���� &��G�W�"�2�v�w��@�@�G�����/�/�"�b�"�g�6�6�C��O�O�C� � � � ��	-��I�I�6��k�k�(�+�+�,�
-�
-�
-�
-�
-�	-�	-s)�5A&�&
A3�2A3�C*�*D�8D�Dc�<�d}g}tt��D]�\}}}}}tt|��}d|vsd|vrd}nd|vrd}	||��}	n#t$rd}	Ynt
$rd}	YnwxYwd\}
}|dkrd	}
n)|d
krd}n |dkr|d
kr|dkrd}
n|dkrd}
nd}
t
||	|
|��}|���|�||||��}
|�|
����|r-|�	dd�
|��z��dSdS)NrHrKrLr�rMr�rNr}r��lgammagV瞯�<�erfcrQr�r��$@r�r�zFailures in test_mtestfile:
  rO)rG�math_testcasesrSrUr�r�r[r(rLr{rT)rcrYrXrArBrCr)rFr]r*r+r,rXr^s              r�test_mtestfilezMathTests.test_mtestfile�s���%����,;�N�,K�,K�8	!�8	!�(�B��C��5��4��$�$�D��E�!�!�%5��%>�%>�'����u�$�$�*��
&��d�3�i�i�����
#�
#�
#�"���� �
&�
&�
&�%����
&���� &��G�W��W�}�}�����x���
 ����v���#��*�*���9�9� �G�G��4�Z�Z�!�G�G�"�G�"�8�S�'�7�C�C�G�����/�/�"�b�#�w�7�7�C��O�O�C� � � � ��	-��I�I�7��k�k�(�+�+�,�
-�
-�
-�
-�
-�	-�	-s�A�A0�"A0�/A0c�H�tj}|�|g��d��|�|gd���d��|�|tt	dd������d��|�|ttt	dd��������d��|�|t	dd��d���d��|�|gd	���d
��|�|gd���d��|�|gd
���d��|�|gd���d��|�|gd���d��|�|gd���t
d����|�t|��|�t|d��|�t|gd���|�t|gd�d���|�t|ddgd���td��td��g}|�t||td�����|�t|dgdgdgg��|�t|ddig��|�t|ddigdzddi���|�t|dgdgdggg���|�|ddgd���d��|�|ddgddg���gd���|�|gddi���ddi��|�t��5|ddgd��ddd��n#1swxYwY|�|gd���d��|�|gd ���d��|�|gd!���d��d5d"�}t	dd#��}|�||��||����t	d$d%��}|�||��||����t	d&d'��}|�||��d��d(�t	dd'��D��}|�||��||����d)�t	d&d%��D��}|�||��||����d*�t	d&d'��D��}|�
||����|�
|dddt
d+��ddg����|�
|ddt
d+��ddg����|�
|dt
d+��ddg����|�
|dt
d,��t
d+��dg����|�
|dt
d-��t
d+��dg����|�
|dt
d+��t
d,��dg����|�
|dt
d+��t
d-��dg����|�|dddt
d,��d.d/g��t
d-����|�|dddt
d-��d.d/g��t
d,����|�
|dddt
d,��d.d/g����|�
|dddt
d-��d.d/g����|�
|dddt
d,��d.ddg����|�
|dddt
d-��d.ddg����|�t|gd0�����t��|�t|gd1�����t��|�t|t	dd#������t��|�t|t	dd#��d2�����t��|�t|dtjd3��dd/dd4g����tj��dS)6NrrP)rrIr�i�r�i_7)rrIr�r�rPrY)r�r�r�r�r�rc)rrIr�r�r�)r�r�r�r�rP)rr�rrrg)r�r�rgrrr�)rhrirg��a�cr�br��ab�abababababab)rrIrrIrrIrrIrrIrrIr�)rrrIr�r)rrrIr�)rrIr�rc��|D]}||z}�|Sr_rm)r+r�elems   r�_naive_prodz(MathTests.test_prod.<locals>._naive_prod3s!�� �
�
����
����Lri'i���r�i���r�c�,�g|]}t|����Srmr��r9rs  rr:z'MathTests.test_prod.<locals>.<listcomp>Cs��5�5�5��E�!�H�H�5�5�5rc�,�g|]}t|����Srmr�rrs  rr:z'MathTests.test_prod.<locals>.<listcomp>Es��7�7�7��E�!�H�H�7�7�7rc�,�g|]}t|����Srmr�rrs  rr:z'MathTests.test_prod.<locals>.<listcomp>Gr�rrrrr�r�)rrIr�r�rPrb)rr�r�r�rPrbr�r�rbrB)rU�prodr�r�r r�r;r�r��	bytearrayrr�rTr�r�)rcrur�rpr+s     r�	test_prodzMathTests.test_prod	s�	���y�������b���1�%�%�%������b��*�*�*�A�.�.�.������d�5��1�:�:�.�.�/�/��6�6�6������d�4��a��
�
�#3�#3�4�4�5�5�t�<�<�<������e�A�r�l�l�"�5�5�5�w�?�?�?������o�o�o�.�.��4�4�4������7�7�7�8�8�%�@�@�@������1�1�1�2�2�E�:�:�:������3�3�3�4�4�e�<�<�<�	
�����1�1�1�2�2�E�:�:�:������5�5�5�6�6��e���E�E�E����)�T�*�*�*����)�T�2�.�.�.����)�T�?�?�?�;�;�;����)�T�?�?�?�"��E�E�E����)�T�D�$�<�s��C�C�C��D�/�/�9�T�?�?�3�����)�T�6��3����H�H�H����)�T�Q�C�!��q�c�?�;�;�;����)�T�Q�q�E�7�3�3�3����)�T�Q�q�E�7�1�9�Q�q�E��B�B�B����)�T�Q�C�!��q�c�?�"��E�E�E�	
�����q�!�f�D�1�1�1�>�B�B�B������q�!�f�Q��F�3�3�3�5Y�5Y�5Y�Z�Z�Z������b��A��/�/�/�!�A��7�7�7�
�
�
�y�
)�
)�	�	��D�"�b��1����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����l�l�l�+�+�Q�/�/�/������l�l�l�+�+�Q�/�/�/������l�l�l�+�+�Q�/�/�/�	�	�	�	���E�?�?�������h�����X�)>�)>�?�?�?����$�$�������h�����X�)>�)>�?�?�?����%�%�������h����+�+�+�6�5�e�A�t�n�n�5�5�5�������h�����X�)>�)>�?�?�?�7�7�e�E�2�&6�&6�7�7�7�������h�����X�)>�)>�?�?�?�9�9�e�E�4�&8�&8�9�9�9�������h���(�(�(�	
�����q�!�Q��e���a��;�<�<�=�=�=������q�!�U�5�\�\�1�a�8�9�9�:�:�:������q�%��,�,��1�5�6�6�7�7�7������q�%��,�,��e���Q�?�@�@�A�A�A������q�%��-�-��u���a�@�A�A�B�B�B������q�%��,�,��e���Q�?�@�@�A�A�A������q�%��,�,��f�
�
�a�@�A�A�B�B�B������q�!�Q��e���R��:�;�;�U�6�]�]�K�K�K������q�!�Q��f�
�
�b��;�<�<�e�E�l�l�K�K�K������q��1�U�5�\�\�2�q�9�:�:�;�;�;������q��1�U�6�]�]�B��:�;�;�<�<�<������q�!�Q��e���b�!�Q�?�@�@�A�A�A������q�!�Q��f�
�
�r�1�a�@�A�A�B�B�B�	
����d�d�#5�#5�#5�6�6�7�7��=�=�=�����d�d�#7�#7�#7�8�8�9�9�5�A�A�A�����d�d�5��E�?�?�3�3�4�4�c�:�:�:�����d�d�5��E�?�?�#�>�>�>�?�?��G�G�G�����d�d�A�w��s�';�';�Q��1�a�#H�I�I�J�J� ��	*�	*�	*�	*�	*s�O�O!�$O!c���tj}tj}td��D]y}|dkrt|dz��n#|dkrtd��ntd��D]:}|�|||��||��|||z
��z���;�ztdd��D]X}td|��D]E}|�|||��||dz
|dz
��|z||dz
|��z���F�Ytdd��D]k}|�||d��d��|�||d��|��|�|||��||�����ltd��D]S}|�||��||����|�||d��||�����T|�t|dd	��|�t|dtjd	����|�t|dd
��|�t|dd��|�t|tjd��d��|�t|dd��|�t|��|�t|ddd
��|�t|��|�t|dd��|�t|ddzd��|�t|dd��|�t|dddz��|�|dd��d��|�|dddz��d��ddz}|�||d��d��|�||d��|��|�||d��||dz
z��tjd���r|�t|||��dD]W\}}|�|||��d��|�
t|||����t���X|�|t!d��t!d����d��|�|t#d��t#d����d��td
��D]�}|�
t|t!d��t!|������t��|�
t|t#d��t#|������t����dS)Nr�r�rrHr�r�rr�r��1rc�10r�r�rIr�T��cpython�)TT)TF)FFrP)rU�permr�r r�r�r�r�r�r�r�check_impl_detailr�r�r�rTrprs)rcr~r�rr�s     r�testPermzMathTests.testPermes����y���N�	��s���	C�	C�A�&'�#�g�g�e�A��E�l�l�l��C���5��9�9�9�U�SU�Y�Y�
C�
C��� � ���a����!*��1�����1�q�5�1A�1A�!A�C�C�C�C�
C�
�q�#���	V�	V�A��1�a�[�[�
V�
V��� � ���a����T�T�!�a�%��Q��-?�-?�!�-C�d�d�1�q�5�RS�n�n�-T�U�U�U�U�
V��q�#���	7�	7�A����T�T�!�Q�Z�Z��+�+�+����T�T�!�Q�Z�Z��+�+�+����T�T�!�Q�Z�Z���1���6�6�6�6��r���	:�	:�A����T�T�!�W�W�i�i��l�l�3�3�3����T�T�!�T�]�]�I�I�a�L�L�9�9�9�9�	
���)�T�2�s�3�3�3����)�T�2�w��s�/C�/C�D�D�D����)�T�2�s�3�3�3����)�T�4��3�3�3����)�T�7�?�4�+@�+@�!�D�D�D����)�T�4��3�3�3����)�T�*�*�*����)�T�2�q�!�4�4�4����)�T�*�*�*�	
���*�d�B��2�2�2����*�d�Q��W�H�a�8�8�8����*�d�A�r�2�2�2����*�d�A��4��x�8�8�8�	
�����a����Q�'�'�'������a��D��)�)�1�-�-�-�
�t�G�������a����Q�'�'�'������a����Q�'�'�'������a����Q�!�A�#�Y�/�/�/��$�T�2�2�2�	9����m�T�1�a�8�8�8�?�	1�	1�D�A�q����T�T�!�Q�Z�Z��+�+�+��M�M�$�t�t�A�q�z�z�*�*�C�0�0�0�0������k�!�n�n�k�!�n�n�=�=�r�B�B�B������k�!�n�n�k�!�n�n�=�=�r�B�B�B��q���	K�	K�A��M�M�$�t�t�K��N�N�K��N�N�C�C�D�D�c�J�J�J��M�M�$�t�t�K��N�N�K��N�N�C�C�D�D�c�J�J�J�J�	K�	Krc�
�tj}tj}td��D]�}|dkrt|dz��n#|dkrtd��ntd��D]F}|�|||��||��||��|||z
��zz���G��tdd��D]U}td|��D]B}|�|||��||dz
|dz
��||dz
|��z���C�Vtd��D]B}|�||d��d��|�|||��d���Ctdd��D]E}|�||d��|��|�|||dz
��|���Ftd��D]D}t|dz��D]/}|�|||��||||z
�����0�E|�t|dd	��|�t|dtjd	����|�t|dd
��|�t|dd��|�t|tjd��d��|�t|dd��|�t|d��|�t|ddd
��|�t|��|�t|dd��|�t|ddzd��|�t|dd��|�t|dddz��|�|dd��d��|�|dddz��d��ddz}|�||d��d��|�||d��|��|�||d��||dz
zdz��|�|||��d��|�|||dz
��|��|�|||dz
��||dz
zdz��tjd���r |�t|||dz��dD]W\}}|�|||��d��|�
t|||����t���X|�|t!d��t!d����d��|�|t#d��t#d����d��td
��D]�}|�
t|t!d��t!|������t��|�
t|t#d��t#|������t����dS)Nr�r�rrHr�r�rrIr�ryrcrzr�r�r�Tr{r}rP)rU�combr�r r�r�r�r�r�r�rrr�r�r�rTrprs)rcr�r�rr�s     r�testCombzMathTests.testComb�s}���y���N�	��s���	:�	:�A�&'�#�g�g�e�A��E�l�l�l��C���5��9�9�9�U�SU�Y�Y�
:�
:��� � ���a����Y�Y�q�\�\�!�	�!���y�y��Q��'7�'7�7�.9�:�:�:�:�
:�
�q�#���	R�	R�A��1�a�[�[�
R�
R��� � ���a����T�T�!�a�%��Q��-?�-?�$�$�q�1�u�a�.�.�-P�Q�Q�Q�Q�
R��s���	,�	,�A����T�T�!�Q�Z�Z��+�+�+����T�T�!�Q�Z�Z��+�+�+�+��q�#���	0�	0�A����T�T�!�Q�Z�Z��+�+�+����T�T�!�Q��U�^�^�Q�/�/�/�/��s���	=�	=�A��1��6�]�]�
=�
=��� � ���a����T�T�!�Q��U�^�^�<�<�<�<�
=�
	
���)�T�2�s�3�3�3����)�T�2�w��s�/C�/C�D�D�D����)�T�2�s�3�3�3����)�T�4��3�3�3����)�T�7�?�4�+@�+@�!�D�D�D����)�T�4��3�3�3����)�T�2�.�.�.����)�T�2�q�!�4�4�4����)�T�*�*�*�	
���*�d�B��2�2�2����*�d�Q��W�H�a�8�8�8����*�d�A�r�2�2�2����*�d�A��4��x�8�8�8�	
�����a����Q�'�'�'������a��D��)�)�1�-�-�-�
�t�G�������a����Q�'�'�'������a����Q�'�'�'������a����Q�!�A�#�Y�!�^�4�4�4������a����Q�'�'�'������a��1����q�)�)�)������a��1����q�A�a�C�y�A�~�6�6�6��$�T�2�2�2�	<����m�T�1�a��d�;�;�;�?�	1�	1�D�A�q����T�T�!�Q�Z�Z��+�+�+��M�M�$�t�t�A�q�z�z�*�*�C�0�0�0�0������k�!�n�n�k�!�n�n�=�=�r�B�B�B������k�!�n�n�k�!�n�n�=�=�r�B�B�B��q���	K�	K�A��M�M�$�t�t�K��N�N�K��N�N�C�C�D�D�c�J�J�J��M�M�$�t�t�K��N�N�K��N�N�C�C�D�D�c�J�J�J�J�	K�	Krc�F	�|�tjdt��d��|�tjdt��d��|�tjdd��d��|�tjdd��d��|�tjd	t��t�d
����|�tjd	t��t�d����|�tjdd��d��|�tjd
d��d��|�tjdd
��d
��tjj	tjj
z}|�tjdt��|��|�tjd
t��|��|�tjdt��|��|�tjd
t��|��|�tj|d��d��|�tj|d��d
��|�tj|d
��d��|�tj|d
��d
��tjj}|�tjtd��|��|�tjtd��|��|�tj|t��t��|�tj|t��t��|�tjtd	����|�tjd	t����|�tjtt����dS)Ng0Cg������/Cg0Cg�CrQg�������Cg��g��������r�z0x1.fffffffffffffp-1z0x1.0000000000001p+0r�r�)r�rU�	nextafterr�r;rK�assertEqualSignrIr$�min�epsilonr'rr�)rc�smallest_subnormal�largest_normals   r�test_nextafterzMathTests.test_nextafter�s���	
�����(:�S�D�A�A�+�	-�	-�	-������(:�C�@�@�+�	-�	-�	-������(=�s�C�C�.�	0�	0�	0������(>��D�D�/�	1�	1�	1�	
������c�T�2�2����'=�>�>�	@�	@�	@�������S�1�1����'=�>�>�	@�	@�	@�	
������S�1�1�3�7�7�7����T�^�D�$�7�7��>�>�>����T�^�D�$�7�7��>�>�>�!�^�/�#�.�2H�H��������c�2�2�4F�G�G�G�������c�2�2�4F�G�G�G�������s�d�3�3�6H�5H�I�I�I�������s�d�3�3�6H�5H�I�I�I����T�^�,>��E�E�t�L�L�L����T�^�-?�,?��F�F��M�M�M����T�^�,>��E�E�t�L�L�L����T�^�-?�,?��F�F��M�M�M���+��������S�1�1�>�B�B�B��������c�2�2�^�O�D�D�D��������<�<�c�B�B�B��������#��>�>���E�E�E�	
������S�1�1�2�2�2�������S�1�1�2�2�2�������S�1�1�2�2�2�2�2rc�R�|�tjd��tjj��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��tjjtjjz��|�tjt��ttjtt��z
��|�tjt��t��|�
tjtj����ddddtfD]k}|�|���5|�tj|��tj|����ddd��n#1swxYwY�ldS)	Nr�l�lr�lg�@rQrv)
r�rUr�rIr$r�r�r�r�r�rrr�rBs  r�test_ulpzMathTests.test_ulps��������#�����(>�?�?�?������'�*�*�C�0�0�0������'�*�*�C�0�0�0������'�*�*�F�3�3�3�	
�����#�����+�c�n�.D�D�	F�	F�	F������)�,�,�"�T�^�I��t�%D�%D�D�	F�	F�	F�	
�����#����,�,�,������$�(�+�+�,�,�,��s�G�W�c�2�	<�	<�A������"�"�
<�
<�� � ���1�"���t�x��{�{�;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<��	<�	<s�<H�H	�"H	c�D�Gd�d��}tjtjtjfD]n}|��}|�t
��5|d|��ddd��n#1swxYwY|�t|dd�����odS)Nc��eZdZd�ZdS)�$MathTests.test_issue39871.<locals>.Fc��d|_ddzdS)NTrr)�	convertedrgs rrhz.MathTests.test_issue39871.<locals>.F.__float__4s��!%����!����rN)rjrkrlrhrmrrr�r�3s#������
�
�
�
�
rr�znot a numberr�F)rUr�r�r	r�r�r6rS)rcr�r]rfs    r�test_issue39871zMathTests.test_issue398710s���	�	�	�	�	�	�	�	��J��
�t�~�=�	=�	=�D�����A��"�"�9�-�-�
(�
(���^�Q�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(�

���W�Q��U�;�;�<�<�<�<�	=�	=s�
A0�0A4	�7A4	c��tj|��s*|�d�|����dSdS)NzExpected a NaN, got {!r}.)rUrVr{r(rbs  rrzMathTests.assertIsNaNBsH���z�%� � �	A��I�I�1�8�8��?�?�@�@�@�@�@�	A�	Arc��	|�||��|�tjd|��tjd|����dS)Nr�)r�rUr�)rcrrfs   rr�zMathTests.assertEqualSignFsS��	�	
����A���������s�A�.�.��
�c�1�0E�0E�F�F�F�F�FrNrN)Prjrkrlr}r�r�r�r�r�r�r�r�r�r�rr�r��unittest�skipIfrIrP�machiner�r�r�r�r�r�r�r�cpython_onlyr�rrr"�HAVE_DOUBLE_ROUNDINGrUrjr�r�r�r�r�r�r�r�r�r��requires_mac_verr�r�r�r�r�rrrrrrr!r3r7r9r;r=r@�
skipUnlessrrCr_rerwr�r�r�r�r�rr�rmrrryry�s�������6�6�6�6�.�.�.�	4�	4�	4�5�5�5�	4�	4�	4�5�5�5�4�4�4�	5�	5�	5�;:�;:�;:�z4�4�4� 6�6�6�B�:�:���:�B3�3�3��X�_�S�\�W�,�W�1A��1A�1C�1C�GW�1W�[�]�]�4�4�]�]�4�5�5�5�<�<�<�	=�	=�	=�/�/�/�@�@�@�:�:�:�
��<�<���<�7�7�7�>4�4�4�,8�8�8�$��X�_�)�M�O�O�\:�\:�O�O���\:�|(E�(E�(E�TID�ID�ID�V��X�_�)�N�P�P�:1�:1�P�P���:1�xo7�o7�o7�b)�)�)�
3&�3&�3&�j*F�*F�*F�X<�<�<�@3�3�3� /�/�/��4�4���4�"��W��b�!�$�$�+�+�%�$���+�
5�
5�
5�1�1�1�&G;�G;�G;�j5�5�5��~,�~,���~,�@3�3�3�4�4�4�4�4�4�3�3�3�4�4�4��1�1���1�@�@�@�:7�7�7�)�)�)�)�)�)��.�.���.��3�3���3��X���"9�:�:�:�:�;�:�:�>�6-�6-���6-�p�@-�@-���@-�DZ*�Z*�Z*�x>K�>K�>K�@DK�DK�DK�L�+3�+3���+3�Z�<�<���<�,=�=�=�$A�A�A�G�G�G�G�Grryc�v�eZdZejZd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�ZdS)�IsCloseTestsc�`�|�|j||g|�Ri|��|�d|�d����dS)N� and z should be close!�r^)r�r��rcrhrir��kwargss     r�
assertIsClosezIsCloseTests.assertIsCloseRs\��������Q��;�D�;�;�;�F�;�;�<=�A�A�q�q�q�A�	�	C�	C�	C�	C�	Crc�`�|�|j||g|�Ri|��|�d|�d����dS)Nr�z should not be close!r�)r6r�r�s     r�assertIsNotClosezIsCloseTests.assertIsNotCloseVs^��������a��<�T�<�<�<�V�<�<�AB���A�A�A�F�	�	H�	H�	H�	H�	Hrc�:�|D]\}}|j||g|�Ri|���dSr_)r��rc�examplesr�r�rhris      r�assertAllClosezIsCloseTests.assertAllCloseZsG���	6�	6�D�A�q��D��q�!�5�d�5�5�5�f�5�5�5�5�	6�	6rc�:�|D]\}}|j||g|�Ri|���dSr_)r�r�s      r�assertAllNotClosezIsCloseTests.assertAllNotClose^sG���	9�	9�D�A�q�!�D�!�!�Q�8��8�8�8��8�8�8�8�	9�	9rc�2�|�t��5|�ddd���ddd��n#1swxYwY|�t��5|�dddd���ddd��dS#1swxYwYdS)Nrg0��.�+���rel_tolr3g _�©r�r,)r�r�r�rgs r�test_negative_tolerancesz%IsCloseTests.test_negative_tolerancesbs/��
�
�
�z�
*�
*�	6�	6����q�!�W��5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�
�
�
�z�
*�
*�	D�	D����q�!�V�U��C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds#�A�A�A�%B�B�Bc�>�gd�}|�|dd���dS)N))r�r�)�N���@ir�)�;���r�)i90g��@)rQr�)�NFr�rQr��r�)rc�identical_exampless  r�test_identicalzIsCloseTests.test_identicalis8��0�0�0��	
���.��S��I�I�I�I�Irc�j�gd�}|�|d���|�|d���dS)N))g�חAg�חA)g:�0�yE�g��n�yE�)g�	ѭ��?gfN�ӭ��?�:�0�yE>r���&�.>�r�r�)rc�eight_decimal_places_exampless  r�test_eight_decimal_placesz&IsCloseTests.test_eight_decimal_placesssS��)C�)C�)C�%�	
���9�4��H�H�H����<�d��K�K�K�K�Krc�j�gd�}|�|d���|�|d���dS)N))r�rQ)g��&�.�rQ)gu�?j�/ʠrQr�r�r�r�)r�r�)rc�near_zero_exampless  r�test_near_zerozIsCloseTests.test_near_zero{sP��.�.�.��	
���1�3��?�?�?����.���=�=�=�=�=rc��|�tt��|�ttd���|�tt��|�ttd���dS)NrQr�)r�r�r�rgs r�test_identical_infinitez$IsCloseTests.test_identical_infinite�sj�����3��$�$�$����3��S��1�1�1����4��&�&�&����4��s��3�3�3�3�3rc��ttftdfdtfttfttfttftdfdtftdfdtfg
}|�|d���dS)Nr3r�g������g�������?r�)r�r�r�r�)rc�not_close_exampless  r�test_inf_ninf_nanzIsCloseTests.test_inf_ninf_nan�ss��"�C�j�"�F�m�%�s�m�"�C�j�"�C�j�"�D�k�"�C�j�"�C�j�"�E�l�$�c�l�	,��	
���1�;L��M�M�M�M�Mrc�r�gd�}|�|d���gd�}|�|d���dS)N))r�r�)�333333�r�)�Y��n��r�rQr�))r�g�?)g�������?r�)gZb���tigTb���tir�)rc�zero_tolerance_close_examples�!zero_tolerance_not_close_exampless   r�test_zero_tolerancez IsCloseTests.test_zero_tolerance�sg��)=�)=�)=�%�	
���9�3��G�G�G�-N�-N�-N�)�	
���@�#��N�N�N�N�Nrc�8�|�ddgd���dS)N)r�r�)r�r�r�r�r�rgs r�test_asymmetryzIsCloseTests.test_asymmetry�s&�����W�g�.���<�<�<�<�<rc�j�ddg}|�|d���|�|d���dS)N)����)i�[i�[r�r�r�r�)rc�integer_exampless  r�
test_integerszIsCloseTests.test_integers�sL��2�2�4��	
���,�d��;�;�;����/���>�>�>�>�>rc��ddlm}|d��|d��f|d��|d��f|d��|d��f|d	��|d
��fg}|�|d���|�|d
���dS)Nrrlz
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20r�r�r�)r�r�r�r�)rcr��decimal_exampless   r�
test_decimalszIsCloseTests.test_decimals�s���#�#�#�#�#�#�$�W�\�2�2�G�G�E�N�N�C�$�W�%5�6�6���	�8J�8J�K�$�W�%6�7�7����9L�9L�M�$�W�_�5�5�w�w�x�7H�7H�I�K��	
���,�d��;�;�;����/���>�>�>�>�>rc��ddlm}|dd��dz|d��f|d��|d��f|dd��|dd��fg}|�|d�	��|�|d
�	��dS)Nrrmrr�r�l �	(q�e�	r�r�r�r�)rzrnr�r�)rcrn�fraction_exampless   r�test_fractionszIsCloseTests.test_fractions�s���&�&�&�&�&�&��X�a��
#�
#�a�
'���!���5�
�X�i�
 �
 �(�(�9�"5�"5�6�
�X�i��
(�
(�(�(�1�f�*=�*=�>�@��	
���-�t��<�<�<����0�$��?�?�?�?�?rN)rjrkrlrUr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rmrrr�r�Os�������l�G�C�C�C�H�H�H�6�6�6�9�9�9�D�D�D�J�J�J�L�L�L�>�>�>�4�4�4�
N�
N�
N�
O�
O�
O�=�=�=�?�?�?�	?�	?�	?�	@�	@�	@�	@�	@rr�c�N�ddlm}|�|d����|S)Nr)�DocFileSuitezieee754.txt)�doctestr��addTest)�loader�tests�patternr�s    r�
load_testsr��s5��$�$�$�$�$�$�	�M�M�,�,�}�-�-�.�.�.��LrrN)8�test.supportrr�testrr�r�r�rU�osrPrDrrIr�r;r�r�r�r$r'r�r�r�rrfr�rj�argv�file�__file__�path�dirname�curdir�test_dirrTrdrRrrrr%r0rGrOr[r]rTrpr�rs�TestCaseryr�r��mainrmrr�<module>r�s���4�3�3�3�3�3�3�3�����������������������	�	�	�	�����
�
�
�
�
�
�
�
�
�
�
�
����e�E�l�l���e�E�l�l���u�V�}�}���N��	��N��	����1��A���)���z����8�A�;�D�D��D�
�7�?�?�4� � �-�B�I������h�(<�=�=���G�L�L��#8�9�9�	�
�
�
�L5�5�5�H�H�H�	,�	,�	,�B�B�B�$:�:�:�4���0+�+�+�+�Z��������	�	�	�	�	�#�	�	�	������&����_G�_G�_G�_G�_G��!�_G�_G�_G�D;x@�x@�x@�x@�x@�8�$�x@�x@�x@�v���
�z����H�M�O�O�O�O�O��r