Ë
    qwjEç  ã                   óˆ  — 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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j6                  «      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«      Z* G d„ de&«      Z+ G d „ d!«      Z, G d"„ d#«      Z- G d$„ d%«      Z. G d&„ d'«      Z/d(„ Z0ejb                  je                  d)ejf                  ejh                  ejj                  ejl                  g«      d*„ «       Z7y)+é    N)ÚCounter)ÚcombinationsÚproduct)Úassert_allcloseÚassert_equalÚassert_array_equalÚassert_array_less)Údistance)Úshapiro)Ú_test_find_indexÚ_test_low_0_bit)Ú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
¬«      ej                  j                  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           ú_/var/www/html/newmanjeet/manjet/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î ©é   é
   r8   F)r%   T)r*   ÚrandomÚdefault_rngr   r)   r   )r,   ÚrngÚsampleÚaÚbÚscaledÚunscaleds          r2   Ú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ˆÜ˜ &Õ)r4   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-   r0   r    r!   r.   s         r2   Útest_scale_errorszTestUtils.test_scale_errors=   sR  € Ü�]‰]œ:Ð-HÖIÚˆEÜ�I‰I�e b°1Õ5÷ Jô �]‰]œ:Ð-IÖJØ˜�V˜a ˜V c¨3 ZÐ0ˆEÜ—X‘X  A˜w¨¨A¨Ð/Ó0ˆFÜ�I‰I�e f¨Q¡i¸&À¹)ÕD÷ Kô
 �]‰]œ:ð .Gö Hà˜�V˜a ˜V c¨3 ZÐ0ˆEÚ!+¨a°¨V�hˆHÜ�I‰I�e h¸ÕB÷	Hô �]‰]œ:ð .Gö Hà˜�V˜a ˜V c¨3 ZÐ0ˆEÜ—X‘Xšzª9Ð5Ó6ˆFÜ�I‰I�e f¨Q¡i¸&À¹)ÕD÷	Hô �]‰]œ:ð .:ö ;à˜�V˜a ˜X¨¨S zÐ2ˆEÜ—X‘X  A˜w¨¨A¨Ð/Ó0ˆFÜ�I‰I�e f¨Q¡i¸&À¹)ÕD÷	;ô �]‰]œ:Ð-GÖHØ˜�7˜Q ˜F Q¨ HÐ-ˆCÜ—X‘X  A˜w¨¨A¨Ð/Ó0ˆFÜ�I‰I�c F¨1¡I¸¸q¹	Ø"õ$÷ IÐH÷7 JÑIú÷ KÑJú÷
Hñ Hú÷Hñ Hú÷;ð ;ú÷ IÐHú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   rN   rH   é   é    é@   úL2-star)r*   r+   r   r   ÚdiscrepancyÚsqrt)r,   Úspace_1Úspace_2r<   ÚdimÚrefs         r2   Ú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Ø!õ	#ó )ˆCÜ—'‘'˜!˜s˜d™)Ó$ˆCÜœCŸO™O¬B¯H©H°q°c¸#±g°YÓ,?Ø3<ô>Ø?BõDñ )r4   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   rN   r"   rG   rD   rC   r   r   ú'toto' is not a valid ...Útotor_   )r*   r+   rI   rJ   rK   r   rj   ©r,   r<   s     r2   Ú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Ô#÷ Jð �a�&˜1˜a˜& 3¨ *Ð-ˆÜ�]‰]œ:Ð-IÖJÜ�O‰O˜F¨6Õ2÷ KÐJ÷
ð 
ú÷
 JÐIú÷ KÐJú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)!NrV   rW   rX   rY   rZ   r[   r\   rO   rP   r]   r^   rH   )r`   Úworkersr#   rS   rT   ra   rb   rc   rd   re   r'   r   ri   éÿÿÿÿÚ	cpu_countc                   ó   — y ©N© r|   r4   r2   Ú<lambda>z5TestUtils.test_discrepancy_parallel.<locals>.<lambda>¯   s   € °Tr4   zCannot determine therD   ©rw   zInvalid number of workers...r   )r*   r+   r   r   rj   rk   ÚsetattrÚosrI   rJ   ÚNotImplementedErrorrK   )r,   Úmonkeypatchr<   rn   ro   s        r2   Útest_discrepancy_parallelz#TestUtils.test_discrepancy_parallel“   s^  € Ü—‘Ò-Ú-Ú-Ú-Ú-Ú-Ú-ð/ó 0ˆð ˜‘, Ñ$¨Ñ3ˆäœŸ™¨°tÀQÔGØØ!õ	#ô 	œŸ™¨°tÀQÔGØØ!õ	#ô 	œŸ™¨°tÀQÔGØØ!õ	#ó )ˆCÜ—'‘'˜!  ™+Ó&ˆCÜœCŸO™O¬B¯H©H°q°c¸C±i°[Ó,AØ3<ÀbôJØKNõPð )ð
 	×ÑœB ©\Ô:Ü�]‰]Ô.Ð6LÖMÜ�O‰O˜F¨BÕ/÷ Nô �]‰]œ:Ð-KÖLÜ�O‰O˜F¨BÕ/÷ MÐL÷ NÐMú÷ MÐLú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   rN   r"   rG   rD   rC   r   r   rr   rs   r_   z!Sample contains duplicate points.z'Sample must contain at least two points)	r*   r+   rI   rJ   rK   r   Úgeometric_discrepancyÚwarnsÚUserWarningrt   s     r2   Ú!test_geometric_discrepancy_errorsz+TestUtils.test_geometric_discrepancy_errors¶   st  € Ü—‘˜A˜q˜6 A q 6¨A¨q¨6°A°q°6¸A¸q¸6ÀAÀqÀ6ÐJÓKˆä�]‰]œ:Ð-OÖPÜ×%Ñ% fÔ-÷ Qô �]‰]œ:Ð-HÖIÜ×%Ñ% q¨! fÔ-÷ Jð �a�&˜1˜a˜& 3¨ *Ð-ˆÜ�]‰]œ:Ð-IÖJÜ×%Ñ% f°VÕ<÷ Kô —‘˜A˜q˜6 A q 6¨A¨q¨6Ð2Ó3ˆÜ�\‰\œ+Ð-PÖQÜ×%Ñ% fÔ-÷ Rô —‘˜C ˜:˜,Ó'ˆÜ�]‰]œ:Ð-VÖWÜ×%Ñ% fÔ-÷ XÐW÷ QÑPú÷ JÑIú÷ KÐJú÷ RÐQú÷ XÐWú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   ç      è?ç      Ð?rN   Ú	chebyshev)Úmetric)r`   rŽ   l	   ’sˆ;80øri�R$½� r'   ©Údr;   é2   g–˜Y�$ª?guÚ—¼8É?)	r*   r+   r   r   r…   rk   r9   r:   ÚLatinHypercube)r,   r<   r;   s      r2   Ú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õ	
