python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_statistics.cpython-311.opt-1.pyc

eRBdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
mZddlmZmZddlmZddlmZddlZdZdZd	ZdzdZGd
dZejddgZejddgZGddejZGddejZ GddejZ!GddejZ"GddejZ#GddejZ$Gdd ejZ%Gd!d"ejZ&Gd#d$ejZ'Gd%d&ejZ(Gd'd(ejZ)Gd)d*ejZ*Gd+d,ejZ+Gd-d.ejZ,Gd/d0ejZ-Gd1d2ejZ.Gd3d4ejZ/Gd5d6ejZ0Gd7d8ejZ1Gd9d:Z2Gd;d<Z3Gd=d>e2e3Z4Gd?d@e Z5GdAdBe Z6GdCdDe Z7GdEdFe2Z8GdGdHe e8e3Z9GdIdJe e8e3Z:GdKdLe e8Z;GdMdNe e3Z<GdOdPe;e3Z=GdQdRe;e3Z>GdSdTe;Z?GdUdVe e8e3Z@GdWdXejZAGdYdZejZBGd[d\e2ZCGd]d^eCe e3ZDGd_d`eCe e3ZEGdadbeCe ZFGdcddejZGGdedfeCe ZHGdgdhejZIGdidjejZJGdkdlejZKGdmdnejZLGdodpejZMGdqdrZNGdsdtejeNZOejPeduGdvdwejeNZQdxZReSdykrejTdSdS){z_Test suite for statistics module, including helper NumericTestCase and
approx_equal function.

N)support)
import_helperrequires_IEEE_754)DecimalFractionc,tjd|S)z:Return -1.0 for negatives, including -0.0, otherwise +1.0.)mathcopysignxs H/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_statistics.pysignrs=Ac8t|t|urdSt|tr(tj|otj|S|d}|d}||ko|dvS)aReturn 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)nN)type
isinstancefloatrisnanas_tuple)abaexpbexps    r
_nan_equalr#s,Awwd1ggu!U/z!}}.A.::<<?D::<<?DDL2tz12rctt|t|}t||z
}|r||zntd}||fS)zReturn 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)maxabsr)actualexpectedbaseabs_errrel_errs     r_calc_errorsr)BsTs6{{CMM**D&8#$$G"4gdlleGWr-q=Hz>c
|dks|dkrtdtj|stj|rdS||krdStj|stj|rdSt	||z
}t||tt	|t	|z}||kS)aapprox_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)
ValueErrorrrisinfr#r")rytolrelactual_error
allowed_errors      rapprox_equalr4RsDQww#''@AAAz!}}
1

uAvvtz!}}
1

uq1u::LSSVVSVV!4!4455M=((rceZdZdZdS)
_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__rrr6r6s""F	Drr6
statistics_statistics)blocked)freshcNeZdZdgZdZejeddZdS)TestModules_normal_dist_inv_cdfcv|jD]0}|tt|jd1dSNr<)
func_namesassertEqualgetattr
py_statisticsr8selffnames  rtest_py_functionszTestModules.test_py_functionssG_	U	UEW]E::E|TTTT	U	Urrequires _statisticscv|jD]0}|tt|jd1dS)Nr=)rErFrGc_statisticsr8rIs  rtest_c_functionszTestModules.test_c_functionssG_	U	UEW\599DmTTTT	U	UrN)	r7r8r9rErLunittest
skipUnlessrOrPr;rrrArAs_()JUUUX'=>>UU?>UUUrrAcHeZdZdZdxZZ	ddZdZd	dZe	dZ
dS)
NumericTestCasezUnit test class for numeric work.

    This subclasses TestCase. In addition to the standard method
    ``TestCase.assertAlmostEqual``,  ``assertApproxEqual`` is provided.
    rNc||j}||j}t|tjjr't|tjjr|j}n|j}||||||dS)aTest 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)r0r1rcollectionsabcSequence_check_approx_seq_check_approx_num)rJfirstsecondr0r1msgchecks       rassertApproxEqualz!NumericTestCase.assertApproxEquals|>;(C;(C5+/":;;	+6;?#;<<	+*EE*E
