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

�Ke���B�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZmZddlmZddlmZddlZd�Zd�Zd	�Zdzd�ZGd
�d��Zejddg���Zejddg���ZGd�dej��ZGd�dej��Z Gd�dej��Z!Gd�dej��Z"Gd�dej��Z#Gd�dej��Z$Gd�d ej��Z%Gd!�d"ej��Z&Gd#�d$ej��Z'Gd%�d&ej��Z(Gd'�d(ej��Z)Gd)�d*ej��Z*Gd+�d,ej��Z+Gd-�d.ej��Z,Gd/�d0ej��Z-Gd1�d2ej��Z.Gd3�d4ej��Z/Gd5�d6ej��Z0Gd7�d8ej��Z1Gd9�d:��Z2Gd;�d<��Z3Gd=�d>e2e3��Z4Gd?�d@e ��Z5GdA�dBe ��Z6GdC�dDe ��Z7GdE�dFe2��Z8GdG�dHe e8e3��Z9GdI�dJe e8e3��Z:GdK�dLe e8��Z;GdM�dNe e3��Z<GdO�dPe;e3��Z=GdQ�dRe;e3��Z>GdS�dTe;��Z?GdU�dVe e8e3��Z@GdW�dXej��ZAGdY�dZej��ZBGd[�d\e2��ZCGd]�d^eCe e3��ZDGd_�d`eCe e3��ZEGda�dbeCe ��ZFGdc�ddej��ZGGde�dfeCe ��ZHGdg�dhej��ZIGdi�djej��ZJGdk�dlej��ZKGdm�dnej��ZLGdo�dpej��ZMGdq�dr��ZNGds�dtejeN��ZOejPedu��Gdv�dwejeN����ZQdx�ZReSdykrejT��dSdS){z_Test suite for statistics module, including helper NumericTestCase and
approx_equal function.

�N)�support)�
import_helper�requires_IEEE_754)�Decimal��Fractionc�,�tjd|��S)z:Return -1.0 for negatives, including -0.0, otherwise +1.0.�)�math�copysign��xs �>/usr/local/apps/python3/lib/python3.11/test/test_statistics.py�signrs���=��A����c�8�t|��t|��urdSt|t��r(tj|��otj|��S|���d}|���d}||ko|dvS)a�Return True if a and b are both the same kind of NAN.

    >>> _nan_equal(Decimal('NAN'), Decimal('NAN'))
    True
    >>> _nan_equal(Decimal('sNAN'), Decimal('sNAN'))
    True
    >>> _nan_equal(Decimal('NAN'), Decimal('sNAN'))
    False
    >>> _nan_equal(Decimal(42), Decimal('NAN'))
    False

    >>> _nan_equal(float('NAN'), float('NAN'))
    True
    >>> _nan_equal(float('NAN'), 0.5)
    False

    >>> _nan_equal(float('NAN'), Decimal('NAN'))
    False

    NAN payloads are not compared.
    F�)�n�N)�type�
isinstance�floatr�isnan�as_tuple)�a�b�aexp�bexps    r�
_nan_equalr#s���,�A�w�w�d�1�g�g����u��!�U���/��z�!�}�}�.���A���.��:�:�<�<��?�D��:�:�<�<��?�D��D�L�2�t�z�1�2rc��tt|��t|����}t||z
��}|r||zntd��}||fS)z�Return the absolute and relative errors between two numbers.

    >>> _calc_errors(100, 75)
    (25, 0.25)
    >>> _calc_errors(100, 100)
    (0, 0.0)

    Returns the (absolute error, relative error) between the two arguments.
    �inf)�max�absr)�actual�expected�base�abs_err�rel_errs     r�_calc_errorsr)BsT���s�6�{�{�C��M�M�*�*�D��&�8�#�$�$�G�"�4�g�d�l�l��e���G��W��r��-���q=�H�����z>c
��|dks|dkrtd���tj|��stj|��rdS||krdStj|��stj|��rdSt	||z
��}t||tt	|��t	|����z��}||kS)a�approx_equal(x, y [, tol [, rel]]) => True|False

    Return True if numbers x and y are approximately equal, to within some
    margin of error, otherwise return False. Numbers which compare equal
    will also compare approximately equal.

    x is approximately equal to y if the difference between them is less than
    an absolute error tol or a relative error rel, whichever is bigger.

    If given, both tol and rel must be finite, non-negative numbers. If not
    given, default values are tol=1e-12 and rel=1e-7.

    >>> approx_equal(1.2589, 1.2587, tol=0.0003, rel=0)
    True
    >>> approx_equal(1.2589, 1.2587, tol=0.0001, rel=0)
    False

    Absolute error is defined as abs(x-y); if that is less than or equal to
    tol, x and y are considered approximately equal.

    Relative error is defined as abs((x-y)/x) or abs((x-y)/y), whichever is
    smaller, provided x or y are not zero. If that figure is less than or
    equal to rel, x and y are considered approximately equal.

    Complex numbers are not directly supported. If you wish to compare to
    complex numbers, extract their real and imaginary parts and compare them
    individually.

    NANs always compare unequal, even with themselves. Infinities compare
    approximately equal if they have the same sign (both positive or both
    negative). Infinities with different signs compare unequal; so do
    comparisons of infinities with finite numbers.
    rz%error tolerances must be non-negativeFT)�
ValueErrorrr�isinfr#r")r�y�tol�rel�actual_error�
allowed_errors      r�approx_equalr4Rs���D�Q�w�w�#��'�'��@�A�A�A��z�!�}�}���
�1�
�
���u��A�v�v��t��z�!�}�}���
�1�
�
���u��q�1�u�:�:�L���S��S��V�V�S��V�V�!4�!4�4�5�5�M��=�(�(rc��eZdZdZdS)�
_DoNothinga�
    When doing numeric work, especially with floats, exact equality is often
    not what you want. Due to round-off error, it is often a bad idea to try
    to compare floats with equality. Instead the usual procedure is to test
    them with some (hopefully small!) allowance for error.

    The ``approx_equal`` function allows you to specify either an absolute
    error tolerance, or a relative error, or both.

    Absolute error tolerances are simple, but you need to know the magnitude
    of the quantities being compared:

    >>> approx_equal(12.345, 12.346, tol=1e-3)
    True
    >>> approx_equal(12.345e6, 12.346e6, tol=1e-3)  # tol is too small.
    False

    Relative errors are more suitable when the values you are comparing can
    vary in magnitude:

    >>> approx_equal(12.345, 12.346, rel=1e-4)
    True
    >>> approx_equal(12.345e6, 12.346e6, rel=1e-4)
    True

    but a naive implementation of relative error testing can run into trouble
    around zero.

    If you supply both an absolute tolerance and a relative error, the
    comparison succeeds if either individual test succeeds:

    >>> approx_equal(12.345e6, 12.346e6, tol=1e-3, rel=1e-4)
    True

    N)�__name__�
__module__�__qualname__�__doc__�rrr6r6�s������"�"�F	�Drr6�
statistics�_statistics)�blocked)�freshc�N�eZdZdgZd�Zejed��d���ZdS)�TestModules�_normal_dist_inv_cdfc�v�|jD]0}|�tt|��jd���1dS�Nr<)�
func_names�assertEqual�getattr�
py_statisticsr8��self�fnames  r�test_py_functionszTestModules.test_py_functions�sG���_�	U�	U�E����W�]�E�:�:�E�|�T�T�T�T�	U�	Ur�requires _statisticsc�v�|jD]0}|�tt|��jd���1dS)Nr=)rErFrG�c_statisticsr8rIs  r�test_c_functionszTestModules.test_c_functions�sG���_�	U�	U�E����W�\�5�9�9�D�m�T�T�T�T�	U�	UrN)	r7r8r9rErL�unittest�
skipUnlessrOrPr;rrrArA�s_������(�)�J�U�U�U��X���'=�>�>�U�U�?�>�U�U�UrrAc�H�eZdZdZdxZZ	dd�Zd�Zd	d�Ze	d���Z
dS)
�NumericTestCasez�Unit test class for numeric work.

    This subclasses TestCase. In addition to the standard method
    ``TestCase.assertAlmostEqual``,  ``assertApproxEqual`` is provided.
    rNc���|�|j}|�|j}t|tjj��r't|tjj��r|j}n|j}||||||��dS)a�Test passes if ``first`` and ``second`` are approximately equal.

        This test passes if ``first`` and ``second`` are equal to
        within ``tol``, an absolute error, or ``rel``, a relative error.

        If either ``tol`` or ``rel`` are None or not given, they default to
        test attributes of the same name (by default, 0).

        The objects may be either numbers, or sequences of numbers. Sequences
        are tested element-by-element.

        >>> class MyTest(NumericTestCase):
        ...     def test_number(self):
        ...         x = 1.0/6
        ...         y = sum([x]*6)
        ...         self.assertApproxEqual(y, 1.0, tol=1e-15)
        ...     def test_sequence(self):
        ...         a = [1.001, 1.001e-10, 1.001e10]
        ...         b = [1.0, 1e-10, 1e10]
        ...         self.assertApproxEqual(a, b, rel=1e-3)
        ...
        >>> import unittest
        >>> from io import StringIO  # Suppress test runner output.
        >>> suite = unittest.TestLoader().loadTestsFromTestCase(MyTest)
        >>> unittest.TextTestRunner(stream=StringIO()).run(suite)
        <unittest.runner.TextTestResult run=2 errors=0 failures=0>

        N)r0r1r�collections�abc�Sequence�_check_approx_seq�_check_approx_num)rJ�first�secondr0r1�msg�checks       r�assertApproxEqualz!NumericTestCase.assertApproxEqual�s|��>�;��(�C��;��(�C��5�+�/�":�;�;�	+��6�;�?�#;�<�<�	+��*�E�E��*�E�
��e�V�S�#�s�+�+�+�+�+rc	�^�t|��t|��krLdt|��t|��fz}|�||��}|�|���tt	||����D]"\}\}}	|�||	||||���#dS)Nz0sequences differ in length: %d items != %d items)�len�_formatMessage�failureException�	enumerate�ziprZ)
rJr[r\r0r1r]�standardMsg�ir�es
          rrYz!NumericTestCase._check_approx_seq�s����u�:�:��V���$�$�B��u�:�:�s�6�{�{�+�,�
��%�%�c�;�7�7�C��'�'��,�,�,�!�#�e�V�"4�"4�5�5�	;�	;�H�A�u��!��"�"�1�a��c�3��:�:�:�:�	;�	;rc��t||||��rdS|�|||||��}|�||��}|�|����N)r4�_make_std_err_msgrbrc)rJr[r\r0r1r]�idxrfs        rrZz!NumericTestCase._check_approx_num
sa����v�s�C�0�0�	��4��,�,�U�F�C��c�J�J���!�!�#�{�3�3���#�#�C�(�(�(rc�j�||ksJ�d}|�
d|z}||z}t||��\}}|||||||fzS)Nzk  %r != %r
  values differ by more than tol=%r and rel=%r
  -> absolute error = %r
  -> relative error = %rz,numeric sequences first differ at index %d.
)r))	r[r\r0r1rl�template�headerr'r(s	         rrkz!NumericTestCase._make_std_err_msgsb��������
'�	��?�D�s�J�F���(�H�'��v�6�6�����5�&�#�s�G�W�E�E�Er)NNNrj)r7r8r9r:r0r1r_rYrZ�staticmethodrkr;rrrTrT�s����������M�C�#�:>�*,�*,�*,�*,�X	;�	;�	;�)�)�)�)��F�F��\�F�F�FrrTc��eZdZdZd�ZdS)�TestSignz5Test that the helper function sign() works correctly.c��|�td��d��|�td��d��dS)N�r
g����)rFr�rJs r�
testZeroeszTestSign.testZeroes+s@������c���B�'�'�'�����d���R�(�(�(�(�(rN)r7r8r9r:rwr;rrrrrr)s)������?�?�)�)�)�)�)rrrc�&�eZdZd�Zd�Zd�Zd�ZdS)�ApproxEqualSymmetryTestc�*�dddtd��tdd��g}ddd	td
��tdd��g}t|��t|��ksJ�t||��D]\}}|�||���dS)Ni�	gfffff�B@gfffff�(�z2.54��6i�	g������B@gR����(�z2.59�)rrrare�do_relative_symmetry)rJ�args1�args2rrs     r�test_relative_symmetryz.ApproxEqualSymmetryTest.test_relative_symmetry6s����t�V�W�V�_�_�h�r�2�6F�6F�G���t�V�W�V�_�_�h�r�2�6F�6F�G���5�z�z�S��Z�Z�'�'�'�'���u�%�%�	,�	,�D�A�q��%�%�a��+�+�+�+�	,�	,rc�P�t||��t||��}}||ksJ�||z
}t||z��t||z��}}||zdz}|�t	||d|�����|�t	||d|�����dS)Nrr�r0r1)�minr"r#�
assertTruer4)rJrr�delta�rel_err1�rel_err2r1s       rr~z,ApproxEqualSymmetryTest.do_relative_symmetryFs����1�a�y�y�#�a��)�)�1���1�u�u�u�u��A��� ��q��\�\�3�u�Q�w�<�<�(���(�"�A�%��	
����Q��q�c�:�:�:�;�;�;�����Q��q�c�:�:�:�;�;�;�;�;rc	��gd�}d}|D�]5}ttttfD�]}||��dz}||z}t	|t||��z��}|�||||���|�|||dzd|z���|�|||dz
|dz���|�||||dz���|�|||dz
|���|�|||dz
d|z���|�||dd���|�||dd�������7dS)N)i�������ki�mr�dr�r
r)�intrrrr#r"�do_symmetry_test)rJ�argsr�r�type_rr/�rs        r�
test_symmetryz%ApproxEqualSymmetryTest.test_symmetryRs���'�'�'�����	:�	:�A��u�g�x�8�
:�
:���E�!�H�H�S�L����I����c�!�Q�i�i��(�(���%�%�a���1�%�=�=�=��%�%�a���a��Q�q�S�%�A�A�A��%�%�a���a��Q�q�S�%�A�A�A��%�%�a���1�Q�3�%�?�?�?��%�%�a���a��Q�%�?�?�?��%�%�a���a��Q�q�S�%�A�A�A��%�%�a���q�%�9�9�9��%�%�a���q�%�9�9�9�9�#
:�	:�	:rc
��d}t||||��}t||||��}|�|||�||||f����dS)Nz+approx_equal comparisons don't match for %r)r4rF�format)rJrrr0r1rn�flag1�flag2s        rr�z(ApproxEqualSymmetryTest.do_symmetry_testjs`��@���Q��3��,�,���Q��3��,�,�������x����1�c�3�7G�'H�'H�I�I�I�I�IrN)r7r8r9r�r~r�r�r;rrryry3sU������,�,�,� 
<�
<�
<�:�:�:�0J�J�J�J�Jrryc�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�ApproxEqualExactTestc��t||||���}|�|d|z��t||||���}|�|d|z��dS)Nr�zequality failure for x=%r)r4r�)rJrr0r1�results     r�do_exactly_equal_testz*ApproxEqualExactTest.do_exactly_equal_testwsn���a����5�5�5������ ;�a� ?�@�@�@��q�b�1�"�#�3�7�7�7������ ;�q�b� @�A�A�A�A�Arc�>�dD]}|�|dd���dS)N)�*iMi~:��iiU�
i�r�r��rJrs  r�test_exactly_equal_intsz,ApproxEqualExactTest.test_exactly_equal_ints}s6��=�	0�	0�A��&�&�q�!�Q�/�/�/�/�	0�	0rc�>�dD]}|�|dd���dS)N)g�z�G��?g/�$���?g�����e�@g7@gpf@g!�rh��Q@gB`��"KB@rr��rJrs  r�test_exactly_equal_floatsz.ApproxEqualExactTest.test_exactly_equal_floats�s6��E�	0�	0�A��&�&�q�!�Q�/�/�/�/�	0�	0rc	���t}|dd��|d��|dd��|dd��|dd	��|dd��fD]}|�|dd���dS)
Nr
rrr���	��#�$)rr��rJ�F�fs   r�test_exactly_equal_fractionsz1ApproxEqualExactTest.test_exactly_equal_fractions�s������!�A�q�'�'�1�1�Q�4�4���1�a���!�!�A�q�'�'�1�1�R��9�9�a�a��1�g�g�F�	0�	0�A��&�&�q�!�Q�/�/�/�/�	0�	0rc��t}t|d�����D]}|�|dd���dS)Nz8.2 31.274 912.04 16.745 1.2047r)r�map�splitr�)rJ�D�ds   r�test_exactly_equal_decimalsz0ApproxEqualExactTest.test_exactly_equal_decimals�sR�����Q�9�?�?�A�A�B�B�	0�	0�A��&�&�q�!�Q�/�/�/�/�	0�	0rc��dD]Z}|�|dd��|�|dzdd��t|d��}|�|dd���[dS)N)�i�i\i�i���{�G�z�?r�
i�)r�r)rJrr�s   r�test_exactly_equal_absolutez0ApproxEqualExactTest.test_exactly_equal_absolute�sy��/�	3�	3�A��&�&�q�$��2�2�2��&�&�q��t�T�1�5�5�5���D�!�!�A��&�&�q�$��2�2�2�2�	3�	3rc���|�td��td��d��|�td��td��d��dS)Nz3.571�0.01rz81.3971)r�rrvs r�$test_exactly_equal_absolute_decimalsz9ApproxEqualExactTest.test_exactly_equal_absolute_decimals�sW���"�"�7�7�#3�#3�W�V�_�_�a�H�H�H��"�"�G�I�$6�$6�#6������K�K�K�K�Krc���dddtdd��fD]}|�|dd���|�td��dtd	����dS)
Ni� g33333SY@g�z�G�r��rr�z11.68r��rr�rr�s  r�test_exactly_equal_relativez0ApproxEqualExactTest.test_exactly_equal_relative�si����x��!�R���9�	3�	3�A��&�&�q�!�T�2�2�2�2��"�"�7�7�#3�#3�Q�����H�H�H�H�Hrc���dddtdd��fD]}|�|dd���t}|�|d��|d	��|d
����dS)Ni9�gˡE��0@g\��(h��r��皙�����?r�z7.2z0.1r�r�)rJrr�s   r�test_exactly_equal_bothz,ApproxEqualExactTest.test_exactly_equal_both�sx�����(�1�a�.�.�9�	5�	5�A��&�&�q�#�t�4�4�4�4����"�"�1�1�U�8�8�Q�Q�u�X�X�q�q��y�y�A�A�A�A�ArN)r7r8r9r�r�r�r�r�r�r�r�r�r;rrr�r�qs�������B�B�B�0�0�0�
0�0�0�
0�0�0�0�0�0�	3�	3�	3�L�L�L�
I�I�I�B�B�B�B�Brr�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�ApproxEqualUnequalTestc�t�||fD]1}t||dzdd���}|�|d|z���2dS)Nr
rr�zinequality failure for x=%r)r4�assertFalse)rJrrr�s    r�do_exactly_unequal_testz.ApproxEqualUnequalTest.do_exactly_unequal_test�s^���a�R��	H�	H�A�!�!�Q�q�S�a�Q�7�7�7�F����V�%B�Q�%F�G�G�G�G�	H�	Hrc�:�dD]}|�|���dS)N)i�i��i�i�iXC�r�r�s  r�test_exactly_unequal_intsz0ApproxEqualUnequalTest.test_exactly_unequal_ints�s2��/�	,�	,�A��(�(��+�+�+�+�	,�	,rc�:�dD]}|�|���dS)N)g��Q�#@g����[�@gfffff�G@gףp=
W"@g=
ףp=1@r�r�s  r�test_exactly_unequal_floatsz2ApproxEqualUnequalTest.test_exactly_unequal_floats�s2��3�	,�	,�A��(�(��+�+�+�+�	,�	,rc��t}|dd��|dd��|dd��|dd��fD]}|�|���dS)	Nr
r�r�r����eiς)rr�r�s   r�test_exactly_unequal_fractionsz5ApproxEqualUnequalTest.test_exactly_unequal_fractions�sh�����!�A�q�'�'�1�1�Q��7�7�A�A�b�"�I�I�q�q��e�}�}�=�	,�	,�A��(�(��+�+�+�+�	,�	,rc��ttd�����D]}|�|���dS)Nz!3.1415 298.12 3.47 18.996 0.00245)r�rr�r��rJr�s  r�test_exactly_unequal_decimalsz4ApproxEqualUnequalTest.test_exactly_unequal_decimals�sI���W�A�G�G�I�I�J�J�	,�	,�A��(�(��+�+�+�+�	,�	,rN)r7r8r9r�r�r�r�r�r;rrr�r��sb������H�H�H�
,�,�,�
,�,�,�
,�,�,�,�,�,�,�,rr�c�n�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�ZdS)�ApproxEqualInexactTestc	��d}||z||z
fD]l}|�||��}|�t||d|zd���|��|�t|||dzd���|���mdS)N�Test failure for x={!r}, y={!r}rrr��r�r�r4r��rJrr�rnr/r]s      r�do_approx_equal_abs_testz/ApproxEqualInexactTest.do_approx_equal_abs_test�s���4���e�)�Q��Y�'�	J�	J�A��/�/�!�Q�'�'�C��O�O�L��A�1�U�7��B�B�B�C�H�H�H����\�!�Q�E�!�G��C�C�C�S�I�I�I�I�	J�	Jrc�h�dD].}|�|d��|�|d���/dS)N)i��iI���i����r�rr
r��%i�i�&i6�jr�r�r�r�s  r�test_approx_equal_absolute_intsz6ApproxEqualInexactTest.test_approx_equal_absolute_ints�sJ��J�	0�	0�A��)�)�!�R�0�0�0��)�)�!�Q�/�/�/�/�	0�	0rc��dD]D}|�|d��|�|d��|�|d���EdS)N)	g�t��q�gfffffFX�g333333�g333333���?��?g333333@g�Q���@g�����ҭ@��?r��-C��6?r�r�s  r�!test_approx_equal_absolute_floatsz8ApproxEqualInexactTest.test_approx_equal_absolute_floats�s`��L�	5�	5�A��)�)�!�S�1�1�1��)�)�!�T�2�2�2��)�)�!�V�4�4�4�4�	5�	5rc��tdd��}gd�}d�|D��D];}|�||��|�|t|�����<dS)Nr
�)i������r�rurr
r�r{��"�Gc3�6K�|]}t|d��V��dS)r�Nr)�.0rs  r�	<genexpr>zNApproxEqualInexactTest.test_approx_equal_absolute_fractions.<locals>.<genexpr>�s*����6�6�a�(�1�b�/�/�6�6�6�6�6�6r)rr�r)rJr��
numeratorsr�s    r�$test_approx_equal_absolute_fractionsz;ApproxEqualInexactTest.test_approx_equal_absolute_fractions�sv����B����@�@�@�
�6�6�:�6�6�6�	;�	;�A��)�)�!�U�3�3�3��)�)�!�U�5�\�\�:�:�:�:�	;�	;rc���td��}ttd�����D]/}|�||��|�||���0dS)Nr�z1.0 3.5 36.08 61.79 7912.3648)rr�r�r�)rJr�r�s   r�#test_approx_equal_absolute_decimalsz:ApproxEqualInexactTest.test_approx_equal_absolute_decimals�sn��������W�=�C�C�E�E�F�F�	5�	5�A��)�)�!�U�3�3�3��)�)�1�"�e�4�4�4�4�	5�	5rc�R�|�tdddd�����dS)Ng�h㈵��>g�h㈵��r�rr�)r�r4rvs r�test_cross_zeroz&ApproxEqualInexactTest.test_cross_zero�s+������T�5�d��B�B�B�C�C�C�C�Crc
��d}|d|zz|d|z
zfD]l}|�||��}|�t||dd|z���|��|�t||d|dz���|���mdS)Nr�r
rrr�r�r�s      r�do_approx_equal_rel_testz/ApproxEqualInexactTest.do_approx_equal_rel_test�s���4���Q�u�W�+�q�!�E�'�{�+�	J�	J�A��/�/�!�Q�'�'�C��O�O�L��A�1�!�E�'�B�B�B�C�H�H�H����\�!�Q�A�5��7�C�C�C�S�I�I�I�I�	J�	Jrc��|�tdddd�����|�tdddd�����|�tdddd	�����|�td
ddd	�����|�tdddd	�����dS)N�@�/rg
ףp=
�?r�g�G�z��?i�i��?i�i�)r�r4r�rvs r�test_approx_equal_relative_intsz6ApproxEqualInexactTest.test_approx_equal_relative_intss�������R����=�=�=�>�>�>�����R����=�=�=�>�>�>�����S�#�1�%�@�@�@�A�A�A�����S�#�1�%�@�@�@�A�A�A�����c�3�A�5�A�A�A�B�B�B�B�Brc�h�dD].}|�|d��|�|d���/dS)N)g{�G�Jf�皙������r�r�g\��(|B@g��ʡE>�@g��x��@�{�G�z�?r�)r�r�s  r�!test_approx_equal_relative_floatsz8ApproxEqualInexactTest.test_approx_equal_relative_floatssJ��E�	5�	5�A��)�)�!�T�2�2�2��)�)�!�V�4�4�4�4�	5�	5rc��t}tdd��}|dd��|dd��|dd��|dd	��fD]C}|t|��fD]/}|�||��|�||���0�DdS)
Nr�r��Tr{��1�2�\�U)rrr�)rJr�r�r�r�s     r�$test_approx_equal_relative_fractionsz;ApproxEqualInexactTest.test_approx_equal_relative_fractionss�������A�����!�A�r�(�(�A�A�b�"�I�I�q�q��R�y�y�!�!�B��)�)�<�	5�	5�A��U�5�\�\�*�
5�
5���-�-�a��3�3�3��-�-�q�b�!�4�4�4�4�
5�	5�	5rc���ttd�����D]I}|�|td����|�|td�����JdS)Nz$0.02 1.0 5.7 13.67 94.138 91027.9321�0.001�0.05)r�rr�r�r�s  r�#test_approx_equal_relative_decimalsz:ApproxEqualInexactTest.test_approx_equal_relative_decimalssq���W�D�J�J�L�L�M�M�	?�	?�A��)�)�!�W�W�-=�-=�>�>�>��)�)�1�"�g�f�o�o�>�>�>�>�	?�	?rc��|r|jn|j}|t|||d�����|r|jn|j}|t||d|�����|s|r|jn|j}|t||||�����dS)Nrr�)r�r�r4)rJrrr0r1�tol_flag�rel_flagr^s        r�
do_check_bothz$ApproxEqualInexactTest.do_check_both,s���#+�A�����1A��
��l�1�a�S�a�0�0�0�1�1�1�#+�A�����1A��
��l�1�a�Q�C�0�0�0�1�1�1�$,�O��O����t�?O��
��l�1�a�S�c�2�2�2�3�3�3�3�3rc�n�|�dddddd��|�dddd	dd��dS)
N�R����@�+���@���Mbp?���W�8?Tg?5^�I��g%��C�����Mb`?g-C��6*?�rrvs r�test_approx_equal_both1z.ApproxEqualInexactTest.test_approx_equal_both14sD�����5�%����d�C�C�C����6�6�5�&�$��E�E�E�E�Erc�:�|�dddddd��dS)NrrrgV�F�?8?TFrrvs r�test_approx_equal_both2z.ApproxEqualInexactTest.test_approx_equal_both29s&�����5�%����e�D�D�D�D�Drc�:�|�dddddd��dS)Nrr���MbP?rFTrrvs r�test_approx_equal_both3z.ApproxEqualInexactTest.test_approx_equal_both3=s&�����5�%����t�D�D�D�D�Drc�n�|�dddddd��|�dddd	dd��dS)
Ng=
ףp=@�@r�rFg�Q��[�@g�(\��[�@rgiUMu�>rrvs r�test_approx_equal_both4z.ApproxEqualInexactTest.test_approx_equal_both4AsD�����4��t�U�E�5�A�A�A����6�6�4��u�e�D�D�D�D�DrN)r7r8r9r�r�r�r�r�r�r�r�rrrrrrr r#r;rrr�r��s������J�J�J�0�0�0�5�5�5�;�;�;�5�5�5�D�D�D�J�J�J�C�C�C�5�5�5�5�5�5�?�?�?�4�4�4�F�F�F�
E�E�E�E�E�E�E�E�E�E�Err�c�&�eZdZd�Zd�Zd�Zd�ZdS)�ApproxEqualSpecialsTestc	���ttfD]�}|d��}|�t||����|�t||dd����|�t||dd����|�t||����|�t||����|�t|d������dS)Nr!rr
r���)rrr�r4r�)rJr�r!s   r�test_infz ApproxEqualSpecialsTest.test_infJs����W�%�	6�	6�E��%��,�,�C��O�O�L��c�2�2�3�3�3��O�O�L��c�1�a�8�8�9�9�9��O�O�L��c�1�d�;�;�<�<�<��O�O�L�#���t�4�4�5�5�5����\�#��t�4�4�5�5�5����\�#�t�4�4�5�5�5�5�	6�	6rc��ttfD]A}|d��}||d��dfD]%}|�t||�����&�BdS)N�nanr!r')rrr�r4)rJr�r*�others    r�test_nanz ApproxEqualSpecialsTest.test_nanTsq���W�%�	;�	;�E��%��,�,�C��u�u�U�|�|�T�2�
;�
;��� � ��c�5�!9�!9�:�:�:�:�
;�	;�	;rc�|�tjdd��}|�t|ddd�����dS)Nrtrur�r�)rrr�r4�rJ�nzeros  r�test_float_zeroesz)ApproxEqualSpecialsTest.test_float_zeroesZs<���
�c�2�&�&������U�C�S�c�B�B�B�C�C�C�C�Crc��td��}|�t|td��dd�����dS)Nz-0.0rr�r�)rr�r4r.s  r�test_decimal_zeroesz+ApproxEqualSpecialsTest.test_decimal_zeroes^s<�����������U�G�A�J�J�C�S�I�I�I�J�J�J�J�JrN)r7r8r9r(r,r0r2r;rrr%r%GsX������6�6�6�;�;�;�D�D�D�K�K�K�K�Krr%c��eZdZd�Zd�ZdS)�TestApproxEqualErrorsc�N�|�ttdddd��dS)Nr�rur���assertRaisesr-r4rvs r�test_bad_tolz"TestApproxEqualErrors.test_bad_tolfs&�����*�l�C��b�#�F�F�F�F�Frc�N�|�ttdddd��dS)Nr�r
rr6rvs r�test_bad_relz"TestApproxEqualErrors.test_bad_reljs&�����*�l�C��a��F�F�F�F�FrN)r7r8r9r8r:r;rrr4r4cs:������G�G�G�G�G�G�G�Grr4c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestNumericTestCasec�l�tj|�}|j|�}|D]}|�||���dSrj)rTrk�generate_substrings�assertIn)rJr��
actual_msgr%�	substrings     r�do_testzTestNumericTestCase.do_testzsN��$�6��=�
�+�4�+�T�2��!�	1�	1�I��M�M�)�Z�0�0�0�0�	1�	1rc�j�|�tttj����dSrj)r��
issubclassrTrQ�TestCaservs r� test_numerictestcase_is_testcasez4TestNumericTestCase.test_numerictestcase_is_testcase�s'�����
�?�H�4E�F�F�G�G�G�G�Grc�4�d}|�|��dS)N)�@�@r���?N�rB�rJr�s  r�test_error_msg_numericz*TestNumericTestCase.test_error_msg_numeric�s��*�����T�����rc�4�d}|�|��dS)N)�@g� @g�?r�r�rKrLs  r�test_error_msg_sequencez+TestNumericTestCase.test_error_msg_sequence�s��)�����T�����rc��t||��\}}d|zd|zd|zd|zg}|�|�d|z��|S)z5Return substrings we expect to see in error messages.ztol=%rzrel=%rzabsolute error = %rzrelative error = %rNzdiffer at index %d)r)�append)	rJr[r\r0r1rlr'r(�
substringss	         rr>z'TestNumericTestCase.generate_substrings�sb��'��v�6�6�����3���3��%��/�%��/�	�
��?����2�S�8�9�9�9��rN)r7r8r9rBrFrMrPr>r;rrr<r<tsb������1�1�1�H�H�H����
���
����rr<c�&�eZdZeZddgZd�Zd�ZdS)�GlobalsTestr:�__all__c�r�|jD].}|�t|j|��d|z���/dS)Nz%s not present)�expected_metadatar��hasattr�module)rJ�metas  r�	test_metazGlobalsTest.test_meta�sO���*�	5�	5�D��O�O�G�D�K��6�6�,�t�3�
5�
5�
5�
5�	5�	5rc���|j}|jD]U}|�|�d��d|z��|�t||��d|z���VdS)N�_zprivate name "%s" in __all__zmissing name "%s" in __all__)rZrVr��
startswithr�rY)rJrZ�names   r�test_check_allzGlobalsTest.test_check_all�s�������N�	C�	C�D����T�_�_�S�1�1�;�d�B�
D�
D�
D�
�O�O�G�F�D�1�1�:�T�A�
C�
C�
C�
C�	C�	CrN)r7r8r9r<rZrXr\rar;rrrUrU�sG������
�F�"�I�.��5�5�5�	C�	C�	C�	C�	CrrUc�^�eZdZejejjdkd��d���ZdS)�DocTestsrz)Docstrings are omitted with -OO and abovec��tjttj���\}}|�|d��|�|d��dS)N)�optionflagsr)�doctest�testmodr<�ELLIPSIS�
assertGreaterrF)rJ�failed�trieds   r�test_doc_testszDocTests.test_doc_tests�sQ�� ��
��@P�Q�Q�Q�
������5�!�$�$�$������#�#�#�#�#rN)	r7r8r9rQ�skipIf�sys�flags�optimizerlr;rrrcrc�sQ�������X�_�S�Y�'�1�,�@�B�B�$�$�B�B�$�$�$rrcc��eZdZd�ZdS)�StatisticsErrorTestc���d}|�ttd����|�ttjt
��|tjjz��dS)NzNExpected StatisticsError to be a ValueError, but got a subclass of %r instead.�StatisticsError)r�rYr<rDrtr-�__base__)rJ�errmsgs  r�test_has_exceptionz&StatisticsErrorTest.test_has_exception�si��+�	�	
����
�,=�>�>�?�?�?�����:�5�z�B�B���3�<�<�	�	�	�	�	rN)r7r8r9rwr;rrrrrr�s#������	�	�	�	�	rrrc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�ExactRatioTestc�d�dD],}|�tj|��|df���-dS)N)i�����rr��cl F�x:^Vr
)rFr<�_exact_ratio)rJrgs  r�test_intzExactRatioTest.test_int�sG��,�	A�	A�A����Z�4�Q�7�7�!�Q��@�@�@�@�	A�	Arc��d}|D]<}t|d��}|�tj|��|df���=dS)N)���r
r��&r�)rrFr<r})rJr�rr�s    r�
test_fractionzExactRatioTest.test_fraction�sY��$�
��	B�	B�A���B���A����Z�4�Q�7�7�!�R��A�A�A�A�	B�	Brc�B�|�tjd��d��|�tjd��d��d�td��D��}|D]2}tj|��\}}|�|||z���3dS)Nr��r
r���?)r�r�c�8�g|]}tjdd����S)���r���random�uniform�r�r^s  r�
<listcomp>z-ExactRatioTest.test_float.<locals>.<listcomp>�s$��>�>�>�a���t�S�)�)�>�>�>rr�)rFr<r}�range)rJ�datar�num�dens     r�
test_floatzExactRatioTest.test_float�s�������0��7�7��@�@�@�����0��7�7��@�@�@�>�>�5��:�:�>�>�>���	)�	)�A�!�.�q�1�1�H�C�����Q��C��(�(�(�(�	)�	)rc��t}tj}|�||d����d��|�||d����d��|�||d����d��dS)Nz0.125r�z12.345)i�	��z-1.98)i����r)rr<r}rF)rJr�r}s   r�test_decimalzExactRatioTest.test_decimal�s�����!�.�������a�a��j�j�1�1�6�:�:�:������a�a��k�k�2�2�K�@�@�@������a�a��j�j�1�1�9�=�=�=�=�=rc��td��}Gd�dt��}Gd�dt��}||fD]�}t|t|fD]�}||��}tj|��}|�||df��|�t|d��|��|�tj|d��������dS)N�INFc��eZdZdS)�(ExactRatioTest.test_inf.<locals>.MyFloatN�r7r8r9r;rr�MyFloatr����������Drr�c��eZdZdS)�*ExactRatioTest.test_inf.<locals>.MyDecimalNr�r;rr�	MyDecimalr��r�rr�r)	rrr<r}rFrr�rr.)rJr�r�r�r!r�r�ratios        rr(zExactRatioTest.test_inf�s���E�l�l��	�	�	�	�	�e�	�	�	�	�	�	�	�	��	�	�	��#��;�	6�	6�C���'�9�=�
6�
6���E�#�J�J��"�/��2�2��� � ���D�	�2�2�2�� � ��e�A�h����7�7�7�����
�5��8� 4� 4�5�5�5�5�
6�	6�	6rc��td��}Gd�dt��}|||��fD]�}tj|��}|�t	j|d����|�|dd��|�t|d��t|������dS)N�NANc��eZdZdS)�.ExactRatioTest.test_float_nan.<locals>.MyFloatNr�r;rrr�r��r�rr�rr
)	rr<r}r�rr�assertIsrFr)rJr�r�r*r�s     r�test_float_nanzExactRatioTest.test_float_nan�s����E�l�l��	�	�	�	�	�e�	�	�	�������&�	8�	8�C��+�C�0�0�E��O�O�D�J�u�Q�x�0�0�1�1�1��M�M�%��(�D�)�)�)����T�%��(�^�^�T�#�Y�Y�7�7�7�7�		8�	8rc��td��}td��}Gd�dt��}|||��|||��fD]�}tj|��}|�t	|d|����|�|dd��|�t|d��t|������dS)Nr��sNANc��eZdZdS)�2ExactRatioTest.test_decimal_nan.<locals>.MyDecimalNr�r;rrr�r�r�rr�rr
)rr<r}r�rr�rFr)rJr�r�r�r*r�s      r�test_decimal_nanzExactRatioTest.test_decimal_nans����e�n�n���v����	�	�	�	�	��	�	�	����3����y�y����?�	8�	8�C��+�C�0�0�E��O�O�J�u�Q�x��5�5�6�6�6��M�M�%��(�D�)�)�)����T�%��(�^�^�T�#�Y�Y�7�7�7�7�		8�	8rN)
r7r8r9r~r�r�r�r(r�r�r;rrryry�s�������A�A�A�B�B�B�)�)�)�>�>�>�6�6�6�8�8�8�	8�	8�	8�	8�	8rryc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�DecimalToRatioTestc���td��}|�tj|��|df��|�tj|��|df��dS)Nr�)rrFr<r})rJr!s  r�
test_infinityz DecimalToRatioTest.test_infinitysa���e�n�n������0��5�5��T�{�C�C�C�����0�#��6�6�#��t��E�E�E�E�Erc���td��td��fD]R}tj|��\}}|�t	||����|�|d���SdS)Nr�r�)rr<r}r�rr�)rJr*r�r�s    rr,zDecimalToRatioTest.test_nansu���E�N�N�G�F�O�O�4�	%�	%�C�!�.�s�3�3�H�C��
�O�O�J�s�C�0�0�1�1�1��M�M�#�t�$�$�$�$�
	%�	%rc�j�td��td��g}|D]�}|dksJ�tj|��\}}|�|d��|�|d��tj|��\}}|�|d��|�|d����dS)Nz	9.8765e12z
9.8765e-12r)rr<r}�assertGreaterEqualri�assertLessEqual)rJ�numbersr�r�r�s     r�	test_signzDecimalToRatioTest.test_sign!s����;�'�'���)>�)>�?���		'�		'�A��q�5�5�5�5�!�.�q�1�1�H�C���#�#�C��+�+�+����s�A�&�&�&�!�.��r�2�2�H�C��� � ��a�(�(�(����s�A�&�&�&�&�		'�		'rc�t�tjtd����}|�|d��dS)Nz0.1234)ii��r<r}rrF�rJ�ts  r�test_negative_exponentz)DecimalToRatioTest.test_negative_exponent/s6���#�G�H�$5�$5�6�6������K�(�(�(�(�(rc�t�tjtd����}|�|d��dS)Nz1.234e7)i K�r
r�r�s  r�test_positive_exponentz)DecimalToRatioTest.test_positive_exponent4s6���#�G�I�$6�$6�7�7������M�*�*�*�*�*rc���tjtd����}|�|d��tjtd����}|�|d��dS)N�1e2)r�r
z1.47e5)i8>r
r�r�s  r�test_regression_20536z(DecimalToRatioTest.test_regression_205369sd��
�#�G�E�N�N�3�3������H�%�%�%��#�G�H�$5�$5�6�6������K�(�(�(�(�(rN)	r7r8r9r�r,r�r�r�r�r;rrr�r�sq������F�F�F�%�%�%�'�'�'�)�)�)�
+�+�+�
)�)�)�)�)rr�c� �eZdZd�Zd�Zd�ZdS)�IsFiniteTestc��dtdd��dtd��fD])}|�tj|�����*dS)Nr�r
r�rH�5.5)rrr�r<�	_isfiniter�s  r�test_finitezIsFiniteTest.test_finiteEsR���X�a��^�^�S�'�%�.�.�9�	5�	5�A��O�O�J�0��3�3�4�4�4�4�	5�	5rc��td��td��fD])}|�tj|�����*dS�Nr!�rrr�r<r�r�s  rr�zIsFiniteTest.test_infinityJsN����,�,�����/�	6�	6�A����Z�1�!�4�4�5�5�5�5�	6�	6rc��td��td��td��fD])}|�tj|�����*dS�Nr*r�r�r�r�s  rr,zIsFiniteTest.test_nanOsV����,�,���������@�	6�	6�A����Z�1�!�4�4�5�5�5�5�	6�	6rN)r7r8r9r�r�r,r;rrr�r�BsA������5�5�5�
6�6�6�
6�6�6�6�6rr�c�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�
CoerceTestc��ttttfD]l}|�tj|t��|��Gd�d|��}|�tj|t��|���mdS)Nc��eZdZdS)�%CoerceTest.test_bool.<locals>.MyClassNr�r;rr�MyClassr�p��������rr�)r�rrrr�r<�_coerce�bool)rJ�Tr�s   r�	test_boolzCoerceTest.test_booljs����u�h��0�	F�	F�A��M�M�*�,�Q��5�5�q�9�9�9�"�"�"�"�"�!�"�"�"��M�M�*�,�W�d�;�;�W�E�E�E�E�	F�	Frc��|�tj||��|��|�tj||��|��dS)z Assert that type A coerces to B.N)r�r<r��rJ�A�Bs   r�assertCoerceTozCoerceTest.assertCoerceTossJ���
�
�j�(��A�.�.��2�2�2��
�
�j�(��A�.�.��2�2�2�2�2rc���|�||��Gd�d|��}|�||��Gd�d|��}|�||��|�||��dS)z6Checks that type A coerces to B, including subclasses.c��eZdZdS)�/CoerceTest.check_coerce_to.<locals>.SubclassOfANr�r;rr�SubclassOfAr�}r�rr�c��eZdZdS)�/CoerceTest.check_coerce_to.<locals>.SubclassOfBNr�r;rr�SubclassOfBr��r�rr�N)r�)rJr�r�r�r�s     r�check_coerce_tozCoerceTest.check_coerce_toxs���	
���A�q�!�!�!�"�"�"�"�"�!�"�"�"����K��+�+�+�"�"�"�"�"�!�"�"�"����A�{�+�+�+����K��5�5�5�5�5rc��|�ttj||f��|�ttj||f��dS)z=Assert that coercing A to B, or vice versa, raises TypeError.N)r7�	TypeErrorr<r�r�s   r�assertCoerceRaiseszCoerceTest.assertCoerceRaises�sF�����)�Z�%7�!�Q��@�@�@����)�Z�%7�!�Q��@�@�@�@�@rc��|tusJ�|�tj||��|��Gd�d|��}Gd�d|��}Gd�d|��}|||fD]}|�||���|�||��|�||��|�||��dS)z>Check that type T coerces correctly with subclasses of itself.c��eZdZdS)�*CoerceTest.check_type_coercions.<locals>.UNr�r;rr�Ur��r�rr�c��eZdZdS)�*CoerceTest.check_type_coercions.<locals>.VNr�r;rr�Vr��r�rr�c��eZdZdS)�*CoerceTest.check_type_coercions.<locals>.WNr�r;rr�Wr��r�rr�N)r�r�r<r�r�r�)rJr�r�r�r��typs      r�check_type_coercionszCoerceTest.check_type_coercions�s�����}�}�}�}��
�
�j�(��A�.�.��2�2�2�����������������������������q�!�9�	(�	(�C�����3�'�'�'�'����A�q�!�!�!�����1�%�%�%�����1�%�%�%�%�%rc��|�t��tttfD]}|�t|���dSrj)r�r�rrrr�)rJr�s  rr~zCoerceTest.test_int�sO���!�!�#�&�&�&��8�W�-�	+�	+�C�� � ��c�*�*�*�*�	+�	+rc�z�|�t��|�tt��dSrj)r�rr�rrvs rr�zCoerceTest.test_fraction�s2���!�!�(�+�+�+����X�u�-�-�-�-�-rc�:�|�t��dSrj)r�rrvs rr�zCoerceTest.test_decimal�s���!�!�'�*�*�*�*�*rc�:�|�t��dSrj)r�rrvs rr�zCoerceTest.test_float�s���!�!�%�(�(�(�(�(rc���tttd��ttfD]5}t
tttfD]}|�	||����6dSrj)
�str�listr�tuple�dictr�rrrr�)rJ�bad_type�	good_types   r�test_non_numeric_typesz!CoerceTest.test_non_numeric_types�sb���d�D��J�J��t�<�	=�	=�H�!�5�(�G�<�
=�
=�	��'�'�	�8�<�<�<�<�
=�	=�	=rc��ttfD]F}Gd�d|��}|�|t��|�|t���GdS)Nc��eZdZdS)�6CoerceTest.test_incompatible_types.<locals>.MySubclassNr�r;rr�
MySubclassr�r�rr)rrr�r)rJr�rs   r�test_incompatible_typesz"CoerceTest.test_incompatible_types�si����"�	9�	9�A�%�%�%�%�%�Q�%�%�%��#�#�A�w�/�/�/��#�#�J��8�8�8�8�	9�	9rN)r7r8r9r�r�r�r�r�r~r�r�r�r�rr;rrr�r�Us�������*F�F�F�3�3�3�

6�
6�
6�A�A�A�
&�&�&� +�+�+�.�.�.�
+�+�+�)�)�)�=�=�=�
9�9�9�9�9rr�c�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�ConvertTestc��|�||��|�t|��t|����dS)z5Check that x equals y, and has the same type as well.N)rFr�r�rJrr/s   r�check_exact_equalzConvertTest.check_exact_equal�s>������A�����
�
�d�1�g�g�t�A�w�w�'�'�'�'�'rc�(�tjtd��t��}|�|d��Gd�dt��}tjtd��|��}|�||d����dS)Nr�c��eZdZdS)�#ConvertTest.test_int.<locals>.MyIntNr�r;rr�MyIntr
�r�rrr{)r<�_convertrr�r)rJrrs   rr~zConvertTest.test_int�s���������c�2�2�����q�"�%�%�%������C����������e�4�4�����q�%�%��)�)�,�,�,�,�,rc�J�tjtdd��t��}|�|tdd����Gd�dt��}tjtdd��|��}|�||dd����dS)N�_r|c���eZdZ�fd�Z�xZS)�-ConvertTest.test_fraction.<locals>.MyFractionc�l��|�t���|����Srj��	__class__�super�__truediv__�rJr+rs  �rrz9ConvertTest.test_fraction.<locals>.MyFraction.__truediv__��'����~�~�e�g�g�&9�&9�%�&@�&@�A�A�Ar�r7r8r9r�
__classcell__�rs@r�
MyFractionr��A�������
B�
B�
B�
B�
B�
B�
B�
B�
Brrr��
)r<rrr)rJrrs   rr�zConvertTest.test_fraction�s�������R� 0� 0�(�;�;�����q�(�2�r�"2�"2�3�3�3�	B�	B�	B�	B�	B��	B�	B�	B�
����R� 0� 0�*�=�=�����q�*�*�R��"4�"4�5�5�5�5�5rc�,�tjtdd��t��}|�|d��Gd�dt��}tjtdd��|��}|�||d����dS)	Nrurg�c���eZdZ�fd�Z�xZS)�'ConvertTest.test_float.<locals>.MyFloatc�l��|�t���|����Srjrrs  �rrz3ConvertTest.test_float.<locals>.MyFloat.__truediv__�rrrrs@rr�r �rrr�r�r�r�)r<rrrr)rJrr�s   rr�zConvertTest.test_float�s�������Q����7�7�����q�$�'�'�'�	B�	B�	B�	B�	B�e�	B�	B�	B�
����A����8�8�����q�'�'�%�.�.�1�1�1�1�1rc�F�tjtdd��t��}|�|td����Gd�dt��}tjtdd��|��}|�||d����dS)	Nr
�(z0.025c���eZdZ�fd�Z�xZS)�+ConvertTest.test_decimal.<locals>.MyDecimalc�l��|�t���|����Srjrrs  �rrz7ConvertTest.test_decimal.<locals>.MyDecimal.__truediv__�rrrrs@rr�r%�rrr�r�r�z-0.9375)r<rrrr)rJrr�s   rr�zConvertTest.test_decimal�s�������B����9�9�����q�'�'�"2�"2�3�3�3�	B�	B�	B�	B�	B��	B�	B�	B�
����b� 1� 1�9�=�=�����q�)�)�I�"6�"6�7�7�7�7�7rc���td��td��fD]B}||fD]:}tj|t	|����}|�||���;�CdSr�)rrr<rrr)rJr�r!rs    rr(zConvertTest.test_inf�sw���%�L�L�'�%�.�.�1�	/�	/�C��c�T�{�
/�
/���'��T�#�Y�Y�7�7���&�&�q�#�.�.�.�.�
/�	/�	/rc���td��td��td��fD]G}tj|t	|����}|�t
||�����HdSr�)rrr<rrr�r)rJr*rs   rr,zConvertTest.test_nan�sk���%�L�L�'�%�.�.�'�&�/�/�B�	0�	0�C��#�C��c���3�3�A��O�O�J�q�#�.�.�/�/�/�/�	0�	0rc��|�t��5tjdt��ddd��dS#1swxYwYdSrj)r7r�r<rrrvs r�test_invalid_input_typez#ConvertTest.test_invalid_input_type�s���
�
�
�y�
)�
)�	-�	-����e�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s�A�A�
AN)r7r8r9rr~r�r�r�r(r,r*r;rrrr�s�������(�(�(�
-�-�-�6�6�6�2�2�2�8�8�8�/�/�/�0�0�0�
-�-�-�-�-rrc�$�eZdZdZd�Zd�Zd�ZdS)�FailNegTestz Test _fail_neg private function.c��ddtd��td��g}ttj|����}|�||��dS�Nr
�@r�r�)rrr�r<�	_fail_negrF)rJ�values�news   r�test_pass_throughzFailNegTest.test_pass_through�sP���S�(�1�+�+�w�q�z�z�2���:�'��/�/�0�0�������%�%�%�%�%rc���ddtd��td��fD]@}|g}tj|��}|�tjt|���AdSr.)rrr<r0r7rt�next)rJr�seq�its    r�test_negatives_raisez FailNegTest.test_negatives_raisesk���S�(�1�+�+�w�q�z�z�2�	D�	D�A��2�$�C��%�c�*�*�B����j�8�$��C�C�C�C�	D�	Drc�(�dtjdd��z}	ttjdg|����|�d��n)#tj$r}|jd}Yd}~nd}~wwxYw|�||��dS)Nzbadness #%d�'i��ruz(expected exception, but it didn't happenr)	r��randintr5r<r0�failrtr�rF)rJr]rhrvs    r�test_error_msgzFailNegTest.test_error_msgs����f�n�U�E�:�:�:��	B���%�r�d�C�0�0�1�1�1�
�I�I�@�A�A�A�A���)�	�	�	��V�A�Y�F�F�F�F�F�F�����	����	
�����%�%�%�%�%s�#A�A9�"
A4�4A9N)r7r8r9r:r3r8r=r;rrr,r,�sJ������*�*�&�&�&�D�D�D�	&�	&�	&�	&�	&rr,c�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�UnivariateCommonMixinc�F�|�t|j��dSrj�r7r��funcrvs r�test_no_argsz"UnivariateCommonMixin.test_no_argss �����)�T�Y�/�/�/�/�/rc�|�gdtg��fD](}|�tj|j|���)dS)Nr;)�iterr7r<rtrB)rJ�emptys  r�test_empty_dataz%UnivariateCommonMixin.test_empty_datasL���"�d�2�h�h�'�	L�	L�E����j�8�$�)�U�K�K�K�K�	L�	Lrc��ttd����}|t|��kr'tj|��|t|��k�'|S)z"Return int data for various tests.r�)r�r��sortedr��shuffle�rJr�s  r�prepare_dataz"UnivariateCommonMixin.prepare_data!sL���E�"�I�I�����f�T�l�l�"�"��N�4� � � ��f�T�l�l�"�"��rc��|���}t|��dksJ�|t|��ksJ�|dd�}||usJ�|�|��}|�||d��dS)Nr
zdata has been modified)rLrarIrB�assertListEqual)rJr��savedr^s    r�test_no_inplace_modificationsz3UnivariateCommonMixin.test_no_inplace_modifications(s���� � �"�"���4�y�y�A�~�~�~�~��v�d�|�|�#�#�#�#��Q�Q�Q����5� � � � ��I�I�d�O�O�����T�5�*B�C�C�C�C�Crc��gd�dz}|�|��}tj|��|�|��}|�||��dS)N)r
rr�r�r�r�r��r�)rBr�rJrF�rJr�r%r$s    r�test_order_doesnt_matterz.UnivariateCommonMixin.test_order_doesnt_matter2s^��(�'�'��+���9�9�T�?�?����t�������4��������6�*�*�*�*�*rc�F�Gd�dt��}Gd�dt��}d�}|���}|�|��}ttt|||fD]6}|�||����}|�||���7dS)Nc��eZdZdS)�BUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyListNr�r;rr�MyListrWAr�rrXc��eZdZdS)�CUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyTupleNr�r;rr�MyTuplerZCr�rr[c��d�|D��S)Nc3�K�|]}|V��dSrjr;)r��objs  rr�zXUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator.<locals>.<genexpr>Fs"����(�(�C�C�(�(�(�(�(�(rr;�r�s r�	generatorzEUnivariateCommonMixin.test_type_of_data_collection.<locals>.generatorEs��(�(�4�(�(�(�(r)r�r�rLrBrErF)rJrXr[r`r�r%�kindr�s        r�test_type_of_data_collectionz2UnivariateCommonMixin.test_type_of_data_collection?s���	�	�	�	�	�T�	�	�	�	�	�	�	�	�e�	�	�	�	)�	)�	)�� � �"�"���9�9�T�?�?���5�$����C�	/�	/�D��Y�Y�t�t�D�z�z�*�*�F����V�X�.�.�.�.�	/�	/rc��tddd��}|�t|����}|�|�|��|��dS�N�rr�)r�rBr�rF�rJr�r%s   r�test_range_dataz%UnivariateCommonMixin.test_range_dataMsP���R��Q�����9�9�T�$�Z�Z�(�(��������4���(�3�3�3�3�3rc���|�d��|�d��|�d��|�t����dS)Nr�gE@)�check_for_type_error�objectrvs r�test_bad_arg_typesz(UnivariateCommonMixin.test_bad_arg_typesSs^��	
�!�!�$�'�'�'��!�!�"�%�%�%��!�!�$�'�'�'��!�!�&�(�(�+�+�+�+�+rc�8�|jt|jg|�R�dSrjrArLs  rriz*UnivariateCommonMixin.check_for_type_errorbs'�����)�T�Y�6��6�6�6�6�6�6rc�N��Gd�dt��}|���}|�|��}t|ttfD]Q��fd�|D��}t|��|�|����}|�||���RdS)Nc�,��eZdZ�fd�Z�fd�ZeZ�xZS)�@UnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloatc�r��t|��t���|����Srj�rrrrs  �rrzLUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__truediv__j�+���!�t�D�z�z�%�'�'�"5�"5�e�"<�"<�=�=�=rc�r��t|��t���|����Srj�rr�__add__rs  �rruzHUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__add__l�)���!�t�D�z�z�%�'�'�/�/�%�"8�"8�9�9�9r)r7r8r9rru�__radd__rrs@rr�roisJ�������
>�
>�
>�
>�
>�
:�
:�
:�
:�
:��H�H�H�H�Hrr�c�&��g|]
}�|����Sr;r;�r�rras  �rr�zCUnivariateCommonMixin.test_type_of_data_element.<locals>.<listcomp>ss!���)�)�)��D�D��G�G�)�)�)r)rrLrBrrrrF)rJr��rawr%r�r�ras      @r�test_type_of_data_elementz/UnivariateCommonMixin.test_type_of_data_elementes����	�	�	�	�	�e�	�	�	����!�!���9�9�S�>�>���G�W�h�7�	/�	/�D�)�)�)�)�S�)�)�)�D�#�T�(�^�^�D�I�I�d�O�O�4�4�F����V�X�.�.�.�.�	/�	/rN)
r7r8r9rCrGrLrPrTrbrgrkrir{r;rrr?r?s�������0�0�0�L�L�L�
���D�D�D�+�+�+�/�/�/�4�4�4�
,�
,�
,�7�7�7�/�/�/�/�/rr?c��eZdZdZd�Zd�ZdS)�UnivariateTypeMixinamMixin class for type-conserving functions.

    This mixin class holds test(s) for functions which conserve the type of
    individual data points. E.g. the mean of a list of Fractions should itself
    be a Fraction.

    Not all tests to do with types need go in this class. Only those that
    rely on the function returning the same type as its input data.
    c�R�Gd�dt��}ttt|fS)z4Return the types which are expected to be conserved.c�b��eZdZ�fd�Z�fd�Z�fd�Z�fd�Z�fd�Z�fd�ZeZ	�fd�Z