r4   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…   rt   s     r2   Ú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ÈÕMr4   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   rN   r"   rO   rP   rQ   rx   T)Ú	iterativerR   rS   rT   l	   gy°,!uUx‡FYo9"]µ )rN   r8   rG   rD   rC   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   rj   r   r   r9   r:   rI   rJ   rK   )r,   rl   Ú	disc_initÚ	disc_iterr;   Údisc_refÚx_news          r2   Útest_update_discrepancyz!TestUtils.test_update_discrepancyì   s#  € ä—(‘(˜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ô �]‰]œ:ð .:ö ;ä˜w r™{¨G°C°R¨L¸1Ñ,<¸iÔH÷;ô �]‰]œ:Ð-HÖIÜ˜w r™{¨G°A©J¸	ÔB÷ Jð �A�ˆÜ�]‰]œ:ð .:ö ;ä˜u g¨c¨r l°IÔ>÷;ð �s��ˆÜ�]‰]œ:Ð-GÖHÜ˜u g¨c¨r l°IÔ>÷ Iò ˆÜ�]‰]œ:ð .>ö ?ä˜u g¨c¨r l°IÔ>÷?ð ?÷#;ð ;ú÷ JÐIú÷;ð ;ú÷
 IÐHú÷?ð ?ú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;   r8   éd   )
r*   r9   r:   r   r’   rj   ÚrangeÚintegersr   r   )
r,   r;   Úqmc_genr<   ÚdiscÚiÚrow_1Úrow_2ÚcolÚdisc_references
             r2   Útest_perm_discrepancyzTestUtils.test_perm_discrepancy  sØ   € Ü�i‰i×#Ñ#Ð$JÓKˆÜ×$Ñ$ Q¨CÔ0ˆØ—‘ Ó#ˆÜ�‰˜vÓ&ˆä�s–ˆ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ñ r4   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          r2   Ú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Ñ:Ð:r4   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         r2   Údisc_wdzFTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_wd9  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¨™}Ñ,Ð,r4   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          r2   Údisc_mdzFTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_mdC  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Ñ:Ð:r4   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*   rk   r³   r´   r£   Úmaximum)r·   r¸   r¹   ÚkÚjs        r2   Údisc_star_l2zKTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_star_l2S  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Ó <Ñ<Õ=Ø/7ð >Ø%òó ð ˜!‘Vññóð ùós   Á>AC#l	   Áj¤;<Q`sºi—y—õX r6   rc   r_   ra   r^   ri   N)r*   r9   r:   r   rj   r   )	r,   r¾   rÀ   rÂ   rÇ   r;   r<   Ú	disc_currÚdisc_alts	            r2   Ú+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Õ,r4   c                 ó‚   — t        d«      }|d   dk(  sJ ‚t        d«      }|d   dk(  sJ ‚t        d«      }|d   dk(  sJ ‚y )Nr8   rx   é   é¨   iå  i^  i5	  )r   )r,   Úprimess     r2   Útest_n_primeszTestUtils.test_n_primesq  sS   € Ü˜"“ˆØ�b‰z˜RÒÐÐä˜#“ˆØ�b‰z˜SÒ Ð Ð ä˜#“ˆØ�b‰z˜TÒ!Ð!Ñ!r4   c                 ó:   — t        d«      }g d¢}t        ||«       y )Nr‘   )r   r'   r"   é   é   é   é   é   é   rÌ   é   é%   é)   é+   é/   )r   r   )r,   rÎ   r.   s      r2   Útest_primeszTestUtils.test_primes{  s   € Ü! "Ó%ˆÚFˆÜ˜ Õ$r4   N)Ú__name__Ú