eVS#s+++++rc	^t|t|krLdt|t|fz}|||}||tt	||D]"\}\}}	|||	||||#dS)Nz0sequences differ in length: %d items != %d items)len_formatMessagefailureException	enumerateziprZ)
rJr[r\r0r1r]standardMsgires
          rrYz!NumericTestCase._check_approx_seqsu::V$$Bu::s6{{+,
%%c;77C'',,,!#eV"4"455	;	;HAu!""1ac3::::	;	;rct||||rdS||||||}|||}||N)r4_make_std_err_msgrbrc)rJr[r\r0r1r]idxrfs        rrZz!NumericTestCase._check_approx_num
savsC00	4,,UFCcJJ!!#{33##C(((rcZd}|
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\r0r1rltemplateheaderr'r(s	         rrkz!NumericTestCase._make_std_err_msgsS

'	?DsJF(H'v665&#sGWEEEr)NNNrj)r7r8r9r:r0r1r_rYrZstaticmethodrkr;rrrTrTsMC#:>*,*,*,*,X	;	;	;))))FF\FFFrrTceZdZdZdZdS)TestSignz5Test that the helper function sign() works correctly.c|tdd|tdddS)Nr
g)rFrrJs r
testZeroeszTestSign.testZeroes+s@cB'''dR(((((rN)r7r8r9r:rwr;rrrrrr)s)??)))))rrrc&eZdZdZdZdZdZdS)ApproxEqualSymmetryTestcdddtdtddg}ddd	td
tddg}t||D]\}}|||dS)Ni	gfffffB@gfffff(z2.546i	gB@gR(z2.59)rrredo_relative_symmetry)rJargs1args2rrs     rtest_relative_symmetryz.ApproxEqualSymmetryTest.test_relative_symmetry6stVWV__hr26F6FGtVWV__hr26F6FGu%%	,	,DAq%%a++++	,	,rc@t||t||}}||z
}t||zt||z}}||zdz}|t	||d||t	||d|dS)Nrrr0r1)minr"r#
assertTruer4)rJrrdeltarel_err1rel_err2r1s       rr~z,ApproxEqualSymmetryTest.do_relative_symmetryFs1ayy#a))1A q\\3uQw<<(("A%	
Qqc:::;;;Qqc:::;;;;;rc	gd}d}|D]5}ttttfD]}||dz}||z}t	|t||z}|||||||||dzd|z||||dz
|dz|||||dz||||dz
|||||dz
d|z|||dd|||dd7dS)N)ikimrdrr
r)intrrrr#r"do_symmetry_test)rJargsrrtype_rr/rs        r
test_symmetryz%ApproxEqualSymmetryTest.test_symmetryRs'''	:	:Augx8
:
:E!HHSLIc!Qii((%%a1%===%%aaQqS%AAA%%aaQqS%AAA%%a1Q3%???%%aaQ%???%%aaQqS%AAA%%aq%999%%aq%9999#
:	:	:rc
d}t||||}t||||}||||||||fdS)Nz+approx_equal comparisons don't match for %r)r4rFformat)rJrrr0r1rnflag1flag2s        rrz(ApproxEqualSymmetryTest.do_symmetry_testjs`@Q3,,Q3,,x1c37G'H'HIIIIIrN)r7r8r9rr~rrr;rrryry3sU,,, 
<
<
<:::0JJJJJrrycDeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
S)ApproxEqualExactTestct||||}||d|zt||||}||d|zdS)Nrzequality failure for x=%r)r4r)rJrr0r1results     rdo_exactly_equal_testz*ApproxEqualExactTest.do_exactly_equal_testwsna555 ;a ?@@@qb1"#3777 ;qb @AAAAArc>dD]}||dddS)N)*iMi~:iiU
irrrJrs  rtest_exactly_equal_intsz,ApproxEqualExactTest.test_exactly_equal_ints}s6=	0	0A&&q!Q////	0	0rc>dD]}||dddS)N)gzG?g/$?ge@g7@gpf@g!rhQ@gB`"KB@rrrJrs  rtest_exactly_equal_floatsz.ApproxEqualExactTest.test_exactly_equal_floatss6E	0	0A&&q!Q////	0	0rc	t}|dd|d|dd|dd|dd	|ddfD]}||dddS)
Nr
rrr	#$)rrrJFfs   rtest_exactly_equal_fractionsz1ApproxEqualExactTest.test_exactly_equal_fractionss!Aq''11Q441a!!Aq''11R99aa1ggF	0	0A&&q!Q////	0	0rct}t|dD]}||dddS)Nz8.2 31.274 912.04 16.745 1.2047r)rmapsplitr)rJDds   rtest_exactly_equal_decimalsz0ApproxEqualExactTest.test_exactly_equal_decimalssRQ9??AABB	0	0A&&q!Q////	0	0rcdD]Z}||dd||dzddt|d}||dd[dS)N)ii\ii{Gz?r
i)rr)rJrrs   rtest_exactly_equal_absolutez0ApproxEqualExactTest.test_exactly_equal_absolutesy/	3	3A&&q$222&&qtT1555D!!A&&q$2222	3	3rc|tdtdd|tdtdddS)Nz3.5710.01rz81.3971)rrrvs r$test_exactly_equal_absolute_decimalsz9ApproxEqualExactTest.test_exactly_equal_absolute_decimalssW""77#3#3WV__aHHH""GI$6$6#6KKKKKrcdddtddfD]}||dd|tddtd	dS)
Ni g33333SY@gzGrrrz11.68rrrrrs  rtest_exactly_equal_relativez0ApproxEqualExactTest.test_exactly_equal_relativesix!R9	3	3A&&q!T2222""77#3#3QHHHHHrcdddtddfD]}||ddt}||d|d	|d
dS)Ni9gˡE0@g\(hr皙?rz7.2z0.1rr)rJrrs   rtest_exactly_equal_bothz,ApproxEqualExactTest.test_exactly_equal_bothsx(1a..9	5	5A&&q#t4444""11U88QQuXXqqyyAAAAArN)r7r8r9rrrrrrrrrr;rrrrqsBBB000
000
000000	3	3	3LLL
IIIBBBBBrrc,eZdZdZdZdZdZdZdS)ApproxEqualUnequalTestct||fD]1}t||dzdd}||d|z2dS)Nr
rrzinequality failure for x=%r)r4assertFalse)rJrrrs    rdo_exactly_unequal_testz.ApproxEqualUnequalTest.do_exactly_unequal_tests^aR	H	HA!!QqSaQ777FV%BQ%FGGGG	H	Hrc:dD]}||dS)N)iiiiiXCrrs  rtest_exactly_unequal_intsz0ApproxEqualUnequalTest.test_exactly_unequal_intss2/	,	,A((++++	,	,rc:dD]}||dS)N)gQ#@g[@gfffffG@gףp=
W"@g=
ףp=1@rrs  rtest_exactly_unequal_floatsz2ApproxEqualUnequalTest.test_exactly_unequal_floatss23	,	,A((++++	,	,rct}|dd|dd|dd|ddfD]}||dS)	Nr
rrreiς)rrrs   rtest_exactly_unequal_fractionsz5ApproxEqualUnequalTest.test_exactly_unequal_fractionssh!Aq''11Q77AAb"IIqqe}}=	,	,A((++++	,	,rcttdD]}||dS)Nz!3.1415 298.12 3.47 18.996 0.00245)rrrrrJrs  rtest_exactly_unequal_decimalsz4ApproxEqualUnequalTest.test_exactly_unequal_decimalssIWAGGIIJJ	,	,A((++++	,	,rN)r7r8r9rrrrrr;rrrrsbHHH
,,,
,,,
,,,,,,,,rrcneZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdS)ApproxEqualInexactTestc	d}||z||z
fD]l}|||}|t||d|zd||t|||dzd|mdS)NTest failure for x={!r}, y={!r}rrrrrr4rrJrrrnr/r]s      rdo_approx_equal_abs_testz/ApproxEqualInexactTest.do_approx_equal_abs_tests4e)QY'	J	JA//!Q''COOLA1U7BBBCHHH\!QE!GCCCSIIII	J	JrchdD].}||d||d/dS)N)iiIirrr
r%ii&i6jrrrrs  rtest_approx_equal_absolute_intsz6ApproxEqualInexactTest.test_approx_equal_absolute_intssJJ	0	0A))!R000))!Q////	0	0rcdD]D}||d||d||dEdS)N)	gtqgfffffFXg333333g333333??g333333@gQ@gҭ@?r-C6?rrs  r!test_approx_equal_absolute_floatsz8ApproxEqualInexactTest.test_approx_equal_absolute_floatss`L	5	5A))!S111))!T222))!V4444	5	5rctdd}gd}d|DD];}|||||t|<dS)Nr
)irrurr
rr{"Gc36K|]}t|dVdS)rNr).0rs  r	<genexpr>zNApproxEqualInexactTest.test_approx_equal_absolute_fractions.<locals>.<genexpr>s*66a(1b//666666r)rrr)rJr
numeratorsrs    r$test_approx_equal_absolute_fractionsz;ApproxEqualInexactTest.test_approx_equal_absolute_fractionssvB@@@
66:666	;	;A))!U333))!U5\\::::	;	;rctd}ttdD]/}||||||0dS)Nrz1.0 3.5 36.08 61.79 7912.3648)rrrr)rJrrs   r#test_approx_equal_absolute_decimalsz:ApproxEqualInexactTest.test_approx_equal_absolute_decimalssnW=CCEEFF	5	5A))!U333))1"e4444	5	5rcR|tdddddS)Ngh㈵>gh㈵rrr)rr4rvs rtest_cross_zeroz&ApproxEqualInexactTest.test_cross_zeros+T5dBBBCCCCCrc
d}|d|zz|d|z
zfD]l}|||}|t||dd|z||t||d|dz|mdS)Nrr
rrrrrs      rdo_approx_equal_rel_testz/ApproxEqualInexactTest.do_approx_equal_rel_tests4QuW+q!E'{+	J	JA//!Q''COOLA1!E'BBBCHHH\!QA57CCCSIIII	J	Jrc|tdddd|tdddd|tdddd	|td
ddd	|tdddd	dS)N@/rg
ףp=
?rgGz?ii?ii)rr4rrvs rtest_approx_equal_relative_intsz6ApproxEqualInexactTest.test_approx_equal_relative_intssR===>>>R===>>>S#1%@@@AAAS#1%@@@AAAc3A5AAABBBBBrchdD].}||d||d/dS)N)g{GJf皙rrg\(|B@gʡE>@gx@{Gz?r)rrs  r!test_approx_equal_relative_floatsz8ApproxEqualInexactTest.test_approx_equal_relative_floatssJE	5	5A))!T222))!V4444	5	5rct}tdd}|dd|dd|dd|dd	fD]C}|t|fD]/}||||||0DdS)
NrrTr{12\U)rrr)rJrrrrs     r$test_approx_equal_relative_fractionsz;ApproxEqualInexactTest.test_approx_equal_relative_fractionssA!Ar((AAb"IIqqRyy!!B))<	5	5AU5\\*
5
5--a333--qb!4444
5	5	5rcttdD]I}||td||tdJdS)Nz$0.02 1.0 5.7 13.67 94.138 91027.93210.0010.05)rrrrrs  r#test_approx_equal_relative_decimalsz:ApproxEqualInexactTest.test_approx_equal_relative_decimalssqWDJJLLMM	?	?A))!WW-=-=>>>))1"gfoo>>>>	?	?rc|r|jn|j}|t|||d|r|jn|j}|t||d||s|r|jn|j}|t||||dS)Nrr)rrr4)rJrrr0r1tol_flagrel_flagr^s        r
do_check_bothz$ApproxEqualInexactTest.do_check_both,s#+A1A
l1aSa000111#+A1A
l1aQC000111$,OOt?O
l1aSc22233333rcn|dddddd|dddd	dddS)
NR@+@Mbp?W8?Tg?5^Ig%CMb`?g-C6*?rrvs rtest_approx_equal_both1z.ApproxEqualInexactTest.test_approx_equal_both14sD5%dCCC665&$EEEEErc:|dddddddS)NrrrgVF?8?TFrrvs rtest_approx_equal_both2z.ApproxEqualInexactTest.test_approx_equal_both29s&5%eDDDDDrc:|dddddddS)NrrMbP?rFTrrvs rtest_approx_equal_both3z.ApproxEqualInexactTest.test_approx_equal_both3=s&5%tDDDDDrcn|dddddd|dddd	dddS)
Ng=
ףp=@@rrFgQ[@g(\[@rgiUMu>rrvs rtest_approx_equal_both4z.ApproxEqualInexactTest.test_approx_equal_both4AsD4tUE5AAA664ueDDDDDrN)r7r8r9rrrrrrrrrrrrrrr r#r;rrrrsJJJ000555;;;555DDDJJJCCC555555???444FFF
EEEEEEEEEEErrc&eZdZdZdZdZdZdS)ApproxEqualSpecialsTestc	ttfD]}|d}|t|||t||dd|t||dd|t|||t|||t|ddS)Nr!rr
r)rrrr4r)rJrr!s   rtest_infz ApproxEqualSpecialsTest.test_infJsW%	6	6E%,,COOLc22333OOLc1a88999OOLc1d;;<<<OOL#t44555\#t44555\#t445555	6	6rcttfD]A}|d}||ddfD]%}|t||&BdS)Nnanr!r')rrrr4)rJrr*others    rtest_nanz ApproxEqualSpecialsTest.test_nanTsqW%	;	;E%,,CuuU||T2
;
;  c5!9!9::::
;	;	;rc|tjdd}|t|ddddS)Nrtrurr)rrrr4rJnzeros  rtest_float_zeroesz)ApproxEqualSpecialsTest.test_float_zeroesZs<
c2&&UCScBBBCCCCCrctd}|t|tddddS)Nz-0.0rrr)rrr4r.s  rtest_decimal_zeroesz+ApproxEqualSpecialsTest.test_decimal_zeroes^s<UGAJJCSIIIJJJJJrN)r7r8r9r(r,r0r2r;rrr%r%GsX666;;;DDDKKKKKrr%ceZdZdZdZdS)TestApproxEqualErrorscN|ttdddddS)NrrurassertRaisesr-r4rvs rtest_bad_tolz"TestApproxEqualErrors.test_bad_tolfs&*lCb#FFFFFrcN|ttdddddS)Nrr
rr6rvs rtest_bad_relz"TestApproxEqualErrors.test_bad_reljs&*lCaFFFFFrN)r7r8r9r8r:r;rrr4r4cs:GGGGGGGGrr4c,eZdZdZdZdZdZdZdS)TestNumericTestCasecltj|}|j|}|D]}|||dSrj)rTrkgenerate_substringsassertIn)rJr
actual_msgr%	substrings     rdo_testzTestNumericTestCase.do_testzsN$6=
+4+T2!	1	1IMM)Z0000	1	1rcj|tttjdSrj)r
issubclassrTrQTestCaservs r test_numerictestcase_is_testcasez4TestNumericTestCase.test_numerictestcase_is_testcases'
?H4EFFGGGGGrc4d}||dS)N)@@r?NrBrJrs  rtest_error_msg_numericz*TestNumericTestCase.test_error_msg_numerics*Trc4d}||dS)N)@g @g?rrrKrLs  rtest_error_msg_sequencez+TestNumericTestCase.test_error_msg_sequences)Trct||\}}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_substringssb'v6633%/%/	
?2S8999rN)r7r8r9rBrFrMrPr>r;rrr<r<tsb111HHH

rr<c&eZdZeZddgZdZdZdS)GlobalsTestr:__all__cr|jD].}|t|j|d|z/dS)Nz%s not present)expected_metadatarhasattrmodule)rJmetas  r	test_metazGlobalsTest.test_metasO*	5	5DOOGDK66,t3
5
5
5
5	5	5rc|j}|jD]U}||dd|z|t||d|zVdS)N_zprivate name "%s" in __all__zmissing name "%s" in __all__)rZrVr
startswithrrY)rJrZnames   rtest_check_allzGlobalsTest.test_check_allsN	C	CDT__S11;dB
D
D
D
OOGFD11:TA
C
C
C
C	C	CrN)r7r8r9r<rZrXr\rar;rrrUrUsG
F"I.555	C	C	C	C	CrrUc^eZdZejejjdkddZdS)DocTestsrz)Docstrings are omitted with -OO and abovectjttj\}}||d||ddS)N)optionflagsr)doctesttestmodr<ELLIPSIS
assertGreaterrF)rJfailedtrieds   rtest_doc_testszDocTests.test_doc_testssQ 
@PQQQ
5!$$$#####rN)	r7r8r9rQskipIfsysflagsoptimizerlr;rrrcrcsQX_SY'1,@BB$$BB$$$rrcceZdZdZdS)StatisticsErrorTestcd}|ttd|ttjt
|tjjzdS)NzNExpected StatisticsError to be a ValueError, but got a subclass of %r instead.StatisticsError)rrYr<rDrtr-__base__)rJerrmsgs  rtest_has_exceptionz&StatisticsErrorTest.test_has_exceptionsi+		

,=>>???:5zBB3<<					rN)r7r8r9rwr;rrrrrrs#					rrrc8eZdZdZdZdZdZdZdZdZ	dS)	ExactRatioTestcddD],}|tj||df-dS)N)irrcl Fx:^Vr
)rFr<_exact_ratio)rJrgs  rtest_intzExactRatioTest.test_intsG,	A	AAZ4Q77!Q@@@@	A	Arcd}|D]<}t|d}|tj||df=dS)N)r
r&r)rrFr<r})rJrrrs    r
test_fractionzExactRatioTest.test_fractionsY$
	B	BABAZ4Q77!RAAAA	B	BrcB|tjdd|tjdddtdD}|D]2}tj|\}}||||z3dS)Nrr
r?)rrc8g|]}tjddS)rrandomuniformrr^s  r
<listcomp>z-ExactRatioTest.test_float.<locals>.<listcomp>s$>>>atS))>>>rr)rFr<r}range)rJdatarnumdens     r
test_floatzExactRatioTest.test_floats077@@@077@@@>>5::>>>	)	)A!.q11HCQC((((	)	)rct}tj}|||dd|||dd|||dddS)Nz0.125rz12.345)i	z-1.98)ir)rr<r}rF)rJrr}s   rtest_decimalzExactRatioTest.test_decimals!.aajj116:::aakk22K@@@aajj119=====rctd}Gddt}Gddt}||fD]}t|t|fD]}||}tj|}|||df|t|d||tj|ddS)NINFceZdZdS)(ExactRatioTest.test_inf.<locals>.MyFloatNr7r8r9r;rrMyFloatrDrrceZdZdS)*ExactRatioTest.test_inf.<locals>.MyDecimalNrr;rr	MyDecimalrrrrr)	rrr<r}rFrrrr.)rJrrrr!rrratios        rr(zExactRatioTest.test_infsEll					e											#;	6	6C'9=
6
6E#JJ"/22  D	222  eAh777
58 4 45555
6	6	6rctd}Gddt}|||fD]}tj|}|t	j|d||dd|t|dt|dS)NNANceZdZdS).ExactRatioTest.test_float_nan.<locals>.MyFloatNrr;rrrrrrrrr
)	rr<r}rrrassertIsrFr)rJrrr*rs     rtest_float_nanzExactRatioTest.test_float_nansEll					e			&	8	8C+C00EOODJuQx00111MM%(D)))T%(^^T#YY7777		8	8rctd}td}Gddt}||||||fD]}tj|}|t	|d|||dd|t|dt|dS)NrsNANceZdZdS)2ExactRatioTest.test_decimal_nan.<locals>.MyDecimalNrr;rrrrrrrrr
)rr<r}rrrrFr)rJrrrr*rs      rtest_decimal_nanzExactRatioTest.test_decimal_nansennv								3yy?	8	8C+C00EOOJuQx55666MM%(D)))T%(^^T#YY7777		8	8rN)
r7r8r9r~rrrr(rrr;rrryrysAAABBB)))>>>666888	8	8	8	8	8rryc2eZdZdZdZdZdZdZdZdS)DecimalToRatioTestctd}|tj||df|tj||dfdS)Nr)rrFr<r})rJr!s  r
test_infinityz DecimalToRatioTest.test_infinitysaenn055T{CCC0#66#tEEEEErctdtdfD]R}tj|\}}|t	||||dSdS)Nrr)rr<r}rrr)rJr*rrs    rr,zDecimalToRatioTest.test_nansuENNGFOO4	%	%C!.s33HC
OOJsC00111MM#t$$$$
	%	%rcZtdtdg}|D]}tj|\}}||d||dtj|\}}||d||ddS)Nz	9.8765e12z
9.8765e-12r)rr<r}assertGreaterEqualriassertLessEqual)rJnumbersrrrs     r	test_signzDecimalToRatioTest.test_sign!s;'')>)>?		'		'A".q11HC##C+++sA&&&!.r22HC  a(((sA&&&&		'		'rcttjtd}||ddS)Nz0.1234)iir<r}rrFrJts  rtest_negative_exponentz)DecimalToRatioTest.test_negative_exponent/s6#GH$5$566K(((((rcttjtd}||ddS)Nz1.234e7)i Kr
rrs  rtest_positive_exponentz)DecimalToRatioTest.test_positive_exponent4s6#GI$6$677M*****rctjtd}||dtjtd}||ddS)N1e2)rr
z1.47e5)i8>r
rrs  rtest_regression_20536z(DecimalToRatioTest.test_regression_205369sd
#GENN33H%%%#GH$5$566K(((((rN)	r7r8r9rr,rrrrr;rrrrsqFFF%%%''')))
+++
)))))rrc eZdZdZdZdZdS)IsFiniteTestcdtdddtdfD])}|tj|*dS)Nrr
rrH5.5)rrrr<	_isfiniters  rtest_finitezIsFiniteTest.test_finiteEsRXa^^S'%..9	5	5AOOJ0334444	5	5rctdtdfD])}|tj|*dSNr!rrrr<rrs  rrzIsFiniteTest.test_infinityJsN,,/	6	6AZ1!445555	6	6rctdtdtdfD])}|tj|*dSNr*rrrrs  rr,zIsFiniteTest.test_nanOsV,,@	6	6AZ1!445555	6	6rN)r7r8r9rrr,r;rrrrBsA555
666
66666rrcPeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dS)
CoerceTestcttttfD]l}|tj|t|Gdd|}|tj|t|mdS)NceZdZdS)%CoerceTest.test_bool.<locals>.MyClassNrr;rrMyClassrprr)rrrrrr<_coercebool)rJTrs   r	test_boolzCoerceTest.test_booljsuh0	F	FAMM*,Q55q999"""""!"""MM*,Wd;;WEEEE	F	Frc|tj||||tj|||dS)z Assert that type A coerces to B.N)rr<rrJABs   rassertCoerceTozCoerceTest.assertCoerceTossJ

j(A..222

j(A..22222rc|||Gdd|}|||Gdd|}||||||dS)z6Checks that type A coerces to B, including subclasses.ceZdZdS)/CoerceTest.check_coerce_to.<locals>.SubclassOfANrr;rrSubclassOfAr}rrrceZdZdS)/CoerceTest.check_coerce_to.<locals>.SubclassOfBNrr;rrSubclassOfBrrrrN)r)rJrrrrs     rcheck_coerce_tozCoerceTest.check_coerce_toxs	
Aq!!!"""""!"""K+++"""""!"""A{+++K55555rc|ttj||f|ttj||fdS)z=Assert that coercing A to B, or vice versa, raises TypeError.N)r7	TypeErrorr<rrs   rassertCoerceRaiseszCoerceTest.assertCoerceRaisessF)Z%7!Q@@@)Z%7!Q@@@@@rcl|tj|||Gdd|}Gdd|}Gdd|}|||fD]}||||||||||||dS)z>Check that type T coerces correctly with subclasses of itself.ceZdZdS)*CoerceTest.check_type_coercions.<locals>.UNrr;rrUrrrrceZdZdS)*CoerceTest.check_type_coercions.<locals>.VNrr;rrVrrrrceZdZdS)*CoerceTest.check_type_coercions.<locals>.WNrr;rrWrrrrN)rr<rrr)rJrrrrtyps      rcheck_type_coercionszCoerceTest.check_type_coercionss	


j(A..222q!9	(	(C3''''Aq!!!1%%%1%%%%%rc|ttttfD]}|t|dSrj)rrrrrr)rJrs  rr~zCoerceTest.test_intsO!!#&&&8W-	+	+C  c****	+	+rcz|t|ttdSrj)rrrrrvs rrzCoerceTest.test_fractions2!!(+++Xu-----rc:|tdSrj)rrrvs rrzCoerceTest.test_decimals!!'*****rc:|tdSrj)rrrvs rrzCoerceTest.test_floats!!%(((((rctttdttfD]5}t
tttfD]}|	||6dSrj)
strlistrtupledictrrrrr)rJbad_type	good_types   rtest_non_numeric_typesz!CoerceTest.test_non_numeric_typessbdDJJt<	=	=H!5(G<
=
=	''	8<<<<
=	=	=rcttfD]F}Gdd|}||t||tGdS)NceZdZdS)6CoerceTest.test_incompatible_types.<locals>.MySubclassNrr;rr
MySubclassrrrr)rrrr)rJrrs   rtest_incompatible_typesz"CoerceTest.test_incompatible_typessi"	9	9A%%%%%Q%%%##Aw///##J8888	9	9rN)r7r8r9rrrrrr~rrrrrr;rrrrUs*FFF333

6
6
6AAA
&&& +++...
+++)))===
99999rrc>eZdZdZdZdZdZdZdZdZ	dZ
d	S)
ConvertTestc||||t|t|dS)z5Check that x equals y, and has the same type as well.N)rFrrrJrr/s   rcheck_exact_equalzConvertTest.check_exact_equals>A

d1ggtAww'''''rc(tjtdt}||dGddt}tjtd|}|||ddS)NrceZdZdS)#ConvertTest.test_int.<locals>.MyIntNrr;rrMyIntr
rrrr{)r<_convertrrr)rJrrs   rr~zConvertTest.test_intsc22q"%%%Ce44q%%)),,,,,rcJtjtddt}||tddGddt}tjtdd|}|||dddS)N_r|ceZdZfdZxZS)-ConvertTest.test_fraction.<locals>.MyFractioncl|t|Srj	__class__super__truediv__rJr+rs  rrz9ConvertTest.test_fraction.<locals>.MyFraction.__truediv__'~~egg&9&9%&@&@AAArr7r8r9r
__classcell__rs@r
MyFractionrA
B
B
B
B
B
B
B
B
Brrr
)r<rrr)rJrrs   rrzConvertTest.test_fractionsR 0 0(;;q(2r"2"2333	B	B	B	B	B	B	B	B
R 0 0*==q**R"4"455555rc,tjtddt}||dGddt}tjtdd|}|||ddS)	NrurgceZdZfdZxZS)'ConvertTest.test_float.<locals>.MyFloatcl|t|Srjrrs  rrz3ConvertTest.test_float.<locals>.MyFloat.__truediv__rrrrs@rrr rrrrrr)r<rrrr)rJrrs   rrzConvertTest.test_floatsQ77q$'''	B	B	B	B	Be	B	B	B
A88q''%..11111rcFtjtddt}||tdGddt}tjtdd|}|||ddS)	Nr
(z0.025ceZdZfdZxZS)+ConvertTest.test_decimal.<locals>.MyDecimalcl|t|Srjrrs  rrz7ConvertTest.test_decimal.<locals>.MyDecimal.__truediv__rrrrs@rrr%rrrrrz-0.9375)r<rrrr)rJrrs   rrzConvertTest.test_decimalsB99q''"2"2333	B	B	B	B	B	B	B	B
b 1 19==q))I"6"677777rctdtdfD]B}||fD]:}tj|t	|}|||;CdSr)rrr<rrr)rJrr!rs    rr(zConvertTest.test_infsw%LL'%..1	/	/CcT{
/
/'T#YY77&&q#....
/	/	/rctdtdtdfD]G}tj|t	|}|t
||HdSr)rrr<rrrr)rJr*rs   rr,zConvertTest.test_nansk%LL'%..'&//B	0	0C#Cc33AOOJq#..////	0	0rc|t5tjdtddddS#1swxYwYdSrj)r7rr<rrrvs rtest_invalid_input_typez#ConvertTest.test_invalid_input_types


y
)
)	-	-e,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-sAA
AN)r7r8r9rr~rrrr(r,r*r;rrrrs(((
---666222888///000
-----rrc$eZdZdZdZdZdZdS)FailNegTestz Test _fail_neg private function.cddtdtdg}ttj|}|||dSNr
@rr)rrrr<	_fail_negrF)rJvaluesnews   rtest_pass_throughzFailNegTest.test_pass_throughsPS(1++wqzz2:'//00%%%%%rcddtdtdfD]@}|g}tj|}|tjt|AdSr.)rrr<r0r7rtnext)rJrseqits    rtest_negatives_raisez FailNegTest.test_negatives_raiseskS(1++wqzz2	D	DA2$C%c**Bj8$CCCC	D	Drc(dtjddz}	ttjdg||dn)#tj$r}|jd}Yd}~nd}~wwxYw|||dS)Nzbadness #%d'iruz(expected exception, but it didn't happenr)	rrandintr5r<r0failrtrrF)rJr]rhrvs    rtest_error_msgzFailNegTest.test_error_msgsfnUE:::	B%rdC00111
II@AAAA)			VAYFFFFFF		
%%%%%s#AA9"
A44A9N)r7r8r9r:r3r8r=r;rrr,r,sJ**&&&DDD	&	&	&	&	&rr,cJeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)UnivariateCommonMixincF|t|jdSrjr7rfuncrvs rtest_no_argsz"UnivariateCommonMixin.test_no_argss )TY/////rc|gdtgfD](}|tj|j|)dS)Nr;)iterr7r<rtrB)rJemptys  rtest_empty_dataz%UnivariateCommonMixin.test_empty_datasL"d2hh'	L	LEj8$)UKKKK	L	Lrcttd}|t|kr'tj||t|k'|S)z"Return int data for various tests.rrrsortedrshufflerJrs  rprepare_dataz"UnivariateCommonMixin.prepare_data!sLE"IIfTll""N4   fTll""rc|}|dd}||}|||ddS)Nzdata has been modified)rMrBassertListEqual)rJrsavedr^s    rtest_no_inplace_modificationsz3UnivariateCommonMixin.test_no_inplace_modifications(sP  ""QQQIIdOOT5*BCCCCCrcgddz}||}tj|||}|||dS)N)r
rrrrrrr)rBrrKrFrJrr%r$s    rtest_order_doesnt_matterz.UnivariateCommonMixin.test_order_doesnt_matter2s^(''+99T??t46*****rcFGddt}Gddt}d}|}||}ttt|||fD]6}|||}|||7dS)NceZdZdS)BUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyListNrr;rrMyListrXArrrYceZdZdS)CUnivariateCommonMixin.test_type_of_data_collection.<locals>.MyTupleNrr;rrMyTupler[Crrr\cd|DS)Nc3K|]}|VdSrjr;)robjs  rrzXUnivariateCommonMixin.test_type_of_data_collection.<locals>.generator.<locals>.<genexpr>Fs"((CC((((((rr;rs r	generatorzEUnivariateCommonMixin.test_type_of_data_collection.<locals>.generatorEs((4((((r)rrrMrBrErF)rJrYr\rarr%kindrs        rtest_type_of_data_collectionz2UnivariateCommonMixin.test_type_of_data_collection?s					T								e				)	)	)  ""99T??5$C	/	/DYYttDzz**FVX....	/	/rctddd}|t|}||||dSNrr)rrBrrFrJrr%s   rtest_range_dataz%UnivariateCommonMixin.test_range_dataMsPRQ99T$ZZ((4(33333rc|d|d|d|tdS)NrgE@)check_for_type_errorobjectrvs rtest_bad_arg_typesz(UnivariateCommonMixin.test_bad_arg_typesSs^	
!!$'''!!"%%%!!$'''!!&((+++++rc8|jt|jg|RdSrjrArLs  rrjz*UnivariateCommonMixin.check_for_type_errorbs')TY6666666rcNGddt}|}||}t|ttfD]Qfd|D}t|||}|||RdS)Nc,eZdZfdZfdZeZxZS)@UnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloatcrt|t|Srjrrrrs  rrzLUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__truediv__j+!tDzz%''"5"5e"<"<===rcrt|t|Srjrr__add__rs  rrvzHUnivariateCommonMixin.test_type_of_data_element.<locals>.MyFloat.__add__l)!tDzz%''//%"8"8999r)r7r8r9rrv__radd__rrs@rrrpisJ
>
>
>
>
>
:
:
:
:
:HHHHHrrc&g|]
}|Sr;r;rrrbs  rrzCUnivariateCommonMixin.test_type_of_data_element.<locals>.<listcomp>ss!)))DDGG)))r)rrMrBrrrrF)rJrrawr%rrrbs      @rtest_type_of_data_elementz/UnivariateCommonMixin.test_type_of_data_elementes					e			!!99S>>GWh7	/	/D))))S)))D#T(^^DIIdOO44FVX....	/	/rN)
r7r8r9rCrGrMrQrUrcrhrlrjr|r;rrr?r?s000LLL
DDD+++///444
,
,
,777/////rr?ceZdZdZdZdZdS)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.
    cRGddt}ttt|fS)z4Return the types which are expected to be conserved.cbeZdZfdZfdZfdZfdZfdZfdZeZ	fdZ
e
ZxZS)HUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloatcrt|t|Srjrrrs  rrzTUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__truediv__rsrcrt|t|Srj)rr__rtruediv__rs  rrzUUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rtruediv__s+!tDzz%''"6"6u"="=>>>rcrt|t|Srj)rr__sub__rs  rrzPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__sub__rwrcrt|t|Srj)rr__rsub__rs  rrzQUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__rsub__s+!tDzz%''"2"25"9"9:::rcrt|t|Srj)rr__pow__rs  rrzPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__pow__rwrcrt|t|Srjrurs  rrvzPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__add__rwrcrt|t|Srj)rr__mul__rs  rrzPUnivariateTypeMixin.prepare_types_for_conservation_test.<locals>.MyFloat.__mul__rwr)
r7r8r9rrrrrrvrxr__rmul__rrs@rrrs
>
>
>
>
>
?
?
?
?
?
:
:
:
:
:
;
;
;
;
;
:
:
:
:
:
:
:
:
:
:H
:
:
:
:
:HHHHHrr)rrr)rJrs  r#prepare_types_for_conservation_testz7UnivariateTypeMixin.prepare_types_for_conservation_tests=					e			"w'22rc|}|D]Hfd|D}||}|t	|IdS)Nc&g|]
}|Sr;r;rzs  rrz<UnivariateTypeMixin.test_types_conserved.<locals>.<listcomp>s!'''Qa'''r)rMrrBrr)rJrrrrbs    @rtest_types_conservedz(UnivariateTypeMixin.test_types_conserveds  ""<<>>	.	.D''''$'''AYYq\\FMM$v,,----	.	.rN)r7r8r9r:rrr;rrr~r~xs<333*.....rr~ceZdZdZdS)
TestSumCommoncd}||_dS)NcPtj|\}}}tj||Srj)r<_sumr)rrvaluers    rsimplified_sumz+TestSumCommon.setUp.<locals>.simplified_sums'$/40KAua%eQ///r)rB)rJrs  rsetUpzTestSumCommon.setUps	0	0	0#			rN)r7r8r9rr;rrrrs#
#####rrcJeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)TestSumc(tj|_dSrj)r<rrBrvs rrz
TestSum.setUpO			rcgdtgfD]@}|||tt	ddfAdS)Nr;r)rErFrBrrrLs  rrGzTestSum.test_empty_datas\T"XX&	E	EDTYYt__sHQKK.CDDDD	E	Erc||gdttddfdS)N)r
rrirfrr
<r)rFrBrrrvs r	test_intszTestSum.test_intssI#?#?#?@@x||Q/	1	1	1	1	1rc||dgdzttddfdS)NrJrf@)rFrBrrrvs rtest_floatszTestSum.test_floatssHD6"9--#3	5	5	5	5	5rc||tddgdzttdddfdS)Nr
r'r)rFrBrrvs rtest_fractionszTestSum.test_fractionssVHQ$5$5#6s#:;;"HQNNC8	:	:	:	:	:rc
4t}|d|d|d|d|d|d|d|dg}|||ttd	d
fdS)Nr
z5.246z1.702z-0.025z3.974z2.328z4.617z2.843z20.686r)rrFrBrJrrs   r
test_decimalszTestSum.test_decimalss'

AAgJJ'

AAhKK'

AAgJJ'

AAgJJ	
4!78#4#4a8	:	:	:	:	:rcdtdD}|t||dt	j|ddS)Nc8g|]}tjddS)rr'rrs  rrz7TestSum.test_compare_with_math_fsum.<locals>.<listcomp>s$@@@qtT**@@@rr'r
gؗҬ<r1)rr_rrBrfsumrLs  rtest_compare_with_math_fsumz#TestSum.test_compare_with_math_fsums^A@E$KK@@@uTYYt__Q%788$)D//uUUUUUrc|t|jgdd|t|jgddS)Nr
rr999)r
rrrrArvs rtest_strings_failzTestSum.test_strings_failsI)TY			5AAA)TY0@0@0@AAAAArc|t|jgdd|t|jgddS)Nr999)r
rrrrArvs rtest_bytes_failzTestSum.test_bytes_failsI)TY			6BBB)TY0A0A0ABBBBBrc	|t|jddtdg|t|jddgtddS)Nr
r/)r7rrBrrvs rtest_mixed_sumzTestSum.test_mixed_sumsW	
)TYC0DEEE)TYC'!**EEEEErN)
r7r8r9rrGrrrrrrrrr;rrrrs
$$$EEE
111555::::::VVVBBB
CCC
FFFFFrrceZdZdZdS)SumTortureTestc|tjgddztt	ddf|tjgddztt	ddftjgddz\}}}||t||d|t|dd	dS)
N)r
}Ô%ITr
}Ô%Ir:g@i@)rr
r
r)0.++r
rrug^,gV瞯<r)rFr<rrrrr_)rJrrcounts    rtest_torturezSumTortureTest.test_tortures)>)>)>u)DEE'!2!2E:	<	<	<)>)>)>u)DEE'!2!2E:	<	<	<"(?(?(?(EFF
3

a&&&uSzz7>>>>>rN)r7r8r9rr;rrrrs#	?	?	?	?	?rrcDeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
S)SumSpecialValuescttfD]t}|d}tjd|dgd}|t|||tj|udS)Nr*r
r)	rrr<rrrrrr)rJrr*rs    rr,zSumSpecialValues.test_nansW%	0	0E%,,C_aa[11!4FMM$v,,...OODJv..////		0	0rc|tj||t	|t	|||dk|dkdS)z8Check x is an infinity of the same type and sign as inf.rN)rrr.rrrF)rJrr!s   rcheck_infinityzSumSpecialValues.check_infinitys`
1