e
Z�xZS)�HUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloatc�r��t|��t���|����Srjrqrs  �rrzTUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__truediv__�rrrc�r��t|��t���|����Srj)rr�__rtruediv__rs  �rr�zUUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rtruediv__�s+���!�t�D�z�z�%�'�'�"6�"6�u�"=�"=�>�>�>rc�r��t|��t���|����Srj)rr�__sub__rs  �rr�zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__sub__�rvrc�r��t|��t���|����Srj)rr�__rsub__rs  �rr�zQUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rsub__�s+���!�t�D�z�z�%�'�'�"2�"2�5�"9�"9�:�:�:rc�r��t|��t���|����Srj)rr�__pow__rs  �rr�zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__pow__�rvrc�r��t|��t���|����Srjrtrs  �rruzPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__add__�rvrc�r��t|��t���|����Srj)rr�__mul__rs  �rr�zPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__mul__�rvr)
r7r8r9rr�r�r�r�rurwr��__rmul__rrs@rr�r��s��������
>�
>�
>�
>�
>�
?�
?�
?�
?�
?�
:�
:�
:�
:�
:�
;�
;�
;�
;�
;�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:��H�
:�
:�
:�
:�
:��H�H�H�H�Hrr�)rrr)rJr�s  r�#prepare_types_for_conservation_testz7UnivariateTypeMixin.prepare_types_for_conservation_test�s=��	�	�	�	�	�e�	�	�	�"�w��'�2�2rc����|���}|���D]H��fd�|D��}|�|��}|�t	|������IdS)Nc�&��g|]
}�|����Sr;r;rys  �rr�z<UnivariateTypeMixin.test_types_conserved.<locals>.<listcomp>�s!���'�'�'�Q���a���'�'�'r)rLr�rBr�r)rJr�r�r�ras    @r�test_types_conservedz(UnivariateTypeMixin.test_types_conserved�s����� � �"�"���<�<�>�>�	.�	.�D�'�'�'�'�$�'�'�'�A��Y�Y�q�\�\�F��M�M�$�v�,�,��-�-�-�-�	.�	.rN)r7r8r9r:r�r�r;rrr}r}xs<��������3�3�3�*.�.�.�.�.rr}c��eZdZd�ZdS)�
TestSumCommonc��d�}||_dS)Nc�P�tj|�\}}}tj||��Srj)r<�_sumr�)r�r��valuers    r�simplified_sumz+TestSumCommon.setUp.<locals>.simplified_sum�s'��$�/�4�0�K�A�u�a��%�e�Q�/�/�/r)rB)rJr�s  r�setUpzTestSumCommon.setUp�s��	0�	0�	0�#��	�	�	rN)r7r8r9r�r;rrr�r��s#������
#�#�#�#�#rr�c�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�TestSumc�(�tj|_dSrj)r<r�rBrvs rr�z
TestSum.setUp�����O��	�	�	rc��gdtg��fD]@}|�|�|��tt	d��df���AdS)Nr;r)rErFrBr�rrKs  rrGzTestSum.test_empty_data�s\����T�"�X�X�&�	E�	E�D����T�Y�Y�t�_�_�s�H�Q�K�K��.C�D�D�D�D�	E�	Erc��|�|�gd���ttd��df��dS)N)r
r�r����i����rer�r
�<r�)rFrBr�rrvs r�	test_intszTestSum.test_ints�sI��������#?�#?�#?�@�@��x��|�|�Q�/�	1�	1�	1�	1�	1rc��|�|�dgdz��ttd��df��dS)NrJre�@)rFrBrrrvs r�test_floatszTestSum.test_floats�sH��������D�6�"�9�-�-���#����3�	5�	5�	5�	5�	5rc��|�|�tdd��gdz��ttdd��df��dS)Nr
r'��r)rFrBrrvs r�test_fractionszTestSum.test_fractions�sV��������H�Q��$5�$5�#6�s�#:�;�;�"�H�Q��N�N�C�8�	:�	:�	:�	:�	:rc
�4�t}|d��|d��|d��|d��|d��|d��|d��|d��g}|�|�|��ttd	��d
f��dS)Nr
z5.246z1.702z-0.025z3.974z2.328z4.617z2.843z20.686r�)rrFrB�rJr�r�s   r�
test_decimalszTestSum.test_decimals�s�������'�
�
�A�A�g�J�J���'�
�
�A�A�h�K�K���'�
�
�A�A�g�J�J���'�
�
�A�A�g�J�J���	
������4���!�7�8�#4�#4�a�8�	:�	:�	:�	:�	:rc���d�td��D��}|�t|�|��d��t	j|��d���dS)Nc�8�g|]}tjdd����S)r�r'r�r�s  rr�z7TestSum.test_compare_with_math_fsum.<locals>.<listcomp>�s$��@�@�@�q���t�T�*�*�@�@�@rr'r
g��ؗ�Ҭ<�r1)r�r_rrBr�fsumrKs  r�test_compare_with_math_fsumz#TestSum.test_compare_with_math_fsum�s^��A�@�E�$�K�K�@�@�@�����u�T�Y�Y�t�_�_�Q�%7�8�8�$�)�D�/�/�u��U�U�U�U�Urc��|�t|jgd�d��|�t|jgd���dS)N�r
rr��999)r
rr�r�rArvs r�test_strings_failzTestSum.test_strings_fail�sI�����)�T�Y�	�	�	�5�A�A�A����)�T�Y�0@�0@�0@�A�A�A�A�Arc��|�t|jgd�d��|�t|jgd���dS)Nr��999)r
rr�r�rArvs r�test_bytes_failzTestSum.test_bytes_fail�sI�����)�T�Y�	�	�	�6�B�B�B����)�T�Y�0A�0A�0A�B�B�B�B�Brc	���|�t|jddtd��g��|�t|jddgtd����dS)Nr
r/)r7r�rBrrvs r�test_mixed_sumzTestSum.test_mixed_sum�sW��	
���)�T�Y��C�����0D�E�E�E����)�T�Y��C��'�!�*�*�E�E�E�E�ErN)
r7r8r9r�rGr�r�r�r�r�r�r�r�r;rrr�r��s�������
$�$�$�E�E�E�
1�1�1�5�5�5�:�:�:�:�:�:�V�V�V�B�B�B�
C�C�C�
F�F�F�F�Frr�c��eZdZd�ZdS)�SumTortureTestc���|�tjgd�dz��tt	d��df��|�tjgd�dz��tt	d��df��tjgd�dz��\}}}|�|t��|�|d��|�t|��dd�	��dS)
N)r
�}Ô%�I�Tr
�}Ô%�I��r:g��@i@�)r�r
r
r�)�0��.�++r
r�rug���^�,gV瞯�<r�)rFr<r�rrr�r_)rJr�r��counts    r�test_torturezSumTortureTest.test_torture�s��������)>�)>�)>�u�)D�E�E���'�!2�!2�E�:�	<�	<�	<������)>�)>�)>�u�)D�E�E���'�!2�!2�E�:�	<�	<�	<�"��(?�(?�(?��(E�F�F�
��3���
�
�a����������&�&�&����u�S�z�z�7���>�>�>�>�>rN)r7r8r9r�r;rrr�r��s#������	?�	?�	?�	?�	?rr�c�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�SumSpecialValuesc��ttfD]t}|d��}tjd|dg��d}|�t|��|��|�tj|�����udS)Nr*r
r)	rrr<r�r�rr�rr)rJr�r*r�s    rr,zSumSpecialValues.test_nan�s����W�%�	0�	0�E��%��,�,�C��_�a��a�[�1�1�!�4�F��M�M�$�v�,�,��.�.�.��O�O�D�J�v�.�.�/�/�/�/�		0�	0rc��|�tj|����|�t	|��t	|����|�|dk|dk��||ksJ�dS)z8Check x is an infinity of the same type and sign as inf.rN)r�rr.r�rrF)rJrr!s   r�check_infinityzSumSpecialValues.check_infinity�sk������
�1�
�
�&�&�&��
�
�d�1�g�g�t�C�y�y�)�)�)�����Q���a��(�(�(��C�x�x�x�x�x�xrc���tjdd|dg��d}|�||��tjdd|d|dg��d}|�||��dS)Nr
rr�r�)r<r�r��rJr!r�s   r�do_test_infzSumSpecialValues.do_test_infsq����!�Q��Q��0�0��3�����F�C�(�(�(���!�Q��Q��Q�!7�8�8��;�����F�C�(�(�(�(�(rc�^�td��}dD]}|�||z���dS�Nr!�r
ru)rr��rJr!rs   r�test_float_infzSumSpecialValues.test_float_infsA���E�l�l���	'�	'�D����T�#�X�&�&�&�&�	'�	'rc�^�td��}dD]}|�||z���dSr�)rr�r�s   r�test_decimal_infz!SumSpecialValues.test_decimal_infsA���e�n�n���	'�	'�D����T�#�X�&�&�&�&�	'�	'rc��td��}tjdd|d|dg��d}|�t	j|����dS�Nr!r
rr�r�)rr<r�r�rrr�s   r�test_float_mismatched_infsz+SumSpecialValues.test_float_mismatched_infssR���E�l�l����!�Q��Q���a�!8�9�9�!�<������
�6�*�*�+�+�+�+�+rc�"�td��}dd|d|dg}tjtj��5|�tjtj|��d����ddd��dS#1swxYwYdSr�)	r�decimal�localcontext�ExtendedContextr�rrr<r��rJr!r�s   r�3test_decimal_extendedcontext_mismatched_infs_to_nanzDSumSpecialValues.test_decimal_extendedcontext_mismatched_infs_to_nans����e�n�n���1�c�1�s�d�A�&��
�
!�'�"9�
:�
:�	B�	B��O�O�D�J�z��t�'<�'<�Q�'?�@�@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�AB�B�Bc��td��}dd|d|dg}tjtj��5|�tjtj|��ddd��dS#1swxYwYdSr�)rr�r��BasicContextr7�InvalidOperationr<r�r�s   r�0test_decimal_basiccontext_mismatched_infs_to_nanzASumSpecialValues.test_decimal_basiccontext_mismatched_infs_to_nan%s����e�n�n���1�c�1�s�d�A�&��
�
!�'�"6�
7�
7�	O�	O����g�6�
���N�N�N�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�	O�	Os�,A0�0A4�7A4c��td��}d|dg}|�tjtj|��dS)Nr�r
r)rr7r�r�r<r�)rJr�r�s   r�test_decimal_snan_raisesz)SumSpecialValues.test_decimal_snan_raises,s;���v�����4��|�����'�2�J�O�T�J�J�J�J�JrN)r7r8r9r,r�r�r�r�r�r�r�r�r;rrr�r��s�������0�0�0����)�)�)�'�'�'�
'�'�'�
,�,�,�B�B�B�O�O�O�K�K�K�K�Krr�c� �eZdZd�Zd�Zd�ZdS)�AverageMixinc��dddtdd��td��fD],}|�|�|g��|���-dS�Nr�g@E@g�X_yCr}�z0.28�rrrFrBr�s  r�test_single_valuezAverageMixin.test_single_value8s[���d�F�H�R��$4�$4�g�f�o�o�F�	0�	0�A����T�Y�Y��s�^�^�Q�/�/�/�/�	0�	0rc�F�dddtdd��td��fS)N�@r{���7y�!C�=�Cz4.9712�rrrvs r�'prepare_values_for_repeated_single_testz4AverageMixin.prepare_values_for_repeated_single_test=s%���R���"�b�!1�!1�7�8�3D�3D�E�Erc��|���D]e}dD]`}|�||���5|g|z}|�|�|��|��ddd��n#1swxYwY�a�fdS)N�rr�r�re)rr�)r��subTestrFrB�rJrr�r�s    r�test_repeated_single_valuez'AverageMixin.test_repeated_single_value@s����=�=�?�?�	9�	9�A�'�
9�
9���\�\�A�U�\�3�3�9�9��3�u�9�D��$�$�T�Y�Y�t�_�_�a�8�8�8�9�9�9�9�9�9�9�9�9�9�9����9�9�9�9��
9�	9�	9s�0A.�.A2�5A2N)r7r8r9r�r�r�r;rrr�r�5sD������0�0�0�
F�F�F�9�9�9�9�9rr�c�\�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)�TestMeanc�(�tj|_dSrj)r<�meanrBrvs rr�zTestMean.setUpJr�rc�\�|�|�gd���d��dS)N)r�r
r�r�r
�rFrBrvs r�test_torture_pepzTestMean.test_torture_pepMs1��������#8�#8�#8�9�9�1�=�=�=�=�=rc��gd�}tj|��|�|�|��d��dS)N)rr
rr�r�r�r�r�r�rRr�r�r�r�r�r�g@@�r�rJrFrBrKs  rr�zTestMean.test_intsQsC��?�?�?����t����������4���&�1�1�1�1�1rc��gd�}tj|��|�|�|��d��dS)N)g@1@g�3@�4@g�5@g�5@g@7@g 9@g�;@g6@r�rKs  rr�zTestMean.test_floatsWsC��E�E�E����t����������4���)�4�4�4�4�4rc��t}|d��|d��|d��|d��|d��g}tj|��|�|�|��|d����dS)Nz1.634z2.517z3.912z4.072z5.813z3.5896)rr�rJrFrBr�s   rr�zTestMean.test_decimals]s}������'�
�
�A�A�g�J�J���'�
�
�A�A�g�J�J���'�
�
�K����t����������4���!�!�H�+�+�6�6�6�6�6rc
�@�t}|dd��|dd��|dd��|dd��|dd��|dd��|dd��g}tj|��|�|�|��|d	d
����dS)Nr
rr�r�r�rRr�r�i�i��rr�rJrFrB�rJr�r�s   rr�zTestMean.test_fractionsds�������!�Q�����1�a���!�!�A�q�'�'�1�1�Q��7�7�A�A�a��G�G�Q�Q�q�!�W�W�a�a��1�g�g�N����t����������4���!�!�D�$�-�-�8�8�8�8�8rc��gd�}ttfD]m}dD]h}|d��|z}||gz}|�|��}|�t	j|����|�||���i�ndS)N�r
r�r�r�r�r�r!)rrrBr�rr.rF)rJrzrarr!r�r�s       rr(zTestMean.test_infks����o�o���G�$�	.�	.�D��
.�
.���d�5�k�k�$�&���c�U�{�����4��������
�6� 2� 2�3�3�3�� � ���-�-�-�-�
.�	.�	.rc
���dddtd��dddtd��g}|�|��}|�tj|����dS)	Nrr�rRr!r
r�r�z-inf)rrBr�rr�rJr�r�s   r�test_mismatched_infszTestMean.test_mismatched_infsvsU���1�a��u���q�!�Q��f�
�
�>�����4��������
�6�*�*�+�+�+�+�+rc���gd�}ttfD]O}|d��}||gz}|�|��}|�t	j|�����PdS)Nrr*)rrrBr�rr)rJrzrar!r�r�s      rr,zTestMean.test_nan|so���o�o���G�$�	0�	0�D��$�u�+�+�C��#��;�D��Y�Y�t�_�_�F��O�O�D�J�v�.�.�/�/�/�/�		0�	0rc����d�gd�}|�|���z}|�ksJ�|��fd�|D����}|�||��dS)Nge��A�	�333333@�@g������@g������@g333333@�������@g @g333333 @g������"@c���g|]}|�z��Sr;r;�r�r�cs  �rr�z*TestMean.test_big_data.<locals>.<listcomp>�����.�.�.�A�A�a�C�.�.�.r�rBrF�rJr�r%r�rs    @r�
test_big_datazTestMean.test_big_data�sv�����<�<�<���9�9�T�?�?�Q�&���1�}�}�}�}����.�.�.�.��.�.�.�/�/�������*�*�*�*�*rc��d�td��D��}|�|��}|�|dz��}|�||��dS)Nc�8�g|]}tjdd����S)r{r�r�r�s  rr�z.TestMean.test_doubled_data.<locals>.<listcomp>��$��;�;�;�!���r�1�%�%�;�;�;rr'r�r�rBr_rSs    r�test_doubled_datazTestMean.test_doubled_data�s[��;�;�u�T�{�{�;�;�;���9�9�T�?�?�����4��6�"�"�����v�x�0�0�0�0�0rc�v�td��}|�tj|g��|��dS)N�1e4)rrFr<r�r�s  r�test_regression_20561zTestMean.test_regression_20561�s7��
�E�N�N�������!��-�-�q�1�1�1�1�1rc��|�tjddg��d��d}d}dD]Z}|�tj|g|z��|��|�tj|g|z��|���[dS)Ng�������g�g)rr�r�r�)rFr<r�)rJ�big�tinyrs    r�test_regression_25177zTestMean.test_regression_25177�s���	
�����
#�%:�;�=�=�!�	#�	#�	#�$�����	>�	>�A����Z�_�c�U�1�W�5�5�s�;�;�;����Z�_�d�V�A�X�6�6��=�=�=�=�	>�	>rN)r7r8r9r�r�r�r�r�r�r(rr,rrrrr;rrr�r�Is�������$�$�$�>�>�>�2�2�2�5�5�5�7�7�7�9�9�9�	.�	.�	.�,�,�,�0�0�0�+�+�+�1�1�1�2�2�2�>�>�>�>�>rr�c�x��eZdZd�Z�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Z�xZS)�TestHarmonicMeanc�(�tj|_dSrj)r<�
harmonic_meanrBrvs rr�zTestHarmonicMean.setUp�s���,��	�	�	rc�r��t�����}|�d��|S)Nr)rrL�remove)rJr1rs  �rrLzTestHarmonicMean.prepare_data�s/������%�%�'�'���
�
�a�����
rc�F�dddtdd��td��fS)Nr�r{r�r�r�z4.125r�rvs rr�z8TestHarmonicMean.prepare_values_for_repeated_single_test�s%���R���"�b�!1�!1�7�7�3C�3C�D�Drc�`�gd�}|�|�|��d��dS)N)r
rrrr��rJr1s  r�	test_zerozTestHarmonicMean.test_zero�s3������������6�*�*�A�.�.�.�.�.rc���tj}dggd�fD]L}|�|���5|�||j|��ddd��n#1swxYwY�MdS)Nru)r
r�r�)r1)r<rtr�r7rB)rJ�excr1s   r�test_negative_errorz$TestHarmonicMean.test_negative_error�s����(���t�Z�Z�Z�(�	:�	:�F����V��,�,�
:�
:��!�!�#�t�y�&�9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:��	:�	:s�A�A	�A	c��dggd�gd�gd�fD]w}|�|���5|�t��5|�|��ddd��n#1swxYwYddd��n#1swxYwY�xdS)Nz3.14)�1�2�3)r
r/r��4r�)gffffff@r
rz5.6r_)r�r7r�rBrKs  r�test_invalid_type_errorz(TestHarmonicMean.test_invalid_type_error�s!���H��O�O����"�"�"�	
�	$�	$�D����4��(�(�
$�
$��&�&�y�1�1�$�$��I�I�d�O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$��
	$�	$s5�A:�A#�A:�#A'�'A:�*A'�+A:�:A>	�A>	c��gd�}tj|��|�|�|��d��dS)N)rr�r�r�r�r�g333333@r�rKs  rr�zTestHarmonicMean.test_ints�sC��#�#�#����t����������4���%�0�0�0�0�0rc���gd�}tj|��|�|�|��d��|�|�gd���d��dS)N)r�rJrJr�r�rJ)rJr�r�r�r�r�rKs  r�test_floats_exactz"TestHarmonicMean.test_floats_exact�sl��(�(�(����t����������4���#�.�.�.�������#8�#8�#8�9�9�3�?�?�?�?�?rc��tdd��D],}|�|�|g��|���-dS)Nr
r��r�rFrBr�s  r�test_singleton_listsz%TestHarmonicMean.test_singleton_lists�sH���q�#���	0�	0�A����T�Y�Y��s�^�^�Q�/�/�/�/�	0�	0rc
��t}|�|�|d��|d��|d��|d��g��|d����|d��|d��|d��|d��g}tj|��|�|�|��|d����|d��|d��|d	��|d
��g}tj|��|�|�|��|d��dz��dS)
Nr}rr�rz0.10z0.20z1.68z0.32z5.94z2.75i�iC)rrFrBr�rJr�s   r�test_decimals_exactz$TestHarmonicMean.test_decimals_exact�s0����������A�A�b�E�E�1�1�R�5�5�!�!�B�%�%���2���#?�@�@�!�!�B�%�%�H�H�H���&�	�	�1�1�V�9�9�a�a��i�i���6���;����t����������4���!�!�F�)�)�4�4�4���&�	�	�1�1�V�9�9�a�a��i�i���6���;����t����������4���!�!�E�(�(�5�.�9�9�9�9�9rc
�@�t}|dd��|dd��|dd��|dd��|dd��|dd��|dd��g}tj|��|�|�|��|d	d
����dS)Nr
rr�r�r�rRr�r�i|i�rrs   rr�zTestHarmonicMean.test_fractions�s�������!�Q�����1�a���!�!�A�q�'�'�1�1�Q��7�7�A�A�a��G�G�Q�Q�q�!�W�W�a�a��1�g�g�N����t����������4���!�!�E�4�.�.�9�9�9�9�9rc�|�dtd��dg}|�|�|��d��dS)Nr/r!r�)rrFrBr(s  rr(zTestHarmonicMean.test_inf�s<���u�U�|�|�S�)��������6�*�*�C�0�0�0�0�0rc��dtd��dg}|�tj|�|������dS)Nr/r*r�)rr�rrrBr(s  rr,zTestHarmonicMean.test_nan�sB���u�U�|�|�S�)������
�4�9�9�V�#4�#4�5�5�6�6�6�6�6rc���d�gd�}|�|���z}|��fd�|D����}|�||��dS)N�or	c���g|]}|�z��Sr;r;rs  �rr�z>TestHarmonicMean.test_multiply_data_points.<locals>.<listcomp>rrrrs    @r�test_multiply_data_pointsz*TestHarmonicMean.test_multiply_data_points�si�����<�<�<���9�9�T�?�?�1�$�����.�.�.�.��.�.�.�/�/�������*�*�*�*�*rc��d�td��D��}|�|��}|�|dz��}|�||��dS)Nc�8�g|]}tjdd����S)r
r�r�r�s  rr�z6TestHarmonicMean.test_doubled_data.<locals>.<listcomp>s$��:�:�:����q�!�$�$�:�:�:rr'rrrSs    rrz"TestHarmonicMean.test_doubled_datas[��:�:�e�D�k�k�:�:�:���9�9�T�?�?�����4��6�"�"�����v�x�0�0�0�0�0rc
�t�|�|�ddgddg��d��|�|�ddgddg���d��|�|�tddg��tddg����d��|�|�tdd��td	d��td
d��ggd���|�tdd��gdztd	d��gdzztd
d��gdzz����|�|�dgd
g��d��|�t
��5|�gd
�gd���ddd��n#1swxYwY|�tj��5|�gd
�ddg��ddd��n#1swxYwY|�tj��5|�dgdg��ddd��n#1swxYwY|�tj��5|�ddgddg��ddd��dS#1swxYwYdS)Nr#r�r�rgL@)�weightsr�r�r�r�r)r�rr�r�)r
r;r�r
rre)rFrBrErr7r�r<rtrvs r�test_with_weightsz"TestHarmonicMean.test_with_weightss���������B��8�a��W�5�5�t�<�<�<�������B��8�,-�r�7�#�4�4�59�	;�	;�	;�������4��R��>�>�#'��B��=�=�2�2�37�	9�	9�	9�����I�I�x��A�����Q����!�Q���H�*�*�*�U�U��I�I�x��A���'�!�+���A���'�!�+�,���1�~�~�&��+�,�
-�
-�	.�	.�	.�
	
