Ë
    âQ(h¹à  ã                   óp  — d dl Z d dlmZ d dlmZmZ d dlZd dlZd dl	m
Z
mZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZmZ  G d
„ d«      Z G d„ d«      Z G d„ dej4                  «      Z d„ Z!d„ Z"d„ Z#d„ Z$ G d„ d«      Z% G d„ de%«      Z& G d„ de%«      Z' G d„ de%«      Z( G d„ de%«      Z) G d„ d«      Z* G d „ d!«      Z+ G d"„ d#«      Z, G d$„ d%«      Z-d&„ Z.ej^                  ja                  d'ejb                  ejd                  ejf                  ejh                  g«      d(„ «       Z5y))é    N)ÚCounter)ÚcombinationsÚproduct)Úassert_allcloseÚassert_equalÚassert_array_equalÚassert_array_less)Údistance)Úshapiro)Ú_test_find_index)Úqmc)Úvan_der_corputÚn_primesÚprimes_from_2_toÚupdate_discrepancyÚ	QMCEngineÚ_l1_normÚ_perturb_discrepancyÚ&_lloyd_centroidal_voronoi_tessellationc                   ó    — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
ej                  j                  d	d
¬«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	TestUtilsc                 óø  — dgdgdgg}dgdgdgg}t        j                  |dd¬«      }t        ||«       ddgddgddgg}t        j                  ddgddgg«      }ddgddgdd	gg}t        j                  ||d   |d   ¬«      }t        ||«       t        j                  ||d   |d   d
¬«      }t        ||«       g d¢g d¢g d¢g}dg d¢}}g d¢g d¢g d¢g}t        j                  |||¬«      }t        ||«       y )Nr   é   ç      à?éþÿÿÿé   é   ©Úl_boundsÚu_boundsé   ç      @T©r   r    Úreverse©r   r   r   )r   r   r   )r   r   r   )r   r!   é   )r&   r"   ç      ø?)r   Úscaler   ÚnpÚarray)ÚselfÚspaceÚoutÚscaled_spaceÚboundsÚscaled_back_spacer   r    s           úX/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/stats/tests/test_qmc.pyÚ
test_scalezTestUtils.test_scale   s  € à��q�c˜C˜5Ð!ˆØˆt�a�S˜1˜#ÐˆÜ—y‘y °¸aÔ@ˆä˜ cÔ*ð �Q�˜!˜Q˜ # s Ð,ˆÜ—‘˜B ˜7 Q¨ FÐ+Ó,ˆØ�Aˆw˜˜A˜  C Ð)ˆä—y‘y °¸±ÀVÈAÁYÔOˆä˜ cÔ*äŸI™I l¸VÀA¹YØ/5°a©yÀ$ôHÐäÐ)¨5Ô1ò šI¢Ð7ˆØ¢	�(ˆÚš)¢]Ð3ˆä—y‘y °ÀHÔMˆä˜ cÕ*ó    c                 ó2  — t         j                  j                  d«      }|j                  d«      }|j                  d«       dz  }|j                  d«      dz  }t        j                  |||d¬«      }t        j                  |||d¬«      }t        ||«       y )Nl	   Ea�T4ÇGõñ*­wÉvî ©é   é
   r7   F)r$   T)r)   ÚrandomÚdefault_rngr   r(   r   )r+   ÚrngÚsampleÚaÚbÚscaledÚunscaleds          r1   Útest_scale_randomzTestUtils.test_scale_random4   s}   € Ü�i‰i×#Ñ#Ð$KÓLˆØ—‘˜HÓ%ˆØ�Z‰Z˜‹^ˆO˜bÑ ˆØ�J‰J�r‹N˜RÑˆÜ—‘˜6 1 a°Ô7ˆÜ—9‘9˜V Q¨°4Ô8ˆÜ˜ &Õ)r3   c                 óü  — t        j                  t        d¬«      5  g d¢}t        j                  |dd¬«       d d d «       t        j                  t        d¬«      5  ddgd	d	gd
d
gg}t        j                  ddgddgg«      }t        j                  ||d   |d	   ¬«       d d d «       t        j                  t        d¬«      5  ddgd	d	gd
d
gg}g d¢ddg}}t        j                  |||¬«       d d d «       t        j                  t        d¬«      5  ddgd	d	gd
d
gg}t        j                  g d¢g d¢g«      }t        j                  ||d   |d	   ¬«       d d d «       t        j                  t        d¬«      5  ddgd	dgd
d
gg}t        j                  ddgddgg«      }t        j                  ||d   |d	   ¬«       d d d «       t        j                  t        d¬«      5  ddgddgddgg}t        j                  ddgddgg«      }t        j                  ||d   |d	   d¬«       d d d «       y # 1 sw Y   �ŒûxY w# 1 sw Y   �Œ xY w# 1 sw Y   �Œ^xY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ§xY w# 1 sw Y   y xY w)NúSample is not a 2D array©Úmatch©r   r   r   r   r   r   zBounds are not consistentr   r   r   r!   z/'l_bounds' and 'u_bounds' must be broadcastable)r   r   r   )r   r!   r!   úSample is not in unit hypercuber'   zSample is out of boundsé   r"   Tr#   )ÚpytestÚraisesÚ
ValueErrorr   r(   r)   r*   )r+   r,   r/   r   r    r-   s         r1   Útest_scale_errorszTestUtils.test_scale_errors=   s|  € Ü�]‰]œ:Ð-HÔIñ 	6ÚˆEÜ�I‰I�e b°1Õ5÷	6ô �]‰]œ:Ð-IÔJñ 	EØ˜�V˜a ˜V c¨3 ZÐ0ˆEÜ—X‘X  A˜w¨¨A¨Ð/Ó0ˆFÜ�I‰I�e f¨Q¡i¸&À¹)ÕD÷	Eô
 �]‰]œ:ð .Gô Hñ 	Cà˜�V˜a ˜V c¨3 ZÐ0ˆEÚ!+¨a°¨V�hˆHÜ�I‰I�e h¸ÕB÷		Cô �]‰]œ:ð .Gô Hñ 	Eà˜�V˜a ˜V c¨3 ZÐ0ˆEÜ—X‘Xšzª9Ð5Ó6ˆFÜ�I‰I�e f¨Q¡i¸&À¹)ÕD÷		Eô �]‰]œ:ð .:ô ;ñ 	Eà˜�V˜a ˜X¨¨S zÐ2ˆEÜ—X‘X  A˜w¨¨A¨Ð/Ó0ˆFÜ�I‰I�e f¨Q¡i¸&À¹)ÕD÷		Eô �]‰]œ:Ð-GÔHñ 	$Ø˜�7˜Q ˜F Q¨ HÐ-ˆCÜ—X‘X  A˜w¨¨A¨Ð/Ó0ˆFÜ�I‰I�c F¨1¡I¸¸q¹	Ø"õ$÷	$ð 	$÷7	6ñ 	6ú÷	Eñ 	Eú÷
	Cñ 	Cú÷	Eñ 	Eú÷	Eð 	Eú÷	$ð 	$úsK   œH2ÁAH?Ã,IÄAIÅ;AI&Ç#AI2È2H<È?I	ÉIÉI#É&I/É2I;c           
      ó>  — t        j                  ddgddgddgddgddgddgg«      }d|z  dz
  d	z  }t        j                  ddgddgddgddgddgddgg«      }d|z  dz
  d	z  }t        t        j                  |«      d
d¬«       t        t        j                  |«      dd¬«       t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }d|z  dz
  dz  }t        t        j                  |d¬«      dd¬«       t        t        j                  |d¬«      dd¬«       t        t        j                  |d¬«      dd¬«       dD ]T  }t        j
                  d| z  «      }t        t        j                  t        j                  dg|z  g«      d¬«      |«       ŒV y )Nr   r&   r   r   é   r!   ç       @ç      ð?ç      (@ç‚âÇ˜»–€?ç-Cëâ6?©Úatolg/Ý$�…?©r   r   r   r   r   r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   ç      @ÚMD©Úmethodr"   ÚWDçÙÎ÷Sãõ?ÚCDç£’:MÔ?©r   rM   rG   é   é    é@   úL2-star)r)   r*   r   r   ÚdiscrepancyÚsqrt)r+   Úspace_1Úspace_2r;   ÚdimÚrefs         r1   Útest_discrepancyzTestUtils.test_discrepancy_   s›  € Ü—(‘(˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀFÐKÓLˆØ˜‘= 3Ñ&¨9Ñ5ˆÜ—(‘(˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀFÐKÓLˆØ˜‘= 3Ñ&¨9Ñ5ˆô 	œŸ™¨Ó0°&¸tÕDÜœŸ™¨Ó0°&¸tÕDô
 —‘Ò-Ú-Ú-Ú-Ú-Ú-Ú-ð/ó 0ˆð ˜‘, Ñ$¨Ñ3ˆäœŸ™¨°tÔ<¸fØ!õ	#äœŸ™¨°tÔ<¸fØ!õ	#äœŸ™¨°tÔ<¸fØ!õ	#ð )ò 	DˆCÜ—'‘'˜!˜s˜d™)Ó$ˆCÜœCŸO™O¬B¯H©H°q°c¸#±g°YÓ,?Ø3<ô>Ø?BõDñ	Dr3   c           	      ó  — t        j                  ddgddgddgddgddgddgg«      }t        j                  t        d¬«      5  t        j                  |«       d d d «       t        j                  t        d	¬«      5  t        j                  ddg«       d d d «       d
d
gddgddgg}t        j                  t        d¬«      5  t        j                  |d¬«       d d d «       y # 1 sw Y   Œ‹xY w# 1 sw Y   Œ\xY w# 1 sw Y   y xY w)Nr   r&   r   r   rM   r!   rF   rC   rB   r   r   ú'toto' is not a valid ...Útotor^   )r)   r*   rH   rI   rJ   r   ri   ©r+   r;   s     r1   Útest_discrepancy_errorsz!TestUtils.test_discrepancy_errors„   sñ   € Ü—‘˜A˜q˜6 A q 6¨A¨q¨6°A°q°6¸A¸q¸6ÀAÀqÀ6ÐJÓKˆä�]‰]ÜÐ@ô
ñ 	$ô �O‰O˜FÔ#÷	$ô
 �]‰]œ:Ð-HÔIñ 	$Ü�O‰O˜Q ˜FÔ#÷	$ð �a�&˜1˜a˜& 3¨ *Ð-ˆÜ�]‰]œ:Ð-IÔJñ 	3Ü�O‰O˜F¨6Õ2÷	3ð 	3÷	$ð 	$ú÷
	$ð 	$ú÷	3ð 	3ús$   ÁC#Á<C/ÃC;Ã#C,Ã/C8Ã;Dc           
      óF  — t        j                  g d¢g d¢g d¢g d¢g d¢g d¢g d¢g«      }d|z  d	z
  d
z  }t        t        j                  |dd¬«      dd¬«       t        t        j                  |dd¬«      dd¬«       t        t        j                  |dd¬«      dd¬«       dD ]U  }t        j
                  d| z  «      }t        t        j                  t        j                  dg|z  g«      dd¬«      |«       ŒW |j                  t        dd„ «       t        j                  t        d¬«      5  t        j                  |d¬«       d d d «       t        j                  t        d¬«      5  t        j                  |d ¬«       d d d «       y # 1 sw Y   ŒExY w# 1 sw Y   y xY w)!NrU   rV   rW   rX   rY   rZ   r[   rN   rO   r\   r]   rG   )r_   Úworkersr"   rR   rS   r`   ra   rb   rc   rd   r&   r   rh   éÿÿÿÿÚ	cpu_countc                   ó   — y ©N© r{   r3   r1   ú<lambda>z5TestUtils.test_discrepancy_parallel.<locals>.<lambda>¯   s   � r3   zCannot determine therC   ©rv   zInvalid number of workers...r   )r)   r*   r   r   ri   rj   ÚsetattrÚosrH   rI   ÚNotImplementedErrorrJ   )r+   Úmonkeypatchr;   rm   rn   s        r1   Útest_discrepancy_parallelz#TestUtils.test_discrepancy_parallel“   sq  € Ü—‘Ò-Ú-Ú-Ú-Ú-Ú-Ú-ð/ó 0ˆð ˜‘, Ñ$¨Ñ3ˆäœŸ™¨°tÀQÔGØØ!õ	#ô 	œŸ™¨°tÀQÔGØØ!õ	#ô 	œŸ™¨°tÀQÔGØØ!õ	#ð )ò 	PˆCÜ—'‘'˜!  ™+Ó&ˆCÜœCŸO™O¬B¯H©H°q°c¸C±i°[Ó,AØ3<ÀbôJØKNõPð	Pð
 	×ÑœB ©\Ô:Ü�]‰]Ô.Ð6LÔMñ 	0Ü�O‰O˜F¨BÕ/÷	0ô �]‰]œ:Ð-KÔLñ 	0Ü�O‰O˜F¨BÕ/÷	0ð 	0÷	0ð 	0ú÷	0ð 	0ús   Ä/FÅ*FÆFÆF c           	      ó’  — t        j                  ddgddgddgddgddgddgg«      }t        j                  t        d¬«      5  t        j                  |«       d d d «       t        j                  t        d	¬«      5  t        j                  ddg«       d d d «       d