&&&

d1ggtCyy)))Qa(((((rctjdd|dgd}|||tjdd|d|dgd}|||dS)Nr
rrr)r<rrrJr!rs   rdo_test_infzSumSpecialValues.do_test_infsq!QQ003FC(((!QQQ!788;FC(((((rc^td}dD]}|||zdSNr!r
ru)rrrJr!rs   rtest_float_infzSumSpecialValues.test_float_infsAEll	'	'DT#X&&&&	'	'rc^td}dD]}|||zdSr)rrrs   rtest_decimal_infz!SumSpecialValues.test_decimal_infsAenn	'	'DT#X&&&&	'	'rctd}tjdd|d|dgd}|t	j|dSNr!r
rrr)rr<rrrrrs   rtest_float_mismatched_infsz+SumSpecialValues.test_float_mismatched_infssREll!QQa!899!<
6**+++++rc"td}dd|d|dg}tjtj5|tjtj|dddddS#1swxYwYdSr)	rdecimallocalcontextExtendedContextrrrr<rrJr!rs   r3test_decimal_extendedcontext_mismatched_infs_to_nanzDSumSpecialValues.test_decimal_extendedcontext_mismatched_infs_to_nansenn1c1sdA&

!'"9
:
:	B	BOODJzt'<'<Q'?@@AAA	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	BsABBBctd}dd|d|dg}tjtj5|tjtj|ddddS#1swxYwYdSr)rrrBasicContextr7InvalidOperationr<rrs   r0test_decimal_basiccontext_mismatched_infs_to_nanzASumSpecialValues.test_decimal_basiccontext_mismatched_infs_to_nan%senn1c1sdA&

!'"6
7
7	O	Og6
NNN	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	Os,A00A47A4ctd}d|dg}|tjtj|dS)Nrr
r)rr7rrr<r)rJrrs   rtest_decimal_snan_raisesz)SumSpecialValues.test_decimal_snan_raises,s;v4|'2JOTJJJJJrN)r7r8r9r,rrrrrrrrr;rrrrs000)))'''
'''
,,,BBBOOOKKKKKrrc eZdZdZdZdZdS)AverageMixincdddtddtdfD],}|||g|-dSNrg@E@gX_yCr}z0.28rrrFrBrs  rtest_single_valuezAverageMixin.test_single_value8s[dFHR$4$4gfooF	0	0ATYYs^^Q////	0	0rcFdddtddtdfS)N@r{7y!C=Cz4.9712rrrvs r'prepare_values_for_repeated_single_testz4AverageMixin.prepare_values_for_repeated_single_test=s%R"b!1!1783D3DEErc|D]e}dD]`}|||5|g|z}||||dddn#1swxYwYafdS)Nrrrrf)rr)rsubTestrFrBrJrrrs    rtest_repeated_single_valuez'AverageMixin.test_repeated_single_value@s==??	9	9A'
9
9\\AU\33993u9D$$TYYt__a888999999999999999
9	9	9s0A..A25A2N)r7r8r9rrrr;rrrr5sD000
FFF99999rrc\eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdS)TestMeanc(tj|_dSrj)r<meanrBrvs rrzTestMean.setUpJrrc\||gdddS)N)rr
rrr
rFrBrvs rtest_torture_pepzTestMean.test_torture_pepMs1#8#8#8991=====rcgd}tj||||ddS)N)rr
rrrrrrrrSrrrrrrg@@rrKrFrBrLs  rrzTestMean.test_intsQsC???t4&11111rcgd}tj||||ddS)N)g@1@g3@4@g5@g5@g@7@g 9@g;@g6@rrLs  rrzTestMean.test_floatsWsCEEEt4)44444rct}|d|d|d|d|dg}tj|||||ddS)Nz1.634z2.517z3.912z4.072z5.813z3.5896rrrKrFrBrs   rrzTestMean.test_decimals]s}'

AAgJJ'

AAgJJ'

Kt4!!H++66666rc
@t}|dd|dd|dd|dd|dd|dd|ddg}tj|||||d	d
dS)Nr
rrrrrSrriirrrKrFrBrJrrs   rrzTestMean.test_fractionsds!Q1a!!Aq''11Q77AAaGGQQq!WWaa1ggNt4!!D$--88888rcgd}ttfD]m}dD]h}|d|z}||gz}||}|t	j||||indS)Nr
rrrrrr!)rrrBrrr.rF)rJr{rbrr!rrs       rr(zTestMean.test_infksooG$	.	.D
.
.d5kk$&cU{4
6 2 2333  ----
.	.	.rc
dddtddddtdg}||}|tj|dS)	NrrrSr!r
rrz-inf)rrBrrrrJrrs   rtest_mismatched_infszTestMean.test_mismatched_infsvsU1auq!Qf

>4
6**+++++rcgd}ttfD]O}|d}||gz}||}|t	j|PdS)Nrr*)rrrBrrr)rJr{rbr!rrs      rr,zTestMean.test_nan|soooG$	0	0D$u++C#;DYYt__FOODJv..////		0	0rcdgd}||z}|fd|D}|||dS)NgeA	333333@@g@g@g333333@@g @g333333 @g"@cg|]}|zSr;r;rrcs  rrz*TestMean.test_big_data.<locals>.<listcomp>...AAaC...rrBrFrJrr%rrs    @r
test_big_datazTestMean.test_big_datasi<<<99T??Q&.......//*****rcdtdD}||}||dz}|||dS)Nc8g|]}tjddS)r{rrrs  rrz.TestMean.test_doubled_data.<locals>.<listcomp>$;;;!r1%%;;;rr'rrrBr_rTs    rtest_doubled_datazTestMean.test_doubled_datas[;;uT{{;;;99T??46""vx00000rcvtd}|tj|g|dS)N1e4)rrFr<rrs  rtest_regression_20561zTestMean.test_regression_20561s7
ENN!--q11111rc|tjddgdd}d}dD]Z}|tj|g|z||tj|g|z|[dS)Nggg)rrrr)rFr<r)rJbigtinyrs    rtest_regression_25177zTestMean.test_regression_25177s	

#%:;==!	#	#	#$	>	>AZ_cU1W55s;;;Z_dVAX66====	>	>rN)r7r8r9rrrrrrr(rr,rrrr!r;rrrrIs$$$>>>222555777999	.	.	.,,,000+++111222>>>>>rrcxeZdZdZfdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZxZS)TestHarmonicMeanc(tj|_dSrj)r<
harmonic_meanrBrvs rrzTestHarmonicMean.setUps,			rcrt}|d|S)Nr)rrMremove)rJr1rs  rrMzTestHarmonicMean.prepare_datas/%%''

a
rcFdddtddtdfS)Nrr{rrrz4.125rrvs rrz8TestHarmonicMean.prepare_values_for_repeated_single_tests%R"b!1!1773C3CDDrc`gd}|||ddS)N)r
rrrrrJr1s  r	test_zerozTestHarmonicMean.test_zeros36**A.....rctj}dggdfD]L}||5|||j|dddn#1swxYwYMdS)Nru)r
rr)r1)r<rtrr7rB)rJexcr1s   rtest_negative_errorz$TestHarmonicMean.test_negative_errors(tZZZ(	:	:FV,,
:
:!!#ty&999
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:	:	:sAA	A	cdggdgdgdfD]w}||5|t5||dddn#1swxYwYdddn#1swxYwYxdS)Nz3.14)123)r
r1r4r)gffffff@rr
z5.6r`)rr7rrBrLs  rtest_invalid_type_errorz(TestHarmonicMean.test_invalid_type_errors!HOO"""	
	$	$D4((
$
$&&y11$$IIdOOO$$$$$$$$$$$$$$$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
	$	$s5A:A#A:#A''A:*A'+A::A>	A>	cgd}tj||||ddS)N)rrrrrrg333333@rrLs  rrzTestHarmonicMean.test_intssC###t4%00000rcgd}tj||||d||gdddS)N)rrJrJrrrJ)rJrrrrrrLs  rtest_floats_exactz"TestHarmonicMean.test_floats_exactsl(((t4#...#8#8#8993?????rctddD],}|||g|-dS)Nr
rrrFrBrs  rtest_singleton_listsz%TestHarmonicMean.test_singleton_listssHq#	0	0ATYYs^^Q////	0	0rc
t}|||d|d|d|dg|d|d|d|d|dg}tj|||||d|d|d|d	|d
g}tj|||||ddzdS)
Nr}rrrz0.10z0.20z1.68z0.32z5.94z2.75iiC)rrFrBrrKrs   rtest_decimals_exactz$TestHarmonicMean.test_decimals_exacts0AAbEE11R55!!B%%2#?@@!!B%%HHH&		11V99aaii6;t4!!F))444&		11V99aaii6;t4!!E((5.99999rc
@t}|dd|dd|dd|dd|dd|dd|ddg}tj|||||d	d
dS)Nr
rrrrrSrri|irrs   rrzTestHarmonicMean.test_fractionss!Q1a!!Aq''11Q77AAaGGQQq!WWaa1ggNt4!!E4..99999rc|dtddg}|||ddS)Nr/r!r)rrFrBr*s  rr(zTestHarmonicMean.test_infs<uU||S)6**C00000rcdtddg}|tj||dS)Nr/r*r)rrrrrBr*s  rr,zTestHarmonicMean.test_nansBuU||S)
499V#4#45566666rcdgd}||z}|fd|D}|||dS)Norcg|]}|zSr;r;rs  rrz>TestHarmonicMean.test_multiply_data_points.<locals>.<listcomp>rrrrs    @rtest_multiply_data_pointsz*TestHarmonicMean.test_multiply_data_pointssi<<<99T??1$.......//*****rcdtdD}||}||dz}|||dS)Nc8g|]}tjddS)r
rrrs  rrz6TestHarmonicMean.test_doubled_data.<locals>.<listcomp>s$:::q!$$:::rr'rrrTs    rrz"TestHarmonicMean.test_doubled_datas[::eDkk:::99T??46""vx00000rc
t||ddgddgd||ddgddgd||tddgtddgd||tddtd	dtd
dggd|tddgdztd	dgdzztd
dgdzz||dgd
gd|t
5|gd
gddddn#1swxYwY|tj5|gd
ddgdddn#1swxYwY|tj5|dgdgdddn#1swxYwY|tj5|ddgddgddddS#1swxYwYdS)Nr#rrrgL@)weightsrrrrr)rrrr)r
r;rr
rrf)rFrBrErr7rr<rtrvs rtest_with_weightsz"TestHarmonicMean.test_with_weightssB8aW55t<<<B8,-r7#4459	;	;	;4R>>#'B==2237	9	9	9IIxAQ!QH***UUIIxA'!+A'!+,1~~&+,
-
-	.	.	.
	
B4!--r222


y
)
)	-	-IIiii,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-


z9
:
:	)	)IIiii!Q(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)


z9
:
:	!	!IIrdQC   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!


z9
:
:	(	(IIr2hA'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(sHF;;F?F?%HHH6II"IJ--J14J1)r7r8r9rrMrr+r.r4rr7r:r<rr(r,rCrrHrrs@rr#r#s---EEE///
:::
$
$
$111@@@000
	:	:	::::111
777
+++111(((((((rr#cHeZdZdZfdZdZdZdZdZdZ	dZ
xZS)	
TestMedianc(tj|_dSrjr<medianrBrvs rrzTestMedian.setUp$%			rct}t|dzdkr|d|S)+Overload method from UnivariateCommonMixin.rr
)rrMrarR)rJrrs  rrMzTestMedian.prepare_data'sAww##%%t99Q;!KKNNNrc`gd}|||ddS)Nr
rrrrrSrrrLs  rtest_even_intszTestMedian.test_even_ints.s3!!!4#.....rc`gd}|||ddS)N)r
rrrrrSrrrrLs  r
test_odd_intszTestMedian.test_odd_ints4s3$$$4!,,,,,rct}|dd|dd|dd|dd|ddg}tj|||||dddS)Nr
rrrrrrrs   rtest_odd_fractionszTestMedian.test_odd_fractions:s!Q1a!!Aq''11Q77AAaGG<t4!!Aq''22222rc	*t}|dd|dd|dd|dd|dd|ddg}tj|||||dddSNr
rrrrrrSrrs   rtest_even_fractionszTestMedian.test_even_fractionsB!Q1a!!Aq''11Q77AAaGGQQq!WWEt4!!Aq''22222rct}|d|d|d|d|dg}tj|||||ddS)N2.53.14.25.75.8rrs   rtest_odd_decimalszTestMedian.test_odd_decimalsJs}%!!E((AAeHHaahh%At4!!E((33333rct}|d|d|d|d|d|dg}tj|||||ddS)Nz1.2r]r^r_r`raz3.65rrs   rtest_even_decimalszTestMedian.test_even_decimalsRs%!!E((AAeHHaahh%!!E((Kt4!!F))44444r)r7r8r9rrMrSrUrWrZrbrdrrs@rrJrJ"s&&&///---3333334445555555rrJceZdZdZdZdS)TestMedianDataTypec(tj|_dSrjrLrvs rrzTestMedianDataType.setUp]rNrcttd}|t|kr'tj||t|k'|S)Nr}rIrLs  rrMzTestMedianDataType.prepare_data`sLE"IIfTll""N4   fTll""rN)r7r8r9rrMr;rrrfrf[s2&&&rrfc&eZdZdZdZdZdZdS)
TestMedianLowc(tj|_dSrj)r<
median_lowrBrvs rrzTestMedianLow.setUpis)			rc`gd}|||ddS)NrRrrrLs  rrSzTestMedianLow.test_even_intsl3!!!4!,,,,,rc	*t}|dd|dd|dd|dd|dd|ddg}tj|||||dddSrYrrs   rrZz!TestMedianLow.test_even_fractionsrr[rct}|d|d|d|d|d|dg}tj|||||ddSNz1.1z2.2z3.3z4.4rz6.6rrs   rrdz TestMedianLow.test_even_decimalsz%!!E((AAeHHaahh%!!E((Kt4!!E((33333rNr7r8r9rrSrZrdr;rrrjrjhsP***---33344444rrjc&eZdZdZdZdZdZdS)TestMedianHighc(tj|_dSrj)r<median_highrBrvs rrzTestMedianHigh.setUps*			rc`gd}|||ddS)NrRrrrLs  rrSzTestMedianHigh.test_even_intsrnrc	*t}|dd|dd|dd|dd|dd|ddg}tj|||||dddSrYrrs   rrZz"TestMedianHigh.test_even_fractionsr[rct}|d|d|d|d|d|dg}tj|||||ddSrqrrs   rrdz!TestMedianHigh.test_even_decimalsrrrNrsr;rrrurusP+++---33344444rrucPeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dS)
TestMedianGroupedc(tj|_dSrj)r<median_groupedrBrvs rrzTestMedianGrouped.setUps-			rcvgd}|||dgd}|||dgd}|||ddgd}|||d	d
ddS)
N)rrrrr}r}r)rrrrrrr}g+@)rrrr}rfrfrfrfrrrg`3@)rrrrrfrfrfrrrrg4@:0yE>r0rFrBr_rLs  rtest_odd_number_repeatedz*TestMedianGrouped.test_odd_number_repeateds+++4"---+++4&111:::4++V444KKKtyyq11;DIIIIIrcxgd}|||dddgd}|||ddgd}|||d	gd
}|||ddS)N)
rrrr}rfrfrfrrrrg*3@rr)rrrrrrg["8@)rrrrrrrrrrrSrSr
)
rrrrrrrrrSrS@)r_rBrFrLs  rtest_even_number_repeatedz+TestMedianGrouped.test_even_number_repeateds666tyyq11;DIII!!!tyy
EEE3334#...---4$/////rcdddtddtdfD]C}dD]>}|g|z}|||t	|?DdS)N333333@DgޗCrrz32.9714rrrrFrBrrs    rrz,TestMedianGrouped.test_repeated_single_valuesr68B#4#4gi6H6HI	<	<A'
<
<s5y  4%((;;;;
<	<	<rcdddtddtdfD]9}|||gt	|:dSrrrs  rrz#TestMedianGrouped.test_single_valuescdFHR$4$4gfooF	7	7ATYYs^^U1XX6666	7	7rct}|dd|dd|dd|dd|ddg}tj||||ddS)Nrrrrr{@rrs   rrWz$TestMedianGrouped.test_odd_fractionss!Q1a!!B((AAb!HHaaAhh?t4#.....rc	t}|dd|dd|dd|dd|dd|ddg}tj||||ddS)Nrrrrr{
@rrs   rrZz%TestMedianGrouped.test_even_fractionss!Q1a!!B((AAb!HHaaAhh"aIt4$/////rct}|d|d|d|d|dg}tj||||ddS)Nr6.57.58.5g@rrs   rrbz#TestMedianGrouped.test_odd_decimalssu%!!E((AAeHHaahh%At4$/////rct}|d|d|d|d|d|dg}tj||||d|d|d|d|d|d|dg}tj||||ddS)Nrrrr@@rrs   rrdz$TestMedianGrouped.test_even_decimalss%!!E((AAeHHaahh%!!E((Kt4#...%!!E((AAeHHaahh%!!E((Kt4#.....rcgd}|||ddgd}|||dddgd}|||d	d
dS)N)
@rHrHr"r"rrrrrOrJg@)rrHrHr"r"r"rrrrrOg["8@rr)rrrrr,@iTrfgp@rrLs  r
test_intervalzTestMedianGrouped.test_intervalsFFF4..666LLLtyyt44jdKKKKKK4,,e44444rc:gd}|t|j|gd}|t|j|gd}d}|t|j||gd}d}|t|j||dS)N)rr)rrrrrrrA)rJrintervals   rtest_data_type_errorz&TestMedianGrouped.test_data_type_errors||)TY555)TY555yy)TYh???yy)TYh?????rN)r7r8r9rrrrrrWrZrbrdrrr;rrr|r|s...JJJ$000$<<<777///000000///555@@@@@rr|cDeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
S)TestModec(tj|_dSrj)r<moderBrvs rrzTestMode.setUprrc
gdS)rP)r
r
r
r
rrrrrrrr;rvs rrMzTestMode.prepare_datas1000rcztddd}|||ddSrer9rLs  rrhzTestMode.test_range_data s9RQ4"-----rcd}|||dd}|||ddS)Nabcbdbrzfe fi fo fum fi fifi)rFrBrrLs  rtest_nominal_datazTestMode.test_nominal_data%s^4#...#))++4$/////rcttd}tdD]E}||gz}tj|||||FdSNrrrrrKrFrB)rJrrgrs    rtest_discrete_datazTestMode.test_discrete_data,spE"IIr	.	.As
AN1TYYq\\1----	.	.rc`gd}|||ddS)N)r
r
rrrrrrrrSrSrSrSrrrrrrrLs  rtest_bimodal_datazTestMode.test_bimodal_data4s5BBB	
4!,,,,,rcttd}|||ddS)Nrr)rrrFrBrLs  rtest_unique_datazTestMode.test_unique_data;s9E"II4!,,,,,rcH|t|jddSrjrArvs rtest_none_datazTestMode.test_none_dataAs$
	
)TY55555rctjdd}|||ddS)Nr
r)rrr)rVCounterrFrB)rJrs  rtest_counter_datazTestMode.test_counter_dataHsA

!q)))	
1s+++++rN)r7r8r9rrMrhrrrrrrr;rrrrs$$$111
...
000...------666,,,,,rrceZdZdZdS)
TestMultiModectj}||ddg||dgd||dgdS)Naabbbbbbbbccraabbbbccddddeeffffgg)rrrr)r<	multimoderF)rJrs  rtest_basicszTestMultiMode.test_basicsUsu(	>22SE:::#9::OOOLLL2+++++rN)r7r8r9rr;rrrrSs#,,,,,rrc&eZdZdZdZdZdZdS)	TestFMeanc
tj}t}t}gdddf|d|d|dgddf|dd	|d
d|dd
gdd
fgdddfdd
|dd
gddfdt	gdddffD]Q\}}}||}|t
|t|||||RdS)NrrI@@floats3.54.05.25decimalsrrrr
r	fractions)TFTTF333333?booleansrmixed types)rrriterator)	r<fmeanrrrErrrrF)rJrrrr
expected_meanrbactual_means        rrzTestFMean.test_basics^s- 


tX.ahh%!!F))
,dJ?a1ggqqAww"a
)4=
-
-
-tZ@1aaAhh
}5-
"""
#
#T:6*	?	?%D- %++KMM${++UD999[->>>>	?	?rc"tj}tj}||5|gdddn#1swxYwY||5|t	gdddn#1swxYwY|t
5|ddddn#1swxYwY|t
5|gddddn#1swxYwY|t
5|dddn#1swxYwY|t
5|gddddddS#1swxYwYdS)NrNrfrrfrF)r<rrtr7rErrJrrts   rtest_error_caseszTestFMean.test_error_casesos $4



/
/		E"III															



/
/		E$r((OOO															


y
)
)		E$KKK															


y
)
)	"	"E...!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"


y
)
)		EGGG															


y
)
)	$	$E,,,###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$skAA

A
&BBB0CCC-DDD,EE
E(FFFctj}td}td}|t	j|d|gd|t	j|||gd|t	j|d|gd|t5|||gddddS#1swxYwYdSNNanInfrr*znan and infinityinfinity)	r<rrrrrr.r7r-)rJrNaNrs    rtest_special_valueszTestFMean.test_special_valuess3 EllEll
55"c#3#344e<<<
55#s#4#4557IJJJ
55"c#3#344jAAA


z
*
*		E3+																		C::C>C>c	tj}tj}||gddgdz|gd||gdgd|gd||t	gdt	gd|gd||5|gddd	gdddn#1swxYwY||5|t	gdt	dd	gdddn#1swxYwY||5|d
dgddgdddn#1swxYwY||5|t	d
dgt	ddgddddS#1swxYwYdS)
N)rrrrrJr)rrrf)rJrJr)rrrfrfrrfrr
rrrfru)r<rrtrFrEr7rs   rtest_weightszTestFMean.test_weightss1 $4E"""TFQJ//E"""##	%	%	%	
E,,, 2 2 233E"""##	%	%	%	
E$|||$$d+=+=+=&>&>??E"""##	%	%	%


/
/	(	(E,,,A'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(



/
/	4	4E$|||$$dAq6ll333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4



/
/	%	%E2r(RG$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%



/
/	1	1E$Bx..$Aw--000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1sHC44C8;C8+EEE+FFF(+G  G$'G$N)r7r8r9rrrrr;rrrr\sP???"$$$ 			11111rrc6eZdZdZdZdZdZdZdZdZ	dS)	VarianceStdevMixinr*cdddtddtdfD],}|||gd-dS)Nrg3@g%Brrz8.392rrrs  rrz$VarianceStdevMixin.test_single_values]dFHR$4$4gg6F6FG	0	0ATYYs^^Q////	0	0rcdddtddtdfD]6}dD]1}|g|z}|||d27dS)	Nrrg@6<Crrz62.4802)rrrr}rrrs    rrz-VarianceStdevMixin.test_repeated_single_valuesxr68Aq>>793E3EF	5	5A&
5
5s5y  4!4444
5	5	5rcdgdz}||}||dd||ddS)Ng.F7ݚ?r:rtgؗҌ<rr)rBr_rrs   rtest_domain_error_regressionz/VarianceStdevMixin.test_domain_error_regressionsY""5(4vs666*****rcgd}||}dfd|D}||||dS)N)
g{Gz?gRQ?g
ףp=
?gRQ@gp=
ף@gQ	@rgQ@gGz@gQ@gj@cg|]}|zSr;r;rrshifts  rrz6VarianceStdevMixin.test_shift_data.<locals>.<listcomp>'''aE	'''r)rBr_rJr{r%rrs    @rtest_shift_dataz"VarianceStdevMixin.test_shift_datasdKJJ99S>>''''3'''tyy99999rcgd}||}dfd|D}||||dS)N)
r
rrrrrrrrriʚ;cg|]}|zSr;r;rs  rrz<VarianceStdevMixin.test_shift_data_exact.<locals>.<listcomp>rrrrs    @rtest_shift_data_exactz(VarianceStdevMixin.test_shift_data_exactsa///99S>>''''3'''4(33333rcdtdD}||}||t||dS)Nc8g|]}tjddS)r{rrrs  rrz:VarianceStdevMixin.test_iter_list_same.<locals>.<listcomp>rrr')rrBrFrErgs   rtest_iter_list_samez&VarianceStdevMixin.test_iter_list_samesZ<;uT{{;;;99T??4::..99999rN)
r7r8r9r1rrrrrrr;rrrrsuC000
555+++:::444
:
:
:
:
:rrc2eZdZdZdZdZdZdZdZdS)
TestPVariancec(tj|_dSrj)r<	pvariancerBrvs rrzTestPVariance.setUps(			rcttd}tj|d}||||dS)Nr:gP_Arrgs   rtest_exact_uniformz TestPVariance.test_exact_uniformsPE%LL!!t$4(33333rcdgd}d}||||dS)Nrrrrg6@rrJrexacts   rrzTestPVariance.test_intss6~~4%00000rct}|dd|dd|dd|ddg}|dd}||}|||||tdS)Nr
rrrrrrBrFassertIsInstancerJrrr	rs     rrzTestPVariance.test_fractions!Q1a!!Aq''11Q773!Q4'''fh/////rc
t}|d|d|d|dg}|d}||}|||||tdS)Nz12.1z12.2z12.5z12.9z0.096875rrBrFrrJrrr	rs     rrzTestPVariance.test_decimalss&		11V99aaii6;*

4'''fg.....rcgd}d}||}|||||tdS)N)rrr
gqq?rBrFrrrJrr	rs    rtest_accuracy_bug_20499z%TestPVariance.test_accuracy_bug_20499Qyy4'''fe,,,,,rN)	r7r8r9rrrrrrr;rrrrsn)))444111000///-----rrc8eZdZdZdZdZdZdZdZdZ	dS)	TestVariancec(tj|_dSrj)r<variancerBrvs rrzTestVariance.setUps'			rcdddtddtdfD])}|tj|j|g*dS)Nrg333338@g(G!=Crrz4.2084rrr7r<rtrBrs  rrzTestVariance.test_single_values^dFHR$4$4gh6G6GH	J	JAj8$)aSIIII	J	Jrcdgd}d}||||dS)Nrrrrs   rrzTestVariance.test_intss6~~4%00000rct}|dd|dd|dd|ddg}|dd}||}|||||tdS)Nr
rrrrrr
s     rrzTestVariance.test_fractions rrc(t}|d|d|d|dg}d|dz|dz}||}|||||tdS)Nrrrrz9.5rrrs     rrzTestVariance.test_decimals)s!aaddAAaDD!!A$$'!!E((
11Q444'''fg.....rcd}|||d|||dddS)Nrr/rr/xbarrrrLs  rtest_center_not_at_meanz$TestVariance.test_center_not_at_mean2sS4#...4c22C88888rcgd}d}||}|||||tdS)N)rrrgUUUUUU?rrs    rrz$TestVariance.test_accuracy_bug_204997rrN)
r7r8r9rrrrrr$rr;rrrrs(((JJJ
111000///999
-----rrc eZdZdZdZdZdS)
TestPStdevc(tj|_dSrj)r<pstdevrBrvs rrzTestPStdev.setUp@rNrcdtdD}tjtj|}||||dS)Nc8g|]}tjddS)irrrs  rrz7TestPStdev.test_compare_to_variance.<locals>.<listcomp>Es$===AsB''===rr')rrsqrtr<rrFrBrgs   rtest_compare_to_variancez#TestPStdev.test_compare_to_varianceCs[==t===9Z1$77884(33333rcd}|||d|||dddS)N)rrSrrrHr)murrrLs  rr$z"TestPStdev.test_center_not_at_meanIsS4#...4C00#66666rN)r7r8r9rr-r$r;rrr'r'>sA&&&44477777rr'c\eZdZdZeejddZdZdS)TestSqrtHelpersctjtdtddD]\}}tj||}||t||z|z|krB||dzd|||dz
dzz|cxko||dzdzzkncdS)Nrr
r'r)		itertoolsproductrr<_integer_sqrt_of_frac_rtorrrFr)rJrmrs    rtest_integer_sqrt_of_frac_rtoz-TestSqrtHelpers.test_integer_sqrt_of_frac_rtoQs%eCjj%4..AA		A		ADAq4Q::A!!!S)))s1uzzQqS!$$$OOAQ
NQ????a!eaZ????@@@@		A		Arcpuc0dtdtdtfd}tj}tdD]}|d|dz}|d|dzdz}|||	5t||}tj||}|	|||dddn#1swxYwY|
tjd
dd|t5tjdddddn#1swxYwY|t5tjdddddn#1swxYwY|t5tjdd
dddn#1swxYwY|
tjd
dtjdddS)Nrrootreturnc.|s|dkStj|tj}tj|tj}t|}|t|zdz}|t|zdz}|dz|cxko|dzkncS)Nrtr)r	nextafterr!r)rr:r_upr_down	frac_roothalf_way_up
half_way_downs       ris_root_correctly_roundedzJTestSqrtHelpers.test_float_sqrt_of_frac.<locals>.is_root_correctly_roundedas
#s{".tx88D N4$(;;F#+4..I%.$%?1$DK'08F3C3C'Cq&HM!A%>>>>kQ.>>>>>>ri`rrr
)	numeratordenonimatorrrtrurr)rrrr	randrangerrr<_float_sqrt_of_fracrrFr7r-ZeroDivisionError)rJrCrFrgrDrErr:s        rtest_float_sqrt_of_fracz'TestSqrtHelpers.test_float_sqrt_of_frac]s	?	?	?4	?	?	?	?$$	v	D	DA&YrYYr]]':;;I(yyy}})<==AK	{KK
D
D&y+>>(<YTT 9 9!T B BCCC
D
D
D
D
D
D
D
D
D
D
D
D
D
D
D	
71==sCCC


z
*
*	2	2*2q111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2


z
*
*	2	2*1b111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2

0
1
1	1	1*1a000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	
7B??A_`acdAeAefffffsI?ACC	C	EEE&FFF-GGGcztdddftdddftdddffD]?\}}}tjtj5|tj|||dddn#1swxYwYtjtj5}|xjdzc_t|t|z}tj|_	|
}dddn#1swxYwYtjtj5|
}dddn#1swxYwY|||A|tjd	d
d|tj5tjdd
dddn#1swxYwY|tj5tjd
ddddn#1swxYwY|t5tjd
d	dddn#1swxYwY|tjd
dtjdd
dS)Nz0.4481904599041192673635338663l:jt9)4]!l73Me'z0.7924949131383786609961759598lQ_Ar,NE*z0.8500554152289934068192208727lkr"-D9}ZGrrr
rtrurr)rrrDefaultContextrFr<_decimal_sqrt_of_fracprec
ROUND_05UProundingr,r7rrH)rJr:rDdenominatorctxhigh_prec_ratiohigh_prec_roottarget_roots        rtest_decimal_sqrt_of_fracz)TestSqrtHelpers.test_decimal_sqrt_of_fracs5
6
68VXwx
5
6
68VXwx
5
6
68VXw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&<==
8A
"))"4"4w{7K7K"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??EEE


w7
8
8	4	4,R333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4


w7
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"bAA:CcdeghCiCijjjjjsm*BB	B	:ADD	"D	EE	E	?G!!G%(G%H--H14H1I44I8;I8N)	r7r8r9r7rrrequires_resourcerIrUr;rrr1r1Osr
A
A
AWu%%*g*g&%*gX#k#k#k#k#krr1c&eZdZdZdZdZdZdS)	TestStdevc(tj|_dSrj)r<stdevrBrvs rrzTestStdev.setUps$			rcdddtddtdfD])}|tj|j|g*dS)NQgHzwi@gf7?+Brrz35.719rrs  rrzTestStdev.test_single_values\ffhq"oowx7H7HI	J	JAj8$)aSIIII	J	JrcdtdD}tjtj|}||||dS)Nc8g|]}tjddS)rrrrs  rrz6TestStdev.test_compare_to_variance.<locals>.<listcomp>rrr')rrr,r<rassertAlmostEqualrBrgs   rr-z"TestStdev.test_compare_to_variances[;;uT{{;;;9Z06677tyy99999rc`d}|||dddS)Nr!r/r"rrrLs  rr$z!TestStdev.test_center_not_at_means34c22C88888rN)r7r8r9rrr-r$r;rrrXrXsS%%%JJJ
:::99999rrXc2eZdZdZdZdZdZdZdZdS)TestGeometricMeancRtj}||gdd||ddgd||dgdtjdtdd	tdd
tddtddd
tdddgddtd
DdtdDdtdDf	D]}t
jtt|tdt|zz}||}|t
j|t|dS)N)r|rrB@rIg"@g@g1@l;r
rr'r:rrr{)rr{rrxrc6g|]}tjdS)I@rexpovariaterrgs  rrz1TestGeometricMean.test_basics.<locals>.<listcomp>s#@@@a#D))@@@rc8g|]}tjddS)rr)rlognormvariaterjs  rrz1TestGeometricMean.test_basics.<locals>.<listcomp>s%HHHa&tS11HHHrc:g|]}tjdddS)rmi)r
triangularrjs  rrz1TestGeometricMean.test_basics.<locals>.<listcomp>s'KKK"4t44KKKrro)r<geometric_meanr_rseedrrprodrrrariscloser)rJrqrng
gm_decimalgm_floats     rrzTestGeometricMean.test_basicss#2~~lll;;TBBB~~sCj993???~~vh77@@@N###a