������B�4�!��-�-�r�2�2�2�
�
�
�y�
)�
)�	-�	-��I�I�i�i�i����,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�
�
�z�9�
:�
:�	)�	)��I�I�i�i�i�!�Q��(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�
�
�z�9�
:�
:�	!�	!��I�I�r�d�Q�C� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�
�
�z�9�
:�
:�	(�	(��I�I�r�2�h��A��'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(sH�F;�;F?�F?�%H�H�H�6I�I�"I�J-�-J1�4J1)r7r8r9r�rLr�r)r,r2r�r5r8r:r�r(r,rArrFrrs@rr!r!�s�������-�-�-������E�E�E�/�/�/�
:�:�:�
$�
$�
$�1�1�1�@�@�@�0�0�0�
	:�	:�	:�:�:�:�1�1�1�
7�7�7�
+�+�+�1�1�1�(�(�(�(�(�(�(rr!c�H��eZdZd�Z�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
�xZS)	�
TestMedianc�(�tj|_dSrj�r<�medianrBrvs rr�zTestMedian.setUp$����%��	�	�	rc���t�����}t|��dzdkr|�d��|S)�+Overload method from UnivariateCommonMixin.rr
)rrLrarR)rJr�rs  �rrLzTestMedian.prepare_data'sA����w�w�#�#�%�%���t�9�9�Q�;�!����K�K��N�N�N��rc��gd�}t|��dzdksJ�|�|�|��d��dS)N�r
rr�r�r�rRrrr��rarFrBrKs  r�test_even_intszTestMedian.test_even_ints.sN��!�!�!���4�y�y��{�a�����������4���#�.�.�.�.�.rc��gd�}t|��dzdksJ�|�|�|��d��dS)N)r
rr�r�r�rRr�rr
r�rQrKs  r�
test_odd_intszTestMedian.test_odd_ints4sN��$�$�$���4�y�y��{�a�����������4���!�,�,�,�,�,rc�D�t}|dd��|dd��|dd��|dd��|dd��g}t|��dzdksJ�tj|��|�|�|��|dd����dS)Nr
r�rr�r�r��rrar�rJrFrBrs   r�test_odd_fractionszTestMedian.test_odd_fractions:s�������!�Q�����1�a���!�!�A�q�'�'�1�1�Q��7�7�A�A�a��G�G�<���4�y�y��{�a�������t����������4���!�!�A�q�'�'�2�2�2�2�2rc	�Z�t}|dd��|dd��|dd��|dd��|dd��|dd��g}t|��dzdksJ�tj|��|�|�|��|dd����dS�	Nr
r�rr�r�r�rRrrVrs   r�test_even_fractionszTestMedian.test_even_fractionsB�������!�Q�����1�a���!�!�A�q�'�'�1�1�Q��7�7�A�A�a��G�G�Q�Q�q�!�W�W�E���4�y�y��{�a�������t����������4���!�!�A�q�'�'�2�2�2�2�2rc�8�t}|d��|d��|d��|d��|d��g}t|��dzdksJ�tj|��|�|�|��|d����dS)N�2.5�3.1�4.2�5.7�5.8rr
�rrar�rJrFrBr�s   r�test_odd_decimalszTestMedian.test_odd_decimalsJs�������%���!�!�E�(�(�A�A�e�H�H�a�a��h�h���%���A���4�y�y��{�a�������t����������4���!�!�E�(�(�3�3�3�3�3rc�L�t}|d��|d��|d��|d��|d��|d��g}t|��dzdksJ�tj|��|�|�|��|d	����dS)
Nz1.2r]r^r_r`rarrz3.65rbr�s   r�test_even_decimalszTestMedian.test_even_decimalsRs�������%���!�!�E�(�(�A�A�e�H�H�a�a��h�h���%���!�!�E�(�(�K���4�y�y��{�a�������t����������4���!�!�F�)�)�4�4�4�4�4r)r7r8r9r�rLrRrTrWrZrcrerrs@rrHrH"s��������&�&�&������/�/�/�-�-�-�3�3�3�3�3�3�4�4�4�5�5�5�5�5�5�5rrHc��eZdZd�Zd�ZdS)�TestMedianDataTypec�(�tj|_dSrjrJrvs rr�zTestMedianDataType.setUp]rLrc���ttd����}t|��dzdksJ�|t|��kr't	j|��|t|��k�'|S)Nr}rr
)r�r�rarIr�rJrKs  rrLzTestMedianDataType.prepare_data`sg���E�"�I�I�����4�y�y��{�a������f�T�l�l�"�"��N�4� � � ��f�T�l�l�"�"��rN)r7r8r9r�rLr;rrrgrg[s2������&�&�&�����rrgc�&�eZdZd�Zd�Zd�Zd�ZdS)�
TestMedianLowc�(�tj|_dSrj)r<�
median_lowrBrvs rr�zTestMedianLow.setUpis���)��	�	�	rc��gd�}t|��dzdksJ�|�|�|��d��dS)NrPrrr�rQrKs  rrRzTestMedianLow.test_even_intsl�N��!�!�!���4�y�y��{�a�����������4���!�,�,�,�,�,rc	�Z�t}|dd��|dd��|dd��|dd��|dd��|dd��g}t|��dzdksJ�tj|��|�|�|��|dd����dSrYrVrs   rrZz!TestMedianLow.test_even_fractionsrr[rc�L�t}|d��|d��|d��|d��|d��|d��g}t|��dzdksJ�tj|��|�|�|��|d����dS�	Nz1.1z2.2z3.3z4.4r�z6.6rrrbr�s   rrez TestMedianLow.test_even_decimalsz�������%���!�!�E�(�(�A�A�e�H�H�a�a��h�h���%���!�!�E�(�(�K���4�y�y��{�a�������t����������4���!�!�E�(�(�3�3�3�3�3rN�r7r8r9r�rRrZrer;rrrkrkhsP������*�*�*�-�-�-�3�3�3�4�4�4�4�4rrkc�&�eZdZd�Zd�Zd�Zd�ZdS)�TestMedianHighc�(�tj|_dSrj)r<�median_highrBrvs rr�zTestMedianHigh.setUp�s���*��	�	�	rc��gd�}t|��dzdksJ�|�|�|��d��dS)NrPrrr�rQrKs  rrRzTestMedianHigh.test_even_ints�rorc	�Z�t}|dd��|dd��|dd��|dd��|dd��|dd��g}t|��dzdksJ�tj|��|�|�|��|dd����dSrYrVrs   rrZz"TestMedianHigh.test_even_fractions�r[rc�L�t}|d��|d��|d��|d��|d��|d��g}t|��dzdksJ�tj|��|�|�|��|d����dSrrrbr�s   rrez!TestMedianHigh.test_even_decimals�rsrNrtr;rrrvrv�sP������+�+�+�-�-�-�3�3�3�4�4�4�4�4rrvc�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�TestMedianGroupedc�(�tj|_dSrj)r<�median_groupedrBrvs rr�zTestMedianGrouped.setUp�s���-��	�	�	rc�6�gd�}t|��dzdksJ�|�|�|��d��gd�}t|��dzdksJ�|�|�|��d��gd�}t|��dzdksJ�|�|�|d��d	��gd
�}t|��dzdksJ�|�|�|d��dd�
��dS)N)r�r�r�r�r}r}rr
r�)r�rr�r�r�r�r}g�+@)r�r�r�r}rererere�r�rr�g`3@)r��r�r�r�rerere�r�r��r���g������4@�:�0�yE>�r0)rarFrBr_rKs  r�test_odd_number_repeatedz*TestMedianGrouped.test_odd_number_repeated�s-��+�+�+���4�y�y��{�a�����������4���"�-�-�-�+�+�+���4�y�y��{�a�����������4���&�1�1�1�:�:�:���4�y�y��{�a�����������4��+�+�V�4�4�4�K�K�K���4�y�y��{�a��������t�y�y��q�1�1�;�D��I�I�I�I�Irc�8�gd�}t|��dzdksJ�|�|�|d��dd���gd�}t|��dzdksJ�|�|�|��d	d���gd
�}t|��dzdksJ�|�|�|��d��gd�}t|��dzdksJ�|�|�|��d
��dS)N)
r�r�r�r}rererer�r�rrrr�g�����*3@r�r�)rr�r�r�r�r�g["8���@)rr�r�r�r�r�r�r�r�r�rRrRr)
r�r�r�r�r�r�r�r�rRrR�@)rar_rBrFrKs  r�test_even_number_repeatedz+TestMedianGrouped.test_even_number_repeated�s.��6�6�6���4�y�y��{�a��������t�y�y��q�1�1�;�D��I�I�I�!�!�!���4�y�y��{�a��������t�y�y����
���E�E�E�3�3�3���4�y�y��{�a�����������4���#�.�.�.�-�-�-���4�y�y��{�a�����������4���$�/�/�/�/�/rc���dddtdd��td��fD]C}dD]>}|g|z}|�|�|��t	|�����?�DdS)N�333333@�Dg��ޗCr�r�z32.9714r��rrrFrBrr�s    rr�z,TestMedianGrouped.test_repeated_single_value�s����r�6�8�B��#4�#4�g�i�6H�6H�I�	<�	<�A�'�
<�
<���s�5�y��� � ����4���%��(�(�;�;�;�;�
<�	<�	<rc��dddtdd��td��fD]9}|�|�|g��t	|�����:dSr�r�r�s  rr�z#TestMedianGrouped.test_single_value�sc���d�F�H�R��$4�$4�g�f�o�o�F�	7�	7�A����T�Y�Y��s�^�^�U�1�X�X�6�6�6�6�	7�	7rc�0�t}|dd��|dd��|dd��|dd��|dd��g}t|��dzdksJ�tj|��|�|�|��d��dS)	Nr�r�r�rr{rr
�@rVrs   rrWz$TestMedianGrouped.test_odd_fractions�s�������!�Q�����1�a���!�!�B��(�(�A�A�b�!�H�H�a�a��A�h�h�?���4�y�y��{�a�������t����������4���#�.�.�.�.�.rc	�F�t}|dd��|dd��|dd��|dd��|dd��|dd��g}t|��dzdksJ�tj|��|�|�|��d��dS)	Nr�r�r�rr{rr�
@rVrs   rrZz%TestMedianGrouped.test_even_fractions�s�������!�Q�����1�a���!�!�B��(�(�A�A�b�!�H�H�a�a��A�h�h���"�a���I���4�y�y��{�a�������t����������4���$�/�/�/�/�/rc�&�t}|d��|d��|d��|d��|d��g}t|��dzdksJ�tj|��|�|�|��d��dS)Nr��6.5�7.5�8.5rr
g@rbr�s   rrcz#TestMedianGrouped.test_odd_decimals�s�������%���!�!�E�(�(�A�A�e�H�H�a�a��h�h���%���A���4�y�y��{�a�������t����������4���$�/�/�/�/�/rc�`�t}|d��|d��|d��|d��|d��|d��g}t|��dzdksJ�tj|��|�|�|��d��|d��|d��|d��|d��|d��|d��g}t|��dzdksJ�tj|��|�|�|��d��dS)	Nr�r�r�r�rr�@�@rbr�s   rrez$TestMedianGrouped.test_even_decimals�s'������%���!�!�E�(�(�A�A�e�H�H�a�a��h�h���%���!�!�E�(�(�K���4�y�y��{�a�������t����������4���#�.�.�.���%���!�!�E�(�(�A�A�e�H�H�a�a��h�h���%���!�!�E�(�(�K���4�y�y��{�a�������t����������4���#�.�.�.�.�.rc��gd�}|�|�|d��d��gd�}|�|�|d��dd���gd�}|�|�|d	��d
��dS)N)
�@rHrHr"r"r�r�r�r�rOrJg@)r�rHrHr"r"r"r�r�r�r�rOg["8���@r�r�)��r����r�r�r��r��,�@iTreg�p@)rFrBr_rKs  r�
test_intervalzTestMedianGrouped.test_interval�s���F�F�F��������4��.�.��6�6�6�L�L�L�����t�y�y��t�4�4�j�d��K�K�K�K�K�K��������4��,�,�e�4�4�4�4�4rc�:�gd�}|�t|j|��gd�}|�t|j|��gd�}d}|�t|j||��gd�}d}|�t|j||��dS)N)�r�r�)rrrr�r�rrA)rJr��intervals   r�test_data_type_errorz&TestMedianGrouped.test_data_type_errors����|�|�����)�T�Y��5�5�5��������)�T�Y��5�5�5��y�y�������)�T�Y��h�?�?�?��y�y�������)�T�Y��h�?�?�?�?�?rN)r7r8r9r�r�r�r�r�rWrZrcrer�r�r;rrr}r}�s�������.�.�.�J�J�J�$0�0�0�$<�<�<�7�7�7�/�/�/�0�0�0�0�0�0�/�/�/�5�5�5�@�@�@�@�@rr}c�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�TestModec�(�tj|_dSrj)r<�moderBrvs rr�zTestMode.setUpr�rc�
�gd�S)rN)r
r
r
r
r�r�r�r�rr�rr;rvs rrLzTestMode.prepare_datas��1�0�0�0rc�z�tddd��}|�|�|��d��dSrdr7rKs  rrgzTestMode.test_range_data s9���R��Q����������4���"�-�-�-�-�-rc���d}|�|�|��d��d���}|�|�|��d��dS)N�abcbdbrzfe fi fo fum fi fi�fi)rFrBr�rKs  r�test_nominal_datazTestMode.test_nominal_data%s^����������4���#�.�.�.�#�)�)�+�+��������4���$�/�/�/�/�/rc���ttd����}td��D]E}||gz}tj|��|�|�|��|���FdS�Nr��r�r�r�rJrFrB)rJr�rgr�s    r�test_discrete_datazTestMode.test_discrete_data,sp���E�"�I�I�����r���	.�	.�A���s�
�A��N�1�������T�Y�Y�q�\�\�1�-�-�-�-�	.�	.rc���gd�}|�d��|�d��cxkrdksnJ�|�|�|��d��dS)N)r
r
rrrrr�r�r�rRrRrRrRr�r�r�r�rrRr�)r�rFrBrKs  r�test_bimodal_datazTestMode.test_bimodal_data4sl��B�B�B���z�z�!�}�}��
�
�1�
�
�2�2�2�2��2�2�2�2�2�2�������4���!�,�,�,�,�,rc��ttd����}|�|�|��d��dS)Nr�r)r�r�rFrBrKs  r�test_unique_datazTestMode.test_unique_data;s9���E�"�I�I����������4���!�,�,�,�,�,rc�H�|�t|jd��dSrjrArvs r�test_none_datazTestMode.test_none_dataAs$��
	