__module__Ú__qualname__r3   rA   rL   rp   ru   rƒ   rˆ   r“   rI   ÚmarkÚxfailÚthread_unsafer—   rŸ   r¬   rÊ   rÏ   rÜ   r|   r4   r2   r   r      sŽ   „ ò+ò<*ò $òD#DòJ3ò!0òF.ò*
ð0 ‡[�[×ÑØJØð ó ð ‡[�[×ÑñNó ó	ð
Nò(?òT2ò"H-òT"ó%r4   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 )	Nr8   )
ç        r   rŒ   r‹   ç      À?ç      ä?ç      Ø?ç      ì?g      °?g      â?rN   r~   rH   rÑ   r'   )Ústart_index©r   r   )r,   r<   r.   s      r2   Útest_van_der_corputzTestVDC.test_van_der_corput‚  se   € Ü Ó#ˆò-ˆä˜ Ô$ä ¨AÔ.ˆÜ˜ Ô$ä ¨AÔ.ˆÜ˜ Ô$ä ¨qÔ1ˆÜ˜  A B Õ(r4   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þ r8   T©Úscrambler;   rÑ   r'   )rë   rð   r;   rN   )rë   rð   r;   rw   rH   rì   )r,   r;   r.   r<   s       r2   Ú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 Õ(r4   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 2rD   r8   r   )Úbase)rI   rJ   rK   r   ©r,   s    r2   Útest_invalid_base_errorzTestVDC.test_invalid_base_error¢  s(   € Ü�]‰]œ:Ð-IÖJÜ˜2 AÕ&÷ K×JÑJús   œ3³<N)rÝ   rÞ   rß   rí   rñ   rõ   r|   r4   r2   rä   rä   �  s   „ ò)ò)ó"'r4   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       €r2   rû   zRandomEngine.__init__¨  s   ø€ Ü‰Ñ˜1¨<¸SÐÕAr4   r   r~   c                óT   — | j                   j                  || j                  f«      }|S r{   )r;   r9   r�   )r,   r¸   rw   r<   s       r2   Ú_randomzRandomEngine._random«  s!   € Ø—‘—‘ ! T§V¡V Ó-ˆØˆr4   ©NN)r   )rÝ   rÞ   rß   rû   rþ   Ú__classcell__)rü   s   @r2   r÷   r÷   §  s   ø„ õBð a÷ ð r4   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÷   r9   Únum_generatedÚresetr   Úfast_forward)ÚengineÚsample_1Úsample_2Úsample_1_testÚsample_2_tests        r2   Ú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Ò%Ð%Ñ%r4   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 integerrD   )r   rx   z*'u_bounds' and 'l_bounds' must be integersr   çš™™™™™ñ?r   )rI   rJ   rK   r÷   r¤   )Úmsgr  s     r2   Útest_raisesr  Ç  s‘   € ä	�‰”zÐ)LÖ	MÜ�TÔ÷ 
Nô 
�‰”zÐ)LÖ	MÜ�RÔ÷ 
Nð 8€CÜ	�‰”z¨Ö	-Ü˜a“ˆØ�‰ ¨SˆÔ1÷ 
.Ð	-÷ 
NÐ	Mú÷ 
NÐ	Mú÷ 
.Ð	-ú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¡   r8   r  r   Úint64T)r¸   ÚendpointéûÿÿÿrÑ   é   F©r!   r¸   r  r¢   )r÷   r¤   r   r*   ÚuniqueÚdtyper  r9   ÚfloorÚastyper  ÚminÚmax)r  r<   ÚlowÚhighÚ
ref_samples        r2   Ú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¨{Õ;r4   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 )Nr8   l	   G]	#0¦m$avâe r  rx   )r  r  Úsizer   r"   T)r  r  r"  r  r¡   r¢   Fr  r   r¯   )r*   r9   r:   r¤   r÷   r   r  r  )r�   r;   r  r  r  r<   s         r2   Ú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Õ*r4   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d„  ej4                  dej$                  j6                  ¬«      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ÚqmcerI   Úskip)r,   rð   r;   Úkwargss       r2   r  zQMCEngineTests.engine  sM   € ð ×ÒØ�4—9‘9ÐC h°SÑC¸FÑCÐCáÜ—‘•à �t—y‘yÑ4 cÐ4¨VÑ4Ð4r4   c                 ó6   — |r| j                   S | j                  S r{   )Úscramble_ndÚunscramble_nd)r,   rð   s     r2   Ú	referencezQMCEngineTests.reference!  s   € Ù#+ˆt×ÑÐC°×1CÑ1CÐCr4   )Úidsc                 óŠ   — | j                  d|¬«      }|j                  d«      }t        t        j                  d«      |«       y )Nr   ©r�   rð   rN   )rN   r   ©r  r9   r   r*   Úempty©r,   rð   r  r<   s       r2   Ú	test_0dimzQMCEngineTests.test_0dim$  ó5   € à—‘˜q¨8�Ó4ˆØ—‘˜qÓ!ˆÜœ2Ÿ8™8 FÓ+¨VÕ4r4   c                 óŠ   — | j                  d|¬«      }|j                  d«      }t        t        j                  d«      |«       y )Nr   r6  r   ©r   r   r7  r9  s       r2   Útest_0samplezQMCEngineTests.test_0sample*  r;  r4   c                 ón   — | j                  d|¬«      }|j                  d«      }d|j                  k(  sJ ‚y )Nr   r6  r   ©r   r   )r  r9   r²   r9  s       r2   Útest_1samplezQMCEngineTests.test_1sample0  s4   € à—‘˜q¨8�Ó4ˆØ—‘˜qÓ!ˆØ˜Ÿ™Ò%Ð%Ñ%r4   c                 ó´   — | j                  d|¬«      }|j                  d«      }t        j                  |dk\  «      sJ ‚t        j                  |dk  «      sJ ‚y )Nr¢   r6  é   r   r   )r  r9   r*   Úallr9  s       r2   Útest_boundszQMCEngineTests.test_bounds6  sN   € à—‘˜s¨X�Ó6ˆØ—‘˜sÓ#ˆÜ�v‰v�f ‘kÔ"Ð"Ð"Ü�v‰v�f ‘kÔ"Ð"Ñ"r4   c                 óÔ   — | j                  |¬«      }| j                  d|¬«      }|j                  t        |«      ¬«      }t	        ||d¬«       |j
                  t        |«      k(  sJ ‚y )N©rð   r   r6  r  rš   rT   )r3  r  r9   Úlenr   r  )r,   rð   r  r  r<   s        r2   Útest_samplezQMCEngineTests.test_sample=  s\   € à—^‘^¨X�^Ó6ˆ
Ø—‘˜q¨8�Ó4ˆØ—‘¤ Z£�Ó1ˆä˜ 
°Õ6Ø×#Ñ#¤s¨:£Ò6Ð6Ñ6r4   c                 óú   — | j                  d|¬«      }|j                  d¬«      }| j                  d|¬«      }t        |«      dz  }|j                  |¬«      }|j                  |¬«      }t        |||d  d¬«       y )Nr   r6  rH   r  rš   rT   )r  r9   rH  r   )r,   rð   r  r  Ún_halfÚ_r<   s          r2   Útest_continuingzQMCEngineTests.test_continuingF  sw   € à—‘˜q¨8�Ó4ˆØ—]‘] Q�]Ó'ˆ
à—‘˜q¨8�Ó4ˆä�Z“ AÑ%ˆà�M‰M˜FˆMÓ#ˆØ—‘ �Ó(ˆÜ˜ 
¨6¨7Ð 3¸$Ö?r4   r;   c                  ó@   — t         j                  j                  d«      S )Nr(  )r*   r9   r:   r|   r4   r2   r}   zQMCEngineTests.<lambda>X  s   € ”B—I‘I×)Ñ)Ð*QÔRr4   N)Úmarksc                 óò   — t        |«      r |«       }| j                  d||¬«      }|j                  d¬«      }|j                  «        |j                  dk(  sJ ‚|j                  d¬«      }t        ||«       y )Nr   ©r�   rð   r;   rH   r  r   )Úcallabler  r9   r  r  r   )r,   rð   r;   r  r  r<   s         r2   Ú
test_resetzQMCEngineTests.test_resetS  sm   € ô �CŒ=á“%ˆCØ—‘˜q¨8¸�Ó=ˆØ—]‘] Q�]Ó'ˆ
à�‰ŒØ×#Ñ# qÒ(Ð(Ð(à—‘ �Ó#ˆÜ˜ 
Õ+r4   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   r6  rH   r  rN   rš   rT   r   r   çñhãˆµøä>)	r  r9   r  r   r  r£   Úappendr*   Úconcatenate)r,   rð   r  r  r<   Ú
even_drawsr§   s          r2   Útest_fast_forwardz QMCEngineTests.test_fast_forwardi  sò   € à—‘˜q¨8�Ó4ˆØ—]‘] Q�]Ó'ˆ
à—‘˜q¨8�Ó4ˆà×Ñ˜AÔØ—‘ �Ó#ˆä˜ 
¨1¨2 °TÕ:ð 	�‰ŒØˆ
Ü�q–ˆAØ�1‰u˜ŠzØ×!Ñ! &§-¡-£/Õ2à×#Ñ# AÕ&ð	 ô
 	Ø¤5¨¤8Ó:¡8˜a¨q°1©u¸«zš 8Ñ:Ñ;Ü�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‘   r6  i   r   r¯   r   ç{®Gáz„?rT   é   rŒ   éK   r‹   )r  r9   r   r*   ÚmeanÚrepeatÚ