aa  c61%%fc2&&'''@@5<<@@@HH5<<HHHKKeEllKKK

	G
	GC3w#4#455'!**s3xx:OPJ%~c**HOODL53D3DEEFFFF
	G
	Grc	tj}t}t}d}gddf|d|d|dgdf|dd	|d
d|dd
gd
fdd
|dd
gdfdt	gddffD]Q\}}||}|t
|t||||dRdS)Ngd@rrrrrrrrrr
rrrr)rrrrplaces)	r<rqrrrErrrr_)rJrqrrrrrbrs        rtest_various_input_typesz*TestGeometricMean.test_various_input_typess#2



x(ahh%!!F))
,j9a1ggqqAww"a
);71aaAhh
/'
"""
#
#Z0

	I
	IJD$)...KMM${++UD999"";
a"HHHH
	I
	Irctj}d}|d|zd|zd|zg}|tj|d|z|tj|d}|d|zd|zd|zg}|tj|d|z||ddS)Ngp~gK@g8@rdgprt)r<rqrrrtrr.assertNotEqual)rJrqlargebig_gmsmallsmall_gms      rtest_big_and_smallz$TestGeometricMean.test_big_and_smalls#2te|TE\ JKKVTE\::;;;F++,,,!>4%<te|"LMMXte|<<===Hc*****rc
tj}tj}||5|gdddn#1swxYwY||5|gddddn#1swxYwY||5|gddddn#1swxYwY||5|t	gdddn#1swxYwY|t
5|ddddn#1swxYwY|t
5|gddddn#1swxYwY|t
5|dddn#1swxYwY|t
5|gddddddS#1swxYwYdS)N)rrtr)rgrrrr)r<rqrtr7rEr)rJrqrts   rrz"TestGeometricMean.test_error_casess#2$4



/
/		N2															



/
/	-	-N+++,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-



/
/	.	.N,,,---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.



/
/	%	%N488$$$	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%


y
)
)	!	!N4   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!


y
)
)	+	+N>>>***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+


y
)
)		N															


y
)
)	-	-N<<<,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-sAA

A
&BBB B::B>B>C??DD$D<<EE!E;;E?E? F77F;>F;G88G<?G<ctj}td}td}|t	j|d|gd|t	j|||gd|t	j|d|gd|t5|||gddddS#1swxYwYdSr)	r<rqrrrrr.r7r-)rJrqrrs    rrz%TestGeometricMean.test_special_values	s3#2EllEll
>>2s)#<#<==uEEE
>>3*#=#=>>@RSSS
>>2s)#<#<==zJJJ


z
*
*	(	(NC#;'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(rctj}d}gdgdgdgdgdg}|D]S}||5||}|||d	dddn#1swxYwYTdS)
NgY};t@)rrrr)rrrr)rrrr)rrrr)r/rrr)vrry)r<rqrr_)rJrqrr1rrs      rtest_mixed_int_and_floatz*TestGeometricMean.test_mixed_int_and_float	s#2(
LLNN   
	M	MA""
M
M,nQ//&&{M!&LLL
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M	M	Ms$A**A.	1A.	N)	r7r8r9rr{rrrrr;rrrbrbsyGGG,III$
+
+
+---(	(	(	(MMMMMrrbc,eZdZdZdZdZdZdZdS)
TestQuantilescvtj}gd}tj|dgfddgfdddgfdgd	fd
gdfdgd
fdgdfdgdfdgdfdgdff
D]\}}||||||t||||dz
tttfD]o|t||}|
fd|D||tt|pt|dkr!|||||t|}d|dz|dz
}d|dz|dz
}|||gz}	||||||	|d||fd}
tt|
|}|t|
||}|
tdt||DtddD]\}
tjtd |
!}||\}}}||tj|]dS)"N)rerri^r
r@o@ri@t@r)d@rt@r)a@k@@r@u@rS)^@rrru@r)Y@rgj@rgr@rgXv@r)	gV@rgg@rrrg`t@rgv@r)T@rrr l@rgq@rrrgv@r})gR@gZ@rge@rrn@gp@rrgt@rg@v@gw@rc3XK|]$}tt|kV%dSrjallrrrdatatypes  rrz4TestQuantiles.test_specific_cases.<locals>.<genexpr>I	6IIQDGGx$7 8 8IIIIIIrrrur	inclusivermethodcd|zdz
SNrg3333J@r;r
s rrz,TestQuantiles.test_specific_cases.<locals>.f[	Qw))rc3FK|]\}}tj||VdSrjrrtrrhrs   rrz4TestQuantiles.test_specific_cases.<locals>.<genexpr>_	2MMtq!Q 2 2MMMMMMrrrk)r<	quantilesrrKrFrarrrrrrrJrrerchoicesrM)rJrrrr%rsdatalohipadded_datarexpactrq1q2q3rs                 @rtest_specific_casesz!TestQuantiles.test_specific_cases0	s](	(((t
G
L

%%%&
,,,-
3334
AAAB
OOOP
   
!
555
6
)	O)	OKAx
Xyy';';';<<<S41!5!5!566A>>>"GX6
H
H"3x#6#6!<<<IIII&IIIIII  c(H.E.E)F)FGGGG8}}!!  8q!9!9!98DDD4LLEU1Xa(BU2Yr*B"b/K	$!$$$	+;???D	



*
*
*s1h''((C)C4LLA...COOCMMs3}}MMMMMNNNNq"	:	:A>%**222D"4JBBR!24!8!89999	:	:rc
tj}gd}tj|dgfddgfdddgfdgd	fd
gdfdgd
fdgdfdgdfdgdfdgdff
D]U\}}|||||d|t|||d|dz
tttfD]p|t||d}|
fd|D||tt|qd}tt||}|t|||d}|
tdt||DW||ddgddgd||tddddgddtd D}||d!d}	|t!||t#|||d!"}|||	tdd#D]^}
tjtd|
$}||d%\}}}
||tj|_dS)&N)rrii r
rr@rry@r)e@r@@r)rrv@@rS)b@rrr@r)g0a@rrgpw@rgP@r)	g@`@rgg@rrrg{@rg@@r)g@_@rrrrrrrrrg@r})rga@rgf@rrgq@rrrg~@rg@g@rrc3XK|]$}tt|kV%dSrjrrs  rrz>TestQuantiles.test_specific_cases_inclusive.<locals>.<genexpr>	rrcd|zdz
Srr;r
s rrz6TestQuantiles.test_specific_cases_inclusive.<locals>.f	rrc3FK|]\}}tj||VdSrjrrs   rrz>TestQuantiles.test_specific_cases_inclusive.<locals>.<genexpr>	rrrr)	$@rg>@gD@rggN@gQ@rgV@rc6g|]}tjdS)r:)rrFrjs  rrz?TestQuantiles.test_specific_cases_inclusive.<locals>.<listcomp>	s#===Q ((===ri rrrr)r<rrrKrFrarrrrrrrrerr'rr"rrM)rJrrrr%rrrrr$rrrrrs              @rtest_specific_cases_inclusivez+TestQuantiles.test_specific_cases_inclusivef	s(	###t
G
L

%%%&
,,,-
3334
>>>?
PPPQ
'''
(
555
6
	O	OKAx
Xyy;'O'O'OPPPS41[!I!I!IJJAPQERRR"GX6
H
H"3x#6#6!KPPPIIII&IIIIII  c(H.E.E)F)FGGGG
*
*
*s1h''((C)C4LLAkBBBCOOCMMs3}}MMMMMNNNNAs8r+FFFOOO	Q	Q	Q5C==B{KKKOOO	Q	Q	Q
>=%**===42k:::CIICII9TR(((6***q"	:	:A>%**222D"4<<<JBBR!24!8!89999	:	:rctj}tddD]L}dg|z}|||gd|||dgdMdS)Nrrr)rrrrr)r<rrrF)rJrrrs    rtest_equal_inputszTestQuantiles.test_equal_inputs	s(	q"	0	0A6A:DYYt__.@.@.@AAAYYtK@@@...
0
0
0
0	0	0rctj}d}dt|Dtt	|krGt
jdtt	|kGdD]P}||z}|	fd||Dtt|||QdD]c}||z||zdzh}fd	||D}d
t||ddD}|||kddS)Nr:c6g|]}tjdS)皙?rhrjs  rrz9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>	s#>>>A"3''>>>rr)
r
rrrrfrrrrr'rmrr:c:g|]}tj|Sr;bisectrqrs  rrz9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>	s%FFFAtQ''FFFrr)
rr;mi;iisii)&r
c:g|]}tj|Sr;rrs  rrz9TestQuantiles.test_equal_sized_groups.<locals>.<listcomp>	s%HHHa6=q))HHHrch|]
\}}||z
Sr;r;)rprs   r	<setcomp>z8TestQuantiles.test_equal_sized_groups.<locals>.<setcomp>	s 999tq!QU999r)
r<rrrasetrRrrisortrFrrer)	rJrtotalr
group_sizegroup_sizespossizesrs	        @rtest_equal_sized_groupsz%TestQuantiles.test_equal_sized_groups	s(	>>u>>>#d))nn%%KK*3//000#d))nn%%		O	<	<A!JFFFF411E1E1EFFFU:uj99::
<
<
<
<E	2	2A A:uzA~6KHHHH99TQ3G3G3GHHHC99s3ABB'8'8999EOOE[01111		2	2rctj}tj}|t5|dddn#1swxYwY|t5|gddddddn#1swxYwY|t5|gdddddn#1swxYwY||5|gdddddn#1swxYwY||5|gdddddn#1swxYwY|t5|gdddddn#1swxYwY|t
5|gdd	dddn#1swxYwY||5|d
gddddn#1swxYwY|t5|gddddddS#1swxYwYdS)NrrrrrrurXrr)rNr)r<rrtr7rr-)rJrrts   rrzTestQuantiles.test_error_cases	s(	$4