���)�T�Y��5�5�5�5�5rc��tjdd���}|�|�|��d��dS)Nr
r)rrr)rV�CounterrFrB)rJrs  r�test_counter_datazTestMode.test_counter_dataHsA��

��!�q�)�)�)��	
������1���s�+�+�+�+�+rN)r7r8r9r�rLrgr�r�r�r�r�r�r;rrr�r�s�������$�$�$�1�1�1�
.�.�.�
0�0�0�.�.�.�-�-�-�-�-�-�6�6�6�,�,�,�,�,rr�c��eZdZd�ZdS)�
TestMultiModec���tj}|�|d��dg��|�|d��gd���|�|d��g��dS)N�aabbbbbbbbccr�aabbbbccddddeeffffgg)rr�r�r�)r<�	multimoderF)rJr�s  r�test_basicszTestMultiMode.test_basicsUsu���(�	������>�2�2�S�E�:�:�:������#9�:�:�O�O�O�L�L�L������2����+�+�+�+�+rN)r7r8r9r�r;rrr�r�Ss#������,�,�,�,�,rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�	TestFMeanc
���tj}t}t}gd�ddf|d��|d��|d��gddf|dd	��|d
d��|dd
��gdd
fgd�ddfdd
|dd
��gddfdt	gd���ddffD]Q\}}}||��}|�t
|��t|��|�|||���RdS)N�r�rI�@�@�floats�3.5�4.0�5.25�decimalsr�rr�r
r��	fractions)TFTTF�333333�?�booleansr��mixed types)r�r�r��iterator)	r<�fmeanrrrEr�rrrF)rJr�r�r�r��
expected_meanra�actual_means        rr�zTestFMean.test_basics^s-��� ������
�
�
�t�X�.��a��h�h���%���!�!�F�)�)�
,�d�J�?��a��1�g�g�q�q��A�w�w���"�a���
)�4��=�
-�
-�
-�t�Z�@��1�a�a��A�h�h�
��}�5�-�
�"�"�"�
#�
#�T�:�6�*�	?�	?�%�D�-�� �%��+�+�K��M�M�$�{�+�+�U�D�9�9�9����[�-��>�>�>�>�	?�	?rc�"�tj}tj}|�|��5|g��ddd��n#1swxYwY|�|��5|t	g����ddd��n#1swxYwY|�t
��5|d��ddd��n#1swxYwY|�t
��5|gd���ddd��n#1swxYwY|�t
��5|��ddd��n#1swxYwY|�t
��5|gd�d��ddd��dS#1swxYwYdS)N�r�Nre�r�rer��F)r<r�rtr7rEr��rJr�rts   r�test_error_caseszTestFMean.test_error_casesos���� ��$�4��
�
�
��
/�
/�	�	��E�"�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
��
/�
/�	�	��E�$�r�(�(�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��E�$�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	"�	"��E�.�.�.�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
�
�
�y�
)�
)�	�	��E�G�G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	$�	$��E�,�,�,��#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$sk�A�A
�
A
�&B�B�B�0C�C�C�-D�D�D�,E�E�
E�(F�F�Fc��tj}td��}td��}|�t	j|d|g����d��|�t	j|||g����d��|�t	j|d|g����d��|�t��5|||g��ddd��dS#1swxYwYdS�N�Nan�Infr�r*znan and infinity�infinity)	r<r�rr�rrr.r7r-)rJr��NaNr�s    r�test_special_valueszTestFMean.test_special_valuess3��� ���E�l�l���E�l�l������
�5�5�"�c��#3�#3�4�4�e�<�<�<�����
�5�5�#�s��#4�#4�5�5�7I�J�J�J�����
�5�5�"�c��#3�#3�4�4�j�A�A�A�
�
�
�z�
*�
*�	�	��E�3���+����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��C:�:C>�C>c	���tj}tj}|�|gd�dgdz��|gd�����|�|gd�gd���|gd�����|�|t	gd���t	gd�����|gd�����|�|��5|gd�dd	g��ddd��n#1swxYwY|�|��5|t	gd���t	dd	g����ddd��n#1swxYwY|�|��5|d
dgddg��ddd��n#1swxYwY|�|��5|t	d
dg��t	ddg����ddd��dS#1swxYwYdS)
N)r�r�r�rrJr�)r�r�re)rJrJr�)r�r�rere�r�rerr
rr�reru)r<r�rtrFrEr7r�s   r�test_weightszTestFMean.test_weights�s1��� ��$�4������E�"�"�"�T�F�Q�J�/�/��E�"�"�"�#�#�	%�	%�	%�	
����E�,�,�,� 2� 2� 2�3�3��E�"�"�"�#�#�	%�	%�	%�	
����E�$�|�|�|�$�$�d�+=�+=�+=�&>�&>�?�?��E�"�"�"�#�#�	%�	%�	%��
�
��
/�
/�	(�	(��E�,�,�,��A��'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
�
��
/�
/�	4�	4��E�$�|�|�|�$�$�d�A�q�6�l�l�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�
�
�
��
/�
/�	%�	%��E�2�r�(�R��G�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�
�
�
��
/�
/�	1�	1��E�$��B�x�.�.�$��A�w�-�-�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1sH�C4�4C8�;C8�+E�E�E�+F�F�F�(+G � G$�'G$N)r7r8r9r�r�r�r�r;rrr�r�\sP������?�?�?�"$�$�$� 	�	�	�1�1�1�1�1rr�c�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�VarianceStdevMixinr*c��dddtdd��td��fD],}|�|�|g��d���-dS)Nr�g������3@g���%�Br�r�z8.392rr�r�s  rr�z$VarianceStdevMixin.test_single_value�s]���d�F�H�R��$4�$4�g�g�6F�6F�G�	0�	0�A����T�Y�Y��s�^�^�Q�/�/�/�/�	0�	0rc��dddtdd��td��fD]6}dD]1}|g|z}|�|�|��d���2�7dS)	Nrrg@�6��<Cr�r�z62.4802)rr�r�r}rr�r�s    rr�z-VarianceStdevMixin.test_repeated_single_value�sx���r�6�8�A�q�>�>�7�9�3E�3E�F�	5�	5�A�&�
5�
5���s�5�y��� � ����4���!�4�4�4�4�
5�	5�	5rc��dgdz}|�|��}|�|dd���|�|d��dS)Ng.�F7ݚ�?r:rtg��ؗ�Ҍ<r�r)rBr_r�rs   r�test_domain_error_regressionz/VarianceStdevMixin.test_domain_error_regression�sY��"�"�5�(�����4�������v�s���6�6�6������*�*�*�*�*rc���gd�}|�|��}d��fd�|D��}|�|�|��|��dS)N)
g{�G�z�?gR���Q�?g
ףp=
�?gR���Q@g�p=
ף@g��Q�	@r�g�Q���@g�G�z�@g��Q�@gj�@c���g|]}|�z��Sr;r;�r�r�shifts  �rr�z6VarianceStdevMixin.test_shift_data.<locals>.<listcomp>�����'�'�'�a��E�	�'�'�'r)rBr_�rJrzr%r�r�s    @r�test_shift_dataz"VarianceStdevMixin.test_shift_data�sd���K�J�J���9�9�S�>�>����'�'�'�'�3�'�'�'�����t�y�y�����9�9�9�9�9rc����gd�}td�|D����sJ�|�|��}d��fd�|D��}|�|�|��|��dS)N)
r
r�r�r�r�r�r�r�r�r�c3�<K�|]}|t|��kV��dSrj)r�)r�rs  rr�z;VarianceStdevMixin.test_shift_data_exact.<locals>.<genexpr>�s,����*�*��1�c�!�f�f�9�*�*�*�*�*�*riʚ;c���g|]}|�z��Sr;r;r�s  �rr�z<VarianceStdevMixin.test_shift_data_exact.<locals>.<listcomp>�r�r)�allrBrFr�s    @r�test_shift_data_exactz(VarianceStdevMixin.test_shift_data_exact�s����/�/�/���*�*�c�*�*�*�*�*�*�*�*��9�9�S�>�>����'�'�'�'�3�'�'�'��������4���(�3�3�3�3�3rc���d�td��D��}|�|��}|�|�t|����|��dS)Nc�8�g|]}tjdd����S)r{r�r�r�s  rr�z:VarianceStdevMixin.test_iter_list_same.<locals>.<listcomp>�rrr')r�rBrFrErfs   r�test_iter_list_samez&VarianceStdevMixin.test_iter_list_same�sZ��<�;�u�T�{�{�;�;�;���9�9�T�?�?��������4��:�:�.�.��9�9�9�9�9rN)
r7r8r9r1r�r�r�r�r�rr;rrr�r��su�������C�0�0�0�
5�5�5�+�+�+�:�:�:�4�4�4�
:�
:�
:�
:�
:rr�c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�
TestPVariancec�(�tj|_dSrj)r<�	pvariancerBrvs rr�zTestPVariance.setUp�s���(��	�	�	rc��ttd����}tj|��d}|�|�|��|��dS)Nr:gP�_Ar�rfs   r�test_exact_uniformz TestPVariance.test_exact_uniform�sP���E�%�L�L�!�!����t����$��������4���(�3�3�3�3�3rc�d�gd�}d}|�|�|��|��dS)N�r�r�rr�g�6@r��rJr��exacts   rr�zTestPVariance.test_ints�s6���~�~����������4���%�0�0�0�0�0rc��t}|dd��|dd��|dd��|dd��g}|dd��}|�|��}|�||��|�|t��dS)Nr
r�r�r�r��rrBrF�assertIsInstance�rJr�r�rr�s     rr�zTestPVariance.test_fractions��������!�Q�����1�a���!�!�A�q�'�'�1�1�Q��7�7�3����!�Q�������4���������'�'�'����f�h�/�/�/�/�/rc�
�t}|d��|d��|d��|d��g}|d��}|�|��}|�||��|�|t��dS)Nz12.1z12.2z12.5z12.9z0.096875�rrBrFr�rJr�r�rr�s     rr�zTestPVariance.test_decimals�s�������&�	�	�1�1�V�9�9�a�a��i�i���6���;����*�
�
�����4���������'�'�'����f�g�.�.�.�.�.rc��gd�}d}|�|��}|�||��|�|t��dS)N)rrr
g�q�q�?�rBrFrr�rJr�rr�s    r�test_accuracy_bug_20499z%TestPVariance.test_accuracy_bug_20499�Q���y�y�������4���������'�'�'����f�e�,�,�,�,�,rN)	r7r8r9r�rr�r�r�rr;rrrr�sn������)�)�)�4�4�4�1�1�1�0�0�0�/�/�/�-�-�-�-�-rrc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestVariancec�(�tj|_dSrj)r<�variancerBrvs rr�zTestVariance.setUps���'��	�	�	rc��dddtdd��td��fD])}|�tj|j|g���*dS)Nr�g33333�8@g�(G�!=Cr�rz4.2084�rrr7r<rtrBr�s  rr�zTestVariance.test_single_values^���d�F�H�R��$4�$4�g�h�6G�6G�H�	J�	J�A����j�8�$�)�a�S�I�I�I�I�	J�	Jrc�d�gd�}d}|�|�|��|��dS)Nr	rr�r
s   rr�zTestVariance.test_intss6���~�~����������4���%�0�0�0�0�0rc��t}|dd��|dd��|dd��|dd��g}|dd��}|�|��}|�||��|�|t��dS)Nr
r�r�r�rr
rs     rr�zTestVariance.test_fractions rrc�(�t}|d��|d��|d��|d��g}d|d��z|d��z}|�|��}|�||��|�|t��dS)Nrr�r�r�z9.5r�rrs     rr�zTestVariance.test_decimals)s�������!���a�a��d�d�A�A�a�D�D�!�!�A�$�$�'���!�!�E�(�(�
�1�1�Q�4�4������4���������'�'�'����f�g�.�.�.�.�.rc��d}|�|�|��d��|�|�|d���d��dS)N�r�r/r�r/��xbarr�r�rKs  r�test_center_not_at_meanz$TestVariance.test_center_not_at_mean2sS����������4���#�.�.�.�������4�c��2�2�C�8�8�8�8�8rc��gd�}d}|�|��}|�||��|�|t��dS)N)rrrgUUUUUU�?rrs    rrz$TestVariance.test_accuracy_bug_204997rrN)
r7r8r9r�r�r�r�r�r&rr;rrrrs�������(�(�(�J�J�J�
1�1�1�0�0�0�/�/�/�9�9�9�
-�-�-�-�-rrc� �eZdZd�Zd�Zd�ZdS)�
TestPStdevc�(�tj|_dSrj)r<�pstdevrBrvs rr�zTestPStdev.setUp@rLrc���d�td��D��}tjtj|����}|�|�|��|��dS)Nc�8�g|]}tjdd����S)i��r�r�r�s  rr�z7TestPStdev.test_compare_to_variance.<locals>.<listcomp>Es$��=�=�=�A���s�B�'�'�=�=�=rr')r�r�sqrtr<rrFrBrfs   r�test_compare_to_variancez#TestPStdev.test_compare_to_varianceCs[��=�=��t���=�=�=���9�Z�1�$�7�7�8�8��������4���(�3�3�3�3�3rc��d}|�|�|��d��|�|�|d���d��dS)N)r�rRr�r�rHr�)�mur�r�rKs  rr&z"TestPStdev.test_center_not_at_meanIsS����������4���#�.�.�.�������4�C��0�0�#�6�6�6�6�6rN)r7r8r9r�r/r&r;rrr)r)>sA������&�&�&�4�4�4�7�7�7�7�7rr)c�0�eZdZd�Zed���Zd�ZdS)�TestSqrtHelpersc��tjtd��tdd����D]�\}}tj||��}|�|t��||z|z|kr�B|�|dzd��|�||dz
dzz|cxko||dzdzzknc����dS)Nr�r
r'r)	�	itertools�productr�r<�_integer_sqrt_of_frac_rtorr�rFr�)rJr�mr�s    r�test_integer_sqrt_of_frac_rtoz-TestSqrtHelpers.test_integer_sqrt_of_frac_rtoQs����%�e�C�j�j�%��4�.�.�A�A�		A�		A�D�A�q��4�Q��:�:�A��!�!�!�S�)�)�)���s�1�u��z�z�����Q�q�S�!�$�$�$��O�O�A��Q���
�N�Q�?�?�?�?��a�!�e�a�Z��?�?�?�?�@�@�@�@�		A�		Arc�0�dtdtdtfd�}tj}td��D]�}|d|d��z��}|d|d��z��dz}|�||�	��5t||��}tj||��}|�	|||����ddd��n#1swxYwY��|�
tjd
d��d��|�t��5tjdd��ddd��n#1swxYwY|�t��5tjdd��ddd��n#1swxYwY|�t��5tjdd
��ddd��n#1swxYwY|�
tjd
d��tjdd����dS)Nr�root�returnc�P�|s|dkStj|tj��}tj|tj��}||cxkr|ksnJ�t|��}|t|��zdz}|t|��zdz}|dz|cxko|dzkncS)Nrtr)r�	nextafterr!r)rr;�r_up�r_down�	frac_root�half_way_up�
half_way_downs       r�is_root_correctly_roundedzJTestSqrtHelpers.test_float_sqrt_of_frac.<locals>.is_root_correctly_rounded`s����
#��s�{�"��.��t�x�8�8�D� �N�4�$�(��;�;�F��D�'�'�'�'�4�'�'�'�'�'�'�#+�4�.�.�I�%.��$���%?�1�$D�K�'0�8�F�3C�3C�'C�q�&H�M�!�A�%��>�>�>�>�k�Q�.>�>�>�>�>�>ri`�r�rr
)�	numerator�denonimatorrrtrur�r)rrr�r��	randranger�r�r<�_float_sqrt_of_fracr�rFr7r-�ZeroDivisionError)rJrDrGrgrErFrr;s        r�test_float_sqrt_of_fracz'TestSqrtHelpers.test_float_sqrt_of_frac]s��	?��	?��	?�4�	?�	?�	?�	?�$�$�	��v���	D�	D�A�&�Y�r�Y�Y�r�]�]�':�;�;�I�(�y��y�y��}�}�)<�=�=��A�K����	�{��K�K�
D�
D�&�y�+�>�>��(�<�Y��T�T����� 9� 9�!�T� B� B�C�C�C�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��	
����7��1�=�=�s�C�C�C�
�
�
�z�
*�
*�	2�	2��*�2�q�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
�
�
�z�
*�
*�	2�	2��*�1�b�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��
�
�0�
1�
1�	1�	1��*�1�a�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	
����7��B�?�?��A_�`a�cd�Ae�Ae�f�f�f�f�fsI�?AC�C	�C	�E�E�E�&F�F�F�-G�G�Gc�z�td��ddftd��ddftd��ddffD�]?\}}}tjtj��5|�tj||��|��ddd��n#1swxYwYtjtj��5}|xjdzc_t|��t|��z}tj|_	|�
��}ddd��n#1swxYwYtjtj��5|
}ddd��n#1swxYwY|�||����A|�tjd	d
��d��|�tj��5tjdd
��ddd��n#1swxYwY|�tj��5tjd
d��ddd��n#1swxYwY|�t��5tjd
d	��ddd��n#1swxYwY|�tjd
d��tjdd
����dS)Nz0.4481904599041192673635338663l:j�t9�)4]�!�l�7�3M�e'z0.7924949131383786609961759598lQ_Ar�,NE��*�z0.8500554152289934068192208727lkr�"-D��9}ZGr�rr
rtrur�r)rr�r��DefaultContextrFr<�_decimal_sqrt_of_frac�prec�
ROUND_05UP�roundingr.r7r�rI)rJr;rE�denominator�ctx�high_prec_ratio�high_prec_root�target_roots        r�test_decimal_sqrt_of_fracz)TestSqrtHelpers.test_decimal_sqrt_of_frac�s���5�
6�
6�8V�Xw�x�
�5�
6�
6�8V�Xw�x�
�5�
6�
6�8V�Xw�x�-
�	0�	0�(�D�)�[�
�%�g�&<�=�=�
a�
a�� � ��!A�)�[�!Y�!Y�[_�`�`�`�
a�
a�
a�
a�
a�
a�
a�
a�
a�
a�
a����
a�
a�
a�
a��%�g�&<�=�=�
8�����A�
���")�)�"4�"4�w�{�7K�7K�"K��&�1���!0�!5�!5�!7�!7��	
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
�%�g�&<�=�=�
.�
.�-�o��
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.����T�;�/�/�/�/�	
����9�!�Q�?�?��E�E�E�
�
�
�w�7�
8�
8�	4�	4��,�R��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�
�
�
�w�7�
8�
8�	4�	4��,�Q��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4��
�
�0�
1�
1�	3�	3��,�Q��2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	
����9�"�b�A�A�:�Cc�de�gh�Ci�Ci�j�j�j�j�jsm�*B�B	�B	�:AD�D	�"D	�E�E	�E	�?G!�!G%�(G%�H-�-H1�4H1�I4�4I8�;I8N)r7r8r9r9rrJrVr;rrr3r3OsZ������
A�
A�
A��*g�*g���*g�X#k�#k�#k�#k�#krr3c�&�eZdZd�Zd�Zd�Zd�ZdS)�	TestStdevc�(�tj|_dSrj)r<�stdevrBrvs rr�zTestStdev.setUp�s���$��	�	�	rc��dddtdd��td��fD])}|�tj|j|g���*dS)N�QgH�z�wi@gf7?+�Br�r�z35.719rr�s  rr�zTestStdev.test_single_value�s\���f�f�h�q�"�o�o�w�x�7H�7H�I�	J�	J�A����j�8�$�)�a�S�I�I�I�I�	J�	Jrc���d�td��D��}tjtj|����}|�|�|��|��dS)Nc�8�g|]}tjdd����S)r�r�r�r�s  rr�z6TestStdev.test_compare_to_variance.<locals>.<listcomp>�rrr')r�rr.r<r�assertAlmostEqualrBrfs   rr/z"TestStdev.test_compare_to_variance�s[��;�;�u�T�{�{�;�;�;���9�Z�0��6�6�7�7�����t�y�y�����9�9�9�9�9rc�`�d}|�|�|d���d��dS)Nr#r/r$r�r�rKs  rr&z!TestStdev.test_center_not_at_mean�s3����������4�c��2�2�C�8�8�8�8�8rN)r7r8r9r�r�r/r&r;rrrXrX�sS������%�%�%�J�J�J�
:�:�:�9�9�9�9�9rrXc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestGeometricMeanc�R�tj}|�|gd���d��|�|ddg��d��|�|dg��d��tjd��tdd	��tdd
��tdd��tddd
��tddd��gd�d�td
��D��d�td��D��d�td��D��f	D]�}t
jtt|����td��t|��zz}||��}|�t
j|t|��������dS)N)r|r�r��B@rIg"@g@g�1@l���;r
r�r'r:r�r�r{)r�r{rr��xr�c�6�g|]}tjd����S)�I@�r��expovariate�r�rgs  rr�z1TestGeometricMean.test_basics.<locals>.<listcomp>�s#��@�@�@�a��#�D�)�)�@�@�@rc�8�g|]}tjdd����S)r�r�)r��lognormvariaterjs  rr�z1TestGeometricMean.test_basics.<locals>.<listcomp>�s%��H�H�H�a��&�t�S�1�1�H�H�Hr��c�:�g|]}tjddd����S)rm�i�)r��
triangularrjs  rr�z1TestGeometricMean.test_basics.<locals>.<listcomp>�s'��K�K�K���"�4��t�4�4�K�K�Krro)r<�geometric_meanr_r��seedr�r�prodr�rrar��iscloser)rJrq�rng�
gm_decimal�gm_floats     rr�zTestGeometricMean.test_basics�s���#�2�����~�~�l�l�l�;�;�T�B�B�B����~�~�s�C�j�9�9�3�?�?�?����~�~�v�h�7�7��@�@�@���N�#�#�#��a��
�
��a�����a�� � ��c�6�1�%�%��f�c�2�&�&�'�'�'�@�@�5��<�<�@�@�@�H�H�5��<�<�H�H�H�K�K�e�E�l�l�K�K�K�
�
	G�
	G�C���3�w��#4�#4�5�5�'�!�*�*�s�3�x�x�:O�P�J�%�~�c�*�*�H��O�O�D�L��5��3D�3D�E�E�F�F�F�F�
	G�
	Grc	��tj}t}t}d}gd�df|d��|d��|d��gdf|dd	��|d