percentile)r,   rð   r�   r  r<   s        r2   Ú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Èö	
r4   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 methodrD   r   Frs   ©r�   rð   rù   )rI   rJ   rK   r  ©r,   Úmessages     r2   Útest_raises_optimizerz$QMCEngineTests.test_raises_optimizer’  s3   € Ø>ˆÜ�]‰]œ:¨WÖ5Ø�K‰K˜! e¸&ˆKÔA÷ 6×5Ñ5ús	   ž<¼Azoptimization,metricú	random-CDÚlloydc                 ó   — t        | «       S r{   )r   ©r<   s    r2   r}   zQMCEngineTests.<lambda>›  s   € ¤h¨vÓ&6Ñ%6r4   c                 óÈ   — | j                  dd¬«      }|j                  d¬«      } ||«      }| j                  dd|¬«      }|j                  d¬«      } ||«      }||k  sJ ‚y )Nr   Fr6  rh   r  rc  )r  r9   )	r,   rù   rŽ   r  Ú
sample_refÚ
metric_refÚoptimal_Úsample_Úmetric_s	            r2   Útest_optimizerszQMCEngineTests.test_optimizers—  sk   € ð —‘˜q¨5�Ó1ˆØ—]‘] R�]Ó(ˆ
Ù˜JÓ'ˆ
à—;‘; ¨UÀ�;ÓNˆØ—/‘/ B�/Ó'ˆÙ˜“/ˆà˜Ò#Ð#Ñ#r4   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   TrQ  rN   zArrays are not equalrD   r   r   )
r*   r9   r:   r£   r  rV  rI   rJ   ÚAssertionErrorr   )r,   r;   r<   r§   r  s        r2   Ú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Ô.÷ Iä�]‰]œ>Ð1GÖHÜ˜ ™ F¨1¡IÔ.÷ IÐH÷ IÐHúçHÐHús   ÂCÂ7CÃCÃC()r(  )$rÝ   rÞ   rß   Ú__doc__ÚNotImplementedr-  r,  r2  r1  rð   r4  Úboolr   r  r*   Úndarrayr3  rI   rà   Úparametrizer:  r>  rA  rE  rI  rM  Úparamrâ   rS  rY  ra  rf  r   rj   rq  rt  r|   r4   r2   r%  r%    se  „ Ù(Ø€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ÙRØˆF�L‰L˜ V§[¡[×%>Ñ%>Ô?ð	
óñ,óó <ð,ð ‡[�[×Ñ˜Z¨°sÐÓ;ñ
ó <ð
ð2 ‡[�[×Ñ˜Z¨$¨Ó0ñ
ó 1ð
òBð
 ‡[�[×ÑØà˜#Ÿ/™/Ð*ØÑ6Ð7ð	9óñ	$óð	$ó
/r4   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 )NTrG  r   r6  rH   )r¸   rw   gü©ñÒMbP?rT   r8   r~   )r3  r  r9   rH  r   r  r¤   r   )r,   r  r  r<   s       r2   Útest_workerszTestHalton.test_workersÇ  s„   € Ø—^‘^¨T�^Ó2ˆ
Ø—‘˜q¨4�Ó0ˆØ—‘¤ Z£¸!�Ó<ˆä˜ 
°Õ6ð 	�‰ŒØ—_‘_ RÓ(ˆ
Ø�‰ŒØ—‘ ¨Q�Ó/ˆÜ�V˜ZÕ(r4   N)rÝ   rÞ   rß   r   ÚHaltonr-  r,  r*   r+   r2  r1  r~  r|   r4   r2   r|  r|  µ  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ó)r4   r|  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.©rI   r.  ©r,   Úargss     r2   rM  zTestLHS.test_continuingÚ  ó   € Ü�‰Ð5Õ6r4   c                 ó.   — t        j                  d«       y rƒ  r„  r…  s     r2   rY  zTestLHS.test_fast_forwardÝ  r‡  r4   c                 ó.   — t        j                  d«       y ©NzJNot applicable: the value of reference sample is implementation dependent.r„  r…  s     r2   rI  zTestLHS.test_sampleà  ó   € Ü�‰ð 1õ 	2r4   Ústrengthr   r   rð   Frù   Nrg  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¯   rT   )r*   r9   r:   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                         r2   Ú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Ü˜W gÕ.ñ	 9ð	 2ˆ=ùò 6s   ÆF=c                 ó²   — | j                  dd¬«      }|j                  d¬«      }| j                  ddd¬«      }|j                  d¬«      }t        ||«       y )Nr   Fr6  rh   r  rg  rc  )r  r9   r   )r,   r  rl  rn  ro  s        r2   Útest_optimizer_1dzTestLHS.test_optimizer_1d  sR   € à—‘˜q¨5�Ó1ˆØ—]‘] R�]Ó(ˆ
à—;‘; ¨UÀ�;ÓMˆØ—/‘/ B�/Ó'ˆä˜: wÕ/r4   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 strengthrD   r   r'   )rŒ  z%n is not the square of a prime numberr   )r�   rŒ  rf   r"   zn is too small for dé	   )rI   rJ   rK   r   r’   r9   )r,   re  r  s      r2   r  zTestLHS.test_raises  sù   € Ø)ˆÜ�]‰]œ:¨WÖ5Ü×Ñ˜q¨1Õ-÷ 6ð ;ˆÜ�]‰]œ:¨WÖ5Ü×'Ñ'¨!°aÔ8ˆFØ�M‰M˜"Ô÷ 6ð ;ˆÜ�]‰]œ:¨WÖ5Ü×'Ñ'¨!°aÔ8ˆFØ�M‰M˜!Ô÷ 6ð *ˆÜ�]‰]œ:¨WÖ5Ü×'Ñ'¨!°aÔ8ˆFØ�M‰M˜!Ô÷ 6Ð5÷ 6Ð5ú÷ 6Ð5ú÷
 6Ð5ú÷
 6Ð5ús/   žD)Á)D5Â))EÃ7)EÄ)D2Ä5D>ÅE