y
)
)		IKKK															


y
)
)	-	-IlllB!,,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-


y
)
)	'	'IlllA&&&	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'



/
/	)	)Illla((((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)



/
/	*	*Illlb))))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*


y
)
)	+	+Illlc****	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+


z
*
*	0	0Illl3////	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0



/
/	!	!Irda    	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!


y
)
)	+	+Innn****	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+sA

AA/BBB1CCC,DDD(EEE)FF	F	*GG

G
&HHH&II
IN)r7r8r9rrrrrr;rrrr.	sa4:4:4:l4:4:4:l000222.+++++rrceZdZdZdZdS)TestBivariateStatisticscgdddgfddggdffD]\}}|tj5tj||dddn#1swxYwY|tj5tj||dddn#1swxYwY|tj5tj||dddn#1swxYwYdS)Nrr
rr7r<rt
covariancecorrelationlinear_regressionrs   rtest_unequal_size_errorz/TestBivariateStatistics.test_unequal_size_error	s
YYAVYYY
		3		3DAq"":#=>>
,
,%a+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,"":#=>>
-
-&q!,,,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-"":#=>>
3
3,Q222
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3		3		3s5AA	A	B##B'	*B'	
C//C3	6C3	cggfgddgfddggfdgdgfdgddgfddgdgffD]\}}|tj5tj||dddn#1swxYwY|tj5tj||dddn#1swxYwY|tj5tj||dddn#1swxYwYdS)Nr
rrrs   rtest_small_sample_errorz/TestBivariateStatistics.test_small_sample_error	s
H
!QMWbMTA4LTAq7OWqdO


	3
	3DAq"":#=>>