d
gddgddgg}t        j                  t        d¬«      5  t        j                  |d¬«       d d d «       t        j                  d
d
gd
d
gd
dgg«      }t        j                  t        d¬«      5  t        j                  |«       d d d «       t        j                  ddgg«      }t        j                  t        d¬«      5  t        j                  |«       d d d «       y # 1 sw Y   �Œ4xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÌxY w# 1 sw Y   Œ�xY w# 1 sw Y   y xY w)Nr   r&   r   r   rM   r!   rF   rC   rB   r   r   rq   rr   r^   z!Sample contains duplicate points.z'Sample must contain at least two points)	r)   r*   rH   rI   rJ   r   Úgeometric_discrepancyÚwarnsÚUserWarningrs   s     r1   Ú!test_geometric_discrepancy_errorsz+TestUtils.test_geometric_discrepancy_errors¶   s�  € Ü—‘˜A˜q˜6 A q 6¨A¨q¨6°A°q°6¸A¸q¸6ÀAÀqÀ6ÐJÓKˆä�]‰]œ:Ð-OÔPñ 	.Ü×%Ñ% fÔ-÷	.ô �]‰]œ:Ð-HÔIñ 	.Ü×%Ñ% q¨! fÔ-÷	.ð �a�&˜1˜a˜& 3¨ *Ð-ˆÜ�]‰]œ:Ð-IÔJñ 	=Ü×%Ñ% f°VÕ<÷	=ô —‘˜A˜q˜6 A q 6¨A¨q¨6Ð2Ó3ˆÜ�\‰\œ+Ð-PÔQñ 	.Ü×%Ñ% fÔ-÷	.ô —‘˜C ˜:˜,Ó'ˆÜ�]‰]œ:Ð-VÔWñ 	.Ü×%Ñ% fÔ-÷	.ð 	.÷	.ñ 	.ú÷	.ñ 	.ú÷	=ð 	=ú÷	.ð 	.ú÷	.ð 	.ús<   ÁFÁ<FÃF%ÄF1Å,F=ÆFÆF"Æ%F.Æ1F:Æ=Gc                 óf  — t        j                  ddgddgg«      }t        t        j                  |«      t        j
                  d«      «       t        t        j                  |d¬«      t        j
                  d«      «       t        j                  ddgddgddgg«      }t        t        j                  |«      d«       t        t        j                  |d¬«      d«       t        j                  ddgddgddgg«      }t        t        j                  |«      t        j
                  d«      d	z  «       t        t        j                  |d¬«      t        j
                  d«      dz  «       t        t        j                  |d
¬«      d«       t        t        j                  |dd
¬«      d«       t         j                  j                  d«      }t        j                  d|¬«      j                  d«      }t        t        j                  |«      d«       t        t        j                  |d¬«      d«       y )Nr   r   r   Úmstr^   r   ç      è?ç      Ð?rM   Ú	chebyshev)Úmetric)r_   r�   l	   ’sˆ;80øri�R$½� r&   ©Údr:   é2   g–˜Y�$ª?guÚ—¼8É?)	r)   r*   r   r   r„   rj   r8   r9   ÚLatinHypercube)r+   r;   r:   s      r1   Útest_geometric_discrepancyz$TestUtils.test_geometric_discrepancyË   s§  € Ü—‘˜A˜q˜6 A q 6Ð*Ó+ˆÜœ×1Ñ1°&Ó9¼2¿7¹7À1»:ÔFÜœ×1Ñ1°&ÀÔGÌÏÉÐQRËÔTä—‘˜A˜q˜6 A q 6¨C°¨8Ð4Ó5ˆÜœ×1Ñ1°&Ó9¸3Ô?Üœ×1Ñ1°&ÀÔGÈÔNä—‘˜A˜q˜6 D¨$ <°!°Q°Ð8Ó9ˆÜœ×1Ñ1°&Ó9¼2¿7¹7À1»:È¹>ÔJÜœ×1Ñ1°&ÀÔGÌÏÉÐQRËÐVWÉÔXÜœ×1Ñ1°&ÀÔMÈtÔTÜÜ×%Ñ% f°UÀ;ÔOÐQTô	
ô �i‰i×#Ñ#Ð$KÓLˆÜ×#Ñ# a¨SÔ1×8Ñ8¸Ó<ˆÜœ×1Ñ1°&Ó9Ð;NÔOÜÜ×%Ñ% f°UÔ;Ð=Põ	
r3   z5minimum_spanning_tree ignores zero distances (#18892)T)ÚreasonÚstrictc                 ó‚   — t        j                  ddgddgddgg«      }t        t        j                  |d¬«      d«       y )Nr   r   r‰   r^   r   )r)   r*   r   r   r„   rs   s     r1   Ú2test_geometric_discrepancy_mst_with_zero_distancesz<TestUtils.test_geometric_discrepancy_mst_with_zero_distancesã   s<   € ô
 —‘˜A˜q˜6 A q 6¨A¨q¨6Ð2Ó3ˆÜœ×1Ñ1°&ÀÔGÈÕMr3   c           	      óŠ  — t        j                  ddgddgddgddgddgddgg«      }d|z  dz
  d	z  }t        j                  |d d
 d¬«      }t	        |d
   |d d
 |«      }t        |dd¬«       t         j                  j                  d«      }|j                  d«      }t        j                  |«      }t        j                  |d d
 d¬«      }t	        |d
   |d d
 |«      }t        ||d¬«       t        j                  t        d¬«      5  t	        |d
   |d d
 dz   |«       d d d «       t        j                  t        d¬«      5  t	        |d
   |d   |«       d d d «       ddg}t        j                  t        d¬«      5  t	        ||d d
 |«       d d d «       ddgg}t        j                  t        d¬«      5  t	        ||d d
 |«       d d d «       g d¢}t        j                  t        d¬«      5  t	        ||d d
 |«       d d d «       y # 1 sw Y   ŒêxY w# 1 sw Y   Œ¿xY w# 1 sw Y   Œ“xY w# 1 sw Y   ŒfxY w# 1 sw Y   y xY w)Nr   r&   r   r   rM   r!   rN   rO   rP   rw   T)Ú	iterativerQ   rR   rS   l	   gy°,!uUx‡FYo9"]µ )rM   r7   rF   rC   rB   r   zx_new is not in unit hypercuber   zx_new is not a 1D array)g333333Ó?çš™™™™™¹?r   z&x_new and sample must be broadcastable)r)   r*   r   ri   r   r   r8   r9   rH   rI   rJ   )r+   rk   Ú	disc_initÚ	disc_iterr:   Údisc_refÚx_news          r1   Útest_update_discrepancyz!TestUtils.test_update_discrepancyë   sD  € ä—(‘(˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀFÐKÓLˆØ˜‘= 3Ñ&¨9Ñ5ˆä—O‘O G¨C¨R L¸DÔAˆ	Ü& w¨r¡{°G¸C¸R°LÀ)ÓLˆ	ä˜	 6°Õ5ô �i‰i×#Ñ#Ð$KÓLˆØ—*‘*˜WÓ%ˆä—?‘? 7Ó+ˆÜ—O‘O G¨C¨R L¸DÔAˆ	Ü& w¨r¡{°G¸C¸R°LÀ)ÓLˆ	ä˜	 8°$Õ7ô �]‰]œ:ð .:ô ;ñ 	Iä˜w r™{¨G°C°R¨L¸1Ñ,<¸iÔH÷	Iô �]‰]œ:Ð-HÔIñ 	CÜ˜w r™{¨G°A©J¸	ÔB÷	Cð �A�ˆÜ�]‰]œ:ð .:ô ;ñ 	?ä˜u g¨c¨r l°IÔ>÷	?ð �s��ˆÜ�]‰]œ:Ð-GÔHñ 	?Ü˜u g¨c¨r l°IÔ>÷	?ò ˆÜ�]‰]œ:ð .>ô ?ñ 	?ä˜u g¨c¨r l°IÔ>÷	?ð 	?÷#	Ið 	Iú÷	Cð 	Cú÷	?ð 	?ú÷
	?ð 	?ú÷	?ð 	?ús<   Ä	H	ÅHÅ>H!Æ7H-Ç/H9È	HÈHÈ!H*È-H6È9Ic                 óÔ  — t         j                  j                  d«      }t        j                  d|¬«      }|j                  d«      }t        j
                  |«      }t        d«      D ]~  }|j                  d«      }|j                  d«      }|j                  d«      }t        |||||«      }|||f   |||f   c|||f<   |||f<   t        j
                  |«      }	t        ||	«       Œ€ y )Nl	   ýPv’W®uW=�lêWêx" r!   ©r:   r7   éd   )
r)   r8   r9   r   r‘   ri   ÚrangeÚintegersr   r   )
r+   r:   Úqmc_genr;   ÚdiscÚiÚrow_1Úrow_2ÚcolÚdisc_references
             r1   Útest_perm_discrepancyzTestUtils.test_perm_discrepancy  sÝ   € Ü�i‰i×#Ñ#Ð$JÓKˆÜ×$Ñ$ Q¨CÔ0ˆØ—‘ Ó#ˆÜ�‰˜vÓ&ˆä�s“ò 		2ˆAØ—L‘L Ó$ˆEØ—L‘L Ó$ˆEØ—,‘,˜q“/ˆCä'¨°°u¸cÀ4ÓHˆDà�u˜c�zÑ" F¨5°#¨:Ñ$6ð 3ˆF�5˜#�:Ñ  u¨c zÑ 2ä Ÿ_™_¨VÓ4ˆNÜ˜D .Õ1ñ		2r3   c                 óÔ  — d„ }d„ }d„ }d„ }t         j                  j                  d«      }|j                  d«      }t        j                  |d¬«      } ||«      }t        ||«       t        j                  |d	¬«      } ||«      }t        ||«       t        j                  |d
¬«      } ||«      }t        ||«       t        j                  |d¬«      } ||«      }t        ||«       y)z,Alternative definitions from Matt Haberland.c                 óx  — | j                   \  }}| }t        j                  t        j                  ddt        j                  |dz
  «      z  z   dt        j                  |dz
  «      dz  z  z
  d¬«      «      }| d d d …d d …f   }| d d …d d d …f   }t        j                  t        j                  t        j                  ddt        j                  |dz
  «      z  z   dt        j                  |dz
  «      z  z   dt        j                  ||z
  «      z  z
  d¬«      d¬«      «      }d|z  d|z  |z  z
  d|dz  z  |z  z   S )Nr   r   r   ©Úaxisr   gUUUUUUñ?©Úshaper)   ÚsumÚprodÚabs©ÚxÚnÚsÚxijÚdisc1ÚxkjÚdisc2s          r1   Údisc_c2zFTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_c2)  s;  € Ø—7‘7‰DˆAˆqØˆCÜ—F‘Fœ2Ÿ7™7 AØ&)¬"¯&©&°°S±«/Ñ&9ñ%:à&)¬"¯&©&°°S±«/¸1Ñ*<Ñ&<ñ%=àDEôGó HˆEð �Dš!šQ�J‘-ˆCØ’A�tšQ�J‘-ˆCÜ—F‘Fœ2Ÿ6™6¤"§'¡'¨!Ø,/´·±°s¸S±yÓ0AÑ,Añ+Bà,/´·±°s¸S±yÓ0AÑ,Añ+Bð -0´·±°s¸S±yÓ0AÑ,Añ+Bð IJô#Kð ()ô	*ó +ˆEð
 ˜A‘:  !¡ e¡Ñ+¨a°°1±©f°U©lÑ:Ð:r3   c                 ó\  — | j                   \  }}| d d d …d d …f   }| d d …d d d …f   }t        j                  t        j                  t        j                  dt        j                  ||z
  «      z
  t        j                  ||z
  «      dz  z   d¬«      d¬«      «      }d|z   d|dz  z  |z  z   S )Nr'   r   r®   r   gUUUUUUõ?r   r°   )r¶   r·   r¸   r¹   r»   r¥   s         r1   Údisc_wdzFTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_wd8  s«   € Ø—7‘7‰DˆAˆqØ�Dš!šQ�J‘-ˆCØ’A�tšQ�J‘-ˆCÜ—6‘6œ"Ÿ&™&¤§¡¨Ü+-¯6©6°#¸±)Ó+<ñ*=ä+-¯6©6°#¸±)Ó+<¸aÑ+?ñ*@àFGô"Ið '(ô)ó *ˆDð ˜1‘H�9˜q  A¡™v¨™}Ñ,Ð,r3   c                 ó¶  — | j                   \  }}| }t        j                  t        j                  ddt        j                  |dz
  «      z  z
  dt        j                  |dz
  «      dz  z  z
  d¬«      «      }| d d d …d d …f   }| d d …d d d …f   }t        j                  t        j                  t        j                  ddt        j                  |dz
  «      z  z
  dt        j                  |dz
  «      z  z
  dt        j                  ||z
  «      z  z
  dt        j                  ||z
  «      dz  z  z   d¬«      d	¬«      «      }d
|z  d|z  |z  z
  d|dz  z  |z  z   S )Ng«ªªªªªú?r‹   r   r   r   r®   g      þ?rŠ   r   gUUUUUUù?r°   rµ   s          r1   Údisc_mdzFTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_mdB  sZ  € Ø—7‘7‰DˆAˆqØˆCÜ—F‘Fœ2Ÿ7™7 CØ&)¬"¯&©&°°S±«/Ñ&9ñ%:à&)¬"¯&©&°°S±«/¸1Ñ*<Ñ&<ñ%=àDEôGó HˆEð �Dš!šQ�J‘-ˆCØ’A�tšQ�J‘-ˆCÜ—F‘Fœ2Ÿ6™6¤"§'¡'¨$Ø,/´·±°s¸S±yÓ0AÑ,Añ+Bà,/´·±°s¸S±yÓ0AÑ,Añ+Bð -0´·±°s¸S±yÓ0AÑ,Añ+Bð -0´·±°s¸S±yÓ0AÀ1Ñ0DÑ,Dñ	+Eð
 01ô#2ð
 9:ô;ó <ˆEð ˜A‘:  !¡ e¡Ñ+¨a°°1±©f°U©lÑ:Ð:r3   c                 óÒ  — | j                   \  }}t        j                  d| z  dd|z
  z  |z  t        j                  t        j                  d| dz  z
  d¬«      «      z  z
  t        j                  t        |«      D ��cg c]L  }t        |«      D ]<  }t        j                  dt        j                  | |d d …f   | |d d …f   «      z
  «      ‘Œ> ŒN c}}«      |dz  z  z   «      S c c}}w )Nr&   r   r   r®   )r±   r)   rj   r²   r³   r¢   Úmaximum)r¶   r·   r¸   ÚkÚjs        r1   Údisc_star_l2zKTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_star_l2R  sÞ   € Ø—7‘7‰DˆAˆqÜ—7‘7Ø�q�b‘	˜A ! a¡%™L¨1Ñ,Ü—&‘&œŸ™  Q¨!¡V¡°!Ô4Ó5ñ6ñ 6ä—&‘&ä" 1›X÷à¬u°Q«xòà*+ô —G‘G˜A¤§