ÅE)rÝ   rÞ   rß   r   r’   r-  r,  rM  rY  rI  rI   rà   ry  r¡  r£  r  r|   r4   r2   r�  r�  Ö  s‘   „ Ø×Ñ€DØ€Lò7ò7ò2ð ‡[�[×Ñ˜Z¨!¨Q¨Ó0Ø‡[�[×Ñ˜Z¨%°¨Ó7Ø‡[�[×Ñ˜^¨d°KÐ-@ÓAñ#/ó Bó 8ó 1ð#/òJ0ór4   r�  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' pointsrD   r   r8   )rI   r†   r‡   r   ÚSobolr9   ©r,   r  s     r2   Útest_warningzTestSobol.test_warningB  s>   € Ü�\‰\œ+ð .>ö ?ä—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   FrG  rN   rH   r©  rD   )r   rª  Úrandom_base2r   r2  rI   rJ   rK   ©r,   r  r<   s      r2   Útest_random_base2zTestSobol.test_random_base2H  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 dimensionalityrD   r   zMaximum supported 'bits' is 64éA   )Úbits)rI   rJ   rK   r   rª  ÚMAXDIMrô   s    r2   Ú
test_raisezTestSobol.test_raiseV  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  FrG  ræ   r   )r   rª  r   r9   ÚflattenÚtolistr   )r,   r  Úcount1Úcount2s       r2   Ú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Õ2r4   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`rD   )r   rª  r9   r   r2  rI   rJ   rK   )r,   r³  r  Únsr<   s        r2   Ú	test_bitszTestSobol.test_bitsf  sg   € ä—‘˜1 u°4Ô8ˆØ�‰WˆØ—‘˜rÓ"ˆÜ˜4×-Ñ-¨c¨rÐ2°FÔ;ä�]‰]œ:Ð-@ÖAØ�M‰MŒO÷ B×AÑAús   Á#A=Á=Bc                 ó‚   — t        j                  ddd¬«      }|j                  d«      }t        | j                  |«       y )Nr   Frh   r½  rH   )r   rª  r9   r   r2  r¯  s      r2   Útest_64bitszTestSobol.test_64bitsp  s2   € Ü—‘˜1 u°2Ô6ˆØ—‘˜qÓ!ˆÜ˜4×-Ñ-¨vÕ6r4   N)rÝ   rÞ   rß   r   rª  r-  r,  r*   r+   r2  r1  r¬  r°  rµ  r»  rI   rà   ry  r¿  rÁ  r|   r4   r2   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Ó,ñó -ðó7r4   r§  c                   ó   — e Zd Zd„ Zy)ÚTestLow0Bitc                 óJ   — g d¢}|D ]  \  }}t        t        |«      |«       Œ y )N)	©r   r   r@  )r   r   ©r"   r   )rÑ   rN   )l   ÿÿ é!   )l        r   )l   ÿÿ é"   )l   ÿÿÿÿ r²  )r   r   )r,   Útest_vectorÚin_r.   s       r2   Útest_exampleszTestLow0Bit.test_examplesw  s(   € ò
ˆó $‰HˆC�Üœ¨Ó-¨sÕ3ñ $r4   N)rÝ   rÞ   rß   rË  r|   r4   r2   rÃ  rÃ  v  s   „ ó4r4   rÃ  c                   óî  — e Zd Zej                  ZdZd„ Zd„ Zd„ Z	d„ Z
d„ Zej                  j                  ddd	d	gd
d
gfddgddgfg«      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     r2   rE  zTestPoisson.test_bounds�  s   € Ü�‰Ð+Õ,r4   c                 ó.   — t        j                  d«       y )Nz"Not applicable: recursive process.r„  r…  s     r2   rY  zTestPoisson.test_fast_forward�  s   € Ü�‰Ð8Õ9r4   c                 ó.   — t        j                  d«       y rŠ  r„  r…  s     r2   rI  zTestPoisson.test_sample“  r‹  r4   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  r9   rH  Úl2_normr*   rW  )r,   r†  rÓ  r¾  r  Úsample_initÚsample_continuedr<   s           r2   rM  zTestPoisson.test_continuing—  sÏ   € ð ˆØˆØ—‘˜q¨¸%�Ó@ˆà—m‘m b�mÓ)ˆÜ�;Ó 2Ò%Ð%Ð%Ü�{Ó# vÒ-Ð-Ð-à!Ÿ=™=¨2˜=Ó.ÐÜÐ#Ó$¨Ò*Ð*Ð*ÜÐ'Ó(¨FÒ2Ð2Ð2ä—‘ Ð.>Ð ?ÀaÔHˆÜ�6‹{˜b 1™fÒ$Ð$Ð$Ü�v‹ &Ò(Ð(Ñ(r4   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'   rN   ÚvolumeÚsurface)r�   rÓ  Úhyperspherer;   )r*   r9   r:   r   r-  rH  rÔ  )r,   r;   r¾  r  r  ÚradiiÚ
dimensionsÚhypersphere_methodsÚgenr�   rÓ  rÛ  r  r<   s                 r2   Ú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Ó,Ð,Ð,ñ '*r4   zl_bounds, u_boundsrÿ   r  r"   r  gffffff@c                 ór   — d}| j                  d|||¬«      }|j                  «       }t        |«      |k\  sJ ‚y )NrØ  r   ©r�   rÓ  r    r!   )r-  Ú
fill_spacerÔ  )r,   r    r!   rÓ  r  r<   s         r2   Útest_fill_spacezTestPoisson.test_fill_space¿  s?   € ð ˆØ—‘˜Q v¸È8�ÓTˆà×"Ñ"Ó$ˆä�v‹ &Ò(Ð(Ñ(r4   c                 óš  — d}t        j                  ddg«      }d}t         j                  j                  d«      }| j	                  d||z  ||||z   ¬«      }|j                  «       }t         j                  j                  d«      }| j	                  d||¬«      }|j                  «       }t        |«      |k\  sJ ‚t        |||z  |z   «       y )	NrØ  gÍÌÌÌÌÌ Àg333333@gÍÌÌÌÌÌ@l   �>Çu r   )r�   rÓ  r;   r    r!   )r�   rÓ  r;   )r*   Úasarrayr9   r:   r-  rã  rÔ  r   )r,   rÓ  Úshiftr)   r;   r  rž  ro   s           r2   Útest_bounds_shift_scalez#TestPoisson.test_bounds_shift_scaleÉ  sÆ   € ð ˆÜ—
‘
˜D #˜;Ó'ˆØˆä�i‰i×#Ñ# JÓ/ˆØ—‘˜Q v¨e¡|¸Ø$)°E¸E±Mð ó Cˆà×ÑÓ!ˆä�i‰i×#Ñ# JÓ/ˆØ—‘˜Q v°3�Ó7ˆØ×ÑÓ!ˆô �s‹|˜vÒ%Ð%Ð%Ü˜˜S ™Y¨Ñ.Õ/r4   r    ©rx   r   rx   )r   r   r   c                 óš   — d}g d¢}| j                  d|||¬«      }|j                  d«      }|D ]  }t        ||«       t        ||«       Œ y )NrØ  )r'   r'   r   r'   râ  r7   ©r-  r9   r	   )r,   r    rÓ  r!   r  r<   Úpoints          r2   Útest_sample_inside_lower_boundsz+TestPoisson.test_sample_inside_lower_boundsÝ  sV   € àˆÚˆØ—‘Ø˜¨¸Hð ó 
ˆð —‘˜rÓ"ˆãˆEÜ˜e XÔ.Ü˜h¨Õ.ñ r4   r!   c                 óš   — d}g d¢}| j                  d|||¬«      }|j                  d«      }|D ]  }t        ||«       t        ||«       Œ y )NrØ  )éýÿÿÿrï  r   r'   râ  r7   rë  )r,   r!   rÓ  r    r  r<   rì  s          r2   Útest_sample_inside_upper_boundsz+TestPoisson.test_sample_inside_upper_boundsê  sV   € àˆÚˆØ—‘Ø˜¨¸Hð ó 
ˆð —‘˜rÓ"ˆãˆEÜ˜e XÔ.Ü˜h¨Õ.ñ r4   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'rD   r'   râ  ©rI   rJ   rK   r-  )r,   rÓ  r    r!   s       r2   Útest_inconsistent_bound_valuez)TestPoisson.test_inconsistent_bound_value÷  sM   € ØˆÚˆÚˆÜ�]‰]ÜØEöGð �I‰I˜ &°8ÀhˆIÔO÷G÷ Gñ Gús   ¦AÁArx   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 dimensionrD   r'   râ  rò  )r,   r!   r    rÓ  s       r2   Útest_inconsistent_boundsz$TestPoisson.test_inconsistent_bounds   sJ   € ð ˆÜ�]‰]Üð$ö%ð �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 samplingrD   r   rs   )rÛ  )rI   rJ   rK   r   ÚPoissonDiskrd  s     r2   r  zTestPoisson.test_raises  s/   € Ø?ˆÜ�]‰]œ:¨WÖ5Ü�O‰O˜A¨6Õ2÷ 6×5Ñ5ús	   ž?¿AN)rÝ   rÞ   rß   r   r÷  r-  r,  rE  rY  rI  rM  rà  rI   rà   ry  rä  rè  rí  rð  ró  rõ  r  r|   r4   r2   rÍ  rÍ  ‰  s)  „ Ø�?‰?€DØ€Lò-ò:ò2ò)ò&-ð* ‡[�[×ÑÐ1Ø	˜˜R˜ 1 a &Ð)¨c°3¨Z¸#¸s¸Ð,DÐEóGñ)óGð)ò0ð( ‡[�[×Ñ˜Zª,º	Ð)BÓCñ
/ó Dð
/ð ‡[�[×Ñ˜Zª,º	Ð)BÓCñ
/ó Dð
/òPð ‡[�[×Ñ˜Zª,¸¸R¸Ð)AÓBØ‡[�[×Ñ˜Z¨1¨a¨&¨Ó2ñ	ó 3ó Cð	ó3r4   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.rD   r8   )Ú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+   rI   rJ   rK   r   ÚMultinomialQMCrª  r9   r:   )r,   r–  re  s      r2   Útest_validationsz#TestMultinomialQMC.test_validations  s  € ä�H‰HÒ4Ó5ˆÜ�]‰]œ:ð .Aö Bä×Ñ˜q¨2Õ.÷Bô
 �H‰HÒ2Ó3ˆØ5ˆÜ�]‰]œ:¨WÖ5Ü×Ñ˜q¨2Õ.÷ 6ô �H‰HÒ3Ó4ˆà5ˆÜ�]‰]œ:¨WÖ5Ü×Ñ˜q¨2´c·i±iÀ!´nÕE÷ 6ð 8ˆÜ�]‰]œ:¨WÖ5Ü×Ñ˜q¨2´b·i±i×6KÑ6KÓ6MÕN÷ 6Ð5÷#Bñ Bú÷ 6Ð5ú÷ 6Ð5ú÷ 6Ð5ú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   rT   )
r*   r9   r:   r+   Ú
atleast_2dr  r”  r   r  r   )r,   r;   r–  rÿ  r˜  r  s         r2   Útest_MultinomialBasicDrawz,TestMultinomialQMC.test_MultinomialBasicDraw+  sq   € ä�i‰i×#Ñ#Ð$IÓJˆÜ�H‰HÒ3Ó4ˆØˆÜ—=‘= ¨A¡Ó.×5Ñ5´cÓ:ˆä×#Ñ# A°¸sÔCˆÜ˜Ÿ™ aÓ(¨(¸Ö;r4   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   rS   rT   )	r*   r9   r:   r+   r   r  r   r³   r  )r,   r;   r–  r  Údrawss        r2   Útest_MultinomialDistributionz/TestMultinomialQMC.test_MultinomialDistribution5  sj   € Ü�i‰i×#Ñ#Ð$JÓKˆÜ�H‰HÒ3Ó4ˆÜ×#Ñ# A°¸#Ô>ˆØ—‘˜aÓ ˆÜ˜¤§¡ u£Ñ-¬r¯}©}¸QÓ/?ÀdÖKr4   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®ï?rP   ræ   r   r  r   g»aÛ¢ÌÜ?g”Þ7¾öÌÜ?r'   rP   r   )r*   r+   rH  r   r   )r,   Úp_cumulativer"  s      r2   Ú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ÁÕIr4   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;   rT   )r*   r9   r:   r+   r  r  r”  r   rª  r  r   )r,   r;   r–  rÿ  r˜  Úbase_enginer  s          r2   Útest_other_enginez$TestMultinomialQMC.test_other_engineE  sŠ   € ô �i‰i×#Ñ#Ð$KÓLˆÜ�H‰HÒ3Ó4ˆØˆÜ—=‘= ¨A¡Ó.×5Ñ5´cÓ:ˆÜ—i‘i ¨D°cÔ:ˆÜ×#Ñ# A°ÀØ(+ô-ˆä˜Ÿ™ aÓ(¨(¸Ö;r4   N)rÝ   rÞ   rß   r  rI   rà   Úfilterwarningsr  r
  r  r  r|   r4   r2   rù  rù    s\   „ òOð. ‡[�[×ÑÐ 5Ó6ñ<ó 7ð<òLòJð ‡[�[×ÑÐ 5Ó6ñ	<ó 7ñ	<r4   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   )r^  ©r   r   r"   r  ©r"   r   r   r@  rÆ  ©r   ÚMultivariateNormalQMCr*   Úzerosr9   r   r²   ©r,   r  Úsampless      r2   Útest_NormalQMCzTestNormalQMC.test_NormalQMCS  s    € ä×*Ñ*´·±¸³Ô<ˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ä×*Ñ*´·±¸³Ô<ˆØ—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÕ+r4   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)r^  Úinv_transformr  r"   r  r  r   r@  rÆ  r  r  s      r2   Útest_NormalQMCInvTransformz(TestNormalQMC.test_NormalQMCInvTransforma  sª   € ä×*Ñ*Ü—‘˜!“¨Dô2ˆà—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÔ+ä×*Ñ*Ü—‘˜!“¨Dô2ˆà—-‘-“/ˆÜ�W—]‘] FÔ+Ø—-‘- !�-Ó$ˆÜ�W—]‘] FÕ+r4   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)r^  r   r+  r  çƒÛÚÂóÒí¿çLpêÉ»à¿g†U¼‘y¤÷¿gx·²Dgë?rS   rT   r'   ©r^  r   r;   )r#  r$  gÀ”�Zº¢?)g#ÚŽ©»rü¿gÎŒ~4œ2í?gÔ»x?n¿°¿rN   Trï   )r^  r   r  r;   )	r*   r9   r:   r   r  r  r+   r   rª  )r,   r;   r  r  Úsamples_expectedr  s         r2   Útest_NormalQMCSeededz"TestNormalQMC.test_NormalQMCSeededq  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¸Ö=r4   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)r^  r;   r   r  ç«èÍ<9í¿ç\ÌÏMÙî¿gî˜º+»`Ð?g]‰@õ"i?rS   rT   r'   )r)  r*  g»,D‡ÀÖ?)gÁÈËšX`æ?g�ìõî�7@gaTR' ‰ä¿)r*   r9   r:   r   r  r  r+   r   )r,   r;   r  r  r&  s        r2   Ú test_NormalQMCSeededInvTransformz.TestNormalQMC.test_NormalQMCSeededInvTransform‘  så   € ä�i‰i×#Ñ#Ð$KÓLˆÜ×*Ñ*Ü—‘˜!“ #°Tô;ˆà—-‘- !�-Ó$ˆÜŸ8™8 i°Ð%;Ø&.°Ð%9ð%;ó <Ðä˜Ð!1¸Õ=ô �i‰i×#Ñ#Ð$KÓLˆÜ×*Ñ*Ü—‘˜!“ #°Tô;ˆà—-‘- !�-Ó$ˆÜŸ8™8Ò%EÚ%Bð%Dó EÐä˜Ð!1¸Ö=r4   c                 óæ   — dD ]l  }t        j                  |d¬«      }t        j                  t        j                  |«      |d¬«      }|j                  «       }t        |j                  d|f«       Œn y )N©r   r   r   Fr6  T)r^  r  r   r   )r   rª  r  r*   r  r9   r   r²   )r,   r�   r  r  r  s        r2   r  zTestNormalQMC.test_other_engine¤  s\   € ÛˆAÜŸ)™) a°%Ô8ˆKÜ×.Ñ.´B·H±H¸Q³KØ6AØ=AôCˆFð —m‘m“oˆGÜ˜Ÿ™¨¨A¨Õ/ñ r4   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   )r^  r;   é   r  r   r¯   r[  r   rÅ  r  ©r*   r9   r:   r   r  r  rD  rµ   r^  Ústdr   ÚcovÚ	transpose©r,   r;   r  r  r§   rL  Úpvalr2  s           r2   Ú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Ò'Ð'Ñ'r4   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¯   r[  r   rÅ  r  r0  r4  s           r2   Ú!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Ò'Ð'Ñ'r4   N)
rÝ   rÞ   rß   r  r!  r'  r+  r  r6  r8  r|   r4   r2   r  r  R  s&   „ ò,ò,ò >ò@>ò&0ò(ó(r4   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 consistentrD   r   r   r  )r  r&   rN   r  zCovariance matrix not PSD.r   z#Covariance matrix is not symmetric.z/Dimension mismatch between mean and covariance.)	rI   rJ   rK   r   r  rª  r*   r9   r:   rd  s     r2   r  z*TestMultivariateNormalQMC.test_validationsÍ  sŠ  € à=ˆÜ�]‰]œ:¨WÖ5Ü×%Ñ% q c´#·)±)¸a´.ÕA÷ 6ð >ˆÜ�]‰]œ:¨WÖ5Ü×%Ñ%¢i¼¿	¹	ÀA¼ÕG÷ 6ð 8ˆÜ�]‰]œ:¨WÖ5Ü×%Ñ% q¨! f´R·Y±Y×5JÑ5JÓ5LÕM÷ 6ð 0ˆÜ�]‰]œ:¨WÖ5Ü×%Ñ% q¨! f°°1¨v¸¸1°vÐ.>Ô?÷ 6ð 9ˆÜ�]‰]œ:¨WÖ5Ü×%Ñ% q¨! f°°1¨v¸¸1°vÐ.>Ô?÷ 6ð EˆÜ�]‰]œ:¨WÖ5Ü×%Ñ% q c¨Q°¨F°Q¸°FÐ+;Ô<÷ 6Ð5÷) 6Ñ5ú÷ 6Ñ5ú÷ 6Ð5ú÷ 6Ð5ú÷ 6Ð5ú÷ 6Ð5ú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     r2   Útest_MultivariateNormalQMCNonPDz9TestMultivariateNormalQMC.test_MultivariateNormalQMCNonPDç  s2   € ä×*Ñ*Úš	¢9ªiÐ8ó
ˆð ×"Ñ"Ð.Ð.Ñ.r4   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"   )r^  r2  r  r  r  r   r@  rÆ  r-  ©r   r   r   ©r   r   r   ©r   r   r   ©r   r'   ©r"   r'   ©r   r  r9   r   r²   r*   r+   ©r,   r  r  r^  r2  s        r2   Ú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Õ+r4   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)r^  r2  r   r  r  r  r   r@  rÆ  r-  r@  rA  rB  )r   rC  rD  rE  rF  s        r2   Ú&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Õ+r4   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ÅÆ\ @rS   rT   ©r'   r'   r'   r&   )gZhç44æ¿gA-Ó>ô¿gÉZC©½ˆ¶¿)g~TÃ~Oìù?g*Ê¥ño@gc}“EÝ?©
r*   r9   r:   Ústandard_normalr3  Údiagr   r  r+   r   ©r,   r;   r=   ÚAr  r  r&  s          r2   Ú 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¸Ö=r4   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¨ rK  r   r   T)r;   r   r  g�òèFXÔå?gãý¸ýòéÀgRµÝß4¹¿gèO=Ò`å?rS   rT   rL  r'   r&   )go.2žï?gÛikD0Nú¿gÆPN´«ì¿)g4óäšYü¿gÒ«JC�ñ?g„-vû¬2 @rM  rP  s          r2   Ú,test_MultivariateNormalQMCSeededInvTransformzFTestMultivariateNormalQMC.test_MultivariateNormalQMCSeededInvTransform7  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¸Ö=r4   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   ©r^  r2  r;   r/  r  r¯   r[  rÅ  r  rP   rO   r(   r   r   ©r*   r9   r:   r   r  rD  rµ   r^  r1  r   r2  r3  rk   r4  s           r2   Ú!test_MultivariateNormalQMCShapiroz;TestMultivariateNormalQMC.test_MultivariateNormalQMCShapiroP  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Ó&¨Ò-Ð-Ñ-r4   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)r^  r2  r;   r   r/  r  r¯   r[  rÅ  r  rP   rO   r(   r   r   rW  r4  s           r2   Ú-test_MultivariateNormalQMCShapiroInvTransformzGTestMultivariateNormalQMC.test_MultivariateNormalQMCShapiroInvTransformp  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Ó&¨Ò-Ð-Ñ-r4   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æ   )rP   ræ   rP   )ræ   rP   rP   )rP   rP   rO   rV  rC  r  r   r¯   r[  r   r   r-  gš™™™™™é?rÅ  r=  rU  )r*   r9   r:   r   r  rD  rµ   r^  r1  rk   r   r2  r3  r4  s           r2   Ú$test_MultivariateNormalQMCDegeneratez>TestMultivariateNormalQMC.test_MultivariateNormalQMCDegenerate“  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Øñô ð 	ñ r4   N)rÝ   rÞ   rß   r  r>  rG  rI  rR  rT  rX  rZ  r\  r|   r4   r2   r:  r:  Ë  s1   „ ò=ò4/ò,ò0,ò4>ò.>ò2.ò@!.óFr4   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"  rN   )Úmaxiter)r*   r9   ÚRandomStateÚuniformr   rÔ  r£   r   )	r,   r;   r<   Úbase_l1Úbase_l2rL  Úsample_lloydÚcurr_l1Úcurr_l2s	            r2   Ú
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ñ r4   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Ø  rj  N)r*   r+   Úcopyr   r   Úmay_share_memory)r,   Úsample_origÚsample_copyÚ
new_samples       r2   Útest_lloyd_non_mutatingz!TestLloyd.test_lloyd_non_mutatingÃ  st   € ô
 —h‘h  c 
Ø!$ c 
Ø!$ c 
Ø!$ c 
ð ,ó -ˆð "×&Ñ&Ó(ˆÜ;Øô
ˆ
ô 	˜ [Ô1Ü×&Ñ& {°JÔ?Ð?Ð?Ð?r4   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 arrayrD   rF   z`sample` dimension is not >= 2r   r  r   z!`sample` is not in unit hypercubegš™™™™™ñ¿rš   r   )rI   rJ   rK   r   )r,   r<   r  s      r2   Útest_lloyd_errorszTestLloyd.test_lloyd_errorsÓ  s±   € Ü�]‰]œ:Ð-JÖKÚ ˆFÜ2°6Ô:÷ Lð 0ˆÜ�]‰]œ:¨SÖ1Ø�c˜C˜5 1 #Ð&ˆFÜ2°6Ô:÷ 2ð 3ˆÜ�]‰]œ:¨SÖ1Ø˜Q�i # s ¨a°¨VÐ4ˆFÜ2°6Ô:÷ 2Ð1÷ LÐKú÷
 2Ð1ú÷
 2Ð1ús#   œB*ÁB6Â
CÂ*B3Â6B?ÃCN)rÝ   rÞ   rß   ri  rp  rr  r|   r4   r2   r^  r^  «  s   „ ò"ò.@ó ;r4   r^  c                 óH   — t        j                  | «      j                  «       S r{   )r
   Úpdistr  rj  s    r2   rÔ  rÔ  ä  s   € Ü�>‰>˜&Ó!×%Ñ%Ó'Ð'r4   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+  rN   r�   z3got multiple values for argument now known as `rng`rD   )r�   r;   r+  )r*   r9   rb  r   r:   rI   rJ   Ú	TypeError)r  Úseed_numberr;   Úres1Úres2Úres3re  s          r2   Útest_deterministicr{  è  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Ù�˜¨+Õ6÷ 
1×	0Ñ	0ús   Å	EÅE')8r€   Úcollectionsr   Ú	itertoolsr   r   rI   Únumpyr*   Únumpy.testingr   r   r   r	   Úscipy.spatialr
   Úscipy.statsr   Úscipy.stats._sobolr   r   r   Úscipy.stats._qmcr   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à   ry  r  rª  r’   r÷  r{  r|   r4   r2   Ú<module>r„     sF  ðÛ 	Ý ß +ã Û ÷ó õ #Ý ß @Ý ÷÷ ó ÷i%ñ i%÷X#'ñ #'ôL�3—=‘=ô ò&ò.2ò<òD+÷ k/ñ k/ô\)�ô )ôBRˆnô RôjH7�ô H7÷V4ñ 4ô&G3�.ô G3÷T<<ñ <<÷~v(ñ v(÷r]ñ ]÷@5;ñ 5;òr(ð ‡�×Ñ˜ C§J¡J°·	±	Ø$'×$6Ñ$6¸¿¹ð$Ió Jñ7óJñ7r4   