,
,%a+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,"":#=>>
-
-&q!,,,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-"":#=>>
3
3,Q222
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
	3
	3s6A''A+	.A+	B33B7	:B7	C??D	D	N)r7r8r9rrr;rrrr	s2
3
3
333333rrceZdZdZdZdS)TestCorrelationAndCovariancecgdgddfgdgddfgdgddfgdgddfgdgdd	ffD]X\}}}|tj||||tj|||YdS)
Nrr
rurr{ru)rrr
)r
rr
r)r
rrrr_r<rr)rJrr/rs    rtest_resultsz)TestCorrelationAndCovariance.test_results	s
YY			1%
YYb)
YY			2&
YY			1%
YY			3'
	H	HLAq&
"":#9!Q#?#?HHH"":#8A#>#>GGGG	H	Hrcfgd}gd}|tj||d|tj||dgd}|tj||d|tj||ddS)Nr)rrrfrr)rrg333333?r
rrrs   rtest_different_scalesz2TestCorrelationAndCovariance.test_different_scales	sIILLz5a;;SAAAz4Q::A>>>LLz5a;;Q???z4Q::C@@@@@rN)r7r8r9rrr;rrrr	s:	H	H	HAAAAArrc eZdZdZdZdZdS)TestLinearRegressioncgd}gd}|tj5tj||ddddS#1swxYwYdS)N)r
r
r
r)r7r<rtrrs   rtest_constant_input_errorz.TestLinearRegression.test_constant_input_error
sJJJJ