¡
¨1¨Q²¨T©7°A°aº°d±GÓ <Ñ<Õ=ðØ=óó ð ˜!‘Vññóð ùós   Á>AC#l	   Áj¤;<Q`sºi—y—õX r5   rb   r^   r`   r]   rh   N)r)   r8   r9   r   ri   r   )	r+   r½   r¿   rÁ   rÆ   r:   r;   Ú	disc_currÚdisc_alts	            r1   Ú+test_discrepancy_alternative_implementationz5TestUtils.test_discrepancy_alternative_implementation&  sÈ   € ò	;ò	-ò	;ò 		ô �i‰i×#Ñ#Ð$KÓLˆØ—‘˜HÓ%ˆä—O‘O F°4Ô8ˆ	Ù˜6“?ˆÜ˜	 8Ô,ä—O‘O F°4Ô8ˆ	Ù˜6“?ˆÜ˜	 8Ô,ä—O‘O F°4Ô8ˆ	Ù˜6“?ˆÜ˜	 8Ô,ä—O‘O F°9Ô=ˆ	Ù Ó'ˆÜ˜	 8Õ,r3   c                 ó‚   — t        d«      }|d   dk(  sJ ‚t        d«      }|d   dk(  sJ ‚t        d«      }|d   dk(  sJ ‚y )Nr7   rw   é   é¨   iå  i^  i5	  )r   )r+   Úprimess     r1   Útest_n_primeszTestUtils.test_n_primesp  sS   € Ü˜"“ˆØ�b‰z˜RÒÐÐä˜#“ˆØ�b‰z˜SÒ Ð Ð ä˜#“ˆØ�b‰z˜TÒ!Ð!Ñ!r3   c                 ó:   — t        d«      }g d¢}t        ||«       y )Nr�   )r   r&   r!   é   é   é   é   é   é   rË   é   é%   é)   é+   é/   )r   r   )r+   rÍ   r-   s      r1   Útest_primeszTestUtils.test_primesz  s   € Ü! "Ó%ˆÚFˆÜ˜ Õ$r3   N)Ú__name__Ú
__module__Ú__qualname__r2   r@   rK   ro   rt   r‚   r‡   r’   rH   ÚmarkÚxfailr–   rž   r«   rÉ   rÎ   rÛ   r{   r3   r1   r   r      sz   „ ò+ò<*ò $òD#DòJ3ò!0òF.ò*
ð0 ‡[�[×ÑØJØð ó ñNó	ðNò(?òT2ò"H-òT"ó%r3   r   c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚTestVDCc                 óÖ   — t        d«      }g d¢}t        ||«       t        dd¬«      }t        ||«       t        dd¬«      }t        ||«       t        dd¬«      }t        ||dd  «       y )	Nr7   )
ç        r   r‹   rŠ   ç      À?ç      ä?ç      Ø?ç      ì?g      °?g      â?rM   r}   rG   rÐ   r&   )Ústart_index©r   r   )r+   r;   r-   s      r1   Útest_van_der_corputzTestVDC.test_van_der_corput�  se   € Ü Ó#ˆò-ˆä˜ Ô$ä ¨AÔ.ˆÜ˜ Ô$ä ¨AÔ.ˆÜ˜ Ô$ä ¨qÔ1ˆÜ˜  A B Õ(r3   c                 óÜ   — d}t        dd|¬«      }t        ddd|¬«      }t        ||dd  «       t        ddd|d¬	«      }t        ||dd  «       t        ddd|d
¬	«      }t        ||dd  «       y )Nl	   	XCòf
Kl<{OÍ8þ r7   T©Úscrambler:   rÐ   r&   )ré   rî   r:   rM   )ré   rî   r:   rv   rG   rê   )r+   r:   r-   r;   s       r1   Útest_van_der_corput_scramblez$TestVDC.test_van_der_corput_scramble�  sƒ   € Ø5ˆÜ˜R¨$°CÔ8ˆä ¨q¸4ÀSÔIˆÜ˜  A B Ô(äØ˜1 t°¸aô
ˆô 	˜  A B Ô(äØ˜1 t°¸aô
ˆô 	˜  A B Õ(r3   c                 ó~   — t        j                  t        d¬«      5  t        dd¬«       d d d «       y # 1 sw Y   y xY w)Nz'base' must be at least 2rC   r7   r   )Úbase)rH   rI   rJ   r   ©r+   s    r1   Útest_invalid_base_errorzTestVDC.test_invalid_base_error¡  s0   € Ü�]‰]œ:Ð-IÔJñ 	'Ü˜2 AÕ&÷	'÷ 	'ñ 	'ús   œ3³<N)rÜ   rÝ   rÞ   rë   rï   ró   r{   r3   r1   râ   râ   €  s   „ ò)ò)ó"'r3   râ   c                   ó.   ‡ — e Zd Zdˆ fd„	Zdddœd„Zˆ xZS )ÚRandomEnginec                 ó*   •— t         ‰| �  |||¬«       y )N)r�   Úoptimizationr:   )ÚsuperÚ__init__)r+   r�   r÷   r:   Ú	__class__s       €r1   rù   zRandomEngine.__init__§  s   ø€ Ü‰Ñ˜1¨<¸SÐÕAr3   r   r}   c                óT   — | j                   j                  || j                  f«      }|S rz   )r:   r8   r�   )r+   r·   rv   r;   s       r1   Ú_randomzRandomEngine._randomª  s!   € Ø—‘—‘ ! T§V¡V Ó-ˆØˆr3   )NN)r   )rÜ   rÝ   rÞ   rù   rü   Ú__classcell__)rú   s   @r1   rõ   rõ   ¦  s   ø„ õBð a÷ ð r3   rõ   c                  ó¨  — t        dd¬«      } | j                  d¬«      }| j                  d¬«      }| j                  dk(  sJ ‚| j                  «        | j                  dk(  sJ ‚| j                  d¬«      }t	        ||«       | j                  «        | j                  d¬«       | j                  d¬«      }t	        ||«       | j                  dk(  sJ ‚y )	Nr   l	   šF,@IY^ä+Geƒ r    r!   ©r·   rÐ   é   r   )rõ   r8   Únum_generatedÚresetr   Úfast_forward)ÚengineÚsample_1Úsample_2Úsample_1_testÚsample_2_tests        r1   Útest_subclassing_QMCEnginer	  ¯  sÆ   € Ü˜!Ð!HÔI€Fà�}‰}˜qˆ}Ó!€HØ�}‰}˜qˆ}Ó!€HØ×Ñ 2Ò%Ð%Ð%ð ‡L�L„NØ×Ñ 1Ò$Ð$Ð$à—M‘M A�MÓ&€MÜ�˜=Ô)ð ‡L�L„NØ
×Ñ˜!ÐÔØ—M‘M A�MÓ&€Mä�˜=Ô)Ø×Ñ 2Ò%Ð%Ñ%r3   c                  ó�  — t        j                  t        d¬«      5  t        d«       d d d «       t        j                  t        d¬«      5  t        d«       d d d «       d} t        j                  t        | ¬«      5  t        d«      }|j	                  dd¬«       d d d «       y # 1 sw Y   Œ}xY w# 1 sw Y   ŒZxY w# 1 sw Y   y xY w)	Nz d must be a non-negative integerrC   )r   rw   z*'u_bounds' and 'l_bounds' must be integersr   gš™™™™™ñ?r   )rH   rI   rJ   rõ   r£   )Úmsgr  s     r1   Útest_raisesr  Æ  s¤   € ä	�‰”zÐ)LÔ	Mñ Ü�TÔ÷ô 
�‰”zÐ)LÔ	Mñ Ü�RÔ÷ð 8€CÜ	�‰”z¨Ô	-ñ 2Ü˜a“ˆØ�‰ ¨SˆÔ1÷2ð 2÷ð ú÷ð ú÷2ð 2ús#   œB$ÁB0Á<B<Â$B-Â0B9Â<Cc                  óf  — t        dd¬«      } | j                  dd¬«      }t        t        j                  |«      dg«       |j
                  t        j
                  d«      k(  sJ ‚| j                  ddd¬	«      }t        t        j                  |«      ddg«       d
}d}| j                  «        | j                  d«      }|||z
  z  |z   }t        j                  |«      j                  t        j                  «      }| j                  «        | j                  ||dd¬«      }t        ||«       | j                  ||dd¬«      }t        |j                  «       |j                  «       f||dz
  f«       | j                  ||dd¬«      }t        |j                  «       |j                  «       f||f«       y )Nr   l	   llGíö[/Ww­ r    r7   rÿ   r   Úint64T)r·   ÚendpointéûÿÿÿrÐ   é   F©r    r·   r  r¡   )rõ   r£   r   r)   ÚuniqueÚdtyper  r8   ÚfloorÚastyper  ÚminÚmax)r  r;   ÚlowÚhighÚ
ref_samples        r1   Útest_integersr  Ô  sj  € Ü˜!Ð!HÔI€Fð �_‰_˜Q "ˆ_Ó%€FÜ”—‘˜6Ó" Q CÔ(à�<‰<œ2Ÿ8™8 GÓ,Ò,Ð,Ð,à�_‰_˜Q "¨tˆ_Ó4€FÜ”—‘˜6Ó" Q¨ FÔ+à
€CØ€Dð ‡L�L„NØ—‘˜rÓ"€JØ˜t c™zÑ*¨SÑ0€JÜ—‘˜*Ó%×,Ñ,¬R¯X©XÓ6€Jà
‡L�L„NØ�_‰_˜S¨4°2Àˆ_ÓF€Fä�˜Ô$ð �_‰_˜S¨4°3Àˆ_ÓG€FÜ�&—*‘*“, §
¡
£Ð-°°T¸!±V¨}Ô=à�_‰_˜S¨4°3Àˆ_ÓF€FÜ�&—*‘*“, §
¡
£Ð-°°T¨{Õ;r3   c                  óì  — d} t         j                  j                  d«      }|j                  dd| ¬«      }|j                  dd| d¬	«      }t	        | |¬
«      }|j                  ||dd¬«      }t        |j                  d¬«      |«       t        |j                  d¬«      |dz
  «       |j                  ||dd¬«      }t        |j                  d¬«      |«       t        |j                  d¬«      |«       y )Nr7   l	   G]	#0¦m$avâe r  rw   )r  r  Úsizer   r!   T)r  r  r  r  r    r¡   Fr  r   r®   )r)   r8   r9   r£   rõ   r   r  r  )r�   r:   r  r  r  r;   s         r1   Útest_integers_ndr  ö  sÖ   € Ø
€AÜ
�)‰)×
Ñ
Ð EÓ
F€CØ
�,‰,˜2 B¨Qˆ,Ó
/€CØ�<‰<˜A A¨A¸ˆ<Ó=€DÜ˜! Ô%€Fà�_‰_˜S¨4°3Àˆ_ÓG€FÜ�—‘ �Ó# SÔ)Ü�—‘ �Ó# T¨!¡VÔ,à�_‰_˜S¨4°3Àˆ_ÓF€FÜ�—‘ �Ó# SÔ)Ü�—‘ �Ó# TÕ*r3   c                   óÖ  — e Zd ZdZeZeZeZeZddgZ	ddgZ
	 ddedefd	„Zdedej                  fd
„Zej$                  j'                  de	e
¬«      d„ «       Zej$                  j'                  de	e
¬«      d„ «       Zej$                  j'                  de	e
¬«      d„ «       Zej$                  j'                  de	e
¬«      d„ «       Zej$                  j'                  de	e
¬«      d„ «       Zej$                  j'                  de	e
¬«      d„ «       Zej$                  j'                  de	e
¬«      ej$                  j'                  ddej4                  j7                  d«      df«      d„ «       «       Zej$                  j'                  de	e
¬«      d„ «       Zej$                  j'                  ddg«      d„ «       Zd„ Zej$                  j'                  dde jB                  fdd„ fg«      d„ «       Z"d„ Z#y)ÚQMCEngineTestszGeneric tests for QMC engines.TFÚ	ScrambledÚUnscrambledì	   \v$PdËv†uL2+C€ rî   Úreturnc                 óš   — | j                   r | j                  d||dœ|¤ŽS |rt        j                  «        y  | j                  dd|i|¤ŽS )N)rî   Úseedr'  r{   )Úcan_scrambleÚqmcerH   Úskip)r+   rî   r:   Úkwargss       r1   r  zQMCEngineTests.engine  sM   € ð ×ÒØ�4—9‘9ÐC h°SÑC¸FÑCÐCáÜ—‘•à �t—y‘yÑ4 cÐ4¨VÑ4Ð4r3   c                 ó6   — |r| j                   S | j                  S rz   )Úscramble_ndÚunscramble_nd)r+   rî   s     r1   Ú	referencezQMCEngineTests.reference   s   € Ù#+ˆt×ÑÐC°×1CÑ1CÐCr3   )Úidsc                 óŠ   — | j                  d|¬«      }|j                  d«      }t        t        j                  d«      |«       y )Nr   ©r�   rî   rM   )rM   r   ©r  r8   r   r)   Úempty©r+   rî   r  r;   s       r1   Ú	test_0dimzQMCEngineTests.test_0dim#  ó5   € à—‘˜q¨8�Ó4ˆØ—‘˜qÓ!ˆÜœ2Ÿ8™8 FÓ+¨VÕ4r3   c                 óŠ   — | j                  d|¬«      }|j                  d«      }t        t        j                  d«      |«       y )Nr   r2  r   ©r   r   r3  r5  s       r1   Útest_0samplezQMCEngineTests.test_0sample)  r7  r3   c                 ón   — | j                  d|¬«      }|j                  d«      }d|j                  k(  sJ ‚y )Nr   r2  r   ©r   r   )r  r8   r±   r5  s       r1   Útest_1samplezQMCEngineTests.test_1sample/  s4   € à—‘˜q¨8�Ó4ˆØ—‘˜qÓ!ˆØ˜Ÿ™Ò%Ð%Ñ%r3   c                 ó´   — | j                  d|¬«      }|j                  d«      }t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚y )Nr¡   r2  é   r   r   )r  r8   r)   Úallr5  s       r1   Útest_boundszQMCEngineTests.test_bounds5  sN   € à—‘˜s¨X�Ó6ˆØ—‘˜sÓ#ˆÜ�v‰v�f ‘kÔ"Ð"Ð"Ü�v‰v�f ‘kÔ"Ð"Ñ"r3   c                 óÔ   — | j                  |¬«      }| j                  d|¬«      }|j                  t        |«      ¬«      }t	        ||d¬«       |j
                  t        |«      k(  sJ ‚y )N©rî   r   r2  rÿ   r™   rS   )r/  r  r8   Úlenr   r  )r+   rî   r  r  r;   s        r1   Útest_samplezQMCEngineTests.test_sample<  s\   € à—^‘^¨X�^Ó6ˆ
