L ipddlZddlmZddlmZmZddlZddlZddl m Z m Z m Z m Z ddlmZddlmZddlmZddlmZdd lmZmZmZmZmZmZmZmZGd d ZGd d ZGddej4Z dZ!dZ"dZ#dZ$GddZ%Gdde%Z&Gdde%Z'Gdde%Z(Gdde%Z)GddZ*Gd d!Z+Gd"d#Z,Gd$d%Z-d&Z.ej^jad'ejbejdejfejhgd(Z5y))N)Counter) combinationsproduct)assert_allclose assert_equalassert_array_equalassert_array_less)distance)shapiro)_test_find_index)qmc)van_der_corputn_primesprimes_from_2_toupdate_discrepancy QMCEngine_l1_norm_perturb_discrepancy&_lloyd_centroidal_voronoi_tessellationceZdZdZdZdZdZdZejjdZ dZ dZ ejjd d ejjd Zd ZdZdZdZdZy) TestUtilscdgdgdgg}dgdgdgg}tj|dd}t||ddgddgddgg}tjddgddgg}ddgddgdd gg}tj||d|d}t||tj||d|dd }t||gd gd gdg}dgd}}gd gdgdg}tj|||}t||y)Nr?l_boundsu_bounds@Trr reverserrr)rrr)rrr)rr!)r&r"?)r scalernparray)selfspaceout scaled_spaceboundsscaled_back_spacerr s `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/stats/tests/test_qmc.py test_scalezTestUtils.test_scalesqcC5!taS1#yya@  c*Q!Q#s,B7QF+,AwAC)yyVAYO  c*IIlVAY/5ay$H)51I7 ()]3yyHM  c*c2tjjd}|jd}|jd dz}|jddz}tj|||d}tj|||d}t ||y)Nl EaT4G*wv r7F)r$T)r)random default_rngr r(r)r+rngsampleabscaledunscaleds r1test_scale_randomzTestUtils.test_scale_random4s}ii##$KLH% ZZ^Ob  JJrNR 61a799VQ48&)r3ctjtd5gd}tj|dddddtjtd5ddgd d gd d gg}t j ddgdd gg}tj||d|d dddtjtd 5ddgd d gd d gg}gd dd g}}tj|||dddtjtd 5ddgd d gd d gg}t j gd gdg}tj||d|d dddtjtd5ddgd dgd d gg}t j ddgdd gg}tj||d|d dddtjtd5ddgdd gddgg}t j ddgdd gg}tj||d|d ddddy#1swYxYw#1swYxYw#1swY^xYw#1swYxYw#1swYxYw#1swYyxYw)NSample is not a 2D arraymatchrrrrrrzBounds are not consistentrrrr!z/'l_bounds' and 'u_bounds' must be broadcastable)rrr)rr!r!Sample is not in unit hypercuber'zSample is out of boundsr"Tr#)pytestraises ValueErrorr r(r)r*)r+r,r/rr r-s r1test_scale_errorszTestUtils.test_scale_errors=s| ]]:-H I 6E IIeb1 5 6]]:-I J EVaVc3Z0EXXAwA/0F IIefQi&) D E ]]:.GH CVaVc3Z0E!+aVhH IIeh B  C ]]:.GH EVaVc3Z0EXXz956F IIefQi&) D  E ]]:.:; EVaXSz2EXXAwA/0F IIefQi&) D  E ]]:-G H $7QFQH-CXXAwA/0F IIcF1Iq " $ $ $7 6 6 E E  C C  E E  E E  $ $sKH2AH?,I AI;AI&#AI22H<?I  II#&I/2I;c >tjddgddgddgddgddgddgg}d|zdz d z }tjddgddgddgddgddgddgg}d|zdz d z }ttj|d d ttj|d d tjgdgdgdgdgdgdgdg}d|zdz dz }ttj|ddd ttj|ddd ttj|ddd dD]T}tj d| z}ttjtjdg|zgd|Vy)Nrr&rrr!@?(@ǘ?-C6?atolg/$?rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr@MDmethodr"WDS?CD:M?rrMrG @L2-star)r)r*rr discrepancysqrt)r+space_1space_2r;dimrefs r1test_discrepancyzTestUtils.test_discrepancy_s((QFQFQFQFQFQFKL=3&95((QFQFQFQFQFQFKL=3&95 0&tD0&tD ------- /0,$3t?B D Dr3c tjddgddgddgddgddgddgg}tjtd5t j |dddtjtd 5t j ddgdddd d gddgd d gg}tjtd 5t j |d dddy#1swYxYw#1swY\xYw#1swYyxYw)Nrr&rrrMr!rFrCrBrr'toto' is not a valid ...totor^)r)r*rHrIrJr rir+r;s r1test_discrepancy_errorsz!TestUtils.test_discrepancy_errorssAq6Aq6Aq6Aq6Aq6Aq6JK ]] @  $ OOF # $ ]]:-H I $ OOQF # $a&1a&3*- ]]:-I J 3 OOF6 2 3 3 $ $  $ $ 3 3s$C#<C/C;#C,/C8;Dc Ftjgdgdgdgdgdgdgdg}d|zd z d z }ttj|d d ddttj|dd ddttj|dd dddD]U}tj d| z}ttjtjdg|zgdd |W|j tddtjtd5tj|ddddtjtd5tj|d dddy#1swYExYw#1swYyxYw)!NrUrVrWrXrYrZr[rNrOr\r]rG)r_workersr"rRrSr`rarbrcrdr&rrh cpu_countcyNr{r3r1z5TestUtils.test_discrepancy_parallel..sr3zCannot determine therCrvzInvalid number of workers...r) r)r*rr rirjsetattrosrHrINotImplementedErrorrJ)r+ monkeypatchr;rmrns r1test_discrepancy_parallelz#TestUtils.test_discrepancy_parallelsq------- /0,$3tQG! # tQG! # tQG! #) PC''!+&C COOBHHqcCi[,A3J11&GQRVWX11&MtT  % %fU; OQT ii##$KL##aS188<11&9;NO  % %fU ;=P r3z5minimum_spanning_tree ignores zero distances (#18892)T)reasonstrictctjddgddgddgg}ttj|ddy)Nrrrr^r)r)r*rr rrss r12test_geometric_discrepancy_mst_with_zero_distancesz ?s  ]]:-G H ? ugcrlI > ? ]]:.>? ? ugcrlI > ? ?# I I C C ? ?  ? ? ? ?s< H H>H!7H-/H9 HH!H*-H69Ictjjd}tjd|}|jd}tj |}t dD]~}|jd}|jd}|jd}t|||||}|||f|||fc|||f<|||f<tj |} t|| y)Nl PvWuW=lWx"r!r:r7d) r)r8r9r rrirangeintegersrr) r+r:qmc_genr;discirow_1row_2coldisc_references r1test_perm_discrepancyzTestUtils.test_perm_discrepancysii##$JK$$QC0#v&s 2ALL$ELL$E,,q/C'uc4HDucz"F5#:$6 3F5#: ucz 2 __V4N D. 1 2r3cd}d}d}d}tjjd}|jd}tj|d}||}t ||tj|d }||}t ||tj|d }||}t ||tj|d }||}t ||y ) z,Alternative definitions from Matt Haberland.c x|j\}}|}tjtjddtj|dz zzdtj|dz dzzz d}|dddddf}|dddddf}tjtjtjddtj|dz zzdtj|dz zzdtj||z zz dd}d|zd|z |zz d|dzz |zzS)NrrraxisrgUUUUUU?shaper)sumprodabsxnsxijdisc1xkjdisc2s r1disc_c2zFTestUtils.test_discrepancy_alternative_implementation..disc_c2+s;77DAqCFF277A&)"&&S/&9%:&)"&&S/1*<&<%=DEGHED!QJ-CAtQJ-CFF266"''!,/sSy0A,A+B,/sSy0A,A+B-0sSy0A,A+BIJ#K() *+E A:!e +a1fUl: :r3c \|j\}}|dddddf}|dddddf}tjtjtjdtj||z z tj||z dzzdd}d|z d|dzz |zzS)Nr'rrrgUUUUUU?rr)rrrrrrs r1disc_wdzFTestUtils.test_discrepancy_alternative_implementation..disc_wd:s77DAqD!QJ-CAtQJ-C66"&&+-66#)+<*=+-66#)+.disc_mdDsZ77DAqCFF277C&)"&&S/&9%:&)"&&S/1*<&<%=DEGHED!QJ-CAtQJ-CFF266"''$,/sSy0A,A+B,/sSy0A,A+B-0sSy0A,A+B-0sSy0A10D,D +E 01 #2 9: ;Nc}}|dzz zScc}}w)Nr&rrr)rr)rjrrrmaximum)rrrkjs r1 disc_star_l2zKTestUtils.test_discrepancy_alternative_implementation..disc_star_l2Ts77DAq77qb A!a%L1,&&Q!V!4566&&"1XuQx*+GGA 1QT7AadG <<==!V s>AC#l j;s\^^X^6 q84Z1 6##s:666r3c|jd|}|jd}|jd|}t|dz}|j|}|j|}t|||ddy)Nrr3rGrrrS)rr8rEr)r+rrrn_half_r;s r1test_continuingzQMCEngineTests.test_continuingGswq84]]Q]' q84ZA% MMFM #( 67 3$?r3r:Nc|jd||}|jd}|j|jdk(sJ|jd}t ||y)Nrrrr:rGrr)rr8rrr)r+rr:rrr;s r1 test_resetzQMCEngineTests.test_resetTs_q8=]]Q]'  ##q(((# +r3c$|jd|}|jd}|jd|}|jd|jd}t||ddd|j g}t dD];}|dzdk(r |j |j+|jd =t|t dDcgc] }|dzdk(s |c}tj|d ycc}w) Nrr3rGrrMrrSrrh㈵>) rr8rrrrappendr) concatenate)r+rrrr; even_drawsrs r1test_fast_forwardz QMCEngineTests.test_fast_forwardhsq84]]Q]' q84A# 12T:   q 'A1uz!!&--/2##A&  '  58:aq1uz: ; NN: & :s  D )D cd}|j||}|jd}ttj|dtj d|dttj |d dtj d |dttj |d dtj d |dy) Nrr3irrr{Gz?rSrKr)rr8rr)meanrepeat percentile)r+rrrr;s r1test_distributionz QMCEngineTests.test_distributions q84t$ GGF #RYYsA%6T   MM&"1 -ryyq/A   MM&"1 -ryyq/A r3cd}tjt|5|jddddddy#1swYyxYw)Nz)'toto' is not a valid optimization methodrCrFrrrrr)rHrIrJrr+messages r1test_raises_optimizerz$QMCEngineTests.test_raises_optimizers@> ]]:W 5 B KK!e&K A B B Bs <Azoptimization,metric random-CDlloydct| Srz)rr;s r1r|zQMCEngineTests.shv&6%6r3c|jdd}|jd}||}|jdd|}|jd}||}||ksJy)NrFr3rgrr])rr8) r+rrr sample_ref metric_refoptimal_sample_metric_s r1test_optimizerszQMCEngineTests.test_optimizersskq51]]R]( J' ;;U;N//B/'/###r3ctjjd}g}tdD]6}|j dd|}|j |jd8t jtd5t|d |d dddt jtd5t|d |ddddy#1swY@xYw#1swYyxYw) Nl B"V6DGlUNr&rTrLrMzArrays are not equalrCrr) r)r8r9rrrPrHrIAssertionErrorr)r+r:r;rrs r1test_consume_prng_statez&QMCEngineTests.test_consume_prng_statesii##$FGq ,A[[1t[=F MM&--* + ,]]>1G H / F1I . / ]]>1G H / F1I . / / / / / /sC7CCC()r%)%rrr__doc__NotImplementedr*r)r/r.rr1boolrrr)ndarrayr0rHr parametrizer7r;r>rBrFrJr8r9rrMrSr[r`r rirkrnr{r3r1r"r"sr( D!L"M Ke}H  &C 455  5 D$D2::D [[Zs;5<5  [[Zs;5<5  [[Zs;&<&  [[Zs;#<#  [[Zs;7<7 [[Zs; @< @ [[Zs; [[ 3 II ! !"I J   [[,<, [[Zs; < 2 [[Z$0  1  B  [[ #// * 6 7 9 $  $ /r3r"c eZdZejZdZejddgddgddgddgd d gd d gd dgddggZ ejddgddgddgddgddgddgddgdd ggZ d!Z y")# TestHaltonTrrgUUUUUU?rgUUUUUU?rgqq?rgqq?rg98?rgqq?rgrq?g{'?gؖd?gz'd?gG?g{'?gk 97?g oO(?goS?g{'?ggrY?gAP?g R?g{'?gyr?g oO(?g͟E?cB|jd}|jdd}|jt|d}t ||d|j |j d }|j |j d d }t||y) NTrDrr3rG)rrvgMbP?rSr7r})r0rr8rErrrr)r+rrr;s r1 test_workerszTestHalton.test_workerss^^T^2 q40Z!< 6  __R(  Q/VZ(r3N) rrrr Haltonr*r)r)r*r/r.rwr{r3r1rurus ::DLBHHq!fuen$enuen$enuen$enuen>?M "((Z4'4'4'4'4'4'4'467K )r3ruceZdZejZdZdZdZdZ e jjdddge jjdd dge jjd d d gd Z dZdZy )TestLHSTc.tjdyNzNot applicable: not a sequence.rHr+r+argss r1rJzTestLHS.test_continuing 56r3c.tjdyr|r}r~s r1rSzTestLHS.test_fast_forwardrr3c.tjdyNzJNot applicable: the value of reference sample is implementation dependent.r}r~s r1rFzTestLHS.test_sample 1 2r3strengthrrrFrNractjjd}d}|dz}d}tj|||||}|j|} | j ||fk(sJ|j |k(sJtj|dz|z } tj| ||fj} tj| | k7sJtj| d } |rd|z nd} t| | | tj| | z | kDsJ|dk(r|tj|}tt||}tt!|j"dD]L\}}| dd||gf}||zj%t&}|Dchc] }t)|}}t+||Nyyycc}w) Nl pIrtS"Md@Br!rr)rrrrr:rrrrrS)r)r8r9r rrrarange broadcast_toTanysortrsetrrrrrinttupler)r+rrrr:prrrr; expected1dexpected sorted_sampletolunique_elementsdesiredrr samples_2dresrowres_sets r1test_sample_stratifiedzTestLHS.test_sample_stratifiedsii##$JK  qD ##a(-51=(+-#||1v%%%##q((( iilS(A- ??:1v688vvf()))Q/ !cAgq xc:vvfx'#-... q=\1 iilO'/?CDG$U688_a8 /1#A1vI. !A~--c2145#5:55Wg.  / 2=6sF=c|jdd}|jd}|jddd}|jd}t||y)NrFr3rgrrar])rr8r)r+rrfrhris r1test_optimizer_1dzTestLHS.test_optimizer_1d sRq51]]R]( ;;U;M//B/':w/r3cd}tjt|5tjdddddd}tjt|5tjdd}|j d dddd}tjt|5tjdd}|j d dddd }tjt|5tjd d}|j d dddy#1swYxYw#1swYxYw#1swYpxYw#1swYyxYw) Nznot a valid strengthrCrr&)rz%n is not the square of a prime numberr)rrrer!zn is too small for d )rHrIrJr rr8)r+r_rs r1r zTestLHS.test_raisess) ]]:W 5 .   q1 - .; ]]:W 5 ''!a8F MM"  ; ]]:W 5 ''!a8F MM!  * ]]:W 5 ''!a8F MM!    . .        s/D))D5))E7)E )D25D>E  E)rrrr rr*r)rJrSrFrHrrsrrr r{r3r1rzrzs   DL772 [[Z!Q0 [[Z%7 [[^dK-@A#/B81#/J0r3rzc 6eZdZejZdZejddgddgddgddgddgddgdd gd dggZ ejd d gd d gddgddgddgddgddgddggZ dZ dZ dZ dZej j#ddd gd!Zd"Zy#)$ TestSobolTrrrrrrrrga6?gtAAz?g`?g_km?gsAdn?grIâ?gqL?g|?g+&C?g#*H;?g&fb_?g]bnQ?gvD2(?gt|!?g$\?g4>z@?ctjtd5tjd}|j ddddy#1swYyxYw)N'The balance properties of Sobol' pointsrCrr7)rHrrr Sobolr8r+rs r1 test_warningzTestSobol.test_warningAsC \\+.>? YYq\F MM"    s 'A  Ac\tjdd}|jd}t|jdd||jd}t|jdd|t j td5|jddddy#1swYyxYw)NrFrDrMrGrrC)r r random_base2rr/rHrIrJr+rr;s r1test_random_base2zTestSobol.test_random_base2Gs1u-$$Q'4--bq16:$$Q'4--a2F;]]:.>? #    " # # #s B""B+cRtjtd5tjtjj dzdddtjtd5tjdddddy#1swYExYw#1swYyxYw)Nz Maximum supported dimensionalityrCrzMaximum supported 'bits' is 64A)bits)rHrIrJr rMAXDIMrs r1 test_raisezTestSobol.test_raiseUs ]]:.?@ , IIcii&&* + ,]]:.=> " IIab ! " "  , , " "s1B0BBB&cbtjdd}t|jj j }t|jj j }t |tddit |tddiy)NiWFrDrr)r rrr8flattentolistr)r+rcount1count2s r1 test_high_dimzTestSobol.test_high_dim^s|4%000299;<00299;<VWc4[12VWc4[12r3rrr&ctjdd|}d|z}|j|}t|jd||t j td5|jdddy#1swYyxYw)NrFrrzincreasing `bits`rC)r rr8rr/rHrIrJ)r+rrnsr;s r1 test_bitszTestSobol.test_bitseso1u48 Wr"4--cr2F; ]]:-@ A  MMO   s #A==Bctjddd}|jd}t|j|y)NrFrgrrG)r rr8rr/rs r1 test_64bitszTestSobol.test_64bitsos21u26q!4--v6r3N)rrrr rr*r)r)r*r/r.rrrrrHrrsrrr{r3r1rr*s 99DLBHHr2h"Cj#Tl#Tl$en$en$en$en./M"((Z4& 2'4'4'4'4'4'467K #"3 [[VaV,-7r3rceZdZejZdZdZdZdZ dZ dZ dZ e jjdgd gd gd Ze jjd gd gd gd ZdZe jjd gd ddgge jjdddggdZdZy) TestPoissonFc.tjdy)NzToo costly in memory.r}r~s r1rBzTestPoisson.test_boundsys +,r3c.tjdy)Nz"Not applicable: recursive process.r}r~s r1rSzTestPoisson.test_fast_forward|s 89r3c.tjdyrr}r~s r1rFzTestPoisson.test_samplerr3ctd}d}|jd|d}|j|}t||ksJt||k\sJ|j|}t||ksJt||k\sJt j ||gd}t||dzksJt||k\sJy) N皙?rrF)rradiusrrrr)rr8rEl2_normr)rQ)r+rrrr sample_initsample_continuedr;s r1rJzTestPoisson.test_continuings q%@mmbm) ;2%%%{#v---!==2=.#$***'(F222.> ?aH6{b1f$$$v&(((r3cPtjjd}d}d\}}||z |jdz|z}gd}ddg}t|||}|D]L\} } } |j | | | |} | j|} t | |ksJt | | k\rLJy) Nl x_4vZ.cr)g{Gz?皙?r!)rr&rMvolumesurface)rr hyperspherer:)r)r8r9rr*rEr)r+r:rrrradii dimensionshypersphere_methodsgenrrrrr;s r1 test_mindistzTestPoisson.test_mindistsii##$KL  Tszz!},s2 '3j%)<=&) - "Av{YYF F]]2&Fv;"$ $$6?f, ,, -r3cnd}|jd|}|j}t||k\sJy)Nrr)rr)r* fill_spacer)r+rrr;s r1test_fill_spacezTestPoisson.test_fill_spaces9Qv.""$v&(((r3rrwrrw)rrrcd}gd}|jd|||}|jd}|D]}t||t||y)Nr)r&r&rr&rrrr r6r*r8r )r+rrr rr;points r1test_sample_inside_lower_boundsz+TestPoisson.test_sample_inside_lower_boundss[H r" /E eX . h . /r3r cd}gd}|jd|||}|jd}|D]}t||t||y)Nr)rrr&rr6r)r+r rrrr;rs r1test_sample_inside_upper_boundsz+TestPoisson.test_sample_inside_upper_boundss[H r" /E eX . h . /r3cd}gd}gd}tjtd5|jd|||dddy#1swYyxYw)Nr)r&rrrz1Bounds are not consistent 'l_bounds' < 'u_bounds'rCr&rrHrIrJr*)r+rrr s r1test_inconsistent_bound_valuez)TestPoisson.test_inconsistent_bound_valuesS ]] EG P II&8hI O P P Ps AArwrr&rcd}tjtd5|jd|||dddy#1swYyxYw)NrzP'l_bounds' and 'u_bounds' must be broadcastable and respect the sample dimensionrCr&rr)r+r rrs r1test_inconsistent_boundsz$TestPoisson.test_inconsistent_boundssO ]] $%  IIF!H      s =Acd}tjt|5tjdddddy#1swYyxYw)Nz*'toto' is not a valid hypersphere samplingrCrrr)r)rHrIrJr PoissonDiskr^s r1r zTestPoisson.test_raisess8? ]]:W 5 3 OOA6 2 3 3 3s ?AN)rrrr rr*r)rBrSrFrJrrrHrrsrrrrr r{r3r1rrus ??DL-:2)&-*) [[Z, )BC /D / [[Z, )BC /D /P [[Z,R)AB [[Z1a&2 3C 3r3rceZdZdZej j ddZdZdZ ej j ddZ y)TestMultinomialQMCc8tjgd}tjtd5t j |ddddtjgd}d}tjt|5t j |ddddtjgd}d }tjt|5t j |dt jd  dddd }tjt|5t j |dtjj dddy#1swY"xYw#1swYxYw#1swY}xYw#1swYyxYw)N)Q?p= ף?gffffff?)\(?z'Elements of pvals must be non-negative.rCr7)n_trials)rrrrrz Elements of pvals must sum to 1.rrrrrz Dimension of `engine` must be 1.rr)rr"`engine` must be an instance of...) r)r*rHrIrJr MultinomialQMCrr8r9)r+rr_s r1test_validationsz#TestMultinomialQMC.test_validationss> HH4 5 ]]:.AB /   q2 . / HH2 35 ]]:W 5 /   q2 . / HH3 45 ]]:W 5 F   q2cii!n E F8 ]]:W 5 O   q2bii6K6K6M N O O# / / / /  F F O Os/E+E8-F-5F+E58FF Fzignore::UserWarningc4tjjd}tjgd}d}tj||zj t }tj|||}t|jd|dy)Nl (u@gP{-rr)rr(rrS) r)r8r9r* atleast_2drrr rr)r+r:rrrrs r1test_MultinomialBasicDrawz,TestMultinomialQMC.test_MultinomialBasicDrawsqii##$IJ HH3 4==A.55c:##AsC a((;r3c0tjjd}tjgd}t j |d|}|jd}t |tj|z tj|dy)Nl 8X7:ct]+C:ri )rr:rrRrS) r)r8r9r*r rrrr)r+r:rrdrawss r1test_MultinomialDistributionz/TestMultinomialQMC.test_MultinomialDistribution sjii##$JK HH3 4##A#> a u -r}}Q/?dKr3c4tjgd}t|}tt ||ddtt ||ddtt ||ddtt ||ddtt ||d |d z y) N)r皙?g?g333333?r?gGz?rOrrrrgaۢ?g7?r&rOr)r)r*rErr )r+ p_cumulativers r1test_FindIndexz!TestMultinomialQMC.test_FindIndexsxx KL < %lD#>B%lD#>B%lD'BAF%lD'BAF%lD#>qIr3cftjjd}tjgd}d}tj||zj t }tjdd|}tj||||}t|jd|dy) Nl aFkq|'x<rrrTr)rrr:rS) r)r8r9r*rrrr rrr)r+r:rrr base_enginers r1test_other_enginez$TestMultinomialQMC.test_other_enginesii##$KL HH3 4==A.55c:iiDc: ##A(+- a((;r3N) rrrrrHrfilterwarningsrrrrr{r3r1rrs\O. [[ 56<7<LJ [[ 56 <7 @>&0 ( (r3rcBeZdZdZdZdZdZdZdZdZ dZ d Z y ) TestMultivariateNormalQMCc.d}tjt|5tjdgtj ddddd}tjt|5tjgdtj ddddd }tjt|5tjddgt jjdddd }tjt|5tjddgd dgdd ggdddd }tjt|5tjddgd dgdd ggdddd }tjt|5tjdgd dgdd ggdddy#1swYxYw#1swY>xYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nz(Dimension of `engine` must be consistentrCrrr)rr%rMrzCovariance matrix not PSD.rz#Covariance matrix is not symmetric.z/Dimension mismatch between mean and covariance.) rHrIrJr rrr)r8r9r^s r1rz*TestMultivariateNormalQMC.test_validationss= ]]:W 5 B  % %qc#))a. A B> ]]:W 5 H  % %i A G H8 ]]:W 5 N  % %q!fRYY5J5J5L M N0 ]]:W 5 @  % %q!f1v1v.> ? @9 ]]:W 5 @  % %q!f1v1v.> ? @E ]]:W 5 =  % %qcQFQF+; < = =) B B H H N N @ @ @ @ = =sG-G 0.G6G'G3"G?&H  GG$'G03G<?H Hcbtjgdgdgdgdg}|jJy)Nr%)rrr)rrr)rrr)r r _corr_matrixrs r1test_MultivariateNormalQMCNonPDz9TestMultivariateNormalQMC.test_MultivariateNormalQMCNonPDs2**  9i8 ""...r3ctjdd}|j}t|jd|jd}t|jdtjddgddgddgg}|j}t|jd|jd}t|jd t j gd }t j gd gd gd g}tj||}|j}t|jd|jd}t|jdy)Nrr!)rXrrrrrr=rrrrrrrrrrrrr&r!r&r rr8rrr)r*r+rr rXrs r1test_MultivariateNormalQMCz4TestMultivariateNormalQMC.test_MultivariateNormalQMCs**q9--/W]]F+--!-$W]]F+**AaVaVgZC)g~T~O?g*ʥ o@gc}E? r)r8r9standard_normalr diagr rr*rr+r:r<Arr rs r1 test_MultivariateNormalQMCSeededz:TestMultivariateNormalQMC.test_MultivariateNormalQMCSeededs]ii##$KL    '   1 6 6**288QF+;Q9>CI--!-$88h %:&.%9%;<!1=ii##$KL    '   1 6 6**288I+>9>CI--!-$88%F%C%EF!1=r3cHtjjd}|jd}||j ztj |jdz}t jtjddg||d}|jd}tjdd gd d gg}t||d tjjd}|jd}||j ztj |jdz}t jtjgd||d}|jd}tjgdgdg}t||d y)Nl A^}KT0zubNr8rrT)r:r rgFX?ggR4gO=`?rRrSr9r&r%)go.2?gikD0NgPN)g4YgҫJC?g-v2@r:r=s r1,test_MultivariateNormalQMCSeededInvTransformzFTestMultivariateNormalQMC.test_MultivariateNormalQMCSeededInvTransform s_ii##$KL    '   1 6 6** HHaV aS --!-$88h %:&/%:%<=!1=ii##$KL    '   1 6 6** HHY 4 --!-$88%E%D%FG!1=r3cptjjd}tjddgddgddgg|}|jd}t tj |jddksJt tj |jddz dksJd D]}t|dd|f\}}|d kDrJtj|j}tj |d dksJtjd d gd dgdd gg|}|jd}t tj |jdddgz dksJt tj |jdtjd z dksJd D]}t|dd|f\}}|d kDrJtj|j}tj |d dz dksJy)NlV^Am%2rrrXrr:rrrrUrrrOrNr'rr r)r8r9r rrArrXrr rr rjr!s r1!test_MultivariateNormalQMCShapiroz;TestMultivariateNormalQMC.test_MultivariateNormalQMCShapiro&sii##$HI**Qq!fq!f-3 --#-&266',,A,./$6777266'++1+-12T9::: Agadm,GAt#: : ffW&&()vvc$i 4'''**s3*sCj!9s --#-&266',,A,.!Q784?@@@266'++1+- <=DEEE Agadm,GAt#: : ffW&&()vvc$i#o&---r3cttjjd}tjddgddgddgg|d}|jd}t tj |jdd ksJt tj |jddz d ksJd D]}t|dd|f\}}|d kDrJtj|j}tj |d d ksJtjd d gddgddgg|d}|jd}t tj |jdddgz d ksJt tj |jdtjdz d ksJd D]}t|dd|f\}}|d kDrJtj|j}tj |d dz d ksJy)Nl A"l7D#maxbwcuCrrT)rXrr:r rrrrUrrrOrNr'rrrDr!s r1-test_MultivariateNormalQMCShapiroInvTransformzGTestMultivariateNormalQMC.test_MultivariateNormalQMCShapiroInvTransformFsii##$KL**Qq!fq!f-3d --#-&266',,A,./$6777266'++1+-12T9::: Agadm,GAt#: : ffW&&()vvc$i 4'''**ssc3Z(   --#-&266',,A,.!Q784?@@@266'++1+- <=DEEE Agadm,GAt#: : ffW&&()vvc$i#o&---r3ctjjd}tjgdgdgdgdg|}|jd}t tj |jd d ksJtj tj|ddd fd z d ksJtj tj|ddd fd z d ksJtj tj|ddd ftjd z d ksJdD]}t|dd|f\}}|dkDrJtj|j}tj |dd ksJtj |dd z d ksJt tj |ddd f|ddd fz|ddd fz dksJy)Nl @jSm-\1:c# )rrr)rOrrO)rrOrO)rOrOrNrCr@rrrrUrrrg?rr:rO) r)r8r9r rrArrXrrjr rr r!s r1$test_MultivariateNormalQMCDegeneratez>TestMultivariateNormalQMC.test_MultivariateNormalQMCDegenerateisii##$JK**  /?C  --#-&266',,A,./$6777vvbffWQT]+a/04777vvbffWQT]+a/04777vvbffWQT]+bggaj89D@@@ Agadm,GAt#: : ffW&&()vvc$i 4'''vvc$i!m$t+++266'!Q$-'!Q$-7'!Q$-GH r3N) rrrrr+r4r6r?rArErGrIr{r3r1r'r's1=4/,0,4>.>2.@!.Fr3r'ceZdZdZdZdZy) TestLloydc$tjjd}|jddd}t |}t |}t dD]9}t|d}t |}t |}||ksJ||ksJ|}|}|};y)Nirr)r)rrM)maxiter)r)r8 RandomStateuniformrrrr) r+r:r;base_l1base_l2rI sample_lloydcurr_l1curr_l2s r1 test_lloydzTestLloyd.test_lloydsii##G,Q16"&/q "AAAL|,Gl+GW$ $$W$ $$GG!F "r3ctjddgddgddgddgg}|j}t|}t ||tj ||rJy)z Verify that the input samples are not mutated in place and that they do not share memory with the output. rrrdN)r)r*copyrrmay_share_memory)r+ sample_orig sample_copy new_samples r1test_lloyd_non_mutatingz!TestLloyd.test_lloyd_non_mutatingst hhc !$c !$c !$c  ,- "&&( ;   [1&&{J????r3ctjtd5gd}t|dddd}tjt|5dgdgdgg}t|dddd}tjt|5d dgd dgdd gg}t|dddy#1swYxYw#1swYRxYw#1swYyxYw) Nz`sample` is not a 2D arrayrCrEz`sample` dimension is not >= 2rrrz!`sample` is not in unit hypercubegrr)rHrIrJr)r+r;r s r1test_lloyd_errorszTestLloyd.test_lloyd_errorss ]]:-J K ; F 26 : ;0 ]]:S 1 ;cC51#&F 26 : ;3 ]]:S 1 ;Qi#saV4F 26 : ; ; ; ;  ; ;  ; ;s#B*B6 C*B36B?C N)rrrrVr]r_r{r3r1rKrKs".@ ;r3rKcHtj|jSrz)r pdistrrds r1rrs >>& ! % % ''r3rcd}tjj|}|d|jd}tjj|}|d|jd}t||tjj |}|d|jd}|d|jd}t||tjj |}|d|jd}t||t||d}t j t|5|d||dddy#1swYyxYw) Nl7Pr)rr(rMrz3got multiple values for argument now known as `rng`rC)rr:r()r)r8rOrr9rHrI TypeError)r seed_numberr:res1res2res3r_s r1test_deterministicrhs(K ))   ,C AC ' ' *D ))   ,C AC ' ' *Dt ))   ,C AC ' ' *D A; ' . .q 1Dt ))   ,C A3  & &q )DttCG y 07 +6777s EE')6r collectionsr itertoolsrrrHnumpyr) numpy.testingrrrr scipy.spatialr scipy.statsr scipy.stats._sobolr r scipy.stats._qmcrrrrrrrrrrrr r rr r"rurzrrrrr'rKrrrsrxrrrrhr{r3r1rqs< + #/j%j%Z #'#'L3==&. 2