Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.11/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.11/test/__pycache__/test_math.cpython-311.opt-1.pyc

�

SԚg�}����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�d��Z3Gd�d ej4��Z5Gd!�d"ej4��Z6d#�Z7ed
krej8��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  �+/usr/local/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��eZdZdd�ZdS)�BadDescrNc��t�r^)�
ValueError)rb�obj�objtypes   r�__get__zBadDescr.__get__�s���rr^)rirjrkr}rlrrrxrx�s(�����������rrxc��eZdZdMd�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�ZOdK�ZPdLS)N�	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.testConstantssX���
�
�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�rz�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�rzr�r�r�r�rUr�rfs r�	testAcoshzMathTests.testAcoshs������)�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�rzr�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��atanhrzr�r�r�rUr�rfs r�	testAtanhzMathTests.testAtanh8s
�����)�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�0�|�ttj��|�dtjdd��tjdz��|�dtjdd��tjdz��|�dtjdd��d��|�d	tjdd��tjdz��|�d
tjdd��tjdz��|�dtjdd��dtjzdz��|�d
tjdt��tj��|�dtjdd��tj��|�dtjdd��tj��|�tjdd��d��|�tjdd��d��|�tjdt��d��|�	tj
tjdt������|�dtjdt��tj��|�dtjdd��tj��|�dtjdd��tj��|�tjdd��d��|�tjdd��d��|�tjdt��d��|�	tj
tjdt������|�dtjtt��tjdzdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�dtjtt��tjdz��|�	tj
tjtt������|�dtjtt��tjdzdz��|�dtjtd��tjdz��|�dtjtd��tjdz��|�d tjt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)zatan2(1, -1)�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.testAtan2Cs�����)�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�>�>�>��
�
�>�4�:�a��#4�#4�a���i��k�B�B�B�	
�
�
�$�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��}Gd�d��}|�tj|����d��|�tj|����d��|�tjtd����d��|�ttj|����|�ttj|����|��}d�|_
|�ttj|��|�ttj|d��|�tjtd����d��|�tjtd����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�c�"�eZdZe��ZdS)�'MathTests.testCeil.<locals>.TestBadCeilN)rirjrkrxr�rlrr�TestBadCeilr��s�������x�z�z�H�H�Hrr�r�g@E@�+c��|Sr^rl��argss r�<lambda>z$MathTests.testCeil.<locals>.<lambda>�s��4�r)r�r�rT�ceilr�rS�typer:r\rzr�)rbr�r�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�
�
���=�=�=����*�d�i�����?�?�?��J�L�L��'�'��
����)�T�Y��2�2�2����)�T�Y��1�5�5�5������9�T�?�?�3�3�T�:�:�:������9�T�?�?�3�3�T�:�:�:�:�:rc�	�|�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�rzr�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�r�r�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.testExp2s�����)�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�rz)rb�totalr#s   r�
testFactorialzMathTests.testFactorials���������*�*�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.testFactorialHugeInputs(sB��	
���-����S��A�A�A����)�T�^�U�;�;�;�;�;rc��|�ttj��|�t
t
tjd������|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd	��d
��Gd�d��}Gd
�dt��}Gd�d��}Gd�d��}|�tj|����d��|�tj|����d��|�tjtd����d��|�ttj|����|�ttj|����|��}d�|_
|�ttj|��|�ttj|d��|�tjtd����d��|�tjtd����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__=r�rN�rirjrkrrlrr�	TestFloorr
<r�rrc��eZdZd�ZdS)�'MathTests.testFloor.<locals>.FloatFloorc��dSr�rlrfs rrz1MathTests.testFloor.<locals>.FloatFloor.__floor__@r�rNr
rlrr�
FloatFloorr?r�rrc��eZdZdS)�(MathTests.testFloor.<locals>.TestNoFloorNrprlrr�TestNoFloorrBr�rrc�"�eZdZe��ZdS)�)MathTests.testFloor.<locals>.TestBadFloorN)rirjrkrxrrlrr�TestBadFloorrD������� ��
�
�I�I�Irrr�g33333�D@�)c��|Sr^rlr�s rr�z%MathTests.testFloor.<locals>.<lambda>Ms��D�r)r�r�rT�floorr�rSr�r:r\rzr)rbrrrrr�s      r�	testFloorzMathTests.testFloor/s������)�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�����?�?�?����*�d�j�,�,�.�.�A�A�A��K�M�M��(�(������)�T�Z��3�3�3����)�T�Z��A�6�6�6������I�d�O�O�4�4�d�;�;�;������I�d�O�O�4�4�d�;�;�;�;�;rc��|�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��|�ttjtt��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�rzr�r�r�rfs r�testFmodzMathTests.testFmodTs������)�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����*�d�i��c�:�:�:�:�:rc�����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(�mantrD�emant�eexprbs       �r�	testfrexpz&MathTests.testFrexp.<locals>.testfrexpnsq���)/��&�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�)rbr+s` r�	testFrexpzMathTests.testFrexpks������)�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
�dfgd�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
|������|�tj
d)tjg��tj��|�tjtj
tjd)g������|�tj
d*t-d)��d+dd,t-d-��d.g��d��|�ttj
d/d/g��|�ttj
tjtjg��|�t0tj
d0g��|�t0tj
d��|�ttj
d&d!zg��d1�}|�t2tj
|����dS)2Nr)�
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/

            r,rHrrr�)	rTr-rS�ldexp�max�len�binr&�bool)
�iterable�tmant�texprr(rD�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)rr�r��0��.�++�d~�QJr��d~�Q�r?)rr�r�r?r@r�rA)�@Cr�g��g������?C)rBr���9g@C)g@Cr�rCg@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�rlrFs  rrHz&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�4rlrFs  rrHz&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)rGr#s  rrHz&MathTests.testFsum.<locals>.<listcomp>�s��-�-�-�A��a��-�-�-rc�8��g|]}�|dz�|z
��S�rrl)rGr#�termss  �rrHz&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)�ri����r�gh�$.5���g#B����;r���rUr�rr�r@r�rA�������spamc3�K�dV�t�)Nr�)�ZeroDivisionErrorrlrr�bad_iterz$MathTests.testFsum.<locals>.bad_iter�s�����I�I�I�#�#r)�sysr0r=�min_exprr:�fromhex�append�	enumeraterT�fsumr�r�rzr�rRrSrTrr�rUrr\r�r�rZ)rbr0r>�test_valuesr#�valsr(�actualrRrSrT�j�s�vr[r<r=rQs               @@@r�testFsumzMathTests.testFsum}s$�����	#�"�"�"�"�"��&���"�X�-��	+�	+�	+�	+�	+�	+�8��I��U�C�L�
<�
<�
<�f�E�
:�
:�
:�F�C�
'�
'�
'��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������C���?�3�3�T�X�>�>�>�����
�4�9�d�h��_�#=�#=�>�>�?�?�?������E�9�S�>�>�6�6�$(�)�D�/�/�5�$B�C�C�DJ�	L�	L�	L����-���V�V�4D�E�E�E����*�d�i�$�(�T�X�I�1F�G�G�G����)�T�Y���9�9�9����)�T�Y��2�2�2����-���R��X�J�?�?�?�	$�	$�	$�	
���+�T�Y���
�
�C�C�C�C�Cs�#E8�8%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�rU�����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)rbrxr�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��|�|dd��t	jd����|�|dt!d����t	jd����|�||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}|�t0t2f��5|d|��ddd��n#1swxYwY|�|t4��t4��|�|dt4��t4��|�|dt4��t4��|�|d t4��t4��|�|t6t4��t4��|�|t4t6��t4��|�|t8t6��t4��|�|t6t8��t4��|�|t4t4��t4��|�|t4t4��t4��|�|dt4��t4��|�t	j|t6������|�t	j|dt6������|�t	j|t6d������|�t	j|dt6������|�t	j|t6t6������|�t	j|t6������t>d!z}td��D]F}|�t	j ||g|z�|t	j|��z�����Gtd��D]A}	tBd|	zz}
|�t	jd"|
zd|
z��d
|
z���B|jt(tjgdgd#z�d$�R�dS)%Nr�r��Fractionr��@g������@rc3� K�|]	}|dzV��
dS)rHNrl)rGrfs  r�	<genexpr>z&MathTests.testHypot.<locals>.<genexpr>%s&����5�5�q�a��d�5�5�5�5�5�5rg(@r��*@rnrO�
r�rHr�rrr�rP�%��%@r�r�r�r��r皙�����?�string皙����@r�rr�r��rX)"rr�	fractionsr�rT�hypotr�r��sqrt�gamma�sinrr4�assertAlmostEqual�sumr�r\r6r�r�r�r\r0�
max_10_exprzr�r�r�r�r�rU�	FLOAT_MAX�isclose�	FLOAT_MIN)rbrr�r�r�r#�int_too_big_for_float�	fourthmaxrrD�scales           r�	testHypotzMathTests.testHypots���#�#�#�#�#�#�&�&�&�&�&�&��
���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�*�*�*������q�"���t�y��|�|�4�4�4������q�)�C�.�.�1�1�4�9�Q�<�<�@�@�@������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����)�T�Z�E�C�5��8�E�f�E�E�E�E�E�Es6�<
M�M�M�:N�N�N�
O0�0O4�7O4z7hypot() 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�hyrryrH)rTr�rr�Contextr:r^�subTest�localcontextr�r�)	rbr�r�high_precisionr�r�rry�zs	         r�testHypotAccuracyzMathTests.testHypotAccuracyhs����
���/�� ��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�B�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��|�|td��dfd��d��|�|dtd��df��d��|�|dtd��fd��d��|�|dd��d��|�||d��|d��f|d��|d��f��|d����|�||dd��|dd��f|dd��|dd��f��|dd����|�|dd��|d ����|�|d!d!��d"��|�|d#d#��d"��|�d$t	jd$|d%d&������|�d$t	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|d0d1��ddd��n#1swxYwY|�t$��5|dd2��ddd��n#1swxYwY|�t"��5|d3d4��ddd��n#1swxYwY|�t"��5|d5d6��ddd��n#1swxYwYd7t&jjd
zz}
|�t$t,f��5|d|
fd8��ddd��n#1swxYwY|�t$t,f��5|d8d|
f��ddd��n#1swxYwY|�t"��5|d9d��ddd��n#1swxYwY|�t"��5|dgd��ddd��n#1swxYwYGd:�d;��}|�t$��5|dg|��g��ddd��n#1swxYwYtd<��D]Z}t/j��t/j��}}|�||f|f��t1||z
�����[t2d=d>d"d?t4t6g}t9j|d@�A��D]�}t9j|d@�A��D]�}dB�t||��D��}
t=t?tj |
����r&|�|||��t4���it=t?tj!|
����r1|�"t	j!|||�������Œ�tFdCz}td��D]�}|f|z}d&|z}|�"t	j$|||��|t	j|��z����|�"t	j$|||��|t	j|��z������td��D]s}tJd |zz}dD|zd@|zf}dE}|�t	j||��d
|z��|�t	j||��d
|z���tdS)FNrrr�)r�r�r�)r�r�r�r�)rrHr�)r�rHr��	rOc3�@K�|]}tjdd��V��dS����rON�rR�uniform�rG�ks  rr�z%MathTests.testDist.<locals>.<genexpr>��.����B�B�A�&�.��Q�/�/�B�B�B�B�B�Brc3�@K�|]}tjdd��V��dSr�r�r�s  rr�z%MathTests.testDist.<locals>.<genexpr>�r�rc3�,K�|]\}}||z
dzV��dS)r�Nrl�rG�px�qxs   rr�z%MathTests.testDist.<locals>.<genexpr>�s/����F�F�&�"�b�b�2�g�#�-�F�F�F�F�F�Fr)�,@r�)r�r�r�)�r)rH���r�r�r)�rr�r�r�)rHi����)r�r�rHrr)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�rOru)�p�q)rUr�r�)r�r�r�)rrHr�r�)rOrurU)r�rOrurU)rrrrrrrrrrrrrrrrrrX)rrrrrrrrrrrrrrrrrr�abc�xyzr�)rHr�rPc�"�eZdZe��ZdS)�$MathTests.testDist.<locals>.BadFloatN)rirjrkrxrgrlrr�BadFloatr�rrr��r�r�r�r�)�repeatc��g|]
\}}||z
��Srlrlr�s   rrHz&MathTests.testDist.<locals>.<listcomp>s ��9�9�9�V�R���b��9�9�9rr�r�)rPrP)&rrr�r�rT�distr�r�r�tupler�r��zip�iterr\r�r�r�rzr\r0r�r�rRr&r�r�r��	itertools�product�any�maprVrUr�r�r�r�)rb�D�Fr�r�r#rer�r�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������y��~�~�q�1�7�;�;�R�@�@�@������g�	�#����';�<�<�b�A�A�A������r�9�S�>�>�2�G�<�<�b�A�A�A������h��0�0�"�5�5�5������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�$�g�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�
�
�
�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�
�
�
�y�
)�
)�	�	��D��q�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��D�!��a�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	#�	#�	#�	#�	#�	#�	#�	#��
�
�z�
*�
*�	$�	$��D�!��x�x�z�z�l�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��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��(R�R�	R�'R?�?S�S�$S>�>T�T�#
T<�<U�U�!
U:�:U>�U>�
V8�8V<�?V<�
W6�6W:�=W:�
X4�4X8�;X8�
Y2�2Y6�9Y6�5[�[�[�<\�\�\�<
]�]�]�:^�^�^�_)�)_-�0_-c��|�t��5tjddggd���ddd��dS#1swxYwYdS)NrrH)r�r�rO)r�rzrTr�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)rGr�r#s   rrHz'MathTests.testIsqrt.<locals>.<listcomp>2s5��H�H�H�A��s�B���H�H�A�q�!�t�a�x�H�H�H�Hr�<rVr�i'r�i�r_rr�TFrc��eZdZd�Zd�ZdS)�(MathTests.testIsqrt.<locals>.IntegerLikec��||_dSr^r_ras  rrcz1MathTests.testIsqrt.<locals>.IntegerLike.__init__Ks
��"��
�
�
rc��|jSr^r_rfs rruz2MathTests.testIsqrt.<locals>.IntegerLike.__index__Ns
���z�!rNrvrlrr�IntegerLiker�Js2������
#�
#�
#�
"�
"�
"�
"�
"rr�i�rr�r�za stringz3.5y@gY@r�)�listrr�rT�isqrt�assertIsr�rS�assertLessEqual�
assertLessr�rzr��objectrrr�)rbrbr`rfr��
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�rUrjrkiYrlrmiHrorprql ,�`aUx�-�xB�:Vn
Ldbl�m�e%Y%l};T^�	)rsl�|/Kr2rti�7rvrw)rT�lcmr�r�r�rr)rbr�rryrzr{r|�ds        r�test_lcmzMathTests.test_lcmbs���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	�	�|�ttj��|�ttjdd��|�dtjdd��d��|�dtjdd��d��|�dtjdd	��d
��|�dtjd	d��d��|�t
tjd
d��|�t
tjdd��|�tjd
d��d��|�tjdd��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)Nr�r�z
ldexp(0,1)rrz
ldexp(1,1)rHzldexp(1,-1)r�r�zldexp(-1,1)rr�r�r�i���rPr��i+���i��ld(	� F�x:^Vr�r�)r�r�rTr2r�r�r�r�r�r�rUr��rbrs  r�	testLdexpzMathTests.testLdexp�s������)�T�Z�0�0�0����)�T�Z��c�:�:�:��
�
�<���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�H�|�ttj��|�ttjddd��|�dtjdtjz��d��|�dtjd��d��|�dtjtj��d��|�d	tjd
d��d��|�dtjd
dzd
��d��|�dtjd
dzd��d��|�dtjd
dz��d��|�ttjd��|�ttjd
dz��|�ttjd
d��|�ttjt��|�tjt��t��|�
tjtjt������dS)NrrHr�zlog(1/e)r�zlog(1)rzlog(e)z	log(32,2)rrrOzlog(10**40, 10)r�r�zlog(10**40, 10**20)r�z
log(10**1000)r�gO�+��@r�r)
r�r�rT�logr�r�rzr�r�r�r�rUr�rfs r�testLogzMathTests.testLog�s������)�T�X�.�.�.����)�T�X�q�!�Q�7�7�7��
�
�:�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��C�8�8�8����*�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:rzr�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�rzr�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|������*SrE)rTr�r2rFs  rrHz+MathTests.testLog2Exact.<locals>.<listcomp>�s.��L�L�L�A�$�)�D�J�s�A�.�.�/�/�L�L�LrrMr�c�,�g|]}t|����Srl�r:rFs  rrHz+MathTests.testLog2Exact.<locals>.<listcomp>����9�9�9��E�!�H�H�9�9�9r)rr�)rbrdr(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�rzr�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|����dSdSr%r&)r�r'r(�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��|�ttjdd��|�tjdt��d��|�tjdd
��d��|�tjdd��d��|�tjdd��d��|�tjdd��d
��|�tjdd��d
��|�ttjdd��|�ttjdd��|�ttjdd��|�tjdt��t��|�tj	tjdt������|�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
��|�tjdd��d
��|�tjdd��d
��|�tjtd��d
��|�tjdd��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�rrPr�r�r�r�g�r�r r�g.�g�������gffffff�?r���������?rg��������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�rzrfs r�testPowzMathTests.testPows�����)�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�-�-�-����-���6�6�B�B�B�	
�����"�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)Nrr�c����|���|���|��}}}��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)	rry�r�fx�fy�frrr�rbs	       ��r�
validate_specz.MathTests.testRemainder.<locals>.validate_spec�s����
"��!���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�)r�r�r�r9r:r^rT�	remainderr��hexrr�r�r��assertIsNaNr�rz)rbr�	testcasesr �x_hex�y_hex�expected_hexrryr(rd�tinyr�mr`r�s`              @r�
testRemainderzMathTests.testRemainder�s�����&�&�&�&�&�&�
	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�rzr�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)rr�zsqrt(25.25)g@9@g�)#L�@zsqrt(1)rzsqrt(4)r�rHr�)r�r�rTr�r�r�r�rzr�r�rUr�rfs r�testSqrtzMathTests.testSqrt6sl�����)�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�rzr�rfs r�testTanzMathTests.testTanDsC�����)�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.testTanhQs������)�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�rTr7r�rfs r�testTanhSignzMathTests.testTanhSignZsi��	
�����3����-�-�-������r�4�9�S�>�>�:�:���r�3�/�/�	1�	1�	1�	1�	1rc�X�|�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��}Gd�d��}|�tj|����d��|�tj|����d��|�ttj��|�ttjdd��|�ttjtd����|�ttj|����|�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__nr�rN�rirjrkrArlrr�	TestTruncr=mr�rrCc��eZdZd�ZdS)�(MathTests.test_trunc.<locals>.FloatTruncc��dSr?rlrfs rrAz2MathTests.test_trunc.<locals>.FloatTrunc.__trunc__qr�rNrBrlrr�
FloatTruncrEpr�rrGc��eZdZdS)�)MathTests.test_trunc.<locals>.TestNoTruncNrprlrr�TestNoTruncrIsr�rrJc�"�eZdZe��ZdS)�*MathTests.test_trunc.<locals>.TestBadTruncN)rirjrkrxrArlrr�TestBadTruncrLurrrMr@rHg�7@)
r�rT�truncr�rSr:r�r�r\rz)rbrCrGrJrMs     r�
test_trunczMathTests.test_truncas��������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�����?�?�?����*�d�j�,�,�.�.�A�A�A�A�Arc�v�|�tjd����|�tjd����|�tjd����|�tjd����|�tjt	d������|�tjt	d������|�tjt	d������dS)NrPr�r�r�rrr)r�rT�isfinite�assertFalser:rfs r�testIsfinitezMathTests.testIsfinite�s�������
�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:rRrfs r�	testIsnanzMathTests.testIsnan�s�������
�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:rRrfs r�	testIsinfzMathTests.testIsinf�s�������
�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_constant�s|������
�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)rTrDr�r�r�rz�rbrs  r�test_exceptionszMathTests.test_exceptions�s��	(����%�%�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-zerorz�overflowr��rOrPzFailures in test_testfile:
  �
  )r\�platform�mac_verr�r�rSr9rzrN�	test_file�getattrrTr�rZr'r_r��join)rb�
SKIP_ON_TIGER�osx_version�version_txtrX�failuresr@rA�ar�ai�er�eirE�funcr'r*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)Nrdrgrhrzrir�rjr�r��lgammagV瞯�<�erfcrPr�r��$@r�r�zFailures in test_mtestfile:
  rk)rF�math_testcasesrorTrzr�rZr'r_r�rp)rbrXrtr@rArBr(rEryr)r*r+rWrzs              r�test_mtestfilezMathTests.test_mtestfiles���%����,;�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�R�ddlm}tj}|�|g��d��|�|gd���d��|�|tt
dd������d��|�|ttt
dd��������d��|�|t
dd	��d	���d
��|�|gd���d��|�|gd
���d��|�|gd���d��|�|gd���d��|�|d|dd��g��d��Gd�d��}|�t��5|d|��g��ddd��n#1swxYwY|�|gd���d��|�|gd���td����|�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|d	d$gd��ddd��n#1swxYwY|�|gd%���d��|�|gd&���d��|�|gd'���d��d:d(�}t
dd)��}|�||��||����t
d*d+��}|�||��||����t
d,d-��}|�||��d��d.�t
dd-��D��}|�||��||����d/�t
d,d+��D��}|�||��||����d0�t
d,d-��D��}|�
||����|�
|dddtd1��ddg����|�
|ddtd1��ddg����|�
|dtd1��ddg����|�
|dtd2��td1��dg����|�
|dtd3��td1��dg����|�
|dtd1��td2��dg����|�
|dtd1��td3��dg����|�|dddtd2��d4d5g��td3����|�|dddtd3��d4d5g��td2����|�
|dddtd2��d4d5g����|�
|dddtd3��d4d5g����|�
|dddtd2��d4ddg����|�
|dddtd3��d4ddg����|�t|gd6�����t��|�t|gd7�����t��|�t|t
dd)������t��|�t|t
dd)��d�����t��|�t|dt!jd8��dd5dd9g����t j��dS);Nrr�rrO)rrHr�i�r�i_7)rrHr�r�rOrl)r�r�r�r�r�rv)rrHr�r�r�)r�r�r�r�rOr�r�r�c��eZdZd�ZdS)�(MathTests.test_prod.<locals>.BadMultiplyc��t�r^)�RuntimeError)rb�others  r�__rmul__z1MathTests.test_prod.<locals>.BadMultiply.__rmul__Ys��"�"rN)rirjrkr�rlrr�BadMultiplyr�Xs#������
#�
#�
#�
#�
#rr�r)rr�rrr�)r�r�r�rrr�)r{r|rz��a�cr�b�ab�abababababab)rrHrrHrrHrrHrrHrrHr�)rrrHr�)rrrHr�)rrHr�rc��|D]}||z}�|Sr^rl)r7r�elems   r�_naive_prodz(MathTests.test_prod.<locals>._naive_prod{s!�� �
�
����
����Lri'i���r�i���r�c�,�g|]}t|����Srlr��rGrs  rrHz'MathTests.test_prod.<locals>.<listcomp>�s��5�5�5��E�!�H�H�5�5�5rc�,�g|]}t|����Srlr�r�s  rrHz'MathTests.test_prod.<locals>.<listcomp>�s��7�7�7��E�!�H�H�7�7�7rc�,�g|]}t|����Srlr�r�s  rrHz'MathTests.test_prod.<locals>.<listcomp>�rrrrrr�r�)rrHr�r�rOru)rr�r�r�rOrur�rurP)r�r�rT�prodr�r�rr�r�r�r:r��	bytearrayr$r�rSrr)rbr�r�r�r�r�r7s       r�	test_prodzMathTests.test_prodGs�
��+�+�+�+�+�+��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�<�<�<������r�1�1�Q��7�7�m�,�,�c�2�2�2�	#�	#�	#�	#�	#�	#�	#�	#��
�
�|�
,�
,�	'�	'��D�#�{�{�}�}�%�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
�����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$�G;�;G?�G?�Q"�"Q&�)Q&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�rrVr�r�rr�r��1r�10r�r�rHr�T��cpython�)TT)TF)FFrO)rT�permr�rr�r�r�rrrzr�check_impl_detailr�r�r�rSrorr)rbr�r�rr�s     r�testPermzMathTests.testPerm�s����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�rrVr�r�rrHr�r�rr�r�r�r�Tr�r�rO)rT�combr�rr�r�r�rrrzrr�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:r^�assertEqualSignr\r0�min�epsilonr3r$r�)rb�smallest_subnormal�largest_normals   r�test_nextafterzMathTests.test_nextafter3s���	
�����(:�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�@rPr�)
r�rTr�r\r0r�r�r�r�r�r$rr�r^s  r�test_ulpzMathTests.test_ulpas��������#�����(>�?�?�?������'�*�*�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__|s��!%����!����rN)rirjrkrgrlrrr�r�{s#������
�
�
�
�
rr�znot a numberr�F)rTr�r�r"r�r�rRro)rbr�ryrys    r�test_issue39871zMathTests.test_issue39871xs���	�	�	�	�	�	�	�	��J��
�t�~�=�	=�	=�D�����A��"�"�9�-�-�
(�
(���^�Q�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(�

���W�Q��U�;�;�<�<�<�<�	=�	=s�
A0�0A4	�7A4	c���|�ttjd��|�ttjd��|�ttjdd��|�ttjdd��|�ttjd��|�ttjddd��dS)NrXr�r�r�)r�r�rTrD�erfr�rfs r�test_input_exceptionszMathTests.test_input_exceptions�s������)�T�X�v�6�6�6����)�T�X�v�6�6�6����)�T�Z���=�=�=����)�T�Z��f�=�=�=����)�T�Z��5�5�5����)�T�Z��c�3�?�?�?�?�?rc��tj|��s*|�d�|����dSdS)NzExpected a NaN, got {!r}.)rTrUr�r'ras  rr$zMathTests.assertIsNaN�sH���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�)rbrrys   rr�zMathTests.assertEqualSign�sN��
	
����A���������s�A�.�.��
�c�1�0E�0E�F�F�F�F�FrNrj)Qrirjrkr�r�r�r�r�r�r�r�r�r�r�rr�r��unittest�skipIfr\rl�machiner�r�r�r�r�r�rr�cpython_onlyrrr"r.�HAVE_DOUBLE_ROUNDINGrhr}r�r�r�r�r�r�r�r�r�r��requires_mac_verrrrrrr+r-r0r2r5r8r:rOrSrUrWrYr\�
skipUnlessrr_r{r�r�r�r�r�r�r�r�r$r�rlrrrr�s�������6�6�6�6�.�.�.�	4�	4�	4�5�5�5�	4�	4�	4�5�5�5�4�4�4�	5�	5�	5�<:�<:�<:�|4�4�4� %;�%;�%;�N�:�:���:�B3�3�3��X�_�S�\�W�,�W�1A��1A�1C�1C�GW�1W�[�]�]�4�4�]�]�4�5�5�5�<�<�<�	=�	=�	=�/�/�/�@�@�@�:�:�:�
��<�<���<�#<�#<�#<�J;�;�;�.8�8�8�$��X�_�)�M�O�O�mD�mD�O�O���mD�^(E�(E�(E�TMF�MF�MF�^��X�_�)�N�P�P�:1�:1�P�P���:1�x7�7�7�B)�)�)�
3&�3&�3&�j*F�*F�*F�X<�<�<�B3�3�3�$/�/�/��4�4���4�"��W��b�!�$�$�+�+�%�$���+�
5�
5�
5�1�1�1�&H;�H;�H;�l5�5�5��~,�~,���~,�@3�3�3�4�4�4�4�4�4�3�3�3�4�4�4��1�1���1�B�B�B�@7�7�7�)�)�)�)�)�)��.�.���.��3�3���3��X���"9�:�:�:�:�;�:�:�>�6-�6-���6-�p�@-�@-���@-�Dd*�d*�d*�L>K�>K�>K�@DK�DK�DK�L�+3�+3���+3�Z�<�<���<�,=�=�=� @�@�@�A�A�A�G�G�G�G�Grrc�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!�rz)r�r��rbr{r|r��kwargss     r�
assertIsClosezIsCloseTests.assertIsClose�s\��������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�)rRr�r�s     r�assertIsNotClosezIsCloseTests.assertIsNotClose�s^��������a��<�T�<�<�<�V�<�<�AB���A�A�A�F�	�	H�	H�	H�	H�	Hrc�:�|D]\}}|j||g|�Ri|���dSr^)r��rb�examplesr�r�r{r|s      r�assertAllClosezIsCloseTests.assertAllClose�sG���	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_tolr?g _�©r�r+)r�rzr�rfs r�test_negative_tolerancesz%IsCloseTests.test_negative_tolerances�s/��
�
�
�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_identical�s8��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_places�sS��)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�/ʠrPrr�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)Nr?r�rWg�������?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�rr�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)Nrrz
1.00000001z1.0z1.00000001e-20z1.0e-20z1.00000001e-100z1.0e-100z
1.00000001e20z1.0e20r�r�r�)rrr�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)Nrr�rr�r�l �	(q�e�	r�r�r�r�)r�r�r�r�)rbr��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��s�������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�patternrs    r�
load_testsr	s5��$�$�$�$�$�$�	�M�M�,�,�}�-�-�.�.�.��Lrrj)9�test.supportrr�testrr�r�rrT�osrlrRrr\r�r:r�r�r�r0r3r�r�r�rryr�ri�argv�file�__file__�path�dirname�curdir�test_dirrpr�rnrrrr$r/rFrNrZr\rSror�rrrx�TestCaserr�r�mainrlrr�<module>rs ��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��������	�	�	�	�	�#�	�	�	������&������������kG�kG�kG�kG�kG��!�kG�kG�kG�\=x@�x@�x@�x@�x@�8�$�x@�x@�x@�v���
�z����H�M�O�O�O�O�O��r

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