Ø—‘˜q¨8�Ó4ˆØ—‘¤ Z£�Ó1ˆä˜ 
°Õ6Ø×#Ñ#¤s¨:£Ò6Ð6Ñ6r3   c                 óú   — | j                  d|¬«      }|j                  d¬«      }| j                  d|¬«      }t        |«      dz  }|j                  |¬«      }|j                  |¬«      }t        |||d  d¬«       y )Nr   r2  rG   rÿ   r™   rS   )r  r8   rD  r   )r+   rî   r  r  Ún_halfÚ_r;   s          r1   Útest_continuingzQMCEngineTests.test_continuingE  sw   € à—‘˜q¨8�Ó4ˆØ—]‘] Q�]Ó'ˆ
à—‘˜q¨8�Ó4ˆä�Z“ AÑ%ˆà�M‰M˜FˆMÓ#ˆØ—‘ �Ó(ˆÜ˜ 
¨6¨7Ð 3¸$Ö?r3   r:   Nc                 óÎ   — | j                  d||¬«      }|j                  d¬«      }|j                  «        |j                  dk(  sJ ‚|j                  d¬«      }t	        ||«       y )Nr   ©r�   rî   r:   rG   rÿ   r   )r  r8   r  r  r   )r+   rî   r:   r  r  r;   s         r1   Ú
test_resetzQMCEngineTests.test_resetR  s_   € ð —‘˜q¨8¸�Ó=ˆØ—]‘] Q�]Ó'ˆ
à�‰ŒØ×#Ñ# qÒ(Ð(Ð(à—‘ �Ó#ˆÜ˜ 
Õ+r3   c                 ó$  — | j                  d|¬«      }|j                  d¬«      }| j                  d|¬«      }|j                  d«       |j                  d¬«      }t        ||dd  d¬«       |j	                  «        g }t        d«      D ];  }|dz  dk(  r |j                  |j                  «       «       Œ+|j                  d	«       Œ= t        |t        d«      D �cg c]  }|dz  dk(  sŒ|‘Œ c}   t        j                  |«      d
¬«       y c c}w )Nr   r2  rG   rÿ   rM   r™   rS   r   r   çñhãˆµøä>)	r  r8   r  r   r  r¢   Úappendr)   Úconcatenate)r+   rî   r  r  r;   Ú
even_drawsr¦   s          r1   Útest_fast_forwardz QMCEngineTests.test_fast_forwarde  só   € à—‘˜q¨8�Ó4ˆØ—]‘] Q�]Ó'ˆ
à—‘˜q¨8�Ó4ˆà×Ñ˜AÔØ—‘ �Ó#ˆä˜ 
¨1¨2 °TÕ:ð 	�‰ŒØˆ
Ü�q“ò 	'ˆAØ�1‰u˜ŠzØ×!Ñ! &§-¡-£/Õ2à×#Ñ# AÕ&ð		'ô
 	Ø¤5¨£8Ö:˜a¨q°1©u¸«zšÒ:Ñ;Ü�N‰N˜:Ó&Øö	
ùÚ:s   ÃD
Ã)D
c                 óž  — d}| j                  ||¬«      }|j                  d«      }t        t        j                  |d¬«      t        j
                  d|«      d¬«       t        t        j                  |d	d¬«      t        j
                  d
|«      d¬«       t        t        j                  |dd¬«      t        j
                  d|«      d¬«       y )Nr�   r2  i   r   r®   r   ç{®Gáz„?rS   é   r‹   éK   rŠ   )r  r8   r   r)   ÚmeanÚrepeatÚ
