Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_math.cpython-311.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�z�tjdtjd|����d}|dkr|dz}|S)a�Convert a non-NaN float x to an integer, in such a way that
    adjacent floats are converted to adjacent integers.  Then
    abs(ulps(x) - ulps(y)) gives the difference in ulps between two
    floats.

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

    Note: 0.0 and -0.0 are converted to 0 and -1, respectively.
    z<qz<drl)�struct�unpack�pack)�x�ns  �8/usr/local/apps/python3/lib/python3.11/test/test_math.py�to_ulpsr's?��	�
�d�F�K��a�0�0�1�1�!�4�A��1�u�u���g�J���H�c�:�|rdt||dz
z��zndS)zANumber of '1' bits in binary expansion of a nonnnegative integer.�r)�count_set_bits)rs rrrMs'��,-�4�1�~�a�!�a�%�i�(�(�(�(�1�4rc�|�||z
dz	}|sdS|dkr|S||zdz}t||��t||��zS)z�Product of integers in range(start, stop, 2), computed recursively.
    start and stop should both be odd, with start <= stop.

    r)�partial_product)�start�stop�
numfactors�mids    rrrQs\��
��,�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
zS)z�Factorial of nonnegative integer n, via "Binary Split Factorial Formula"
    described at http://www.luschny.de/math/factorial/binarysplitfact.html

    r)�reversed�range�
bit_lengthrr)r�inner�outer�is    r�py_factorialr$_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)z�Given finite floats `expected` and `got`, check that they're
    approximately equal to within the given number of ulps or the
    given absolute tolerance, whichever is bigger.

    Returns None on success and an error message on failure.
    NzAerror = {:.3g} ({:d} ulps); permitted error = {:.3g} or {:d} ulps)�absr�format)�expected�got�ulp_tol�abs_tol�	ulp_error�	abs_error�fmts       r�
ulp_abs_checkr/jsp���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)z�Parse a file with test values

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

    �utf-8��encoding�--N�->rr)�open�index�strip�split�float)�fname�fp�line�lhs�rhs�id�fn�arg�
rhs_pieces�exp�flagss           r�parse_mtestfilerF|s9����
�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)	z�Parse a file with test values

    Empty lines or lines starting with -- are ignored
    yields id, fn, arg_real, arg_imag, exp_real, exp_imag
    r1r2r4r5rr�N)r6�
startswithr8r9r:)
r;r<r=r>r?r@rA�arg_real�arg_imagrC�exp_real�exp_imagrEs
             r�parse_testfilerN�sO����
�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�CC0�0C4�7C4��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)a�Compare arguments expected and got, as floats, if either
    is a float, using a tolerance expressed in multiples of
    ulp(expected) or absolutely (if given and greater).

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

    Returns None on success and an error message on failure.
    Nz	not equalzexpected {!r}, got {!r}z ({}))�
isinstancer:�int�math�isnan�isinfr/r')r(r)r*r+�failure�fail_fmt�fail_msgs       r�result_checkrZ�sA���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��selfr`s  r�__init__zFloatLike.__init__��
����
�
�
rc��|jSr^r_�rbs r�	__float__zFloatLike.__float__��
���z�rN)�__name__�
__module__�__qualname__rcrg�rrr\r\��2�������������rr\c��eZdZdS)�IntSubclassN�rirjrkrlrrroro�s�������Drroc��eZdZd�Zd�ZdS)�MyIndexablec��||_dSr^r_ras  rrczMyIndexable.__init__�rdrc��|jSr^r_rfs r�	__index__zMyIndexable.__index__�rhrN�rirjrkrcrurlrrrrrr�rmrrrc��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�	MathTestsrOrPc��t||||��}|�+|�d�||����dSdS)aaCompare arguments expected and got, as floats, if either
        is a float, using a tolerance expressed in multiples of
        ulp(expected) or absolutely, whichever is greater.

        As a convenience, when neither argument is a float, and for
        non-finite floats, exact equality is demanded. Also, nan==nan
        in this function.
        Nz{}: {})rZ�failr')rb�namer)r(r*r+rWs       r�ftestzMathTests.ftest�sK���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�
�@rH)r|rTr~r�assertEqual�taurfs 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)rrHzacos(1)r)
�assertRaises�	TypeErrorrT�acosr|r~�
ValueError�INF�NINF�eps�
assertTruerU�NANrfs 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)rHg5�qB�?r�)r�r�rT�acoshr|r�r�r�r�r�rUr�rfs 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�rHzasin(0)rzasin(1)r)
r�r�rT�asinr|r~r�r�r�r�r�rUr�rfs 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�rT�asinhr|r�r�r�r�rUr�rfs 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)rHz
atan(-inf))r�r�rT�atanr|r~r�r�r�rUr�rfs 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�rTr�r|�atanhr�r�r�r�rUr�rfs 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�rrHzatan2(-1, 1)rr�zatan2(0, 1)zatan2(1, 1)zatan2(1, 0)zatan2(0., -inf)rPzatan2(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�rT�atan2r|r~r�r�r�r�rUr�rfs 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)�rHz	cbrt(0.0)rPz
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�rT�cbrtr|r�r�r�r�rUr�rfs 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��?��?rHr�r��r����rPr�c��eZdZd�ZdS)�$MathTests.testCeil.<locals>.TestCeilc��dS�N�*rlrfs r�__ceil__z-MathTests.testCeil.<locals>.TestCeil.__ceil__�����rrN�rirjrkr�rlrr�TestCeilr���#������
�
�
�
�
rr�c��eZdZd�ZdS)�%MathTests.testCeil.<locals>.FloatCeilc��dSr�rlrfs rr�z.MathTests.testCeil.<locals>.FloatCeil.__ceil__�r�rNr�rlrr�	FloatCeilr��r�rr�c��eZdZdS)�&MathTests.testCeil.<locals>.TestNoCeilNrprlrr�
TestNoCeilr����������Drr�r�g@E@�+c��|Sr^rl��argss r�<lambda>z$MathTests.testCeil.<locals>.<lambda>�s��4�r)
r�r�rT�ceilr�rS�typer:r\r�)rbr�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�rPi���r�r��@�@r����@)r�rT�copysignr�r�r�r�r�rUr�rVr&rfs 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)rHrr�r+zcos(0)z	cos(pi/2)zcos(pi)r�)
r�r�rT�cosr|r~�ulpr�rUr�r�r�r�rfs 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)**2rHr�)r�r�rT�coshr|r�r�r�r�rUr�rfs 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)rHg�V@zdegrees(-pi/4)r�g�F�z
degrees(0)r)r�r�rT�degreesr|r~rfs 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)rP�@B)
r�r�rTrDr|rr�r�r�r�rUr��
OverflowErrorrfs 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)rHz	exp2(2.3)r�g)��{IJ@rPr�)r�r�rT�exp2r|r�r�r�r�rUr�r�rfs 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�rT�fabsr|rfs 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�rT�	factorialrr$r�r�)rb�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�rTr��decimal�Decimalrfs 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�rTr�r�rfs 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�rlrfs r�	__floor__z0MathTests.testFloor.<locals>.TestFloor.__floor__2r�rN�rirjrkrrlrr�	TestFloorr1r�rrc��eZdZd�ZdS)�'MathTests.testFloor.<locals>.FloatFloorc��dSr�rlrfs rrz1MathTests.testFloor.<locals>.FloatFloor.__floor__5r�rNrrlrr�
FloatFloorr4r�rr	c��eZdZdS)�(MathTests.testFloor.<locals>.TestNoFloorNrprlrr�TestNoFloorr7r�rrr�g33333�D@�)c��|Sr^rlr�s rr�z%MathTests.testFloor.<locals>.<lambda>?s��D�r)
r�r�rT�floorr�rSr�r:r\r)rbrr	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�rrPz
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�rT�fmodr|r�rUr�r�r�r�r�rfs 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�rz)r{�resultr(�mantrD�emant�eexprbs       �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)rH)r�rH)
r�r�rT�frexpr�r�r�r�rUr�)rbrs` 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)z�Full precision summation.  Compute sum(iterable) without any
            intermediate accumulation of error.  Based on the 'lsum' function
            at http://code.activestate.com/recipes/393090/

            rrHrrr�)	rTr rS�ldexp�max�len�binr&�bool)
�iterable�tmant�texprrrD�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�*�*�*rrP)r�r�r��0��.�++g�d~�QJr�g�d~�Q�r2)�@Cr�g��g������?C)r3r���9g@C)g@Cr�r4g@C)g������?Cr�g�<g������?Cc��g|]}d|z��S�r�rl��.0rs  r�
<listcomp>z&MathTests.testFsum.<locals>.<listcomp>�s��
+�
+�
+�q�b��d�
+�
+�
+rri�z0x1.df11f45f4e61ap+2c��g|]
}d|z|z��S)r�rlr7s  rr9z&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�4rlr7s  rr9z&MathTests.testFsum.<locals>.<listcomp>�s6��
L�
L�
L�!�b�!�e�b�1�R�4�j� �2��"��:�-�
L�
L�
Lr����i�rHg�z0x1.5555555555555p+970c��g|]}d|z��S)g333333�?rl)r8r#s  rr9z&MathTests.testFsum.<locals>.<listcomp>�s��-�-�-�A��a��-�-�-rc�8��g|]}�|dz�|z
��S�rrl)r8r#�termss  �rr9z&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���rF)�sysr#r0�min_exprr:�fromhex�append�	enumeraterT�fsumr�rzr�r�rCrDrE)rbr#r1�test_valuesr#�valsr(�actualrCrDrE�j�s�vr/r0rBs              @@@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�rF�����x�T����� j9W P)�}� "o�`T"-� l�8P9�cC�/�[�N
S�9�b�Xl	9@{�wM�2�75�k )��	lZ��'^%#�>�;�*Q!/61^�f��^@�U@)rT�gcdr�r�r�rr)rbrdr�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)rHNrl)r8rRs  r�	<genexpr>z&MathTests.testHypot.<locals>.<genexpr>s&����5�5�q�a��d�5�5�5�5�5�5rg(@r��*@rZrO�
r^r�rP�%��%@r�r�r�r��r皙�����?�string皙����@r�rr�r�)!r�r��	fractionsrmrT�hypotrr~�sqrt�gamma�sinrr'�assertAlmostEqual�sumr�r)r�r�r�rHr#�
max_10_expr�r�r�r�r�r�rU�	FLOAT_MAX�isclose�	FLOAT_MIN)rbr�rmrzr�r#�int_too_big_for_float�	fourthmaxrrD�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�hyrrerH)rTrzr�r��Contextr:rJ�subTest�localcontextr{r�)	rbrzr��high_precisionr�r�rre�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)<Nrrkrl)r�r�r�)r�r�r�r�)rrHr�)r�rHr��	rOc3�@K�|]}tjdd��V��dS����rON�rC�uniform�r8�ks  rrpz%MathTests.testDist.<locals>.<genexpr>��.����B�B�A�&�.��Q�/�/�B�B�B�B�B�Brc3�@K�|]}tjdd��V��dSr�r�r�s  rrpz%MathTests.testDist.<locals>.<genexpr>�r�rc3�,K�|]\}}||z
dzV��dS)r�Nrl�r8�px�qxs   rrpz%MathTests.testDist.<locals>.<genexpr>�s/����F�F�&�"�b�b�2�g�#�-�F�F�F�F�F�Fr)g,@r�)r�r�rq)�r)rH���rrr�rrHr�r^)TTFTF)TFTTFr�)g�*@g)@g
�rPrlr�)r�)rP)r�r�r�)rrr)r�r�r�c��eZdZdS)�MathTests.testDist.<locals>.TNrprlrr�Tr��r�rr�)r�rOra)�p�q)rFr�r�)rvrwrx)rrHr�r�)rOrarF)r�rOrarF�abc�xyzr�)rHr��rsr�rtr�)�repeatc��g|]
\}}||z
��Srlrlr�s   rr9z&MathTests.testDist.<locals>.<listcomp>�s ��9�9�9�V�R���b��9�9�9rr�r�)rPrP)%r�r�ryrmrT�distr{r�r�tupler~r�zip�iterr�r�r�r�rHr#r�r�rCr&r�r�r��	itertools�product�any�maprVrUr�r�r�r�)rb�D�Fr�r{r#rQr�r�r�r��values�diffsr�rrDr�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)NrrH)r�r�rO)r�r�rTr�rfs 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����(rH)r)r8rr#s   rr9z'MathTests.testIsqrt.<locals>.<listcomp>�s5��H�H�H�A��s�B���H�H�A�q�!�t�a�x�H�H�H�Hr�<rGr�i'r�i�r_rr�TFrc��eZdZd�Zd�ZdS)�(MathTests.testIsqrt.<locals>.IntegerLikec��||_dSr^r_ras  rrcz1MathTests.testIsqrt.<locals>.IntegerLike.__init__s
��"��
�
�
rc��|jSr^r_rfs rruz2MathTests.testIsqrt.<locals>.IntegerLike.__index__s
���z�!rNrvrlrr�IntegerLiker�s2������
#�
#�
#�
"�
"�
"�
"�
"rr�i�r
r�rnza stringz3.5y@gY@r�)�listrr�rT�isqrt�assertIsr�rS�assertLessEqual�
assertLessr�r�r��objectr�r�r�)rbrNr`rRr��
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�rFrVrWiYrXrYiHr[r\r]l ,�`aUx�-�xB�:Vn
Ldbl�m�e%Y%l};T^�	)r_l�|/Kr2r`i�7rbrc)rT�lcmr�r�r�rr)rbr�rrerfrgrh�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)rHzldexp(1,-1)r�r�zldexp(-1,1)r�r�r�r�i���rPr��i+���i��ld(	� F�x:^Vr�r�)r�r�rTr%r|r�r�r�r�r�rUr��rbrs  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^rHrOzlog(10**40, 10)r�r�zlog(10**40, 10**20)r�z
log(10**1000)r�gO�+��@r�)
r�r�rT�logr|rr�r�r�r�r�rUr�rfs 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)NrH�Zi,r�)	r�r�rT�log1pr~r: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)NrrPrHr�r�r�i�g��@�g�@i�g@�@r�)
r�r�rT�log2r�r�r�r�rUr�rfs 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|������*Sr6)rTr�r%r7s  rr9z+MathTests.testLog2Exact.<locals>.<listcomp>�s.��L�L�L�A�$�)�D�J�s�A�.�.�/�/�L�L�Lrr>r�c�,�g|]}t|����Srl�r:r7s  rr9z+MathTests.testLog2Exact.<locals>.<listcomp>����9�9�9��E�!�H�H�9�9�9r)rr�)rbrPr(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�rT�log10r|r�r�r�r�r�r�rUr�rfs 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�e2rbs       �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�rPr�rr)
r�r�rT�modfr�r�r�r�r�rU)rbr��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)rHz	pow(2,-1)r�r�r�rPr�r�r�r�g�r�rr�g.�g�������gffffff�?rv��������?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�rT�powr|r�r�r�r�rUr�r�rfs 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�rHzradians(-45)i���r�z
radians(0)r)r�r�rT�radiansr|r~rfs 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)Nrrlc����|���|���|��}}}��t|��t|dz����||z
|z}��|t|����t|��t|dz��kr+��|dzt|dz����dSdS)z�
            Check that r matches remainder(x, y) according to the IEEE 754
            specification. Assumes that x, y and r are finite and y is nonzero.
            rHN)r�r&r�rS)	rre�r�fx�fy�frrrmrbs	       ��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�rPr�r�r�)r�r�rPr�r�)ryrmr�r9r:rJrT�	remainderr��hexrr�r�r��assertIsNaNr�r�)rbr�	testcasesr�x_hex�y_hex�expected_hexrrer(rP�tinyr�mr`rms`              @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)rHrz
sin(-pi/2)r�)r�r�rTr}r|r~r�rUr�r�r�r�rfs 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)**2rrHr�zsinh(1)+sinh(-1))r�r�rT�sinhr|r�r�r�r�r�rUr�rfs 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)rrPz	sqrt(2.5)g@gS[�:XL�?z
sqrt(0.25)r�r�zsqrt(25.25)g@9@g�)#L�@zsqrt(1)rzsqrt(4)r�rHr�)r�r�rTr{r|r�r�r�r�r�rUr�rfs 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�rT�tanr|r~r�rUr�r�r�r�rfs 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�rT�tanhr|r�r�r�r�rUr�rfs 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�rTrr�rfs 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�rlrfs r�	__trunc__z1MathTests.test_trunc.<locals>.TestTrunc.__trunc__3r�rN�rirjrkr'rlrr�	TestTruncr#2r�rr)c��eZdZd�ZdS)�(MathTests.test_trunc.<locals>.FloatTruncc��dSr%rlrfs rr'z2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__6r�rNr(rlrr�
FloatTruncr+5r�rr-c��eZdZdS)�)MathTests.test_trunc.<locals>.TestNoTruncNrprlrr�TestNoTruncr/8r�rr0r&rHg�7@)	r�rT�truncr�rSr:r�r�r\)rbr)r-r0s    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)NrPr�r�r�rrr)r�rT�isfinite�assertFalser:rfs 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-nanrrPr�)r�rTrUr:r5rfs 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�rrPr�)r�rTrVr:r5rfs 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�rTrUrrfs r�test_nan_constantzMathTests.test_nan_constant]s&������
�4�8�,�,�-�-�-�-�-rc�^�|�tjtj����|�tjd��|�tjt
d����|�tjt
d����dS)NrPrr)r�rTrVr�
assertGreaterr�r:rfs 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)rTrDrzr�r{r��rbrs  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}): {}rP)�rect�polar)r�rO�invalid�divide-by-zeror��overflowr��rOrPzFailures in test_testfile:
  �
  )rH�platform�mac_verr�r�rSr9r�rN�	test_file�getattrrTr�rZr'rKrz�join)rb�
SKIP_ON_TIGER�osx_version�version_txtrX�failuresr@rA�ar�ai�er�eirE�funcrr*r+rW�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)NrGrJrKr�rLr�rMr|r��lgammagV瞯�<�erfcrPr�r��$@r�r�zFailures in test_mtestfile:
  rN)rF�math_testcasesrRrTr�r�rZr'rKrzrS)rbrXrWr@rArBr(rEr\r)r*r+rWr]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)6NrrO)rrHr�i�r�i_7)rrHr�r�rOrX)r�r�r�r�r�rb)rrHr�r�r�)r�r�r�r�rO)rr�rrrf)r�r�rfrrr�)rgrhrf��a�cr�br��ab�abababababab)rrHrrHrrHrrHrrHrrHr�)rrrHr�r)rrrHr�)rrHr�rc��|D]}||z}�|Sr^rl)r*r�elems   r�_naive_prodz(MathTests.test_prod.<locals>._naive_prod3s!�� �
�
����
����Lri'i���r�i���r�c�,�g|]}t|����Srlr��r8rs  rr9z'MathTests.test_prod.<locals>.<listcomp>Cs��5�5�5��E�!�H�H�5�5�5rc�,�g|]}t|����Srlr�rqs  rr9z'MathTests.test_prod.<locals>.<listcomp>Es��7�7�7��E�!�H�H�7�7�7rc�,�g|]}t|����Srlr�rqs  rr9z'MathTests.test_prod.<locals>.<listcomp>Gr�rrrrr�r�)rrHr�r�rOra)rr�r�r�rOrar�r�rarA)rT�prodr�r�rr�r:r�r��	bytearrayr
r�rSr�r�)rbrtr�ror*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�rrGr�r�rr�r��1rb�10r�r�rHr�T��cpython�)TT)TF)FFrO)rT�permr�rr�r�r�r�r�r�r�check_impl_detailr�r�r�rSrorr)rbr}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�rrGr�r�rrHr�rxrbryr�r�r�Trzr|rO)rT�combr�rr�r�r�r�r�r�rr~r�r�r�rSrorr)rbr�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�CrPg�������Cg��g��������r�z0x1.fffffffffffffp-1z0x1.0000000000001p+0r�r�)r�rT�	nextafterr�r:rJ�assertEqualSignrHr#�min�epsilonr&r
r�)rb�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�@rPru)
r�rTr�rHr#r�r�r�r�r�r
rr�rAs  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)�	convertedrfs rrgz.MathTests.test_issue39871.<locals>.F.__float__4s��!%����!����rN)rirjrkrgrlrrr�r�3s#������
�
�
�
�
rr�znot a numberr�F)rTr�r�rr�r�r5rR)rbr�r\res    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}.)rTrUrzr'ras  rr
zMathTests.assertIsNaNBsH���z�%� � �	A��I�I�1�8�8��?�?�@�@�@�@�@�	A�	Arc��|�||��|�tjd|��tjd|����dS)zSimilar to assertEqual(), but compare also the sign with copysign().

        Function useful to compare signed zeros.
        r�N)r�rTr�)rbrres   rr�zMathTests.assertEqualSignFsN��
	
����A���������s�A�.�.��
�c�1�0E�0E�F�F�F�F�FrNrM)Prirjrkr|r�r�r�r�r�r�r�r�r�r�rr�r��unittest�skipIfrHrO�machiner�r�r�r�r�r�r�r�cpython_onlyr�rrr!�HAVE_DOUBLE_ROUNDINGrTrir�r�r�r�r�r�r�r�r�r��requires_mac_verr�r�r�r�r�rrrrrrr r2r6r8r:r<r?�
skipUnlessrrBr^rdrvrr�r�r�r�r
r�rlrrrxrx�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�Grrxc�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��rbrgrhr��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�)r5r�r�s     r�assertIsNotClosezIsCloseTests.assertIsNotCloseVs^��������a��<�T�<�<�<�V�<�<�AB���A�A�A�F�	�	H�	H�	H�	H�	Hrc�:�|D]\}}|j||g|�Ri|���dSr^)r��rb�examplesr�r�rgrhs      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_tolr2g _�©r�r+)r�r�r�rfs 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��@)rPr�)�NFr�rPr��r�)rb�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�)rb�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�rP)g��&�.�rP)gu�?j�/ʠrPr�r�r�r�)r�r�)rb�near_zero_exampless  r�test_near_zerozIsCloseTests.test_near_zero{sP��.�.�.��	
���1�3��?�?�?����.���=�=�=�=�=rc��|�tt��|�ttd���|�tt��|�ttd���dS)NrPr�)r�r�r�rfs 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)Nr2r�g������g�������?r�)r�r�r�r�)rb�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�rPr�))r�g�?)g�������?r�)gZb���tigTb���tir�)rb�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�rfs r�test_asymmetryzIsCloseTests.test_asymmetry�s&�����W�g�.���<�<�<�<�<rc�j�ddg}|�|d���|�|d���dS)N)����)i�[i�[r�r�r�r�)rb�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)Nrrkz
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20r�r�r�)r�r�r�r�)rbr��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)Nrrlrr�r�l �	(q�e�	r�r�r�r�)ryrmr�r�)rbrm�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)rirjrkrTr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rlrrr�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�,�,�}�-�-�.�.�.��LrrM)8�test.supportrr�testrr�r�r�rT�osrOrCrrHr�r:r�r�r�r#r&r�r�r�rrer�ri�argv�file�__file__�path�dirname�curdir�test_dirrSrcrQrrrr$r/rFrNrZr\rSror�rr�TestCaserxr�r��mainrlrr�<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