z9
:
:	/	/(A...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/sAAAc
 gdgdddfgdgdddfgdgdddfgdgddd	fgdgd
ddfgdgdd
dfgdgdddffD]K\}}}}tj||\}}||||||LdS)Nr)rrrrr
)rrrr)rrrrrrru)rrrrf)gffffff@g@rrr)r<rr_)rJrr/true_intercept
true_slopeslope	intercepts       rrz!TestLinearRegression.test_results
s
YY			1a(
YY			1a(
YYa0
YYb!,
YYa,
YYb!,
YYC01
	6	6,Aq.* *;AqAAE9""9n===""5*5555	6	6rcgd}gd}tj||d\}}||d||ddS)N)rrfrr#)iibiT)proportionalgN4@rt)r<rr_rF)rJrr/rrs     rtest_proportionalz&TestLinearRegression.test_proportional
sf   %714PPPyuj111C(((((rN)r7r8r9rrrr;rrrr	
sA///666)))))rrceZdZdZdZdZdZdZdZe	j
e	jddZd	Z
d
ZdZdZd
ZdZdZdZdZdZdZdZdS)TestNormalDistc|jdd}|t5t	|dddn#1swxYwY|t
|jddS)Nrr)_mu_sigma)rZ
NormalDistr7rvarsrFr	__slots__rJnds  r
test_slotszTestNormalDist.test_slots/
s
[
#
#C
,
,


y
)
)		HHH															r|,,.?@@@@@sAAAc|jdd}||jd||jd||jd|j}||jd||jd||jd||jj5|jdddddn#1swxYwYGdd|jj}|d	d
}|t||dS)Nrr{i!rr
iceZdZdS)GTestNormalDist.test_instantiation_and_attributes.<locals>.NewNormalDistNrr;rr
NewNormalDistrF
rrrrr)	rZrrFrrZrr7rtr)rJrrnnds    r!test_instantiation_and_attributesz0TestNormalDist.test_instantiation_and_attributes5
s
[
#
#C
,
,#&&&2&&&e,,,[
#
#
%
%!$$$1%%%d+++

t{:
;
;	-	-K""3,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-					DK2			mC##cM22222s6DD"%D"cJ|jj}gd}||||dd||t	||dd||t||dd||jj5|gdddn#1swxYwY||jj5|dgdddn#1swxYwYGdd|}||}|t||dS)N)`rZr	nr|rrceZdZdS)BTestNormalDist.test_alternative_constructor.<locals>.NewNormalDistNrr;rrrr[
rrr)	rZrrFfrom_samplesrrEr7rtr)rJrrrrs     rtest_alternative_constructorz+TestNormalDist.test_alternative_constructorK
s[+
%%%0066

2q8I8IJJJ00t==zz"a?P?PQQQ00d<<jjQ>O>OPPP


t{:
;
;	(	(##B'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(


t{:
;
;	*	*##RD)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*					J			((..cM22222s$#DD	D	/EEEc|jj}d\}}|||}d}||}|t	|||tt
t|th|j	|}|
||dzz
|cxko||dzzkncd}||d}||d}	||d}
||d}|||
||	||||	dS)N)r:rr'rrzhappiness and joy)rrztrouble and despair)rZrsamplesrFrarrrrrrr})rJrr/sigmarrrr#data1data2data3data4s            rtest_sample_generationz%TestNormalDist.test_sample_generation`
sx[+
	EJr5!!yy||TA&&&St__--w777{%%U1W<<<<U1W<<<<===
		!"5	66		!"7	88		!"5	66		!"7	88&&&&&&E5)))))rc	|jj}|dd}||d|d||d|dt	dD]D}||d|z
|d|zEd}t	ddD]^}|||z||z
|z}||||d	
_|}tgdD]b\}}|||dz|d	
|||dz|d	
c|dd
}	||jj	5|	ddddn#1swxYwY|
|tdd|
|tdd|tj|tddS)Nrr}r|rrgP?rrArry)2+ݓ?r(r(ggDio?g?gV}b?gQ|?gFx?ggs?g٬\m?g rh?gK7A`?g|гY?gQ?gQI?gsh|??g=yX5?g|a2U0*?gQ?gN@?g/$?g~k	?g]C?gw/?g~:p?g>W[?gM
O?gW[?g鷯?g{Gz?g
qh?g|a2U?gK7A?gvq
-?gjt?gc]F?g\C?gףp=
?g?ga2U0*?gy):?g(y?gN@a?gfc]F?g"lxz,?gOn?g37?gec]?gn?gT?rr-Infrtrr)rZr
assertLesspdfrr_cdfrdr7rtrFrrrr)
rJrrrgdxrest_pdfZpxYs
          rtest_pdfzTestNormalDist.test_pdfv
s[+
JsBb		155::...c

AEE#JJ///r	C	CA""155q>>155q>>BBBB
r3	@	@AuuQV}}quuQxx/25G""15588WQ"????JLL 
 
 

	D
	DEAr
""155U#3#3R"BBB""155!e#4#4b"CCCCJsA


t{:
;
;		
EE"III																
uV}}--s333uU||,,c222
155u#6#67788888s?H!!H%(H%c	n|jj}|ddfdtddD}|t	tt|th||t||	dd|}dD]_\}}|
|	||d	|
|	|d
|z
d	`|dd}||jj5|	ddddn#1swxYwY|	td
d|	tdd
|
tj	tddS)Nrr}c:g|]}|Sr;)r,)rrrs  rrz+TestNormalDist.test_cdf.<locals>.<listcomp>
s#000Qa000rr
rr))rtr)rgqZ ?)rgE_A?)gQ?gGɫs?)g(\?g؞Y?)gQ?g9#?)gHzG?g&S?)rgMbX9?)gQ?gT㥛 ?)g?g??)gffffff@g_xZ?)gQ@g#0?)g)\(@gu<f2?)gףp=
@gVe?)gHzG@g9?rryrrrr)rtrr)rZrrrFrrrrrJr,r_r7rtrrr)rJrcdfsr/zcum_probr1rs       @rtest_cdfzTestNormalDist.test_cdf
s0[+
JsB0000%3--000St__--w777vd||,,,sT***
JLL	H	HKAx
""15588Xa"@@@""155!99cHnQ"GGGGJsA


t{:
;
;		
EE"III																
uV}}--s333uU||,,c222
155u#6#67788888sE77E;>E;r8c	Z|jj}|dd}||d|j|}dddd}|D]\}}t
|d	D]j\}}|d
|zz}	|||	|dd
|	z
}	|||	|dk||ddddd}
td|
D]C}	|	|
z}	||	||	|	DtddD]}d|z}	||	||	|	d
|	z
}	||	||	|	tdD]@}|||	||dA|
|jj5|ddddn#1swxYwY|
|jj5|ddddn#1swxYwY|
|jj5|d
dddn#1swxYwY|
|jj5|ddddn#1swxYwY|
|jj5|dd}|ddddn#1swxYwY|tj|tddS)Nrr}r)
rtgRQ?gS㥛@gS
@gT㥛 @g^I@g rh@g+N@gC@gV-o@)
g rh?g\(\?g~jt@g+@gMbX9@g(\B@gv@g@gSc@gK7A@)
gPn?gS㥛@gQ@gn
@g(\@gPn@g@g r@gˡE@glq@)rrHrr
)startrrryrr#rg>?gE@i3r/rrrtrg?rr)rZrrFinv_cdfritemsrdr_rr,r7rtrrrr)rJriqr/ppr&rowrrrrrhs            rtest_inv_cdfzTestNormalDist.test_inv_cdf
s6[+
ZR
 
 D))27333