percentile)r+   rî   r�   r  r;   s        r1   Útest_distributionz QMCEngineTests.test_distribution  sž   € àˆØ—‘˜q¨8�Ó4ˆØ—‘˜tÓ$ˆÜÜ�G‰G�F Ô#¤R§Y¡Y¨s°AÓ%6¸Tõ	
ô 	Ü�M‰M˜& "¨1Ô-¬r¯y©y¸¸qÓ/AÈõ	
ô 	Ü�M‰M˜& "¨1Ô-¬r¯y©y¸¸qÓ/AÈö	
r3   c                 ó�   — d}t        j                  t        |¬«      5  | j                  ddd¬«       d d d «       y # 1 sw Y   y xY w)Nz)'toto' is not a valid optimization methodrC   r   Frr   ©r�   rî   r÷   )rH   rI   rJ   r  ©r+   Úmessages     r1   Útest_raises_optimizerz$QMCEngineTests.test_raises_optimizerŽ  s@   € Ø>ˆÜ�]‰]œ:¨WÔ5ñ 	BØ�K‰K˜! e¸&ˆKÔA÷	B÷ 	Bñ 	Bús	   ž<¼Azoptimization,metricú	random-CDÚlloydc                 ó   — t        | «       S rz   )r   ©r;   s    r1   r|   zQMCEngineTests.<lambda>—  s   € ¤h¨vÓ&6Ð%6€ r3   c                 óÈ   — | j                  dd¬«      }|j                  d¬«      } ||«      }| j                  dd|¬«      }|j                  d¬«      } ||«      }||k  sJ ‚y )Nr   Fr2  rg   rÿ   r\  )r  r8   )	r+   r÷   r�   r  Ú
sample_refÚ
metric_refÚoptimal_Úsample_Úmetric_s	            r1   Útest_optimizerszQMCEngineTests.test_optimizers“  sk   € ð —‘˜q¨5�Ó1ˆØ—]‘] R�]Ó(ˆ
Ù˜JÓ'ˆ
à—;‘; ¨UÀ�;ÓNˆØ—/‘/ B�/Ó'ˆÙ˜“/ˆà˜Ò#Ð#Ñ#r3   c                 óÖ  — t         j                  j                  d«      }g }t        d«      D ]6  }| j	                  dd|¬«      }|j                  |j                  d«      «       Œ8 t        j                  t        d¬«      5  t        |d	   |d
   «       d d d «       t        j                  t        d¬«      5  t        |d	   |d   «       d d d «       y # 1 sw Y   Œ@xY w# 1 sw Y   y xY w)Nl	    B©û"V6ÿD¾GlUN¢ r&   r   TrK  rM   zArrays are not equalrC   r   r   )
r)   r8   r9   r¢   r  rO  rH   rI   ÚAssertionErrorr   )r+   r:   r;   r¦   r  s        r1   Útest_consume_prng_statez&QMCEngineTests.test_consume_prng_state¤  sË   € Ü�i‰i×#Ñ#Ð$FÓGˆØˆÜ�q“ò 	,ˆAØ—[‘[ 1¨t¸�[Ó=ˆFØ�M‰M˜&Ÿ-™-¨Ó*Õ+ð	,ô �]‰]œ>Ð1GÔHñ 	/Ü˜ ™ F¨1¡IÔ.÷	/ä�]‰]œ>Ð1GÔHñ 	/Ü˜ ™ F¨1¡IÔ.÷	/ð 	/÷	/ð 	/ú÷	/ð 	/ús   ÂCÂ7CÃCÃC()r$  )$rÜ   rÝ   rÞ   Ú__doc__ÚNotImplementedr)  r(  r.  r-  rî   r0  Úboolr   r  r)   Úndarrayr/  rH   rß   Úparametrizer6  r:  r=  rA  rE  rI  r8   r9   rL  rR  rZ  r_  r   ri   rj  rm  r{   r3   r1   r!  r!    s^  „ Ù(Ø€DØ!€LØ"€MØ €Kà�eˆ}€HØ˜Ð
&€Cð 4ñ5Øð5ð 
ó	5ð D $ð D¨2¯:©:ó Dð ‡[�[×Ñ˜Z¨°sÐÓ;ñ5ó <ð5ð
 ‡[�[×Ñ˜Z¨°sÐÓ;ñ5ó <ð5ð
 ‡[�[×Ñ˜Z¨°sÐÓ;ñ&ó <ð&ð
 ‡[�[×Ñ˜Z¨°sÐÓ;ñ#ó <ð#ð ‡[�[×Ñ˜Z¨°sÐÓ;ñ7ó <ð7ð ‡[�[×Ñ˜Z¨°sÐÓ;ñ
@ó <ð
@ð ‡[�[×Ñ˜Z¨°sÐÓ;Ø‡[�[×ÑØà3Ø�I‰I×!Ñ!Ð"IÓJØð	
óñ,óó <ð,ð ‡[�[×Ñ˜Z¨°sÐÓ;ñ
ó <ð
ð2 ‡[�[×Ñ˜Z¨$¨Ó0ñ
ó 1ð
òBð
 ‡[�[×ÑØà˜#Ÿ/™/Ð*ØÑ6Ð7ð	9óñ	$óð	$ó
/r3   r!  c                   óÖ   — e Zd Zej                  ZdZ ej                  ddgddgddgddgd	d
gddgddgddgg«      Z	 ej                  ddgddgddgddgddgddgddgdd gg«      Z
d!„ Zy")#Ú
TestHaltonTr   r   gUUUUUUÕ?r‹   gUUUUUUå?rŠ   gÇqÇq¼?rå   gÇqÇqÜ?ræ   g9Žã8Žãè?rç   gÇqÇqÌ?rè   grÇqÇá?g{�·¿'à?gØ–d‘äáí?gŒz�·¿'d?güGÑ?g{�·¿'è?gk„è97ã?gõ oO(Ð?g´o®«Sê?g{�·¿'ä?gg¸rYùÃ?gêAÞþžPÀ?gŽRß?g{�·¿'ì?g��yËrÅæ?gõ oO(Ø?gÍŸ¡E×§?c                 óB  — | j                  d¬«      }| j                  dd¬«      }|j                  t        |«      d¬«      }t	        ||d¬«       |j                  «        |j                  d	«      }|j                  «        |j                  d	d¬
«      }t        ||«       y )NTrC  r   r2  rG   )r·   rv   gü©ñÒMbP?rS   r7   r}   )r/  r  r8   rD  r   r  r£   r   )r+   r  r  r;   s       r1   Útest_workerszTestHalton.test_workersÃ  s„   € Ø—^‘^¨T�^Ó2ˆ
Ø—‘˜q¨4�Ó0ˆØ—‘¤ Z£¸!�Ó<ˆä˜ 
°Õ6ð 	�‰ŒØ—_‘_ RÓ(ˆ
Ø�‰ŒØ—‘ ¨Q�Ó/ˆÜ�V˜ZÕ(r3   N)rÜ   rÝ   rÞ   r   ÚHaltonr)  r(  r)   r*   r.  r-  rv  r{   r3   r1   rt  rt  ±  s³   „ Ø�:‰:€DØ€Là�B—H‘H˜q !˜f u¨e nØ$ e˜n¨u°e¨nØ$ e˜n¨u°e¨nØ$ e˜n¨u°e¨nð>ó ?€Mð
 �"—(‘(˜Z¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4ð6ó 7€Kó)r3   rt  c                   ó  — e Zd Zej                  ZdZd„ Zd„ Zd„ Z	e
j                  j                  dddg«      e
j                  j                  dd	dg«      e
j                  j                  d
ddg«      d„ «       «       «       Zd„ Zd„ Zy)ÚTestLHSTc                 ó.   — t        j                  d«       y ©NzNot applicable: not a sequence.©rH   r*  ©r+   Úargss     r1   rI  zTestLHS.test_continuingÖ  ó   € Ü�‰Ð5Õ6r3   c                 ó.   — t        j                  d«       y r{  r|  r}  s     r1   rR  zTestLHS.test_fast_forwardÙ  r  r3   c                 ó.   — t        j                  d«       y ©NzJNot applicable: the value of reference sample is implementation dependent.r|  r}  s     r1   rE  zTestLHS.test_sampleÜ  ó   € Ü�‰ð 1õ 	2r3   Ústrengthr   r   rî   Fr÷   Nr`  c                 ó„  — t         j                  j                  d«      }d}|dz  }d}t        j                  |||||¬«      }|j                  |¬«      }	|	j
                  ||fk(  sJ ‚|j                  |k(  sJ ‚t        j                  |«      dz   |z  }
t        j                  |
||f«      j                  }t        j                  |	|k7  «      sJ ‚t        j                  |	d¬	«      }|rd|z  nd}t        |||¬
«       t        j                  |	|z
  |kD  «      sJ ‚|dk(  rœ|€™t        j                  |«      }t        t        ||«      «      }t        t!        |j"                  «      d«      D ]L  \  }}|	d d …||gf   }||z  j%                  t&        «      }|D �ch c]  }t)        |«      ’Œ }}t+        ||«       ŒN y y y c c}w )Nl	   pIrtS"×M¿d@B r!   r   r   )r�   rî   r„  r÷   r:   rÿ   r   r   r®   rS   )r)   r8   r9   r   r‘   r±   r  ÚarangeÚbroadcast_toÚTÚanyÚsortr   Úsetr   r   r¢   r�   r  ÚintÚtupler   )r+   r÷   rî   r„  r:   Úpr·   r�   r  r;   Ú
expected1dÚexpectedÚsorted_sampleÚtolÚunique_elementsÚdesiredr¦   rÅ   Ú
samples_2dÚresÚrowÚres_sets                         r1   Útest_sample_stratifiedzTestLHS.test_sample_stratifiedà  s³  € ô �i‰i×#Ñ#Ð$JÓKˆØˆØˆq‰DˆØˆä×#Ñ# a°(Ø-5Ø1=Ø(+ô-ˆð —‘ �Ó#ˆØ�|‰|  1˜vÒ%Ð%Ð%Ø×#Ñ# qÒ(Ð(Ð(ô
 —i‘i “l SÑ(¨AÑ-ˆ
Ü—?‘? :°°1¨vÓ6×8Ñ8ˆÜ�v‰v�f Ñ(Ô)Ð)Ð)äŸ™ ¨QÔ/ˆÙ!ˆc�AŠg qˆä˜ x°cÕ:Ü�v‰v�f˜xÑ'¨#Ñ-Ô.Ð.Ð.à�qŠ=˜\Ð1Ü Ÿi™i¨›lˆOÜœ' /°?ÓCÓDˆGä$¤U¨6¯8©8£_°aÓ8ò /‘��1Ø#¢A¨¨1 v IÑ.�
Ø! A‘~×-Ñ-¬cÓ2�Ø14Ö5¨#œ5 �:Ð5�Ð5Ü˜W gÕ.ñ	/ð	 2ˆ=ùò 6s   ÆF=c                 ó²   — | j                  dd¬«      }|j                  d¬«      }| j                  ddd¬«      }|j                  d¬«      }t        ||«       y )Nr   Fr2  rg   rÿ   r`  r\  )r  r8   r   )r+   r  re  rg  rh  s        r1   Útest_optimizer_1dzTestLHS.test_optimizer_1d  sR   € à—‘˜q¨5�Ó1ˆØ—]‘] R�]Ó(ˆ
à—;‘; ¨UÀ�;ÓMˆØ—/‘/ B�/Ó'ˆä˜: wÕ/r3   c                 ó²  — d}t        j                  t        |¬«      5  t        j                  dd¬«       d d d «       d}t        j                  t        |¬«      5  t        j                  dd¬«      }|j                  d	«       d d d «       d}t        j                  t        |¬«      5  t        j                  dd¬«      }|j                  d
«       d d d «       d}t        j                  t        |¬«      5  t        j                  d
d¬«      }|j                  d«       d d d «       y # 1 sw Y   ŒôxY w# 1 sw Y   Œ²xY w# 1 sw Y   ŒpxY w# 1 sw Y   y xY w)Nznot a valid strengthrC   r   r&   )r„  z%n is not the square of a prime numberr   )r�   r„  re   r!   zn is too small for dé	   )rH   rI   rJ   r   r‘   r8   )r+   r^  r  s      r1   r  zTestLHS.test_raises  s  € Ø)ˆÜ�]‰]œ:¨WÔ5ñ 	.Ü×Ñ˜q¨1Õ-÷	.ð ;ˆÜ�]‰]œ:¨WÔ5ñ 	Ü×'Ñ'¨!°aÔ8ˆFØ�M‰M˜"Ô÷	ð ;ˆÜ�]‰]œ:¨WÔ5ñ 	Ü×'Ñ'¨!°aÔ8ˆFØ�M‰M˜!Ô÷	ð *ˆÜ�]‰]œ:¨WÔ5ñ 	Ü×'Ñ'¨!°aÔ8ˆFØ�M‰M˜!Ô÷	ð 	÷	.ð 	.ú÷	ð 	ú÷
	ð 	ú÷
	ð 	ús/   žD)Á)D5Â))EÃ7)EÄ)D2Ä5D>ÅE
ÅE)rÜ   rÝ   rÞ   r   r‘   r)  r(  rI  rR  rE  rH   rß   rr  r™  r›  r  r{   r3   r1   ry  ry  Ò  s‘   „ Ø×Ñ€DØ€Lò7ò7ò2ð ‡[�[×Ñ˜Z¨!¨Q¨Ó0Ø‡[�[×Ñ˜Z¨%°¨Ó7Ø‡[�[×Ñ˜^¨d°KÐ-@ÓAñ#/ó Bó 8ó 1ð#/òJ0ór3   ry  c                   ó6  — e Zd Zej                  ZdZ ej                  ddgddgddgddgddgddgdd	gd	dgg«      Z	 ej                  d
dgddgddgddgddgddgddgddgg«      Z
d„ Zd„ Zd„ Zd„ Zej                   j#                  ddd g«      d!„ «       Zd"„ Zy#)$Ú	TestSobolTrä   r   rŠ   r‹   rç   rè   ræ   rå   gò�™Æa6Ð?gtAAzÚ?g´`˜ˆ±ë?gÊ_k €mï?gðsAdnæ?gò­rIÃ¢?g£´q£LÇ?gÝ”|ã?g+»&ÅCïº?g#‘*H;Ì?g¦&fb_÷à?gÈ]bnQå?gvD2¢¼(í?gt¤|µ!Ö?g›$\Ý?g™4>z@é?c                 ó°   — t        j                  t        d¬«      5  t        j                  d«      }|j                  d«       d d d «       y # 1 sw Y   y xY w)Nú'The balance properties of Sobol' pointsrC   r   r7   )rH   r…   r†   r   ÚSobolr8   ©r+   r  s     r1   Útest_warningzTestSobol.test_warning>  sC   € Ü�\‰\œ+ð .>ô ?ñ 	ä—Y‘Y˜q“\ˆFØ�M‰M˜"Ô÷	÷ 	ñ 	ús   œ'AÁAc                 ó\  — t        j                  dd¬«      }|j                  d«      }t        | j                  d d |«       |j                  d«      }t        | j                  dd |«       t        j                  t        d¬«      5  |j                  d«       d d d «       y # 1 sw Y   y xY w)Nr   FrC  rM   rG   r¡  rC   )r   r¢  Úrandom_base2r   r.  rH   rI   rJ   ©r+   r  r;   s      r1   Útest_random_base2zTestSobol.test_random_base2D  sš   € Ü—‘˜1 uÔ-ˆØ×$Ñ$ QÓ'ˆÜ˜4×-Ñ-¨b¨qÐ1°6Ô:ð ×$Ñ$ QÓ'ˆÜ˜4×-Ñ-¨a°Ð2°FÔ;ô �]‰]œ:ð .>ô ?ñ 	#à×Ñ Ô"÷	#÷ 	#ñ 	#ús   ÂB"Â"B+c                 óR  — t        j                  t        d¬«      5  t        j                  t        j                  j
                  dz   «       d d d «       t        j                  t        d¬«      5  t        j                  dd¬«       d d d «       y # 1 sw Y   ŒExY w# 1 sw Y   y xY w)Nz Maximum supported dimensionalityrC   r   zMaximum supported 'bits' is 64éA   )Úbits)rH   rI   rJ   r   r¢  ÚMAXDIMrò   s    r1   Ú
test_raisezTestSobol.test_raiseR  sƒ   € Ü�]‰]œ:ð .?ô @ñ 	,ä�I‰I”c—i‘i×&Ñ&¨Ñ*Ô+÷	,ô �]‰]œ:ð .=ô >ñ 	"ä�I‰I�a˜bÕ!÷	"ð 	"÷		,ð 	,ú÷	"ð 	"ús   œ1BÁ0BÂBÂB&c                 ób  — t        j                  dd¬«      }t        |j                  «       j	                  «       j                  «       «      }t        |j                  «       j	                  «       j                  «       «      }t        |t        ddi«      «       t        |t        ddi«      «       y )NiW  FrC  rä   r   )r   r¢  r   r8   ÚflattenÚtolistr   )r+   r  Úcount1Úcount2s       r1   Útest_high_dimzTestSobol.test_high_dim[  s|   € Ü—‘˜4¨%Ô0ˆÜ˜Ÿ™›×0Ñ0Ó2×9Ñ9Ó;Ó<ˆÜ˜Ÿ™›×0Ñ0Ó2×9Ñ9Ó;Ó<ˆÜ�VœW c¨4 [Ó1Ô2Ü�VœW c¨4 [Ó1Õ2r3   r«  r   r&   c                 ó  — t        j                  dd|¬«      }d|z  }|j                  |«      }t        | j                  d | |«       t        j                  t        d¬«      5  |j                  «        d d d «       y # 1 sw Y   y xY w)Nr   F©rî   r«  zincreasing `bits`rC   )r   r¢  r8   r   r.  rH   rI   rJ   )r+   r«  r  Únsr;   s        r1   Ú	test_bitszTestSobol.test_bitsb  so   € ä—‘˜1 u°4Ô8ˆØ�‰WˆØ—‘˜rÓ"ˆÜ˜4×-Ñ-¨c¨rÐ2°FÔ;ä�]‰]œ:Ð-@ÔAñ 	Ø�M‰MŒO÷	÷ 	ñ 	ús   Á#A=Á=Bc                 ó‚   — t        j                  ddd¬«      }|j                  d«      }t        | j                  |«       y )Nr   Frg   rµ  rG   )r   r¢  r8   r   r.  r§  s      r1   Útest_64bitszTestSobol.test_64bitsl  s2   € Ü—‘˜1 u°2Ô6ˆØ—‘˜qÓ!ˆÜ˜4×-Ñ-¨vÕ6r3   N)rÜ   rÝ   rÞ   r   r¢  r)  r(  r)   r*   r.  r-  r¤  r¨  r­  r³  rH   rß   rr  r·  r¹  r{   r3   r1   rŸ  rŸ  '  sô   „ Ø�9‰9€DØ€Là�B—H‘H˜r 2˜hØ" C˜jØ# T˜lØ# T˜lØ$ e˜nØ$ e˜nØ$ e˜nØ$ e˜nð.ó /€Mð �"—(‘(˜Z¨Ð4Ø&¨	Ð2Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4Ø'¨Ð4ð6ó 7€Kòò#ò"ò3ð ‡[�[×Ñ˜V a¨ VÓ,ñó -ðó7r3   rŸ  c                   óŒ  — e Zd Zej                  ZdZd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zej                  j                  dg d	¢g d
¢g«      d„ «       Zej                  j                  dg d	¢g d
¢g«      d„ «       Zd„ Zej                  j                  dg d	¢ddgg«      ej                  j                  dddgg«      d„ «       «       Zd„ Zy)ÚTestPoissonFc                 ó.   — t        j                  d«       y )NzToo costly in memory.r|  r}  s     r1   rA  zTestPoisson.test_boundsv  s   € Ü�‰Ð+Õ,r3   c                 ó.   — t        j                  d«       y )Nz"Not applicable: recursive process.r|  r}  s     r1   rR  zTestPoisson.test_fast_forwardy  s   € Ü�‰Ð8Õ9r3   c                 ó.   — t        j                  d«       y r‚  r|  r}  s     r1   rE  zTestPoisson.test_sample|  rƒ  r3   c                 ót  — d}d}| j                  d|d¬«      }|j                  |¬«      }t        |«      |k  sJ ‚t        |«      |k\  sJ ‚|j                  |¬«      }t        |«      |k  sJ ‚t        |«      |k\  sJ ‚t	        j
                  ||gd¬«      }t        |«      |dz  k  sJ ‚t        |«      |k\  sJ ‚y )	Nçš™™™™™©?r   r   F)r�   Úradiusrî   rÿ   r   r®   )r  r8   rD  Úl2_normr)   rP  )r+   r~  rÁ  r¶  r  Úsample_initÚsample_continuedr;   s           r1   rI  zTestPoisson.test_continuing€  sÏ   € ð ˆØˆØ—‘˜q¨¸%�Ó@ˆà—m‘m b�mÓ)ˆÜ�;Ó 2Ò%Ð%Ð%Ü�{Ó# vÒ-Ð-Ð-à!Ÿ=™=¨2˜=Ó.ÐÜÐ#Ó$¨Ò*Ð*Ð*ÜÐ'Ó(¨FÒ2Ð2Ð2ä—‘ Ð.>Ð ?ÀaÔHˆÜ�6‹{˜b 1™fÒ$Ð$Ð$Ü�v‹ &Ò(Ð(Ñ(r3   c                 óP  — t         j                  j                  d«      }d}d\  }}||z
  |j                  d«      z  |z   }g d¢}ddg}t        |||«      }|D ]L  \  }	}
}| j	                  |	|
||¬«      }|j                  |«      }t        |«      |k  sJ ‚t        |«      |
k\  rŒLJ ‚ y )	Nl	   ïx¼_Ù4ê÷vZ.c r�   )g{®Gáz´?çš™™™™™É?r!   )r   r&   rM   ÚvolumeÚsurface)r�   rÁ  Úhyperspherer:   )r)   r8   r9   r   r)  rD  rÂ  )r+   r:   r¶  r  r  ÚradiiÚ
dimensionsÚhypersphere_methodsÚgenr�   rÁ  rÉ  r  r;   s                 r1   Útest_mindistzTestPoisson.test_mindist“  sÅ   € Ü�i‰i×#Ñ#Ð$KÓLˆØˆà‰	ˆˆTØ˜‘˜sŸz™z¨!›}Ñ,¨sÑ2ˆâˆ
Ø'¨Ð3Ðä�j %Ð)<Ó=ˆà&)ò 	-Ñ"ˆAˆv�{Ø—Y‘YØ˜F°Àð ó ˆFð —]‘] 2Ó&ˆFä�v“; "Ò$Ð$Ð$Ü˜6“? fÓ,Ð,Ð,ñ	-r3   c                 ón   — d}| j                  d|¬«      }|j                  «       }t        |«      |k\  sJ ‚y )NrÆ  r   )r�   rÁ  )r)  Ú
fill_spacerÂ  )r+   rÁ  r  r;   s       r1   Útest_fill_spacezTestPoisson.test_fill_space¨  s9   € ØˆØ—‘˜Q v�Ó.ˆà×"Ñ"Ó$ˆä�v‹ &Ò(Ð(Ñ(r3   r   ©rw   r   rw   )r   r   r   c                 óš   — d}g d¢}| j                  d|||¬«      }|j                  d«      }|D ]  }t        ||«       t        ||«       Œ y )NrÆ  )r&   r&   r   r&   ©r�   rÁ  r   r    r6   ©r)  r8   r	   )r+   r   rÁ  r    r  r;   Úpoints          r1   Útest_sample_inside_lower_boundsz+TestPoisson.test_sample_inside_lower_bounds°  s[   € àˆÚˆØ—‘Ø˜¨¸Hð ó 
ˆð —‘˜rÓ"ˆàò 	/ˆEÜ˜e XÔ.Ü˜h¨Õ.ñ	/r3   r    c                 óš   — d}g d¢}| j                  d|||¬«      }|j                  d«      }|D ]  }t        ||«       t        ||«       Œ y )NrÆ  )éýÿÿÿrÙ  r   r&   rÔ  r6   rÕ  )r+   r    rÁ  r   r  r;   rÖ  s          r1   Útest_sample_inside_upper_boundsz+TestPoisson.test_sample_inside_upper_bounds½  s[   € àˆÚˆØ—‘Ø˜¨¸Hð ó 
ˆð —‘˜rÓ"ˆàò 	/ˆEÜ˜e XÔ.Ü˜h¨Õ.ñ	/r3   c                 ó¢   — d}g d¢}g d¢}t        j                  t        d¬«      5  | j                  d|||¬«       d d d «       y # 1 sw Y   y xY w)NrÆ  )r&   r   r   rÒ  z1Bounds are not consistent 'l_bounds' < 'u_bounds'rC   r&   rÔ  ©rH   rI   rJ   r)  )r+   rÁ  r   r    s       r1   Útest_inconsistent_bound_valuez)TestPoisson.test_inconsistent_bound_valueÊ  sS   € ØˆÚˆÚˆÜ�]‰]ÜØEôGñ 	Pð �I‰I˜ &°8ÀhˆIÔO÷	P÷ 	Pñ 	Pús   ¦AÁArw   r   r&   r   c                 ó’   — d}t        j                  t        d¬«      5  | j                  d|||¬«       d d d «       y # 1 sw Y   y xY w)NrÆ  zP'l_bounds' and 'u_bounds' must be broadcastable and respect the sample dimensionrC   r&   rÔ  rÜ  )r+   r    r   rÁ  s       r1   Útest_inconsistent_boundsz$TestPoisson.test_inconsistent_boundsÓ  sO   € ð ˆÜ�]‰]Üð$ô%ñ 	ð �I‰IØ˜FØ!¨Hð ô ÷		÷ 	ñ 	ús	   ž=½Ac                 ó–   — d}t        j                  t        |¬«      5  t        j                  dd¬«       d d d «       y # 1 sw Y   y xY w)Nz*'toto' is not a valid hypersphere samplingrC   r   rr   )rÉ  )rH   rI   rJ   r   ÚPoissonDiskr]  s     r1   r  zTestPoisson.test_raisesà  s8   € Ø?ˆÜ�]‰]œ:¨WÔ5ñ 	3Ü�O‰O˜A¨6Õ2÷	3÷ 	3ñ 	3ús	   ž?¿AN)rÜ   rÝ   rÞ   r   rá  r)  r(  rA  rR  rE  rI  rÎ  rÑ  rH   rß   rr  r×  rÚ  rÝ  rß  r  r{   r3   r1   r»  r»  r  sÝ   „ Ø�?‰?€DØ€Lò-ò:ò2ò)ò&-ò*)ð ‡[�[×Ñ˜Zª,º	Ð)BÓCñ
/ó Dð
/ð ‡[�[×Ñ˜Zª,º	Ð)BÓCñ
/ó Dð
/òPð ‡[�[×Ñ˜Zª,¸¸R¸Ð)AÓBØ‡[�[×Ñ˜Z¨1¨a¨&¨Ó2ñ	ó 3ó Cð	ó3r3   r»  c                   ó¢   — e Zd Zd„ Zej
                  j                  d«      d„ «       Zd„ Zd„ Z	ej
                  j                  d«      d„ «       Z
y)ÚTestMultinomialQMCc                 ó8  — t        j                  g d¢«      }t        j                  t        d¬«      5  t        j                  |d¬«       d d d «       t        j                  g d¢«      }d}t        j                  t        |¬«      5  t        j                  |d¬«       d d d «       t        j                  g d¢«      }d	}t        j                  t        |¬«      5  t        j                  |dt        j                  d
¬«      ¬«       d d d «       d}t        j                  t        |¬«      5  t        j                  |dt         j                  j                  «       ¬«       d d d «       y # 1 sw Y   �Œ"xY w# 1 sw Y   ŒÚxY w# 1 sw Y   Œ}xY w# 1 sw Y   y xY w)N)ç¸…ëQ¸¾?ç¤p=
×£Ð?gš™™™™™©¿çffffffÖ?ç)\�Âõ(Ì?z'Elements of pvals must be non-negative.rC   r7   )Ún_trials)rå  ræ  r™   rç  rè  z Elements of pvals must sum to 1.©rå  ræ  rÀ  rç  rè  z Dimension of `engine` must be 1.r   ©r�   )ré  r  ú"`engine` must be an instance of...)
r)   r*   rH   rI   rJ   r   ÚMultinomialQMCr¢  r8   r9   )r+   rŽ  r^  s      r1   Útest_validationsz#TestMultinomialQMC.test_validationsç  s>  € ä�H‰HÒ4Ó5ˆÜ�]‰]œ:ð .Aô Bñ 	/ä×Ñ˜q¨2Õ.÷	/ô
 �H‰HÒ2Ó3ˆØ5ˆÜ�]‰]œ:¨WÔ5ñ 	/Ü×Ñ˜q¨2Õ.÷	/ô �H‰HÒ3Ó4ˆà5ˆÜ�]‰]œ:¨WÔ5ñ 	FÜ×Ñ˜q¨2´c·i±iÀ!´nÕE÷	Fð 8ˆÜ�]‰]œ:¨WÔ5ñ 	OÜ×Ñ˜q¨2´b·i±i×6KÑ6KÓ6MÕN÷	Oð 	O÷#	/ñ 	/ú÷	/ð 	/ú÷	Fð 	Fú÷	Oð 	Oús/   ³E+ÂE8Ã-FÄ-5FÅ+E5Å8FÆFÆFzignore::UserWarningc                 ó4  — t         j                  j                  d«      }t        j                  g d¢«      }d}t        j                  ||z  «      j                  t        «      }t        j                  |||¬«      }t        |j                  d«      |d¬«       y )Nl	   ¡(uý@ÌgPù{-Î rê  r¡   )ré  r'  r   rS   )