d��|dd
��gd
fdd
|dd
��gdfdt	gd���dffD]Q\}}||��}|�t
|��t|��|�||d����RdS)Ng�d�@r�r�r�r�r�r�r�rr�r
r�r�r�r�)r�r�r�r���places)	r<rqrrrEr�rrr_)rJrqr�r�r�r�rar�s        r�test_various_input_typesz*TestGeometricMean.test_various_input_types�s��#�2�������
�
�
�
�x�(��a��h�h���%���!�!�F�)�)�
,�j�9��a��1�g�g�q�q��A�w�w���"�a���
)�;�7��1�a�a��A�h�h�
��/�'�
�"�"�"�
#�
#�Z�0�
�
	I�
	I�J�D�$�)�.��.�.�K��M�M�$�{�+�+�U�D�9�9�9��"�"�;�
�a�"�H�H�H�H�
	I�
	Irc��tj}d}|d|zd|zd|zg��}|�tj|d|z����|�tj|����d}|d|zd|zd|zg��}|�tj|d|z����|�|d��dS)Ngp~gK@g8@rdgprt)r<rqr�rrtr�r.�assertNotEqual)rJrq�large�big_gm�small�small_gms      r�test_big_and_smallz$TestGeometricMean.test_big_and_small�s���#�2���������t�e�|�T�E�\� J�K�K�������V�T�E�\�:�:�;�;�;������F�+�+�,�,�,���!�>�4�%�<����t�e�|�"L�M�M�������X�t�e�|�<�<�=�=�=����H�c�*�*�*�*�*rc�
�tj}tj}|�|��5|g��ddd��n#1swxYwY|�|��5|gd���ddd��n#1swxYwY|�|��5|gd���ddd��n#1swxYwY|�|��5|t	g����ddd��n#1swxYwY|�t
��5|d��ddd��n#1swxYwY|�t
��5|gd���ddd��n#1swxYwY|�t
��5|��ddd��n#1swxYwY|�t
��5|gd�d��ddd��dS#1swxYwYdS)N)r�rtr�)r�g�r�r�r�r�)r<rqrtr7rEr�)rJrqrts   rr�z"TestGeometricMean.test_error_cases�s��#�2��$�4��
�
�
��
/�
/�	�	��N�2����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
��
/�
/�	-�	-��N�+�+�+�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�
�
��
/�
/�	.�	.��N�,�,�,�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
�
�
��
/�
/�	%�	%��N�4��8�8�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�
�
�
�y�
)�
)�	!�	!��N�4� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�
�
�y�
)�
)�	+�	+��N�>�>�>�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�
�
�
�y�
)�
)�	�	��N����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	-�	-��N�<�<�<��,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s��A�A
�
A
�&B�B�B� B:�:B>�B>�C?�?D�D�$D<�<E�E�!E;�;E?�E?� F7�7F;�>F;�G8�8G<�?G<c��tj}td��}td��}|�t	j|d|g����d��|�t	j|||g����d��|�t	j|d|g����d��|�t��5|||g��ddd��dS#1swxYwYdSr�)	r<rqrr�rrr.r7r-)rJrqr�r�s    rr�z%TestGeometricMean.test_special_values	s3��#�2���E�l�l���E�l�l������
�>�>�2�s�)�#<�#<�=�=�u�E�E�E�����
�>�>�3��*�#=�#=�>�>�@R�S�S�S�����
�>�>�2�s�)�#<�#<�=�=�z�J�J�J�
�
�
�z�
*�
*�	(�	(��N�C�#��;�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(r�c���tj}d}gd�gd�gd�gd�gd�g}|D]S}|�|���5||��}|�||d�	��ddd��n#1swxYwY�TdS)
Ng�Y�};t@)rr�r�r�)rr�r�r�)rr�r�r�)rr�r�r�)r/r�r�r�)�vr�ry)r<rqr�r_)rJrqr�r1r�r�s      r�test_mixed_int_and_floatz*TestGeometricMean.test_mixed_int_and_float	s��#�2��(�
��L�L��N�N������� � � �
���	M�	M�A������"�"�
M�
M�,�n�Q�/�/���&�&�{�M�!�&�L�L�L�
M�
M�
M�
M�
M�
M�
M�
M�
M�
M�
M����
M�
M�
M�
M��	M�	Ms�$A*�*A.	�1A.	N)	r7r8r9r�r{r�r�r�r�r;rrrbrb�sy������G�G�G�,I�I�I�$
+�
+�
+�-�-�-�(	(�	(�	(�M�M�M�M�Mrrbc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�
TestQuantilesc�v��tj}gd�}tj|��dgfddgfdddgfdgd	�fd
gd�fdgd
�fdgd�fdgd�fdgd�fdgd�ff
D�]�\}}|�||||�����|�t|||�����|dz
��tttfD]o�|t�|��|���}|�
�fd�|D����|�|tt�|�������pt|��dkr!|�|||���|��t|��}d|dz|dz
}d|dz|dz
}|||gz}	|�|||���||	|d���||f��d�}
tt|
|����}|t|
|��|���}|�
td�t||��D���������tdd��D]\}
tjtd ��|
�!��}||��\}}}|�|tj|�����]dS)"N)rer��r�i^r
r�@o@r��i@�t@r�)�d@r���t@r�)�a@��k@�@r@��u@rR)�^@r�r�r���u@r�)�Y@r�g�j@r�g�r@r�gXv@r�)	gV@r�gg@r�r�r�g`t@r�g�v@r�)�T@r�r�r�� l@r�g�q@r�r�r�g�v@r})gR@gZ@r�ge@r�r��n@g�p@r�r�g�t@r�g@v@gw@�rc3�X�K�|]$}tt|���k��V��%dSrj�r�r�r�r�datatypes  �rr�z4TestQuantiles.test_specific_cases.<locals>.<genexpr>H	�6�����I�I�Q��D��G�G�x�$7� 8� 8�I�I�I�I�I�Irrrur��	inclusive�r�methodc��d|zdz
S�Nr�g3333�J�@r;r
s rr�z,TestQuantiles.test_specific_cases.<locals>.fZ	����Q�w��)�)rc3�FK�|]\}}tj||��V��dSrj�rrt�r�rhrs   rr�z4TestQuantiles.test_specific_cases.<locals>.<genexpr>^	�2����M�M�t�q�!���Q�� 2� 2�M�M�M�M�M�Mrr�r���k)r<�	quantilesr�rJrFrarrrr�r�r�rIr�rer��choicesrK)rJr�r�rr%r��sdata�lo�hi�padded_datar��exp�actr��q1�q2�q3r�s                 @r�test_specific_casesz!TestQuantiles.test_specific_cases/	s]����(�	�(�(�(����t����
��G�
���L�
�����
�%�%�%�&�
�,�,�,�-�
�3�3�3�4�
�A�A�A�B�
�O�O�O�P�
� � � �
!�
�5�5�5�
6�
�)	O�)	O�K�A�x�
���X�y�y���';�';�';�<�<�<����S���4�1�!5�!5�!5�6�6��A��>�>�>�"�G�X�6�
H�
H��"��3�x��#6�#6�!�<�<�<�����I�I�I�I�&�I�I�I�I�I�I�� � ���c�(�H�.E�.E�)F�)F�G�G�G�G��8�}�}��!�!�� � ���8�q�!9�!9�!9�8�D�D�D��4�L�L�E��U�1�X���a��(�B��U�2�Y���r��*�B��"�b��/�K�����	�$�!�$�$�$��	�+��;�?�?�?��D�	�
�
�
�
*�
*�
*��s�1�h�'�'�(�(�C��)�C��4�L�L�A�.�.�.�C��O�O�C�M�M�s�3��}�}�M�M�M�M�M�N�N�N�N��q�"���	:�	:�A��>�%��*�*��2�2�2�D�"��4���J�B��B����R��!2�4�!8�!8�9�9�9�9�	:�	:rc�
��tj}gd�}tj|��dgfddgfdddgfdgd	�fd
gd�fdgd
�fdgd�fdgd�fdgd�fdgd�ff
D�]U\}}|�||||d�����|�t|||d�����|dz
��tttfD]p�|t�|��|d���}|�
�fd�|D����|�|tt�|�������qd�}tt||����}|t||��|d���}|�
td�t||��D��������W|�|ddgdd���gd���|�|tdd��dd���gd���d�td ��D��}||d!d���}	|�t!|����|�t#|����||d!�"��}|�||	��tdd#��D]^}
tjtd��|
�$��}||d�%��\}}}
|�|tj|�����_dS)&N)r�r�i�i r
r��r@r�r��y@r�)��e@r��@@r�)r�r���v@���@rR)��b@r�r�r����@r�)g0a@�r�r�gpw@r�gP�@r�)	g@`@r�g�g@r�r�r�g�{@r�g@�@r�)g@_@r�r�r�r�r�r�r�r�r�g�@r})r�g�a@r�g�f@r�r�g�q@r�r�r�g~@r�g�@g��@r�r�c3�X�K�|]$}tt|���k��V��%dSrjr�r�s  �rr�z>TestQuantiles.test_specific_cases_inclusive.<locals>.<genexpr>	r�rc��d|zdz
Sr�r;r
s rr�z6TestQuantiles.test_specific_cases_inclusive.<locals>.f�	r�rc3�FK�|]\}}tj||��V��dSrjr�r�s   rr�z>TestQuantiles.test_specific_cases_inclusive.<locals>.<genexpr>�	r�rrr�)	�$@r�g>@gD@rggN@g�Q@r�g�V@r�c�6�g|]}tjd����S)r:)r�rGrjs  rr�z?TestQuantiles.test_specific_cases_inclusive.<locals>.<listcomp>�	s#��=�=�=�Q�� ��(�(�=�=�=ri�� r�r�r��r�)r<r�r�rJrFrarrrr�r�r�r�rer�r%r�r"r�rK)rJr�r�rr%r�r�r�r�r$r�r�r�r�r�s              @r�test_specific_cases_inclusivez+TestQuantiles.test_specific_cases_inclusivee	s�����(�	�#�#�#����t����
��G�
���L�
�����
�%�%�%�&�
�,�,�,�-�
�3�3�3�4�
�>�>�>�?�
�P�P�P�Q�
�'�'�'�
(�
�5�5�5�
6�
�	O�	O�K�A�x�
���X�y�y���;�'O�'O�'O�P�P�P����S���4�1�[�!I�!I�!I�J�J�A�PQ�E�R�R�R�"�G�X�6�
H�
H��"��3�x��#6�#6�!�K�P�P�P�����I�I�I�I�&�I�I�I�I�I�I�� � ���c�(�H�.E�.E�)F�)F�G�G�G�G�
*�
*�
*��s�1�h�'�'�(�(�C��)�C��4�L�L�A�k�B�B�B�C��O�O�C�M�M�s�3��}�}�M�M�M�M�M�N�N�N�N������A�s�8�r�+�F�F�F�O�O�O�	Q�	Q�	Q������5��C�=�=�B�{�K�K�K�O�O�O�	Q�	Q�	Q�
>�=�%��*�*�=�=�=����4�2�k�:�:�:�����C��I�I�������C��I�I�����9�T�R�(�(�(������6�*�*�*��q�"���	:�	:�A��>�%��*�*��2�2�2�D�"��4��<�<�<�J�B��B����R��!2�4�!8�!8�9�9�9�9�	:�	:rc���tj}tdd��D]L}dg|z}|�||��gd���|�||d���gd����MdS)Nrr�r�)r�r�r�r�r�)r<r�r�rF)rJr�rr�s    r�test_equal_inputszTestQuantiles.test_equal_inputs�	s����(�	��q�"���	0�	0�A��6�A�:�D����Y�Y�t�_�_�.@�.@�.@�A�A�A����Y�Y�t�K�@�@�@�.�.�.�
0�
0�
0�
0�	0�	0rc���tj}d}d�t|��D���tt	�����|krG��t
jd����tt	�����|k�G����dD]P}||z}|�	�fd�|�|���D��tt|||�������QdD]c}||z||zdzh}�fd	�|�|���D��}d
�t||dd���D��}|�||k���ddS)Nr:c�6�g|]}tjd����S)皙�����?rhrjs  rr�z9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>�	s#��>�>�>�A��"�3�'�'�>�>�>rr�)
r
rr�r�rerr�r�r�r'rmr�r:c�:��g|]}tj�|����Sr;��bisect�r��qr�s  �rr�z9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>�	s%���F�F�F�A���t�Q�'�'�F�F�Frr�)
rr��;�m��i;i�isi�i)&r
c�:��g|]}tj�|����Sr;r�r�s  �rr�z9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>�	s%���H�H�H�a�6�=��q�)�)�H�H�Hrc��h|]
\}}||z
��Sr;r;)r��pr�s   r�	<setcomp>z8TestQuantiles.test_equal_sized_groups.<locals>.<setcomp>�	s ��9�9�9�t�q�!�Q��U�9�9�9r)
r<r�r�ra�setrRr�ri�sortrFr�rer�)	rJr��totalr�
group_size�group_sizes�pos�sizesr�s	        @r�test_equal_sized_groupsz%TestQuantiles.test_equal_sized_groups�	s�����(�	���>�>��u���>�>�>���#�d�)�)�n�n��%�%��K�K��*�3�/�/�0�0�0��#�d�)�)�n�n��%�%��	�	����O�	<�	<�A��!��J����F�F�F�F���4�1�1E�1E�1E�F�F�F��U�:�u�j�9�9�:�:�
<�
<�
<�
<�E�	2�	2�A� �A�:�u��z�A�~�6�K�H�H�H�H�9�9�T�Q�3G�3G�3G�H�H�H�C�9�9�s�3��A�B�B��'8�'8�9�9�9�E��O�O�E�[�0�1�1�1�1�		2�	2rc��tj}tj}|�t��5|��ddd��n#1swxYwY|�t��5|gd�dd���ddd��n#1swxYwY|�t��5|gd�d��ddd��n#1swxYwY|�|��5|gd�d���ddd��n#1swxYwY|�|��5|gd�d���ddd��n#1swxYwY|�t��5|gd�d���ddd��n#1swxYwY|�t
��5|gd�d�	��ddd��n#1swxYwY|�|��5|d
gd���ddd��n#1swxYwY|�t��5|gd�d���ddd��dS#1swxYwYdS)Nr�rr�r�rrur��Xr�r�)r�Nr)r<r�rtr7r�r-)rJr�rts   rr�zTestQuantiles.test_error_cases�	s����(�	�$�4��
�
�
�y�
)�
)�	�	��I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	-�	-��I�l�l�l�B�!�,�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�
�
�y�
)�
)�	'�	'��I�l�l�l�A�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�
�
�
��
/�
/�	)�	)��I�l�l�l�a�(�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�
�
��
/�
/�	*�	*��I�l�l�l�b�)�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
�
�y�
)�
)�	+�	+��I�l�l�l�c�*�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�
�
�
�z�
*�
*�	0�	0��I�l�l�l�3�/�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
�
�
��
/�
/�	!�	!��I�r�d�a� � � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�
�
�y�
)�
)�	+�	+��I�n�n�n��*�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s��A
�
A�A�/B�B�B�1C�C�C�,D�D�D�(E�E�E�)F�F	�F	�*G�G
�
G
�&H�H�H�&I�I�
IN)r7r8r9r�r�r�r�r�r;rrr�r�-	sa������4:�4:�4:�l4:�4:�4:�l0�0�0�2�2�2�.+�+�+�+�+rr�c��eZdZd�Zd�ZdS)�TestBivariateStatisticsc��gd�ddgfddggd�ffD]�\}}|�tj��5tj||��ddd��n#1swxYwY|�tj��5tj||��ddd��n#1swxYwY|�tj��5tj||��ddd��n#1swxYwY��dS)Nr�r
r�r7r<rt�
covariance�correlation�linear_regressionrs   r�test_unequal_size_errorz/TestBivariateStatistics.test_unequal_size_error�	s���
�Y�Y��A�����V�Y�Y�Y��
�		3�		3�D�A�q��"�"�:�#=�>�>�
,�
,��%�a��+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��"�"�:�#=�>�>�
-�
-��&�q�!�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��"�"�:�#=�>�>�
3�
3��,�Q��2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��		3�		3s5�A�A	�A	�B#�#B'	�*B'	�
C/�/C3	�6C3	c��ggfgddgfddggfdgdgfdgddgfddgdgffD]�\}}|�tj��5tj||��ddd��n#1swxYwY|�tj��5tj||��ddd��n#1swxYwY|�tj��5tj||��ddd��n#1swxYwY��dS)Nr
rr�rs   r�test_small_sample_errorz/TestBivariateStatistics.test_small_sample_error�	s���
��H�
�!�Q��M���W�b�M��T�A�4�L��T�A�q�7�O���W�q�d�O�

�
	3�
	3�D�A�q��"�"�:�#=�>�>�
,�
,��%�a��+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��"�"�:�#=�>�>�
-�
-��&�q�!�,�,�,�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-��"�"�:�#=�>�>�
3�
3��,�Q��2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��
	3�
	3s6�A'�'A+	�.A+	�B3�3B7	�:B7	�C?�?D	�D	N)r7r8r9r�r�r;rrr�r��	s2������
3�
3�
3�3�3�3�3�3rr�c��eZdZd�Zd�ZdS)�TestCorrelationAndCovariancec��gd�gd�dfgd�gd�dfgd�gd�dfgd�gd�dfgd�gd�d	ffD]X\}}}|�tj||��|��|�tj||��|���YdS)
Nr�r
�rur�r{ru)r�rr
)r
rr
r)r
r�rr��r_r<r�r�)rJrr/r�s    r�test_resultsz)TestCorrelationAndCovariance.test_results�	s���
�Y�Y�	�	�	�1�%�
�Y�Y����b�)�
�Y�Y�	�	�	�2�&�
�Y�Y�	�	�	�1�%�
�Y�Y�	�	�	�3�'�
�	H�	H�L�A�q�&�
�"�"�:�#9�!�Q�#?�#?��H�H�H��"�"�:�#8��A�#>�#>��G�G�G�G�	H�	Hrc�f�gd�}gd�}|�tj||��d��|�tj||��d��gd�}|�tj||��d��|�tj||��d��dS)Nr�)r�rrer�r�)r�r�g333333�?r
r�r�rs   r�test_different_scalesz2TestCorrelationAndCovariance.test_different_scales�	s����I�I���L�L�����z�5�a��;�;�S�A�A�A����z�4�Q��:�:�A�>�>�>��L�L�����z�5�a��;�;�Q�?�?�?����z�4�Q��:�:�C�@�@�@�@�@rN)r7r8r9r�r�r;rrr�r��	s:������	H�	H�	H�A�A�A�A�Arr�c� �eZdZd�Zd�Zd�ZdS)�TestLinearRegressionc��gd�}gd�}|�tj��5tj||��ddd��dS#1swxYwYdS)N)r
r
r
r�)r7r<rtr�rs   r�test_constant_input_errorz.TestLinearRegression.test_constant_input_error

s����J�J���J�J��
�
�
�z�9�
:�
:�	/�	/��(��A�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�A�A�Ac
� �gd�gd�ddfgd�gd�ddfgd�gd�ddfgd�gd�dd	fgd�gd
�ddfgd�gd�d
dfgd�gd�ddffD]K\}}}}tj||��\}}|�||��|�||���LdS)Nr�)rrrrr
)r�r�r�r�)r�r�r�r�rr�ru)r�r�r�re)gffffff@g������@r�r�r�)r<r�r_)rJrr/�true_intercept�
true_slope�slope�	intercepts       rr�z!TestLinearRegression.test_results
s���
�Y�Y�	�	�	�1�a�(�
�Y�Y�	�	�	�1�a�(�
�Y�Y�����a�0�
�Y�Y����b�!�,�
�Y�Y����a��,�
�Y�Y����b�!�,�
�Y�Y�����C�0�1
�	6�	6�,�A�q�.�*� *�;�A�q�A�A��E�9��"�"�9�n�=�=�=��"�"�5�*�5�5�5�5�	6�	6rc��gd�}gd�}tj||d���\}}|�|d��|�|d��dS)N)r�rerr#)�i�ibiT)�proportionalg�N�4@rt)r<r�r_rF)rJrr/r�rs     r�test_proportionalz&TestLinearRegression.test_proportional
sf������ � � ��%�7��1�4�P�P�P���y����u�j�1�1�1�����C�(�(�(�(�(rN)r7r8r9r�r�rr;rrr�r�
sA������/�/�/�6�6�6�)�)�)�)�)rr�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	j
d���Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestNormalDistc��|j�dd��}|�t��5t	|��ddd��n#1swxYwY|�t
|j��d��dS)Nr�r�)�_mu�_sigma)rZ�
NormalDistr7r��varsrFr��	__slots__�rJ�nds  r�
test_slotszTestNormalDist.test_slots.
s���
�[�
#�
#�C��
,�
,��
�
�
�y�
)�
)�	�	���H�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����r�|�,�,�.?�@�@�@�@�@s�A�A�Ac���|j�dd��}|�|jd��|�|jd��|�|jd��|j���}|�|jd��|�|jd��|�|jd��|�|jj��5|j�dd��ddd��n#1swxYwYGd�d|jj��}|d	d
��}|�t|��|��dS)Nr�r{i!rr
i����c��eZdZdS)�GTestNormalDist.test_instantiation_and_attributes.<locals>.NewNormalDistNr�r;rr�
NewNormalDistrE
r�rrr�r�)	rZr
rFr�rZrr7rtr)rJrr�nnds    r�!test_instantiation_and_attributesz0TestNormalDist.test_instantiation_and_attributes4
s���
�[�
#�
#�C��
,�
,�������#�&�&�&������2�&�&�&������e�,�,�,��[�
#�
#�
%�
%�������!�$�$�$������1�%�%�%������d�+�+�+��
�
�t�{�:�
;�
;�	-�	-��K�"�"�3��,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	�	�	�	�	�D�K�2�	�	�	��m�C��#�#������c���M�2�2�2�2�2s�6D�D"�%D"c�J�|jj}gd�}|�|�|��|dd����|�|�t	|����|dd����|�|�t|����|dd����|�|jj��5|�g��ddd��n#1swxYwY|�|jj��5|�dg��ddd��n#1swxYwYGd�d|��}|�|��}|�t|��|��dS)N)�`r��Zr	�nr|r�r�c��eZdZdS)�BTestNormalDist.test_alternative_constructor.<locals>.NewNormalDistNr�r;rrrrZ
r�rr)	rZr
rF�from_samplesr�rEr7rtr)rJr
r�rrs     r�test_alternative_constructorz+TestNormalDist.test_alternative_constructorJ
s���[�+�
�%�%�%������0�0��6�6�
�
�2�q�8I�8I�J�J�J�����0�0��t���=�=�z�z�"�a�?P�?P�Q�Q�Q�����0�0��d���<�<�j�j��Q�>O�>O�P�P�P�
�
�
�t�{�:�
;�
;�	(�	(��#�#�B�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
�
�t�{�:�
;�
;�	*�	*��#�#�R�D�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	�	�	�	�	�J�	�	�	��(�(��.�.������c���M�2�2�2�2�2s$�#D�D	�D	�/E�E�Ec��|jj}d\}}|||��}d}|�|��}|�t	|��|��|�tt
t|����th��|j�	|��}|�
||dzz
|cxko||dzzknc��d}|�|d���}|�|d���}	|�|d���}
|�|d���}|�||
��|�|	|��|�||	��dS)N)r:r�r'r�r�zhappiness and joy)rrztrouble and despair)rZr
�samplesrFrar�r�rrr�r�r})rJr
r1�sigmar�rr�r%�data1�data2�data3�data4s            r�test_sample_generationz%TestNormalDist.test_sample_generation_
sx���[�+�
��	��E��J�r�5�!�!�����y�y��|�|������T���A�&�&�&�����S��t�_�_�-�-��w�7�7�7��{����%�%������U�1�W���<�<�<�<��U�1�W��<�<�<�<�=�=�=�
���	�	�!�"5�	�6�6���	�	�!�"7�	�8�8���	�	�!�"5�	�6�6���	�	�!�"7�	�8�8�������&�&�&������&�&�&����E�5�)�)�)�)�)rc	���|jj}|dd��}|�|�d��|�d����|�|�d��|�d����t	d��D]D}|�|�d|z
��|�d|z�����Ed}t	dd��D]^}|�||z��|�|��z
|z}|�|�|��|d	�
���_|��}tgd���D]b\}}|�|�|dz��|d	�
��|�|�|dz��|d	�
���c|dd
��}	|�|jj	��5|	�d��ddd��n#1swxYwY|�
|�td����d��|�
|�td����d��|�tj|�td��������dS)Nr�r}r|r�rgP?rr?r�ry)2�+��ݓ��?r'r'ggDio��?g������?gV}��b�?g�Q�|�?gF���x�?g��g��s�?g�٬�\m�?g�� �rh�?g�K7�A`�?g��|гY�?g����Q�?g���QI�?gsh��|?�?g�=yX�5�?g|a2U0*�?g��Q��?g���N@�?g�/�$�?g~��k	��?g]�C����?gw��/��?g�~�:p��?g�>W[���?gM�
O��?gW[����?g鷯��?g{�G�z�?g
q���h�?g�|a2U�?g��K7�A�?gvq
�-�?gj�t��?g�c]�F�?g�\�C���?gףp=
��?g�����?ga2U0*��?g�y�):��?g(��y�?g��N@a�?gf�c]�F�?g"lxz�,�?g�O��n�?g�3��7��?g�e�c]��?g��n���?g��T����?r�r�-Infrtr�r�)rZr
�
assertLess�pdfr�r_�cdfrdr7rtrFrr�rr)
rJr
r�rg�dxr�est_pdf�Z�px�Ys
          r�test_pdfzTestNormalDist.test_pdfu
s����[�+�
��J�s�B����������b�	�	�1�5�5��:�:�.�.�.�������c�
�
�A�E�E�#�J�J�/�/�/��r���	C�	C�A��"�"�1�5�5��q��>�>�1�5�5��q��>�>�B�B�B�B�
���r�3���	@�	@�A��u�u�Q��V�}�}�q�u�u�Q�x�x�/�2�5�G��"�"�1�5�5��8�8�W�Q�"�?�?�?�?��J�L�L��� 
� 
� 
���
	D�
	D�E�A�r�
�"�"�1�5�5��U��#3�#3�R��"�B�B�B��"�"�1�5�5�!��e��#4�#4�b��"�C�C�C�C��J�s�A����
�
�
�t�{�:�
;�
;�	�	�
�E�E�"�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
������u�V�}�}�-�-�s�3�3�3�������u�U�|�|�,�,�c�2�2�2�����
�1�5�5��u���#6�#6�7�7�8�8�8�8�8s�?H!�!H%�(H%c	�n��|jj}|dd����fd�tdd��D��}|�t	tt|����th��|�|t|����|���	d��d��|��}dD]_\}}|�
|�	|��|d�	��|�
|�	|��d
|z
d�	���`|dd��}|�|jj��5|�	d��ddd��n#1swxYwY|���	td
����d��|���	td����d
��|�
tj��	td��������dS)Nr�r}c�:��g|]}��|����Sr;)r+)r�rr�s  �rr�z+TestNormalDist.test_cdf.<locals>.<listcomp>�
s#���0�0�0�Q����a���0�0�0rr
r�r�))rtr�)r�gqZ� �?)rg��E_A�?)g�Q���?gGɫs��?)g��(\��?g؞Y���?)g��Q��?g���9#�?)gH�z�G�?g&S���?)r�g�MbX9�?)g���Q��?gT㥛� �?)g�������?g�?�?)gffffff@g_�x�Z�?)g��Q�@g��#0��?)g)\��(@gu<f�2��?)gףp=
�@gVe����?)gH�z�G@g9���?r�ryr�rrr(rtr�r�)rZr
r�rFr�r�rrrIr+r_r7rtr�rr)rJr
�cdfsr.�z�cum_probr0r�s       @r�test_cdfzTestNormalDist.test_cdf�
s0����[�+�
��J�s�B����0�0�0�0�%��3�-�-�0�0�0������S��t�_�_�-�-��w�7�7�7�����v�d�|�|�,�,�,�������s���T�*�*�*�
�J�L�L���	H�	H�K�A�x�
�"�"�1�5�5��8�8�X�a�"�@�@�@��"�"�1�5�5�!��9�9�c�H�n�Q�"�G�G�G�G��J�s�A����
�
�
�t�{�:�
;�
;�	�	�
�E�E�"�I�I�I�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
������u�V�}�}�-�-�s�3�3�3�������u�U�|�|�,�,�c�2�2�2�����
�1�5�5��u���#6�#6�7�7�8�8�8�8�8s�E7�7E;�>E;c	�Z�|jj}|dd��}|�|�d��|j��|��}dddd�}|���D]�\}}t
|d�	��D]j\}}|d
|zz}	|�|�|	��|d���d
|	z
}	|�|�|	��|d����k��|�|dd���d��d��d}
td|
��D]C}	|	|
z}	|�|�	|�|	����|	���Dtdd��D]�}d|z}	|�|�	|�|	����|	��d
|	z
}	|�|�	|�|	����|	����td��D]@}|�|�|�	|����|d����A|�
|jj��5|�d��ddd��n#1swxYwY|�
|jj��5|�d��ddd��n#1swxYwY|�
|jj��5|�d
��ddd��n#1swxYwY|�
|jj��5|�d��ddd��n#1swxYwY|�
|jj��5|dd��}|�d��ddd��n#1swxYwY|�tj|�td��������dS)Nr�r}r�)
rtgR���Q�?g�S㥛@g���S
@gT㥛� @g^�I�@g� �rh�@g+��N@g��C��@gV-��o@)
g� �rh��?g\��(\�?g�~j�t@g+��@g�MbX9@g�(\�B@g��v��@g����@g��Sc@g�K7�A�@)
gP��n��?g�S㥛@g���Q�@g��n��
@g��(\@gP��n@g�����@g��� �r@gˡE��@g�l�q@)r�rHr�r
)�startr�r�ryr�r#r�g��>���?g���E@i�3r/r�r�rtrg�������?rr�)rZr
rF�inv_cdfr��itemsrdr_r�r+r7rtr�rrr)rJr
�iqr.�ppr&�rowr�rr�rrhs            r�test_inv_cdfzTestNormalDist.test_inv_cdf�
s4���[�+�
��Z��R�
 �
 ��������D�)�)�2�7�3�3�3�

�J�L�L��7�7�7�	8�8�������	B�	B�I�D�#�#�C�q�1�1�1�
B�
B���Q��4�S�D�>�)���&�&��	�	�!���}�a��&�B�B�B��!�G���&�&�q�y�y��|�|�Q�q�&�A�A�A�A�	
B�	
���z�z�"�c�2�2�:�:�8�D�D�i�P�P�P�
���q�!���	=�	=�A�
��F�A��"�"�2�6�6�"�*�*�Q�-�-�#8�#8�!�<�<�<�<��q�"���	=�	=�A�����A��"�"�2�6�6�"�*�*�Q�-�-�#8�#8�!�<�<�<��a��A��"�"�2�6�6�"�*�*�Q�-�-�#8�#8�!�<�<�<�<�
�s���	G�	G�A��"�"�2�:�:�b�f�f�Q�i�i�#8�#8�!�A�"�F�F�F�F��
�
�t�{�:�
;�
;�	�	��J�J�s�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�t�{�:�
;�
;�	�	��J�J�t����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�t�{�:�
;�
;�	�	��J�J�s�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�t�{�:�
;�
;�	�	��J�J�s�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�t�{�:�
;�
;�	�	���C��#�#�B��J�J�s�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
	
����
�1�9�9�U�5�\�\�#:�#:�;�;�<�<�<�<�<sZ�;J�J!�$J!�K)�)K-�0K-�L5�5L9�<L9�N�N�N�+"O�O� Oc
�
�|j���}dgfddgfdddgfdgd�ffD]U\}}|�|�	��}|�t	d
�t||��D�������VdS)Nr
rrtr�g�ǘ���ۿg�ǘ����?r�)g/�$���rtg/�$���?r�c3�JK�|]\}}tj||d���V��dS)r�)�abs_tolNr�r�s   rr�z0TestNormalDist.test_quantiles.<locals>.<genexpr>sK���� ?� ?� $��1�!%��Q��6� B� B� B� ?� ?� ?� ?� ?� ?r)rZr
r�r�r�re)rJr.rr%r$s     r�test_quantileszTestNormalDist.test_quantiles�
s����K�"�"�$�$��
��G�
���J�
��&�!�"�
�&�&�&�'�	�	@�	@�K�A�x��[�[�1�[�%�%�F��O�O�C� ?� ?�(+�H�f�(=�(=� ?� ?� ?�?�?�
@�
@�
@�
@�	@�	@rc���|jj}|dd��|dd��df|dd��|dd��dffD]\\}}}|�|�|��|d���|�|�|��|d����]dd	d
�d�}|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|d
d��f|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|dd��f|dd��|dd��ffD]o\}}|�|�|��|||��d	���|�|�|��|||��d	����p|��}|�t
��5|���ddd��n#1swxYwY|�t
��5|�||��ddd��n#1swxYwY|�t
��5|�d��ddd��n#1swxYwY|�|jj��5|�|dd����ddd��n#1swxYwY|�|jj��5|dd���|��ddd��dS#1swxYwYdS)Nrtr/r�gɎ�@���?gM-[닄�?r�ryi r�)�stepsr5c�����tj}|j|jzdz}|t|j|j��z}||z
�d|z|z���fd�t|��D��}t
t|j|����}t
t|j|����}	t||��||	����}
|tt||	����|
zS)z0Numerical integration cross-check for overlap() r/c� ��g|]
}�|�zz��Sr;r;)r�rgr,r9s  ��rr�zHTestNormalDist.test_overlap.<locals>.overlap_numeric.<locals>.<listcomp>s!���8�8�8�a�U�Q�r�T�\�8�8�8r)
rr�r�r"rZr�r�r�r*r�)
r�r0rFr5r��center�width�x_arr�xp�ypr�r,r9s
           @@r�overlap_numericz4TestNormalDist.test_overlap.<locals>.overlap_numerics������9�D��f�q�v�o��,�F���A�G�Q�W�-�-�-�E��U�N�E��u��u�$�B�8�8�8�8�8�5��<�<�8�8�8�E��c�!�%��'�'�(�(�B��c�!�%��'�'�(�(�B����R���$�$�r�(�(�+�+�E��4��C��R�(�(�)�)�E�1�1rr��Ar�r�r}rr�i����r��r�rgj�t��?g�~j�t�h?gj�t��?ga2U0*�3?g��MbX�?r
r)rZr
r_�overlapr7r�rt)rJr
�X1�X2�published_resultrNr�s       r�test_overlapzTestNormalDist.test_overlaps����[�+�
���C��%�%�z�z�#�s�';�';�W�E���C��%�%�z�z�#�s�';�';�W�E�)�	O�	O�$�B��$�
�"�"�2�:�:�b�>�>�3C�A�"�N�N�N��"�"�2�:�:�b�>�>�3C�A�"�N�N�N�N�,1�A�	2�	2�	2�	2�	2���C��%�%�z�z�#�s�';�';�<���C��%�%�z�z�#�s�';�';�<���C��%�%�z�z�#�s�';�';�<���B��"�"�J�J�r�3�$7�$7�8���C��$�$�j�j��b�&9�&9�:���D�"�%�%�z�z�#�r�':�':�;���D�"�%�%�z�z�$��';�';�<���C��$�$�j�j��b�&9�&9�:���C��$�$�j�j��b�&9�&9�:���C��$�$�j�j��b�&9�&9�:���C��$�$�j�j��b�&9�&9�:���E�5�)�)�:�:�e�U�+C�+C�D���E�5�)�)�:�:�e�V�+D�+D�E���E�5�)�)�:�:�e�U�+C�+C�D�)�	V�	V�F�B��,
�"�"�2�:�:�b�>�>�?�?�2�r�3J�3J�ST�"�U�U�U��"�"�2�:�:�b�>�>�?�?�2�r�3J�3J�ST�"�U�U�U�U�
�J�L�L��
�
�
�y�
)�
)�	�	�
�I�I�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�I�I�a��O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�I�I�d�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�t�{�:�
;�
;�	(�	(�
�I�I�j�j��A�&�&�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
�
�t�{�:�
;�
;�	(�	(��J�q�!���$�$�Q�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(sZ�;J�J �#J �K$�$K(�+K(�	L+�+L/�2L/� N�N�N�+ O�O�Oc��|jj}|dd��}|�|�d��d��|�|�d��d��|�|�d��d��|�t
��5|���ddd��n#1swxYwY|�t
��5|�dd��ddd��n#1swxYwY|�t
��5|�d��ddd��n#1swxYwY|�|jj��5|dd	���d��ddd��dS#1swxYwYdS)
Nr�r}�gffffff@�:gffffff�rtr
r)rZr
rF�zscorer7r�rt)rJr
r�s   r�test_zscorezTestNormalDist.test_zscoreGs����[�+�
��J�s�B����������#����,�,�,�������"���t�,�,�,�������#����,�,�,�
�
�
�y�
)�
)�	�	�
�H�H�J�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�H�H�Q��N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	�
�H�H�T�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�t�{�:�
;�
;�	)�	)��J�q�!���#�#�C�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)sH�.C�C�C�4D�D�D�<E�E"�%E"� F5�5F9�<F9c�J�|j�dd��}|�|jd��|�|jd��|�|jd��|�|jd��|�|jd��dS)Nr�r}��)rZr
rFr�rKr�rZr)rJr�s  r�test_propertieszTestNormalDist.test_propertiesVs����K�"�"�3��+�+��������%�%�%������3�'�'�'�������%�%�%������"�%�%�%������S�)�)�)�)�)rc���|jj}|dd��}|dd��}|�||z|dd����|�||z
|dd����dS)Nr�r�r#r��rr�)rZr
rF�rJr
r�r0s    r�'test_same_type_addition_and_subtractionz6TestNormalDist.test_same_type_addition_and_subtraction^s����[�+�
��J�s�B�����J�r�1��������Q��
�
�3�� 3� 3�4�4�4�����Q��
�
�2�r� 2� 2�3�3�3�3�3rc��|jj}|dd��}d}|�|
|dd����|�||dd����|�||z|dd����|�||z|dd����|�||z
|dd����|�||z
|dd����|�||z|dd	����|�||z|dd	����|�||z|dd
����|�t��5||zddd��dS#1swxYwYdS)Nr�r}r�r�rri����r'rPr�)rZr
rFr7r�)rJr
r�r/s    r�test_translation_and_scalingz+TestNormalDist.test_translation_and_scalinges����[�+�
��J�s�B���������!��Z�Z��R�0�0�1�1�1����!��Z�Z��b�1�1�2�2�2�����Q��
�
�3�� 3� 3�4�4�4�����Q��
�
�3�� 3� 3�4�4�4�����Q��
�
�2�r� 2� 2�3�3�3�����Q��
�
�3�� 3� 3�4�4�4�����Q��
�
�4�� 5� 5�6�6�6�����Q��
�
�4�� 5� 5�6�6�6�����Q��
�
�2�s� 3� 3�4�4�4�
�
�
�y�
)�
)�	�	�
��E�E�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�,E?�?F�Fc��|jj}|dd��}|
}|�||��|�|j|j��|�|j|j��|}|�||��|�|j|j��|�|j|j��dS)Nr�r�)rZr
�assertIsNotrFr�rZr`s    r�test_unary_operationsz$TestNormalDist.test_unary_operationsus����[�+�
��J�s�B����
�B������A�����������(�(�(������!�'�*�*�*�
�B������A���������!�&��)�)�)������!�'�*�*�*�*�*rc�d�|jj}|��}|dd��}|��}|dd��}|dd��}|dd��}|�||��|�||��|�||��|�||��|�||��Gd�d��}|��}	|�|�|	��t
��|�||	kd��|�|	|kd��Gd�d|��}
|
d	d
d��}|d	d
��}|�||��Gd�d
��}|d	d
��}
|d	d
��}|�||
��dS)Nrr�r�c��eZdZd�ZdS)�'TestNormalDist.test_equality.<locals>.Ac��dSr�r;)rJr+s  r�__eq__z.TestNormalDist.test_equality.<locals>.A.__eq__�s���rrN)r7r8r9rkr;rrr�ri�s#������
�
�
�
�
rr�r�c���eZdZ�fd�Z�xZS)�5TestNormalDist.test_equality.<locals>.SizedNormalDistc�Z��t���||��||_dSrj)r�__init__r)rJr1r rrs    �rroz>TestNormalDist.test_equality.<locals>.SizedNormalDist.__init__�s(������ � ��U�+�+�+�����r)r7r8r9rorrs@r�SizedNormalDistrm�s8�������
�
�
�
�
�
�
�
�
rrpr�r}�9c��eZdZd�ZdS)�3TestNormalDist.test_equality.<locals>.LognormalDistc�"�||_||_dSrj)r1r )rJr1r s   rroz<TestNormalDist.test_equality.<locals>.LognormalDist.__init__�s�����"��
�
�
rN)r7r8r9ror;rr�
LognormalDistrs�s#������
#�
#�
#�
#�
#rru)rZr
r}rFrk�NotImplemented)rJr
�nd1�nd2�nd3�nd4�nd5�nd6r�rrp�sru�lndrs               r�
test_equalityzTestNormalDist.test_equality�s+���[�+�
��j�l�l���j��A�����j�l�l���j��A�����j��A�����j��A�������C��%�%�%�����c�"�"�"�����c�"�"�"����C��%�%�%����C��%�%�%�	�	�	�	�	�	�	�	�
�A�C�C��������A����7�7�7�������2�&�&�&�����c��2�&�&�&�	�	�	�	�	�j�	�	�	�
�O�C��R�(�(���j��b�!�!������C� � � �
	#�	#�	#�	#�	#�	#�	#�	#��m�C��$�$��
�Z��R�
 �
 �����B��$�$�$�$�$rc���|j�dd��}tj|��}|�||��tj|��}|�||��dS)N��B@��@)rZr
�copyrF�deepcopy)rJrrwrxs    r�	test_copyzTestNormalDist.test_copy�sg��
�[�
#�
#�D�%�
0�
0���i��m�m������S�!�!�!��m�B��������S�!�!�!�!�!rc�R�|j�dd��}ttjdz��D]n}|�|���5tjtj||�����}|�||��ddd��n#1swxYwY�odS)Nr�r�r
)�proto)�protocol)	rZr
r��pickle�HIGHEST_PROTOCOLr��loads�dumpsrF)rJrr��pickleds    r�test_picklezTestNormalDist.test_pickle�s���
�[�
#�
#�D�%�
0�
0���6�2�Q�6�7�7�	.�	.�E����E��*�*�
.�
.� �,�v�|�B��'G�'G�'G�H�H��� � ��W�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.��	.�	.s�?B�B	�"B	c���|jj}|dd��|dd��|dd��|dd��|dd��h}|�t|��d��dS)Nr�r}r�g.@r�rr�)rZr
rFra)rJ�NDr}s   r�test_hashabilityzTestNormalDist.test_hashability�sp��
�[�
#��
�R��R�[�[�"�"�U�D�/�/�2�2�c�2�;�;���2�r�
�
�B�B�s�B�K�K�P������Q����#�#�#�#�#rc��|j�dd��}|�t|��d��dS)Nr�r�z NormalDist(mu=37.5, sigma=5.625))rZr
rF�reprr
s  r�	test_reprzTestNormalDist.test_repr�s<��
�[�
#�
#�D�%�
0�
0������b���#E�F�F�F�F�FrN)r7r8r9rrrr%r1r7r�skip_if_pgo_taskr@rDrUrZr]rarcrfrr�r�r�r�r;rrrr%
sP������A�A�A�3�3�3�,3�3�3�**�*�*�,%9�%9�%9�N9�9�9�<
��>=�>=���>=�@@�@�@�=(�=(�=(�~
)�
)�
)�*�*�*�4�4�4���� 
+�
+�
+�*%�*%�*%�X"�"�"�.�.�.�$�$�$�
G�G�G�G�Grrc��eZdZeZd�Zd�ZdS)�TestNormalDistPythonc�.�|jtjd<dSrD�rZrn�modulesrvs rr�zTestNormalDistPython.setUp����$(�K���L�!�!�!rc�.�ttjd<dSrD�r<rnr�rvs r�tearDownzTestNormalDistPython.tearDown����$.���L�!�!�!rN)r7r8r9rHrZr�r�r;rrr�r��s7������
�F�0�0�0�/�/�/�/�/rr�rMc��eZdZeZd�Zd�ZdS)�TestNormalDistCc�.�|jtjd<dSrDr�rvs rr�zTestNormalDistC.setUp�r�rc�.�ttjd<dSrDr�rvs rr�zTestNormalDistC.tearDown�r�rN)r7r8r9rOrZr�r�r;rrr�r��s7������
�F�0�0�0�/�/�/�/�/rr�c�R�|�tj����|S)z&Used for doctest/unittest integration.)�addTestsrf�DocTestSuite)�loader�tests�ignores   r�
load_testsr��s"��	�N�N�7�'�)�)�*�*�*��Lr�__main__)r*r+)Ur:r�rV�collections.abcr�r�rfr5rr�r�rnrQ�testr�test.supportrrrr�rr<rrr)r4r6�import_fresh_modulerHrOrErArTrrryr�r�r�r%r4r<rUrcrrryr�r�r�rr,r?r}r�r�r�r�r�r�r!rHrgrkrvr}r�r�r�r�rrr)r3rXrbr�r�r�r�rr�rRr�r�r7�mainr;rr�<module>r�s�����
�
�
�
�����������������������������
�
�
�
�
�
�
�
�
�
�
�
�����������9�9�9�9�9�9�9�9�����������������
���3�3�3�>
�
�
� 2)�2)�2)�2)�t$	�$	�$	�$	�$	�$	�$	�$	�V2�
�1�,�;H�/�K�K�K�
�0�}�0��8E��H�H�H��
U�
U�
U�
U�
U�(�#�
U�
U�
U�XF�XF�XF�XF�XF�h�'�XF�XF�XF�~)�)�)�)�)�x� �)�)�)�;J�;J�;J�;J�;J�h�/�;J�;J�;J�|=B�=B�=B�=B�=B�8�,�=B�=B�=B�@,�,�,�,�,�X�.�,�,�,�>tE�tE�tE�tE�tE�X�.�tE�tE�tE�nK�K�K�K�K�h�/�K�K�K�8	G�	G�	G�	G�	G�H�-�	G�	G�	G�"%�%�%�%�%�(�+�%�%�%�ZC�C�C�C�C�(�#�C�C�C�,$�$�$�$�$�x� �$�$�$�
�
�
�
�
�(�+�
�
�
�=8�=8�=8�=8�=8�X�&�=8�=8�=8�@1)�1)�1)�1)�1)��*�1)�1)�1)�h6�6�6�6�6�8�$�6�6�6�&a9�a9�a9�a9�a9��"�a9�a9�a9�H;-�;-�;-�;-�;-�(�#�;-�;-�;-�|&�&�&�&�&�(�#�&�&�&�<`/�`/�`/�`/�`/�`/�`/�`/�F'.�'.�'.�'.�'.�'.�'.�'.�T	#�	#�	#�	#�	#�)�+>�	#�	#�	#�7F�7F�7F�7F�7F�o�7F�7F�7F�t
?�
?�
?�
?�
?�_�
?�
?�
?�;K�;K�;K�;K�;K��;K�;K�;K�@9�9�9�9�9�(�9�9�9�(]>�]>�]>�]>�]>���.A�]>�]>�]>�@v(�v(�v(�v(�v(���6I�v(�v(�v(�r65�65�65�65�65��,�65�65�65�r
�
�
�
�
��*=�
�
�
�4�4�4�4�4�J� 3�4�4�4�64�4�4�4�4�Z�!4�4�4�4�6u@�u@�u@�u@�u@�
�u@�u@�u@�p:,�:,�:,�:,�:,���.A�:,�:,�:,�z,�,�,�,�,�H�%�,�,�,�A1�A1�A1�A1�A1��!�A1�A1�A1�L?:�?:�?:�?:�?:�.�?:�?:�?:�D)-�)-�)-�)-�)-�&��9L�)-�)-�)-�X,-�,-�,-�,-�,-�%��8K�,-�,-�,-�\7�7�7�7�7�#�_�7�7�7�"^k�^k�^k�^k�^k�h�'�^k�^k�^k�B9�9�9�9�9�"�O�9�9�9�(fM�fM�fM�fM�fM��)�fM�fM�fM�Ra+�a+�a+�a+�a+�H�%�a+�a+�a+�H3�3�3�3�3�h�/�3�3�3�>A�A�A�A�A�8�#4�A�A�A�0)�)�)�)�)�8�,�)�)�)�:]G�]G�]G�]G�]G�]G�]G�]G�F
/�/�/�/�/�8�,�n�/�/�/����\�#9�:�:�/�/�/�/�/�h�'��/�/�;�:�/�����z����H�M�O�O�O�O�O��r