JLL777	88	B	BID##Cq111
B
BQ4SD>)&&		!}a&BBB!G&&qyy||Qq&AAAA	
B	
zz"c22::8DDiPPP
q!	=	=A
FA""266"**Q--#8#8!<<<<q"	=	=AA""266"**Q--#8#8!<<<aA""266"**Q--#8#8!<<<<
s	G	GA""2::bffQii#8#8!A"FFFF

t{:
;
;		JJsOOO															


t{:
;
;		JJt															


t{:
;
;		JJsOOO															


t{:
;
;		JJsOOO															


t{:
;
;		C##BJJsOOO															
	

199U5\\#:#:;;<<<<<sZ;JJ!$J!K))K-0K-L55L9<L9NNN+"OO Oc

|j}dgfddgfdddgfdgdffD]U\}}||	}|t	d
t||DVdS)Nr
rrtrgǘۿgǘ?r)g/$rtg/$?rc3JK|]\}}tj||dVdS)r)abs_tolNrrs   rrz0TestNormalDist.test_quantiles.<locals>.<genexpr>sK ? ? $1!%Q6 B B B ? ? ? ? ? ?r)rZrrrrre)rJr/rr%r$s     rtest_quantileszTestNormalDist.test_quantiles
sK""$$
G
J
&!"
&&&'		@	@KAx[[1[%%FOOC ? ?(+Hf(=(= ? ? ???
@
@
@
@	@	@rc|jj}|dd|dddf|dd|dddffD]\\}}}||||d||||d]dd	d
d}|dd|ddf|dd|ddf|dd|ddf|dd|d
df|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddf|dd|ddffD]o\}}||||||d	||||||d	p|}|t
5|dddn#1swxYwY|t
5|||dddn#1swxYwY|t
5|ddddn#1swxYwY||jj5||dddddn#1swxYwY||jj5|dd|ddddS#1swxYwYdS)Nrtr/rgɎ@?gM-[닄?rryi r)stepsr6ctj}|j|jzdz}|t|j|jz}||z
d|z|zfdt|D}t
t|j|}t
t|j|}	t||||	}
|tt||	|
zS)z0Numerical integration cross-check for overlap() r/c g|]
}|zzSr;r;)rrgr-r:s  rrzHTestNormalDist.test_overlap.<locals>.overlap_numeric.<locals>.<listcomp>s!888aUQrT\888r)
rrrr"rZrrrr+r)
rr1rGr6rcenterwidthx_arrxpyprr-r:s
           @@roverlap_numericz4TestNormalDist.test_overlap.<locals>.overlap_numerics9Dfqvo,FAGQW---EUNEuu$B888885<<888Ec!%''((Bc!%''((BR$$r((++E4CR(())E11rrArrr}rrirrrgjt?g~jth?gjt?ga2U0*3?gMbX?r
r)rZrr_overlapr7rrt)rJrX1X2published_resultrOrs       rtest_overlapzTestNormalDist.test_overlap
s[+
C%%zz#s';';WEC%%zz#s';';WE)	O	O$B$
""2::b>>3CA"NNN""2::b>>3CA"NNNN,1A	2	2	2	2	2C%%zz#s';';<C%%zz#s';';<C%%zz#s';';<B""JJr3$7$78C$$jjb&9&9:D"%%zz#r':':;D"%%zz$';';<C$$jjb&9&9:C$$jjb&9&9:C$$jjb&9&9:C$$jjb&9&9:E5))::eU+C+CDE5))::eV+D+DEE5))::eU+C+CD)	V	VFB,
""2::b>>??2r3J3JST"UUU""2::b>>??2r3J3JST"UUUU
JLL


y
)
)		
IIKKK															


y
)
)		
IIaOOO															


y
)
)		
IIdOOO															


t{:
;
;	(	(
IIjjA&&'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(


t{:
;
;	(	(Jq!$$Q'''	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(	(sZ;JJ #J K$$K(+K(	L++L/2L/ NNN+ OOOc|jj}|dd}||dd||dd||dd|t
5|dddn#1swxYwY|t
5|dddddn#1swxYwY|t
5|ddddn#1swxYwY||jj5|dd	dddddS#1swxYwYdS)
Nrr}gffffff@:gffffffrtr
r)rZrrFzscorer7rrt)rJrrs   rtest_zscorezTestNormalDist.test_zscoreIs[+
JsB#,,,"t,,,#,,,


y
)
)		
HHJJJ															


y
)
)		
HHQNNN															


y
)
)		
HHTNNN															


t{:
;
;	)	)Jq!##C(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)sH.CCC4DDD<EE"%E" F55F9<F9cJ|jdd}||jd||jd||jd||jd||jddS)Nrr})rZrrFrrMrrZr)rJrs  rtest_propertieszTestNormalDist.test_propertiesXsK""3++%%%3'''%%%"%%%S)))))rc|jj}|dd}|dd}|||z|dd|||z
|dddS)Nrrr#rrr)rZrrFrJrrr1s    r'test_same_type_addition_and_subtractionz6TestNormalDist.test_same_type_addition_and_subtraction`s[+
JsBJr1Q

3 3 3444Q

2r 2 233333rc|jj}|dd}d}||
|dd|||dd|||z|dd|||z|dd|||z
|dd|||z
|dd|||z|dd	|||z|dd	|||z|dd
|t5||zddddS#1swxYwYdS)Nrr}rrrrir'rQr)rZrrFr7r)rJrrr/s    rtest_translation_and_scalingz+TestNormalDist.test_translation_and_scalinggs[+
JsB!ZZR00111!ZZb11222Q

3 3 3444Q

3 3 3444Q

2r 2 2333Q

3 3 3444Q

4 5 5666Q

4 5 5666Q

2s 3 3444


y
)
)		
EE																		s,E??FFc|jj}|dd}|
}|||||j|j||j|j|}|||||j|j||j|jdS)Nrr)rZrassertIsNotrFrrZras    rtest_unary_operationsz$TestNormalDist.test_unary_operationsws[+
JsB
BA(((!'***
BA!&)))!'*****rcd|jj}|}|dd}|}|dd}|dd}|dd}|||||||||||||||Gdd}|}	|||	t
|||	kd||	|kdGdd|}
|
d	d
d}|d	d
}|||Gdd
}|d	d
}
|d	d
}|||
dS)NrrrceZdZdZdS)'TestNormalDist.test_equality.<locals>.AcdSrr;)rJr+s  r__eq__z.TestNormalDist.test_equality.<locals>.A.__eq__srrN)r7r8r9rlr;rrrrjs#




rrrceZdZfdZxZS)5TestNormalDist.test_equality.<locals>.SizedNormalDistcZt||||_dSrj)r__init__r)rJr/r!rrs    rrpz>TestNormalDist.test_equality.<locals>.SizedNormalDist.__init__s(  U+++r)r7r8r9rprrs@rSizedNormalDistrns8








rrqrr}9ceZdZdZdS)3TestNormalDist.test_equality.<locals>.LognormalDistc"||_||_dSrj)r/r!)rJr/r!s   rrpz<TestNormalDist.test_equality.<locals>.LognormalDist.__init__s"


rN)r7r8r9rpr;rr
LognormalDistrts#
#
#
#
#
#rrv)rZrr}rFrlNotImplemented)rJrnd1nd2nd3nd4nd5nd6rrrqsrvlndrs               r
test_equalityzTestNormalDist.test_equalitys+[+
jlljAjlljAjAjAC%%%c"""c"""C%%%C%%%								
ACCA7772&&&c2&&&					j			
OCR((jb!!C   
	#	#	#	#	#	#	#	#mC$$
ZR
 
 B$$$$$rc|jdd}tj|}|||tj|}|||dS)NB@@)rZrcopyrFdeepcopy)rJrrxrys    r	test_copyzTestNormalDist.test_copysg
[
#
#D%
0
0immS!!!mBS!!!!!rcR|jdd}ttjdzD]n}||5tjtj||}|||dddn#1swxYwYodS)Nrrr
)proto)protocol)	rZrrpickleHIGHEST_PROTOCOLrloadsdumpsrF)rJrrpickleds    rtest_picklezTestNormalDist.test_pickles
[
#
#D%
0
062Q677	.	.EE**
.
. ,v|B'G'G'GHH  W---
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.	.	.s?BB	"B	c|jj}|dd|dd|dd|dd|ddh}|t|ddS)Nrr}rg.@rrr)rZrrFra)rJNDr~s   rtest_hashabilityzTestNormalDist.test_hashabilitysp
[
#
RR[[""UD//22c2;;2r

BBsBKKPQ#####rc|jdd}|t|ddS)Nrrz NormalDist(mu=37.5, sigma=5.625))rZrrFreprrs  r	test_reprzTestNormalDist.test_reprs<
[
#
#D%
0
0b#EFFFFFrN)r7r8r9rrrr&r2r8rskip_if_pgo_taskrVrArErVr[r^rbrdrgrrrrrr;rrrr&
shAAA333,333****,%9%9%9N999<
Wu%%>=>=&%>=@@@@=(=(=(~
)
)
)***444 
+
+
+*%*%*%X"""...$$$
GGGGGrrceZdZeZdZdZdS)TestNormalDistPythonc.|jtjd<dSrDrZrnmodulesrvs rrzTestNormalDistPython.setUp$(KL!!!rc.ttjd<dSrDr<rnrrvs rtearDownzTestNormalDistPython.tearDown$.L!!!rN)r7r8r9rHrZrrr;rrrrs7
F000/////rrrMceZdZeZdZdZdS)TestNormalDistCc.|jtjd<dSrDrrvs rrzTestNormalDistC.setUprrc.ttjd<dSrDrrvs rrzTestNormalDistC.tearDownrrN)r7r8r9rOrZrrr;rrrrs7
F000/////rrcR|tj|S)z&Used for doctest/unittest integration.)addTestsrfDocTestSuite)loadertestsignores   r
load_testsrs"	NN7'))***Lr__main__)r*r+)Ur:rrVcollections.abcrrrfr3rrrrnrQtestrtest.supportrrrrrr<rrr)r4r6import_fresh_modulerHrOrErArTrrryrrrr%r4r<rUrcrrryrrrrr,r?r~rrrrrrr#rJrfrjrur|rrrrrrr'r1rXrbrrrrrrrRrrr7mainr;rr<module>rs















99999999
333>


 2)2)2)2)t$	$	$	$	$	$	$	$	V2
1,;H/KKK
0}08EHHH
U
U
U
U
U(#
U
U
UXFXFXFXFXFh'XFXFXF~)))))x )));J;J;J;J;Jh/;J;J;J|=B=B=B=B=B8,=B=B=B@,,,,,X.,,,>tEtEtEtEtEX.tEtEtEnKKKKKh/KKK8	G	G	G	G	GH-	G	G	G"%%%%%(+%%%ZCCCCC(#CCC,$$$$$x $$$




(+


=8=8=8=8=8X&=8=8=8@1)1)1)1)1)*1)1)1)h666668$666&a9a9a9a9a9"a9a9a9H;-;-;-;-;-(#;-;-;-|&&&&&(#&&&<`/`/`/`/`/`/`/`/F'.'.'.'.'.'.'.'.T	#	#	#	#	#)+>	#	#	#7F7F7F7F7Fo7F7F7Ft
?
?
?
?
?_
?
?
?;K;K;K;K;K;K;K;K@99999(999(]>]>]>]>]>.A]>]>]>@v(v(v(v(v(6Iv(v(v(r6565656565,656565r




*=


44444J 3444644444Z!44446u@u@u@u@u@
u@u@u@p:,:,:,:,:,.A:,:,:,z,,,,,H%,,,A1A1A1A1A1!A1A1A1L?:?:?:?:?:.?:?:?:D)-)-)-)-)-&9L)-)-)-X,-,-,-,-,-%8K,-,-,-\77777#_777"_k_k_k_k_kh'_k_k_kD99999"O999(fMfMfMfMfM)fMfMfMRa+a+a+a+a+H%a+a+a+H33333h/333>AAAAA8#4AAA0)))))8,))):^G^G^G^G^G^G^G^GH
/////8,n///\#9:://///h'//;:/zHMOOOOOr