r)   r8   r9   r*   Ú
atleast_2dr  rŒ  r   rí  r   )r+   r:   rŽ  ré  r�  r  s         r1   Útest_MultinomialBasicDrawz,TestMultinomialQMC.test_MultinomialBasicDrawþ  sq   € ä�i‰i×#Ñ#Ð$IÓJˆÜ�H‰HÒ3Ó4ˆØˆÜ—=‘= ¨A¡Ó.×5Ñ5´cÓ:ˆä×#Ñ# A°¸sÔCˆÜ˜Ÿ™ aÓ(¨(¸Ö;r3   c                 ó0  — t         j                  j                  d«      }t        j                  g d¢«      }t	        j
                  |d|¬«      }|j                  d«      }t        |t        j                  |«      z  t        j                  |«      d¬«       y )Nl	   8X¸7:ct]+Ê¸©C: rê  i    )ré  r:   r   rR   rS   )	r)   r8   r9   r*   r   rí  r   r²   rð  )r+   r:   rŽ  r  Údrawss        r1   Útest_MultinomialDistributionz/TestMultinomialQMC.test_MultinomialDistribution  sj   € Ü�i‰i×#Ñ#Ð$JÓKˆÜ�H‰HÒ3Ó4ˆÜ×#Ñ# A°¸#Ô>ˆØ—‘˜aÓ ˆÜ˜¤§¡ u£Ñ-¬r¯}©}¸QÓ/?ÀdÖKr3   c                 ó4  — t        j                  g d¢«      }t        |«      }t        t	        ||d«      d«       t        t	        ||d«      d«       t        t	        ||d«      d«       t        t	        ||d«      d«       t        t	        ||d	«      |d
z
  «       y )N)r™   çš™™™™™Ù?gÍÌÌÌÌÌÜ?g333333ã?rŠ   çÍÌÌÌÌÌì?g®Gáz®ï?rO   rä   r   rö  r   g»aÛ¢ÌÜ?g”Þ7¾öÌÜ?r&   rO   r   )r)   r*   rD  r   r   )r+   Úp_cumulativer  s      r1   Útest_FindIndexz!TestMultinomialQMC.test_FindIndex  sƒ   € Ü—x‘xÒ KÓLˆÜ�<Ó ˆÜÔ% l°D¸#Ó>ÀÔBÜÔ% l°D¸#Ó>ÀÔBÜÔ% l°D¸'ÓBÀAÔFÜÔ% l°D¸'ÓBÀAÔFÜÔ% l°D¸#Ó>ÀÀqÁÕIr3   c                 óf  — t         j                  j                  d«      }t        j                  g d¢«      }d}t        j                  ||z  «      j                  t        «      }t        j                  dd|¬«      }t        j                  ||||¬«      }t        |j                  d«      |d¬«       y )	Nl	   aýFÇkýqñ|Ë‘'x<Õ rê  r¡   r   Trí   )ré  r  r:   rS   )r)   r8   r9   r*   rð  r  rŒ  r   r¢  rí  r   )r+   r:   rŽ  ré  r�  Úbase_enginer  s          r1   Útest_other_enginez$TestMultinomialQMC.test_other_engine  sŠ   € ô �i‰i×#Ñ#Ð$KÓLˆÜ�H‰HÒ3Ó4ˆØˆÜ—=‘= ¨A¡Ó.×5Ñ5´cÓ:ˆÜ—i‘i ¨D°cÔ:ˆÜ×#Ñ# A°ÀØ(+ô-ˆä˜Ÿ™ aÓ(¨(¸Ö;r3   N)rÜ   rÝ   rÞ   rî  rH   rß   Úfilterwarningsrñ  rô  rù  rü  r{   r3   r1   rã  rã  æ  s\   „ òOð. ‡[�[×ÑÐ 5Ó6ñ<ó 7ð<òLòJð ‡[�[×ÑÐ 5Ó6ñ	<ó 7ñ	<r3   rã  c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestNormalQMCc                 óà  — t        j                  t        j                  d«      ¬«      }|j	                  «       }t        |j                  d«       |j	                  d¬«      }t        |j                  d«       t        j                  t        j                  d«      ¬«      }|j	                  «       }t        |j                  d«       |j	                  d¬«      }t        |j                  d	«       y )
Nr   )rW  ©r   r   r!   rÿ   ©r!   r   r   r<  ©r!   r   ©r   ÚMultivariateNormalQMCr)   Úzerosr8   r   r±   ©r+   r  Úsampless      r1   Útest_NormalQMCzTestNormalQMC.test_NormalQMC&  s    € ä×*Ñ*´·±¸³Ô<ˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ä×*Ñ*´·±¸³Ô<ˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÕ+r3   c                 óä  — t        j                  t        j                  d«      d¬«      }|j	                  «       }t        |j                  d«       |j	                  d¬«      }t        |j                  d«       t        j                  t        j                  d«      d¬«      }|j	                  «       }t        |j                  d	«       |j	                  d¬«      }t        |j                  d
«       y )Nr   T)rW  Úinv_transformr  r!   rÿ   r  r   r<  r  r  r  s      r1   Útest_NormalQMCInvTransformz(TestNormalQMC.test_NormalQMCInvTransform4  sª   € ä×*Ñ*Ü—‘˜!“¨Dô2ˆà—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ä×*Ñ*Ü—‘˜!“¨Dô2ˆà—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÕ+r3   c                 óT  — t         j                  j                  d«      }t        j                  t        j
                  d«      d|¬«      }|j                  d¬«      }t        j                  ddgdd	gg«      }t        ||d
¬«       t         j                  j                  d«      }t        j                  t        j
                  d«      d|¬«      }|j                  d¬«      }t        j                  g d¢g d¢g«      }t        ||d
¬«       t         j                  j                  d«      }t        j                  dd|¬«      }t        j                  t        j
                  d«      d||¬«      }|j                  d¬«      }t        j                  g d¢g d¢g«      }t        ||d
¬«       y )Nl	   q)í*s�yRóM¦@
KÎ r   F)rW  r  r'  rÿ   çƒÛÚÂóÒí¿çLpêÉ»à¿g†U¼‘y¤÷¿gx·²Dgë?rR   rS   r&   ©rW  r  r:   )r  r  gÀ”�Zº¢?)g#ÚŽ©»rü¿gÎŒ~4œ2í?gÔ»x?n¿°¿rM   Trí   )rW  r  r  r:   )	r)   r8   r9   r   r  r  r*   r   r¢  )r+   r:   r  r  Úsamples_expectedrû  s         r1   Útest_NormalQMCSeededz"TestNormalQMC.test_NormalQMCSeededD  sk  € ä�i‰i×#Ñ#Ð$KÓLˆä×*Ñ*Ü—‘˜!“¨E¸ô=ˆà—-‘- !�-Ó$ˆÜŸ8™8 i°Ð%;Ø&/°Ð%:ð%<ó =Ðä˜Ð!1¸Õ=ô �i‰i×#Ñ#Ð$KÓLˆÜ×*Ñ*Ü—‘˜!“¨E°sô<ˆà—-‘- !�-Ó$ˆÜŸ8™8Ò%EÚ%Eð%Gó HÐä˜Ð!1¸Õ=ô �i‰i×#Ñ#Ð$KÓLˆÜ—i‘i ¨D°cÔ:ˆÜ×*Ñ*Ü—‘˜!“¨EØ Cô
ˆð —-‘- !�-Ó$ˆÜŸ8™8Ò%EÚ%Eð%Gó HÐä˜Ð!1¸Ö=r3   c                 ó  — t         j                  j                  d«      }t        j                  t        j
                  d«      |d¬«      }|j                  d¬«      }t        j                  ddgdd	gg«      }t        ||d
¬«       t         j                  j                  d«      }t        j                  t        j
                  d«      |d¬«      }|j                  d¬«      }t        j                  g d¢g d¢g«      }t        ||d
¬«       y )Nl	   9e)-%ÿ5ŸZµ%Ö_6Ù r   T)rW  r:   r  rÿ   ç«èÍ<9í¿ç\ÌÏMÙî¿gî˜º+»`Ð?g]‰@õ"i?rR   rS   r&   )r  r  g»,D‡ÀÖ?)gÁÈËšX`æ?g�ìõî�7@gaTR' ‰ä¿)r)   r8   r9   r   r  r  r*   r   )r+   r:   r  r  r  s        r1   Ú test_NormalQMCSeededInvTransformz.TestNormalQMC.test_NormalQMCSeededInvTransformd  så   € ä�i‰i×#Ñ#Ð$KÓLˆÜ×*Ñ*Ü—‘˜!“ #°Tô;ˆà—-‘- !�-Ó$ˆÜŸ8™8 i°Ð%;Ø&.°Ð%9ð%;ó <Ðä˜Ð!1¸Õ=ô �i‰i×#Ñ#Ð$KÓLˆÜ×*Ñ*Ü—‘˜!“ #°Tô;ˆà—-‘- !�-Ó$ˆÜŸ8™8Ò%EÚ%Bð%Dó EÐä˜Ð!1¸Ö=r3   c                 óæ   — dD ]l  }t        j                  |d¬«      }t        j                  t        j                  |«      |d¬«      }|j                  «       }t        |j                  d|f«       Œn y )N©r   r   r   Fr2  T)rW  r  r  r   )r   r¢  r  r)   r  r8   r   r±   )r+   r�   rû  r  r  s        r1   rü  zTestNormalQMC.test_other_enginew  sa   € Øò 	0ˆAÜŸ)™) a°%Ô8ˆKÜ×.Ñ.´B·H±H¸Q³KØ6AØ=AôCˆFð —m‘m“oˆGÜ˜Ÿ™¨¨A¨Õ/ñ	0r3   c                 óR  — t         j                  j                  d«      }t        j                  t        j
                  d«      |¬«      }|j                  d¬«      }t        t        j                  |j                  d¬«      «      dk  «      sJ ‚t        t        j                  |j                  d¬«      d	z
  «      dk  «      sJ ‚d
D ]  }t        |d d …|f   «      \  }}|dkD  rŒJ ‚ t        j                  |j                  «       «      }t        j                  |d
   «      dk  sJ ‚y )Niº3  r   )rW  r:   é   rÿ   r   r®   rT  r   ©r   r   r÷  ©r)   r8   r9   r   r  r  r@  r´   rW  Ústdr   ÚcovÚ	transpose©r+   r:   r  r  r¦   rH  Úpvalr  s           r1   Útest_NormalQMCShapiroz#TestNormalQMC.test_NormalQMCShapiro€  sø   € Ü�i‰i×#Ñ# EÓ*ˆÜ×*Ñ*´·±¸³ÀÔEˆØ—-‘- #�-Ó&ˆÜ”2—6‘6˜'Ÿ,™,¨A˜,Ó.Ó/°$Ñ6Ô7Ð7Ð7Ü”2—6‘6˜'Ÿ+™+¨1˜+Ó-°Ñ1Ó2°TÑ9Ô:Ð:Ð:àò 	ˆAÜ˜g¢a¨ d™mÓ,‰GˆAˆtØ˜#“:Ð�:ð	ô �f‰f�W×&Ñ&Ó(Ó)ˆÜ�v‰v�c˜$‘iÓ  4Ò'Ð'Ñ'r3   c                 óT  — t         j                  j                  d«      }t        j                  t        j
                  d«      d|¬«      }|j                  d¬«      }t        t        j                  |j                  d¬«      «      d	k  «      sJ ‚t        t        j                  |j                  d¬«      d
z
  «      d	k  «      sJ ‚dD ]  }t        |d d …|f   «      \  }}|dkD  rŒJ ‚ t        j                  |j                  «       «      }t        j                  |d   «      d	k  sJ ‚y )Niê‰ír   Tr  r  rÿ   r   r®   rT  r   r  r÷  r  r   s           r1   Ú!test_NormalQMCShapiroInvTransformz/TestNormalQMC.test_NormalQMCShapiroInvTransformŽ  sý   € Ü�i‰i×#Ñ# HÓ-ˆÜ×*Ñ*Ü—‘˜!“¨D°cô;ˆà—-‘- #�-Ó&ˆÜ”2—6‘6˜'Ÿ,™,¨A˜,Ó.Ó/°$Ñ6Ô7Ð7Ð7Ü”2—6‘6˜'Ÿ+™+¨1˜+Ó-°Ñ1Ó2°TÑ9Ô:Ð:Ð:àò 	ˆAÜ˜g¢a¨ d™mÓ,‰GˆAˆtØ˜#“:Ð�:ð	ô �f‰f�W×&Ñ&Ó(Ó)ˆÜ�v‰v�c˜$‘iÓ  4Ò'Ð'Ñ'r3   N)
rÜ   rÝ   rÞ   r	  r  r  r  rü  r"  r$  r{   r3   r1   rÿ  rÿ  %  s&   „ ò,ò,ò >ò@>ò&0ò(ó(r3   rÿ  c                   óB   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚTestMultivariateNormalQMCc                 ó.  — d}t        j                  t        |¬«      5  t        j                  dgt        j
                  d¬«      ¬«       d d d «       d}t        j                  t        |¬«      5  t        j                  g d¢t        j
                  d¬«      ¬«       d d d «       d	}t        j                  t        |¬«      5  t        j                  ddgt        j                  j                  «       ¬«       d d d «       d
}t        j                  t        |¬«      5  t        j                  ddgddgddgg«       d d d «       d}t        j                  t        |¬«      5  t        j                  ddgddgddgg«       d d d «       d}t        j                  t        |¬«      5  t        j                  dgddgddgg«       d d d «       y # 1 sw Y   �Œ„xY w# 1 sw Y   �Œ>xY w# 1 sw Y   ŒïxY w# 1 sw Y   Œ·xY w# 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nz(Dimension of `engine` must be consistentrC   r   r   rë  )r  r%   rM   rì  zCovariance matrix not PSD.r   z#Covariance matrix is not symmetric.z/Dimension mismatch between mean and covariance.)	rH   rI   rJ   r   r  r¢  r)   r8   r9   r]  s     r1   rî  z*TestMultivariateNormalQMC.test_validations   sÊ  € à=ˆÜ�]‰]œ:¨WÔ5ñ 	BÜ×%Ñ% q c´#·)±)¸a´.ÕA÷	Bð >ˆÜ�]‰]œ:¨WÔ5ñ 	HÜ×%Ñ%¢i¼¿	¹	ÀA¼ÕG÷	Hð 8ˆÜ�]‰]œ:¨WÔ5ñ 	NÜ×%Ñ% q¨! f´R·Y±Y×5JÑ5JÓ5LÕM÷	Nð 0ˆÜ�]‰]œ:¨WÔ5ñ 	@Ü×%Ñ% q¨! f°°1¨v¸¸1°vÐ.>Ô?÷	@ð 9ˆÜ�]‰]œ:¨WÔ5ñ 	@Ü×%Ñ% q¨! f°°1¨v¸¸1°vÐ.>Ô?÷	@ð EˆÜ�]‰]œ:¨WÔ5ñ 	=Ü×%Ñ% q c¨Q°¨F°Q¸°FÐ+;Ô<÷	=ð 	=÷)	Bñ 	Bú÷	Hñ 	Hú÷	Nð 	Nú÷	@ð 	@ú÷	@ð 	@ú÷	=ð 	=úsG   ž-GÁ0.GÃ6G'ÄG3Å"G?Æ&HÇGÇG$Ç'G0Ç3G<Ç?HÈHc                 ób   — t        j                  g d¢g d¢g d¢g d¢g«      }|j                  €J ‚y )Nr%   )r   r   r   )r   r   r   )r   r   r   )r   r  Ú_corr_matrixr£  s     r1   Útest_MultivariateNormalQMCNonPDz9TestMultivariateNormalQMC.test_MultivariateNormalQMCNonPDº  s2   € ä×*Ñ*Úš	¢9ªiÐ8ó
ˆð ×"Ñ"Ð.Ð.Ñ.r3   c                 óÚ  — t        j                  dd¬«      }|j                  «       }t        |j                  d«       |j                  d¬«      }t        |j                  d«       t        j                  ddgddgddgg¬«      }|j                  «       }t        |j                  d«       |j                  d¬«      }t        |j                  d	«       t        j                  g d
¢«      }t        j                  g d¢g d¢g d¢g«      }t        j                  ||«      }|j                  «       }t        |j                  d«       |j                  d¬«      }t        |j                  d«       y )Nr   r!   )rW  r  r  rÿ   r  r   r<  r  r  ©r   r   r   ©r   r   r   ©r   r   r   ©r   r&   ©r!   r&   ©r   r  r8   r   r±   r)   r*   ©r+   r  r  rW  r  s        r1   Útest_MultivariateNormalQMCz4TestMultivariateNormalQMC.test_MultivariateNormalQMCÁ  s  € ä×*Ñ*°°qÔ9ˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ô ×*Ñ*°°A°¸aÀ¸VÀaÈÀVÐ<LÔMˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ô �x‰xš	Ó"ˆÜ�h‰hš	¢9ªiÐ8Ó9ˆÜ×*Ñ*¨4°Ó5ˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÕ+r3   c                 óâ  — t        j                  ddd¬«      }|j                  «       }t        |j                  d«       |j                  d¬«      }t        |j                  d«       t        j                  ddgddgddggd¬«      }|j                  «       }t        |j                  d	«       |j                  d¬«      }t        |j                  d
«       t        j                  g d¢«      }t        j                  g d¢g d¢g d¢g«      }t        j                  ||d¬«      }|j                  «       }t        |j                  d«       |j                  d¬«      }t        |j                  d«       y )Nr   r!   T)rW  r  r  r  rÿ   r  r   r<  r  r  r,  r-  r.  )r  r/  r0  r1  r2  s        r1   Ú&test_MultivariateNormalQMCInvTransformz@TestMultivariateNormalQMC.test_MultivariateNormalQMCInvTransformÙ  s   € ä×*Ñ*°°qÈÔMˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ô ×*Ñ*Ø�Q�˜q !˜f q¨! fÐ-¸Tô
ˆð —-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ô �x‰xš	Ó"ˆÜ�h‰hš	¢9ªiÐ8Ó9ˆÜ×*Ñ*¨4°ÀDÔIˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÕ+r3   c                 óH  — t         j                  j                  d«      }|j                  d«      }||j	                  «       z  t        j
                  |j                  d«      «      z   }t        j                  t        j                  ddg«      |d|¬«      }|j                  d¬«      }t        j                  dd	gd
dgg«      }t        ||d¬«       t         j                  j                  d«      }|j                  d«      }||j	                  «       z  t        j
                  |j                  d«      «      z   }t        j                  t        j                  g d¢«      |d|¬«      }|j                  d¬«      }t        j                  g d¢g d¢g«      }t        ||d¬«       y )Nl	   èb·{1/YKë $`øF‡ ©r   r   r   r   F)r  r:   rÿ   g° ÍX4�ä¿gƒ0º<ì¿gÎ§ŽUÊê?gÏKÅÆ\ @rR   rS   ©r&   r&   r&   r%   )gZhç44æ¿gA-Ó>ô¿gÉZC©½ˆ¶¿)g~TÃ~Oìù?g*Ê¥ño@gc}“EÝ?©
r)   r8   r9   Ústandard_normalr  Údiagr   r  r*   r   ©r+   r:   r<   ÚAr  r  r  s          r1   Ú test_MultivariateNormalQMCSeededz:TestMultivariateNormalQMC.test_MultivariateNormalQMCSeededó  s]  € ä�i‰i×#Ñ#Ð$KÓLˆØ×Ñ Ó'ˆØ�—‘“Ñ¤§¡¨¯
©
°1«Ó 6Ñ6ˆÜ×*Ñ*¬2¯8©8°Q¸°FÓ+;¸QØ9>ÀCôIˆà—-‘- !�-Ó$ˆÜŸ8™8 h°	Ð%:Ø&.°Ð%9ð%;ó <Ðä˜Ð!1¸Õ=ô �i‰i×#Ñ#Ð$KÓLˆØ×Ñ Ó'ˆØ�—‘“Ñ¤§¡¨¯
©
°1«Ó 6Ñ6ˆÜ×*Ñ*¬2¯8©8²IÓ+>ÀØ9>ÀCôIˆà—-‘- !�-Ó$ˆÜŸ8™8Ò%FÚ%Cð%Eó FÐä˜Ð!1¸Ö=r3   c                 óH  — t         j                  j                  d«      }|j                  d«      }||j	                  «       z  t        j
                  |j                  d«      «      z   }t        j                  t        j                  ddg«      ||d¬«      }|j                  d¬«      }t        j                  dd	gd
dgg«      }t        ||d¬«       t         j                  j                  d«      }|j                  d«      }||j	                  «       z  t        j
                  |j                  d«      «      z   }t        j                  t        j                  g d¢«      ||d¬«      }|j                  d¬«      }t        j                  g d¢g d¢g«      }t        ||d¬«       y )Nl	   A^ª}�KT0zub‡N¨ r7  r   r   T)r:   r  rÿ   g�òèFXÔå?gãý¸ýòéÀgRµÝß4¹¿gèO=Ò`å?rR   rS   r8  r&   r%   )go.2žï?gÛikD0Nú¿gÆPN´«ì¿)g4óäšYü¿gÒ«JC�ñ?g„-vû¬2 @r9  r<  s          r1   Ú,test_MultivariateNormalQMCSeededInvTransformzFTestMultivariateNormalQMC.test_MultivariateNormalQMCSeededInvTransform
  s_  € ä�i‰i×#Ñ#Ð$KÓLˆØ×Ñ Ó'ˆØ�—‘“Ñ¤§¡¨¯
©
°1«Ó 6Ñ6ˆÜ×*Ñ*Ü�H‰H�a˜�VÓ˜a S¸ô
ˆð —-‘- !�-Ó$ˆÜŸ8™8 h°	Ð%:Ø&/°Ð%:ð%<ó =Ðä˜Ð!1¸Õ=ô �i‰i×#Ñ#Ð$KÓLˆØ×Ñ Ó'ˆØ�—‘“Ñ¤§¡¨¯
©
°1«Ó 6Ñ6ˆÜ×*Ñ*Ü�H‰H’YÓ ¨¸4ô
ˆð —-‘- !�-Ó$ˆÜŸ8™8Ò%EÚ%Dð%Fó GÐä˜Ð!1¸Ö=r3   c                 óp  — t         j                  j                  d«      }t        j                  ddgddgddgg|¬«      }|j                  d¬«      }t        t        j                  |j                  d¬«      «      dk  «      sJ ‚t        t        j                  |j                  d¬«      dz
  «      dk  «      sJ ‚d	D ]  }t        |d d …|f   «      \  }}|d
kD  rŒJ ‚ t        j                  |j                  «       «      }t        j                  |d	   «      dk  sJ ‚t        j                  ddgddgddgg|¬«      }|j                  d¬«      }t        t        j                  |j                  d¬«      ddgz
  «      dk  «      sJ ‚t        t        j                  |j                  d¬«      t        j                  d«      z
  «      dk  «      sJ ‚d	D ]  }t        |d d …|f   «      \  }}|d
kD  rŒJ ‚ t        j                  |j                  «       «      }t        j                  |d	   dz
  «      dk  sJ ‚y )Nl   ¸–ÅVù^�Am%¦2r   r   ©rW  r  r:   r  rÿ   r®   rT  r  r÷  rO   rN   r'   r   r   ©r)   r8   r9   r   r  r@  r´   rW  r  r   r  r  rj   r   s           r1   Ú!test_MultivariateNormalQMCShapiroz;TestMultivariateNormalQMC.test_MultivariateNormalQMCShapiro#  s  € ä�i‰i×#Ñ#Ð$HÓIˆÜ×*Ñ*Ø�Q�˜q !˜f q¨! fÐ-°3ô
ˆð —-‘- #�-Ó&ˆÜ”2—6‘6˜'Ÿ,™,¨A˜,Ó.Ó/°$Ñ6Ô7Ð7Ð7Ü”2—6‘6˜'Ÿ+™+¨1˜+Ó-°Ñ1Ó2°TÑ9Ô:Ð:Ð:àò 	ˆAÜ˜g¢a¨ d™mÓ,‰GˆAˆtØ˜#“:Ð�:ð	ô �f‰f�W×&Ñ&Ó(Ó)ˆÜ�v‰v�c˜$‘iÓ  4Ò'Ð'Ð'ô ×*Ñ*Ø�s� 3¨ *¨s°C¨jÐ!9¸sô
ˆð —-‘- #�-Ó&ˆÜ”2—6‘6˜'Ÿ,™,¨A˜,Ó.°!°Q°Ñ7Ó8¸4Ñ?Ô@Ð@Ð@Ü”2—6‘6˜'Ÿ+™+¨1˜+Ó-´·±¸³Ñ<Ó=ÀÑDÔEÐEÐEàò 	ˆAÜ˜g¢a¨ d™mÓ,‰GˆAˆtØ˜#“:Ð�:ð	ô �f‰f�W×&Ñ&Ó(Ó)ˆÜ�v‰v�c˜$‘i #‘oÓ&¨Ò-Ð-Ñ-r3   c                 ót  — t         j                  j                  d«      }t        j                  ddgddgddgg|d¬«      }|j                  d¬«      }t        t        j                  |j                  d¬«      «      d	k  «      sJ ‚t        t        j                  |j                  d¬«      dz
  «      d	k  «      sJ ‚d
D ]  }t        |d d …|f   «      \  }}|dkD  rŒJ ‚ t        j                  |j                  «       «      }t        j                  |d
   «      d	k  sJ ‚t        j                  ddgddgddgg|d¬«      }|j                  d¬«      }t        t        j                  |j                  d¬«      ddgz
  «      d	k  «      sJ ‚t        t        j                  |j                  d¬«      t        j                  d«      z
  «      d	k  «      sJ ‚d
D ]  }t        |d d …|f   «      \  }}|dkD  rŒJ ‚ t        j                  |j                  «       «      }t        j                  |d
   dz
  «      d	k  sJ ‚y )Nl	   A"l7D#maxbwcuòC– r   r   T)rW  r  r:   r  r  rÿ   r®   rT  r  r÷  rO   rN   r'   r   r   rC  r   s           r1   Ú-test_MultivariateNormalQMCShapiroInvTransformzGTestMultivariateNormalQMC.test_MultivariateNormalQMCShapiroInvTransformC  s  € ä�i‰i×#Ñ#Ð$KÓLˆÜ×*Ñ*Ø�Q�˜q !˜f q¨! fÐ-°3Àdô
ˆð —-‘- #�-Ó&ˆÜ”2—6‘6˜'Ÿ,™,¨A˜,Ó.Ó/°$Ñ6Ô7Ð7Ð7Ü”2—6‘6˜'Ÿ+™+¨1˜+Ó-°Ñ1Ó2°TÑ9Ô:Ð:Ð:àò 	ˆAÜ˜g¢a¨ d™mÓ,‰GˆAˆtØ˜#“:Ð�:ð	ô �f‰f�W×&Ñ&Ó(Ó)ˆÜ�v‰v�c˜$‘iÓ  4Ò'Ð'Ð'ô ×*Ñ*Ø�s�Ø�s�˜c 3˜ZÐ(ØØô	
ˆð —-‘- #�-Ó&ˆÜ”2—6‘6˜'Ÿ,™,¨A˜,Ó.°!°Q°Ñ7Ó8¸4Ñ?Ô@Ð@Ð@Ü”2—6‘6˜'Ÿ+™+¨1˜+Ó-´·±¸³Ñ<Ó=ÀÑDÔEÐEÐEàò 	ˆAÜ˜g¢a¨ d™mÓ,‰GˆAˆtØ˜#“:Ð�:ð	ô �f‰f�W×&Ñ&Ó(Ó)ˆÜ�v‰v�c˜$‘i #‘oÓ&¨Ò-Ð-Ñ-r3   c                 ó  — t         j                  j                  d«      }t        j                  g d¢g d¢g d¢g d¢g|¬«      }|j                  d¬«      }t        t        j                  |j                  d	¬
«      «      dk  «      sJ ‚t        j                  t        j                  |d d …d	f   «      dz
  «      dk  sJ ‚t        j                  t        j                  |d d …df   «      dz
  «      dk  sJ ‚t        j                  t        j                  |d d …df   «      t        j                  d«      z
  «      dk  sJ ‚dD ]  }t        |d d …|f   «      \  }}|dkD  rŒJ ‚ t        j                  |j                  «       «      }t        j                  |d   «      dk  sJ ‚t        j                  |d   dz
  «      dk  sJ ‚t        t        j                  |d d …d	f   |d d …df   z   |d d …df   z
  «      dk  «      sJ ‚y )Nl	   ì@ÁjŒSÆmÆ-\1:cž# )rä   rä   rä   )rO   rä   rO   )rä   rO   rO   )rO   rO   rN   rB  r?  rÿ   r   r®   rT  r   r   r  gš™™™™™é?r  r9  rN  )r)   r8   r9   r   r  r@  r´   rW  r  rj   r   r  r  r   s           r1   Ú$test_MultivariateNormalQMCDegeneratez>TestMultivariateNormalQMC.test_MultivariateNormalQMCDegeneratef  sÊ  € ä�i‰i×#Ñ#Ð$JÓKˆÜ×*Ñ*Ú Ú ¢/²?ÐCØô
ˆð
 —-‘- #�-Ó&ˆÜ”2—6‘6˜'Ÿ,™,¨A˜,Ó.Ó/°$Ñ6Ô7Ð7Ð7Ü�v‰v”b—f‘f˜W¢Q¨ T™]Ó+¨aÑ/Ó0°4Ò7Ð7Ð7Ü�v‰v”b—f‘f˜W¢Q¨ T™]Ó+¨aÑ/Ó0°4Ò7Ð7Ð7Ü�v‰v”b—f‘f˜W¢Q¨ T™]Ó+¬b¯g©g°a«jÑ8Ó9¸DÒ@Ð@Ð@Øò 	ˆAÜ˜g¢a¨ d™mÓ,‰GˆAˆtØ˜#“:Ð�:ð	ô �f‰f�W×&Ñ&Ó(Ó)ˆÜ�v‰v�c˜$‘iÓ  4Ò'Ð'Ð'Ü�v‰v�c˜$‘i !‘mÓ$ tÒ+Ð+Ð+ä”2—6‘6˜'¢! Q $™-¨'²!°Q°$©-Ñ7¸'Â!ÀQÀ$¹-ÑGÓHØñô ð 	ñ r3   N)rÜ   rÝ   rÞ   rî  r*  r3  r5  r>  r@  rD  rF  rH  r{   r3   r1   r&  r&  ž  s1   „ ò=ò4/ò,ò0,ò4>ò.>ò2.ò@!.óFr3   r&  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)Ú	TestLloydc                 ó$  — t         j                  j                  d«      }|j                  ddd¬«      }t	        |«      }t        |«      }t        d«      D ]9  }t        |d¬«      }t	        |«      }t        |«      }||k  sJ ‚||k  sJ ‚|}|}|}Œ; y )Ni§� r   r   )é€   r   )r  rM   )Úmaxiter)r)   r8   ÚRandomStateÚuniformr   rÂ  r¢   r   )	r+   r:   r;   Úbase_l1Úbase_l2rH  Úsample_lloydÚcurr_l1Úcurr_l2s	            r1   Ú
test_lloydzTestLloyd.test_lloyd  s¢   € ä�i‰i×#Ñ# GÓ,ˆØ—‘˜Q ¨�Ó1ˆÜ˜6Ó"ˆÜ˜&“/ˆä�q“ò 	"ˆAÜAØ AôˆLô ˜|Ó,ˆGÜ˜lÓ+ˆGð ˜WÒ$Ð$Ð$Ø˜WÒ$Ð$Ð$àˆGØˆGà!‰Fñ	"r3   c                 óÆ   — t        j                  ddgddgddgddgg«      }|j                  «       }t        |¬«      }t	        ||«       t        j
                  ||«      rJ ‚y)zƒ
        Verify that the input samples are not mutated in place and that they do
        not share memory with the output.
        r™   rÆ  rc  N)r)   r*   Úcopyr   r   Úmay_share_memory)r+   Úsample_origÚsample_copyÚ
new_samples       r1   Útest_lloyd_non_mutatingz!TestLloyd.test_lloyd_non_mutating–  st   € ô
 —h‘h  c 
Ø!$ c 
Ø!$ c 
Ø!$ c 
ð ,ó -ˆð "×&Ñ&Ó(ˆÜ;Øô
ˆ
ô 	˜ [Ô1Ü×&Ñ& {°JÔ?Ð?Ð?Ð?r3   c                 óœ  — t        j                  t        d¬«      5  g d¢}t        |«       d d d «       d}t        j                  t        |¬«      5  dgdgdgg}t        |«       d d d «       d}t        j                  t        |¬«      5  d	dgd
dgddgg}t        |«       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   ŒRxY w# 1 sw Y   y xY w)Nz`sample` is not a 2D arrayrC   rE   z`sample` dimension is not >= 2r   rö  r   z!`sample` is not in unit hypercubegš™™™™™ñ¿r™   r   )rH   rI   rJ   r   )r+   r;   r  s      r1   Útest_lloyd_errorszTestLloyd.test_lloyd_errors¦  sÆ   € Ü�]‰]œ:Ð-JÔKñ 	;Ú ˆFÜ2°6Ô:÷	;ð 0ˆÜ�]‰]œ:¨SÔ1ñ 	;Ø�c˜C˜5 1 #Ð&ˆFÜ2°6Ô:÷	;ð 3ˆÜ�]‰]œ:¨SÔ1ñ 	;Ø˜Q�i # s ¨a°¨VÐ4ˆFÜ2°6Ô:÷	;ð 	;÷	;ð 	;ú÷
	;ð 	;ú÷
	;ð 	;ús#   œB*ÁB6Â
CÂ*B3Â6B?ÃCN)rÜ   rÝ   rÞ   rU  r\  r^  r{   r3   r1   rJ  rJ  ~  s   „ ò"ò.@ó ;r3   rJ  c                 óH   — t        j                  | «      j                  «       S rz   )r
   Úpdistr  rc  s    r1   rÂ  rÂ  ·  s   € Ü�>‰>˜&Ó!×%Ñ%Ó'Ð'r3   r  c                 óÔ  — d}t         j                  j                  |«      } | d|¬«      j                  d«      }t         j                  j                  |«      } | d|¬«      j                  d«      }t        ||«       t         j                  j	                  |«      } | d|¬«      j                  d«      } | d|¬«      j                  d«      }t        ||«       t         j                  j	                  |«      } | d|¬«      j                  d«      }t        ||«       t        ||«       d}t        j                  t        |¬«      5   | d||¬«       d d d «       y # 1 sw Y   y xY w)	Nl   Ø7P r   )r�   r'  rM   rŽ   z3got multiple values for argument now known as `rng`rC   )r�   r:   r'  )r)   r8   rN  r   r9   rH   rI   Ú	TypeError)r  Úseed_numberr:   Úres1Úres2Úres3r^  s          r1   Útest_deterministicrg  »  s(  € ð €Kä
�)‰)×
Ñ
 Ó
,€CÙ�A˜CÔ ×'Ñ'¨Ó*€DÜ
�)‰)×
Ñ
 Ó
,€CÙ�A˜CÔ ×'Ñ'¨Ó*€DÜ��tÔä
�)‰)×
Ñ
 Ó
,€CÙ�A˜CÔ ×'Ñ'¨Ó*€DÙ�A˜;Ô'×.Ñ.¨qÓ1€DÜ��tÔÜ
�)‰)×
Ñ
 Ó
,€CÙ�A˜3Ô×&Ñ& qÓ)€DÜ��tÔÜ��tÔàC€GÜ	�‰”y¨Ô	0ñ 7Ù�˜¨+Õ6÷7÷ 7ñ 7ús   Å	EÅE')6r   Úcollectionsr   Ú	itertoolsr   r   rH   Únumpyr)   Únumpy.testingr   r   r   r	   Úscipy.spatialr
   Úscipy.statsr   Úscipy.stats._sobolr   r   Úscipy.stats._qmcr   r   r   r   r   r   r   r   r   râ   rõ   r	  r  r  r  r!  rt  ry  rŸ  r»  rã  rÿ  r&  rJ  rÂ  rß   rr  rw  r¢  r‘   rá  rg  r{   r3   r1   ú<module>rp     s<  ðÛ 	Ý ß +ã Û ÷ó õ #Ý Ý /Ý ÷÷ ó ÷h%ñ h%÷V#'ñ #'ôL�3—=‘=ô ò&ò.2ò<òD+÷ h/ñ h/ôV)�ô )ôBRˆnô RôjH7�ô H7ôVq3�.ô q3÷h<<ñ <<÷~v(ñ v(÷r]ñ ]÷@5;ñ 5;òr(ð ‡�×Ñ˜ C§J¡J°·	±	Ø$'×$6Ñ$6¸¿¹ð$Ió Jñ7óJñ7r3   