§
    µ³Ùg¹à  ã                   óŒ  — 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j        ¦  «        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/         0                    d'ej1        ej2        ej3        ej4        g¦  «        d(„ ¦   «         Z5dS ))é    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                             d	d
¬¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú	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          ||¦  «         d S )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           úP/granary/edev/quantum/lib/python3.11/site-packages/scipy/stats/tests/test_qmc.pyÚ
test_scalezTestUtils.test_scale   so  € à��q�c˜C˜5Ð!ˆØˆt�a�S˜1˜#ÐˆÝ”y °¸aÐ@Ñ@Ô@ˆå˜ cÑ*Ô*Ð*ð �Q�˜!˜Q˜ # s Ð,ˆÝ”˜B ˜7 Q¨ FÐ+Ñ,Ô,ˆØ�Aˆw˜˜A˜  C Ð)ˆå”y °¸´ÀVÈAÄYÐOÑOÔOˆå˜ cÑ*Ô*Ð*åœI l¸VÀA¼YØ/5°a¬yÀ$ðHñ Hô HÐåÐ)¨5Ñ1Ô1Ð1ð ��˜I˜I˜I   Ð7ˆØ 	 	 	�(ˆØˆyˆy˜)˜)˜) ] ] ]Ð3ˆå”y °ÀHÐMÑMÔMˆå˜ cÑ*Ô*Ð*Ð*Ð*ó    c                 óP  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «         dz  }|                     d¦  «        dz  }t          j        |||d¬¦  «        }t          j        |||d¬¦  «        }t          ||¦  «         d S )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×#Ò#Ð$KÑLÔLˆØ—’˜HÑ%Ô%ˆØ�ZŠZ˜‰^Œ^ˆO˜bÑ ˆØ�JŠJ�r‰NŒN˜RÑˆÝ”˜6 1 a°Ð7Ñ7Ô7ˆÝ”9˜V Q¨°4Ð8Ñ8Ô8ˆÝ˜ &Ñ)Ô)Ð)Ð)Ð)r3   c                 ó8  — t          j        t          d¬¦  «        5  g d¢}t          j        |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   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 ¦  «         n# 1 swxY w Y   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 ¦  «         d S # 1 swxY w Y   d S )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ÑIÔIð 	6ð 	6Ø�K�KˆEÝŒI�e b°1Ð5Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6õ Œ]�:Ð-IÐJÑJÔJð 	Eð 	EØ˜�V˜a ˜V c¨3 ZÐ0ˆEÝ”X  A˜w¨¨A¨Ð/Ñ0Ô0ˆFÝŒI�e f¨Q¤i¸&À¼)ÐDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eõ
 Œ]�:ð .Gð Hñ Hô Hð 	Cð 	Cà˜�V˜a ˜V c¨3 ZÐ0ˆEØ!+  ¨a°¨V�hˆHÝŒI�e h¸ÐBÑBÔBÐBð		Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cõ Œ]�:ð .Gð Hñ Hô Hð 	Eð 	Eà˜�V˜a ˜V c¨3 ZÐ0ˆEÝ”X˜z˜z˜z¨9¨9¨9Ð5Ñ6Ô6ˆFÝŒI�e f¨Q¤i¸&À¼)ÐDÑDÔDÐDð		Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eõ Œ]�:ð .:ð ;ñ ;ô ;ð 	Eð 	Eà˜�V˜a ˜X¨¨S zÐ2ˆEÝ”X  A˜w¨¨A¨Ð/Ñ0Ô0ˆFÝŒI�e f¨Q¤i¸&À¼)ÐDÑDÔDÐDð		Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eõ Œ]�:Ð-GÐHÑHÔHð 	$ð 	$Ø˜�7˜Q ˜F Q¨ HÐ-ˆCÝ”X  A˜w¨¨A¨Ð/Ñ0Ô0ˆFÝŒI�c F¨1¤I¸¸q¼	Ø"ð$ñ $ô $ð $ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$so   œAÁAÁAÁ*A	B?Â?CÃCÃ%+DÄD Ä#D ÅA	FÆFÆFÆ=A	HÈHÈHÈ8A
JÊJÊJc           
      óV  — 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 ]U}t          j        d| z  ¦  «        }t          t          j        t          j        dg|z  g¦  «        d¬¦  «        |¦  «         ŒVd S )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ÔLˆØ˜‘= 3Ñ&¨9Ñ5ˆÝ”(˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀFÐKÑLÔLˆØ˜‘= 3Ñ&¨9Ñ5ˆõ 	�œ¨Ñ0Ô0°&¸tÐDÑDÔDÐDÝ�œ¨Ñ0Ô0°&¸tÐDÑDÔDÐDõ
 ”Ð-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-ð/ñ 0ô 0ˆð ˜‘, Ñ$¨Ñ3ˆå�œ¨°tÐ<Ñ<Ô<¸fØ!ð	#ñ 	#ô 	#ð 	#å�œ¨°tÐ<Ñ<Ô<¸fØ!ð	#ñ 	#ô 	#ð 	#å�œ¨°tÐ<Ñ<Ô<¸fØ!ð	#ñ 	#ô 	#ð 	#ð )ð 	Dð 	DˆCÝ”'˜!˜s˜d™)Ñ$Ô$ˆCÝ�CœO­B¬H°q°c¸#±g°YÑ,?Ô,?Ø3<ð>ñ >ô >Ø?BñDô Dð Dð Dð	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 ¦  «         n# 1 swxY w Y   t          j        t          d	¬¦  «        5  t          j        ddg¦  «         d d d ¦  «         n# 1 swxY w Y   d
d
gddgddgg}t          j        t          d¬¦  «        5  t          j        |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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ÔKˆåŒ]ÝÐ@ð
ñ 
ô 
ð 	$ð 	$õ ŒO˜FÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$õ
 Œ]�:Ð-HÐIÑIÔIð 	$ð 	$ÝŒO˜Q ˜FÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð �a�&˜1˜a˜& 3¨ *Ð-ˆÝŒ]�:Ð-IÐJÑJÔJð 	3ð 	3ÝŒO˜F¨6Ð2Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s6   ÁA#Á#A'Á*A'Â	B,Â,B0Â3B0ÃDÄDÄDc           
      ój  — 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 ]V}t          j        d| z  ¦  «        }t          t          j        t          j        dg|z  g¦  «        dd¬¦  «        |¦  «         ŒW|                     t          dd„ ¦  «         t          j	        t          d¬¦  «        5  t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j	        t          d¬¦  «        5  t          j        |d ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )!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                  ó   — d S ©N© r{   r3   r1   ú<lambda>z5TestUtils.test_discrepancy_parallel.<locals>.<lambda>¯   s   € °T€ 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“   s£  € Ý”Ð-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-Ø-Ð-Ð-ð/ñ 0ô 0ˆð ˜‘, Ñ$¨Ñ3ˆå�œ¨°tÀQÐGÑGÔGØØ!ð	#ñ 	#ô 	#ð 	#õ 	�œ¨°tÀQÐGÑGÔGØØ!ð	#ñ 	#ô 	#ð 	#õ 	�œ¨°tÀQÐGÑGÔGØØ!ð	#ñ 	#ô 	#ð 	#ð )ð 	Pð 	PˆCÝ”'˜!  ™+Ñ&Ô&ˆCÝ�CœO­B¬H°q°c¸C±i°[Ñ,AÔ,AØ3<ÀbðJñ Jô JØKNñPô Pð Pð Pð 	×Ò�B ¨\¨\Ñ:Ô:Ð:ÝŒ]Õ.Ð6LÐMÑMÔMð 	0ð 	0ÝŒO˜F¨BÐ/Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0õ Œ]�:Ð-KÐLÑLÔLð 	0ð 	0ÝŒO˜F¨BÐ/Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s$   Ä;EÅE"Å%E"Æ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 ¦  «         n# 1 swxY w Y   t          j        t          d	¬¦  «        5  t          j        ddg¦  «         d d d ¦  «         n# 1 swxY w Y   d
d
gddgddgg}t          j        t          d¬¦  «        5  t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d
d
gd
d
gd
dgg¦  «        }t          j        t          d¬¦  «        5  t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ddgg¦  «        }t          j        t          d¬¦  «        5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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ÔKˆåŒ]�:Ð-OÐPÑPÔPð 	.ð 	.ÝÔ% fÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ Œ]�:Ð-HÐIÑIÔIð 	.ð 	.ÝÔ% q¨! fÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð �a�&˜1˜a˜& 3¨ *Ð-ˆÝŒ]�:Ð-IÐJÑJÔJð 	=ð 	=ÝÔ% f°VÐ<Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=õ ”˜A˜q˜6 A q 6¨A¨q¨6Ð2Ñ3Ô3ˆÝŒ\�+Ð-PÐQÑQÔQð 	.ð 	.ÝÔ% fÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ ”˜C ˜:˜,Ñ'Ô'ˆÝŒ]�:Ð-VÐWÑWÔWð 	.ð 	.ÝÔ% fÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.sZ   ÁA#Á#A'Á*A'Â	B,Â,B0Â3B0ÃD Ä DÄDÅE$Å$E(Å+E(Æ!GÇGÇ
Gc                 óœ  — 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                             d¦  «        }t          j        d|¬¦  «                             d¦  «        }t          t          j        |¦  «        d¦  «         t          t          j        |d¬¦  «        d¦  «         d S )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°&Ñ9Ô9½2¼7À1¹:¼:ÑFÔFÐFÝ�Ô1°&ÀÐGÑGÔGÍÌÐQRÉÌÑTÔTÐTå”˜A˜q˜6 A q 6¨C°¨8Ð4Ñ5Ô5ˆÝ�Ô1°&Ñ9Ô9¸3Ñ?Ô?Ð?Ý�Ô1°&ÀÐGÑGÔGÈÑNÔNÐNå”˜A˜q˜6 D¨$ <°!°Q°Ð8Ñ9Ô9ˆÝ�Ô1°&Ñ9Ô9½2¼7À1¹:¼:È¹>ÑJÔJÐJÝ�Ô1°&ÀÐGÑGÔGÍÌÐQRÉÌÐVWÉÑXÔXÐXÝ�Ô1°&ÀÐMÑMÔMÈtÑTÔTÐTÝÝÔ% f°UÀ;ÐOÑOÔOÐQTñ	
ô 	
ð 	
õ Œi×#Ò#Ð$KÑLÔLˆÝÔ# a¨SÐ1Ñ1Ô1×8Ò8¸Ñ<Ô<ˆÝ�Ô1°&Ñ9Ô9Ð;NÑOÔOÐ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¦  «         d S )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ã   sL   € õ
 ”˜A˜q˜6 A q 6¨A¨q¨6Ð2Ñ3Ô3ˆÝ�Ô1°&ÀÐGÑGÔGÈÑMÔMÐMÐMÐMr3   c           	      ób  — 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                             d¦  «        }|                     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 ¦  «         n# 1 swxY w Y   t          j	        t          d¬¦  «        5  t	          |d
         |d         |¦  «         d d d ¦  «         n# 1 swxY w Y   ddg}t          j	        t          d¬¦  «        5  t	          ||d d
…         |¦  «         d d d ¦  «         n# 1 swxY w Y   ddgg}t          j	        t          d¬¦  «        5  t	          ||d d
…         |¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t          j	        t          d¬¦  «        5  t	          ||d d
…         |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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ë   s/  € å”(˜Q ˜F Q¨ F¨Q°¨F°Q¸°F¸QÀ¸FÀQÈÀFÐKÑLÔLˆØ˜‘= 3Ñ&¨9Ñ5ˆå”O G¨C¨R¨C¤L¸DÐAÑAÔAˆ	Ý& w¨r¤{°G¸C¸R¸C´LÀ)ÑLÔLˆ	å˜	 6°Ð5Ñ5Ô5Ð5õ Œi×#Ò#Ð$KÑLÔLˆØ—*’*˜WÑ%Ô%ˆå”? 7Ñ+Ô+ˆÝ”O G¨C¨R¨C¤L¸DÐAÑAÔAˆ	Ý& w¨r¤{°G¸C¸R¸C´LÀ)ÑLÔLˆ	å˜	 8°$Ð7Ñ7Ô7Ð7õ Œ]�:ð .:ð ;ñ ;ô ;ð 	Ið 	Iå˜w rœ{¨G°C°R°C¬L¸1Ñ,<¸iÑHÔHÐHð	Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Iõ Œ]�:Ð-HÐIÑIÔIð 	Cð 	CÝ˜w rœ{¨G°A¬J¸	ÑBÔBÐBð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cð �A�ˆÝŒ]�:ð .:ð ;ñ ;ô ;ð 	?ð 	?å˜u g¨c¨r¨c¤l°IÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð �s��ˆÝŒ]�:Ð-GÐHÑHÔHð 	?ð 	?Ý˜u g¨c¨r¨c¤l°IÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð ��ˆÝŒ]�:ð .>ð ?ñ ?ô ?ð 	?ð 	?å˜u g¨c¨r¨c¤l°IÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?sZ   Ä3#E"Å"E&Å)E&ÆF2Æ2F6Æ9F6ÇHÈHÈ	HÈ-IÉIÉIÉ=J$Ê$J(Ê+J(c                 ó  — t           j                             d¦  «        }t          j        d|¬¦  «        }|                     d¦  «        }t          j        |¦  «        }t          d¦  «        D ]—}|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }t          |||||¦  «        }|||f         |||f         c|||f<   |||f<   t          j        |¦  «        }	t          ||	¦  «         Œ˜d S )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×#Ò#Ð$JÑKÔKˆÝÔ$ Q¨CÐ0Ñ0Ô0ˆØ—’ Ñ#Ô#ˆÝŒ˜vÑ&Ô&ˆå�s‘”ð 		2ð 		2ˆAØ—L’L Ñ$Ô$ˆEØ—L’L Ñ$Ô$ˆEØ—,’,˜q‘/”/ˆCå'¨°°u¸cÀ4ÑHÔHˆDà�u˜c�zÔ" F¨5°#¨:Ô$6ð 3ˆF�5˜#�:Ñ  u¨c zÑ 2å œ_¨VÑ4Ô4ˆNÝ˜D .Ñ1Ô1Ð1Ð1ð		2ð 		2r3   c                 ó  — d„ }d„ }d„ }d„ }t           j                             d¦  «        }|                     d¦  «        }t          j        |d¬¦  «        } ||¦  «        }t          ||¦  «         t          j        |d	¬¦  «        } ||¦  «        }t          ||¦  «         t          j        |d
¬¦  «        } ||¦  «        }t          ||¦  «         t          j        |d¬¦  «        } ||¦  «        }t          ||¦  «         dS )z,Alternative definitions from Matt Haberland.c                 óf  — | 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)  so  € Ø”7‰DˆAˆqØˆCÝ”F�2œ7 AØ&)­"¬&°°S±©/¬/Ñ&9ñ%:à&)­"¬&°°S±©/¬/¸1Ñ*<Ñ&<ñ%=àDEðGñ Gô Gñ Hô HˆEð �D˜!˜!˜!˜Q˜Q˜Q�J”-ˆCØ�A�A�A�t˜Q˜Q˜Q�J”-ˆCÝ”F�2œ6¥"¤'¨!Ø,/µ´°s¸S±yÑ0AÔ0AÑ,Añ+Bà,/µ´°s¸S±yÑ0AÔ0AÑ,Añ+Bð -0µ´°s¸S±yÑ0AÔ0AÑ,Añ+Bð IJð#Kñ #Kô #Kð ()ð	*ñ *ô *ñ +ô +ˆEð
 ˜A‘:  !¡ e¡Ñ+¨a°°1±©f°U©lÑ:Ð:r3   c                 óT  — | 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‰DˆAˆqØ�D˜!˜!˜!˜Q˜Q˜Q�J”-ˆCØ�A�A�A�t˜Q˜Q˜Q�J”-ˆCÝ”6�"œ&¥¤¨Ý+-¬6°#¸±)Ñ+<Ô+<ñ*=å+-¬6°#¸±)Ñ+<Ô+<¸aÑ+?ñ*@àFGð"Iñ "Iô "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  s�  € Ø”7‰DˆAˆqØˆCÝ”F�2œ7 CØ&)­"¬&°°S±©/¬/Ñ&9ñ%:à&)­"¬&°°S±©/¬/¸1Ñ*<Ñ&<ñ%=àDEðGñ Gô Gñ Hô HˆEð �D˜!˜!˜!˜Q˜Q˜Q�J”-ˆCØ�A�A�A�t˜Q˜Q˜Q�J”-ˆCÝ”F�2œ6¥"¤'¨$Ø,/µ´°s¸S±yÑ0AÔ0AÑ,Añ+Bà,/µ´°s¸S±yÑ0AÔ0AÑ,Añ+Bð -0µ´°s¸S±yÑ0AÔ0AÑ,Añ+Bð -0µ´°s¸S±yÑ0AÔ0AÀ1Ñ0DÑ,Dñ	+Eð
 01ð#2ñ #2ô #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        ˆˆ fd„t          ‰¦  «        D ¦   «         ¦  «        ‰dz  z  z   ¦  «        S )Nr&   r   r   r®   c                 ó°   •— g | ]R}t          ‰¦  «        D ]@}t          j        d t          j        ‰|dd…f         ‰|dd…f         ¦  «        z
  ¦  «        ‘ŒAŒSS )r   N)r¢   r)   r³   Úmaximum)Ú.0ÚkÚjr·   r¶   s      €€r1   ú
<listcomp>z_TestUtils.test_discrepancy_alternative_implementation.<locals>.disc_star_l2.<locals>.<listcomp>W  sv   ø€ ð ð ð à­u°Q©x¬xðð à*+õ ”G˜A¥¤
¨1¨Q°°°¨T¬7°A°a¸¸¸°d´GÑ <Ô <Ñ<Ñ=Ô=ðð ð ð r3   )r±   r)   rj   r²   r³   r¢   )r¶   r¸   r·   s   ` @r1   Údisc_star_l2zKTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_star_l2R  s¼   øø€ Ø”7‰DˆAˆqÝ”7Ø�q�b‘	˜A ! a¡%™L¨1Ñ,Ý”&�œ  Q¨!¡V¡°!Ð4Ñ4Ô4Ñ5Ô5ñ6ñ 6å”&ð ð ð ð ð å" 1™XœXðñ ô ñ ô ð ˜!‘Vñññô ð r3   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&  s3  € ð	;ð 	;ð 	;ð	-ð 	-ð 	-ð	;ð 	;ð 	;ð 		ð 		ð 		õ Œi×#Ò#Ð$KÑLÔLˆØ—’˜HÑ%Ô%ˆå”O F°4Ð8Ñ8Ô8ˆ	Ø�7˜6‘?”?ˆÝ˜	 8Ñ,Ô,Ð,å”O F°4Ð8Ñ8Ô8ˆ	Ø�7˜6‘?”?ˆÝ˜	 8Ñ,Ô,Ð,å”O F°4Ð8Ñ8Ô8ˆ	Ø�7˜6‘?”?ˆÝ˜	 8Ñ,Ô,Ð,å”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 ‚d S )Nr7   rw   é   é¨   iå  i^  i5	  )r   )r+   Úprimess     r1   Útest_n_primeszTestUtils.test_n_primesp  sh   € Ý˜"‘”ˆØ�bŒz˜RÒÐÐÐå˜#‘”ˆØ�bŒz˜SÒ Ð Ð Ð å˜#‘”ˆØ�bŒz˜TÒ!Ð!Ð!Ð!Ð!Ð!r3   c                 óL   — t          d¦  «        }g d¢}t          ||¦  «         d S )Nr�   )r   r&   r!   é   é   é   é   é   é   rÎ   é   é%   é)   é+   é/   )r   r   )r+   rÐ   r-   s      r1   Útest_primeszTestUtils.test_primesz  s0   € Ý! "Ñ%Ô%ˆØFÐFÐ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      s   € € € € € ð+ð +ð +ð<*ð *ð *ð $ð  $ð  $ðD#Dð #Dð #DðJ3ð 3ð 3ð!0ð !0ð !0ðF.ð .ð .ð*
ð 
ð 
ð0 „[×ÒØJØð ñ ô ðNð Nñ	ô ðNð(?ð (?ð (?ðT2ð 2ð 2ð"H-ð H-ð H-ðT"ð "ð "ð%ð %ð %ð %ð %r3   r   c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )ÚTestVDCc                 ó"  — t          d¦  «        }g d¢}t          ||¦  «         t          dd¬¦  «        }t          ||¦  «         t          dd¬¦  «        }t          ||¦  «         t          dd¬¦  «        }t          ||dd …         ¦  «         d S )	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�  s¤   € Ý Ñ#Ô#ˆð-ð -ð -ˆå˜ Ñ$Ô$Ð$å ¨AÐ.Ñ.Ô.ˆÝ˜ Ñ$Ô$Ð$å ¨AÐ.Ñ.Ô.ˆÝ˜ Ñ$Ô$Ð$å ¨qÐ1Ñ1Ô1ˆÝ˜  A B B¤Ñ(Ô(Ð(Ð(Ð(r3   c                 ó4  — 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 …         ¦  «         d S )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Ñ8Ô8ˆå ¨q¸4ÀSÐIÑIÔIˆÝ˜  A B B¤Ñ(Ô(Ð(åØ˜1 t°¸að
ñ 
ô 
ˆõ 	˜  A B B¤Ñ(Ô(Ð(åØ˜1 t°¸að
ñ 
ô 
ˆõ 	˜  A B B¤Ñ(Ô(Ð(Ð(Ð(r3   c                 ó�   — t          j        t          d¬¦  «        5  t          dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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¡  s�   € ÝŒ]�:Ð-IÐJÑJÔJð 	'ð 	'Ý˜2 AÐ&Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   œ;»?Á?N)rß   rà   rá   rî   rò   rö   r{   r3   r1   rå   rå   €  sA   € € € € € ð)ð )ð )ð)ð )ð )ð"'ð 'ð 'ð 'ð 'r3   rå   c                   ó.   ‡ — e Zd Zdˆ fd„	Zdddœd„Zˆ xZS )ÚRandomEngineNc                 óP   •— t          ¦   «                              |||¬¦  «         d S )N)r�   Úoptimizationr:   )ÚsuperÚ__init__)r+   r�   rú   r:   Ú	__class__s       €r1   rü   zRandomEngine.__init__§  s(   ø€ Ý‰Œ×Ò˜1¨<¸SÐÑAÔAÐAÐAÐAr3   r   r}   c                óH   — | j                              || j        f¦  «        }|S rz   )r:   r8   r�   )r+   r·   rv   r;   s       r1   Ú_randomzRandomEngine._randomª  s    € Ø”—’ ! T¤V Ñ-Ô-ˆØˆr3   )NN)r   )rß   rà   rá   rü   rÿ   Ú__classcell__)rý   s   @r1   rø   rø   ¦  sc   ø€ € € € € ðBð Bð Bð Bð Bð Bð að ð ð ð ð ð ð ð ð r3   rø   c                  óâ  — t          dd¬¦  «        } |                      d¬¦  «        }|                      d¬¦  «        }| j        dk    sJ ‚|                      ¦   «          | j        dk    sJ ‚|                      d¬¦  «        }t	          ||¦  «         |                      ¦   «          |                      d¬¦  «         |                      d¬¦  «        }t	          ||¦  «         | j        dk    sJ ‚d S )	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ÑIÔI€Fà�}Š}˜qˆ}Ñ!Ô!€HØ�}Š}˜qˆ}Ñ!Ô!€HØÔ 2Ò%Ð%Ð%Ð%ð ‡L‚L�N„N€NØÔ 1Ò$Ð$Ð$Ð$à—M’M A�MÑ&Ô&€MÝ�˜=Ñ)Ô)Ð)ð ‡L‚L�N„N€NØ
×Ò˜!ÐÑÔÐØ—M’M A�MÑ&Ô&€Må�˜=Ñ)Ô)Ð)ØÔ 2Ò%Ð%Ð%Ð%Ð%Ð%r3   c                  óÆ  — t          j        t          d¬¦  «        5  t          d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          d¦  «         d d d ¦  «         n# 1 swxY w Y   d} t          j        t          | ¬¦  «        5  t          d¦  «        }|                     dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	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Ñ	MÔ	Mð ð Ý�TÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
Œ•zÐ)LÐ	MÑ	MÔ	Mð ð Ý�RÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 8€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð 2ð 2Ý˜a‘”ˆØ�Š ¨SˆÑ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s0   œ8¸<¿<ÁA:Á:A>ÂA>Â"'CÃCÃCc                  óè  — t          dd¬¦  «        } |                      dd¬¦  «        }t          t          j        |¦  «        dg¦  «         |j        t          j        d¦  «        k    sJ ‚|                      ddd¬	¦  «        }t          t          j        |¦  «        ddg¦  «         d
}d}|                      ¦   «          |                      d¦  «        }|||z
  z  |z   }t          j        |¦  «         	                    t          j
        ¦  «        }|                      ¦   «          |                      ||dd¬¦  «        }t          ||¦  «         |                      ||dd¬¦  «        }t          |                     ¦   «         |                     ¦   «         f||dz
  f¦  «         |                      ||dd¬¦  «        }t          |                     ¦   «         |                     ¦   «         f||f¦  «         d S )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  Ô  s¼  € Ý˜!Ð!HÐIÑIÔI€Fð �_Š_˜Q "ˆ_Ñ%Ô%€FÝ•”˜6Ñ"Ô" Q CÑ(Ô(Ð(àŒ<�2œ8 GÑ,Ô,Ò,Ð,Ð,Ð,à�_Š_˜Q "¨tˆ_Ñ4Ô4€FÝ•”˜6Ñ"Ô" Q¨ FÑ+Ô+Ð+à
€CØ€Dð ‡L‚L�N„N€NØ—’˜rÑ"Ô"€JØ˜t c™zÑ*¨SÑ0€JÝ”˜*Ñ%Ô%×,Ò,­R¬XÑ6Ô6€Jà
‡L‚L�N„N€NØ�_Š_˜S¨4°2Àˆ_ÑFÔF€Få�˜Ñ$Ô$Ð$ð �_Š_˜S¨4°3Àˆ_ÑGÔG€FÝ�&—*’*‘,”, §
¢
¡¤Ð-°°T¸!±V¨}Ñ=Ô=Ð=à�_Š_˜S¨4°3Àˆ_ÑFÔF€FÝ�&—*’*‘,”, §
¢
¡¤Ð-°°T¨{Ñ;Ô;Ð;Ð;Ð;r3   c                  óV  — d} t           j                             d¦  «        }|                     dd| ¬¦  «        }|                     dd| d¬	¦  «        }t	          | |¬
¦  «        }|                     ||dd¬¦  «        }t          |                     d¬¦  «        |¦  «         t          |                     d¬¦  «        |dz
  ¦  «         |                     ||dd¬¦  «        }t          |                     d¬¦  «        |¦  «         t          |                     d¬¦  «        |¦  «         d S )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Ô
F€CØ
�,Š,˜2 B¨Qˆ,Ñ
/Ô
/€CØ�<Š<˜A A¨A¸ˆ<Ñ=Ô=€DÝ˜! Ð%Ñ%Ô%€Fà�_Š_˜S¨4°3Àˆ_ÑGÔG€FÝ�—’ �Ñ#Ô# SÑ)Ô)Ð)Ý�—’ �Ñ#Ô# T¨!¡VÑ,Ô,Ð,à�_Š_˜S¨4°3Àˆ_ÑFÔ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                             de	e
¬¦  «        d„ ¦   «         Zej                             de	e
¬¦  «        d„ ¦   «         Zej                             de	e
¬¦  «        d„ ¦   «         Zej                             de	e
¬¦  «        d„ ¦   «         Zej                             de	e
¬¦  «        d„ ¦   «         Zej                             de	e
¬¦  «        d„ ¦   «         Zej                             de	e
¬¦  «        ej                             ddej                             d¦  «        df¦  «        d„ ¦   «         ¦   «         Zej                             de	e
¬¦  «        d„ ¦   «         Zej                             ddg¦  «        d„ ¦   «         Zd„ Zej                             dde j!        fdd„ fg¦  «        d„ ¦   «         Z"d„ Z#dS )Ú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        ¦   «          d S  | j        dd|i|¤ŽS )N)rñ   Úseedr*  r{   )Úcan_scrambleÚqmcerH   Úskip)r+   rñ   r:   Úkwargss       r1   r  zQMCEngineTests.engine  sb   € ð Ôð 	5Ø�4”9ÐC h°SÐCÐC¸FÐCÐCÐCàð 5Ý”‘”���à �t”yÐ4Ð4 cÐ4¨VÐ4Ð4Ð4r3   c                 ó"   — |r| j         n| j        S rz   )Úscramble_ndÚunscramble_nd)r+   rñ   s     r1   Ú	referencezQMCEngineTests.reference   s   € Ø#+ÐCˆtÔÐ°Ô1CÐCr3   )Úidsc                 ó¢   — |                       d|¬¦  «        }|                     d¦  «        }t          t          j        d¦  «        |¦  «         d S )Nr   ©r�   rñ   rM   )rM   r   ©r  r8   r   r)   Úempty©r+   rñ   r  r;   s       r1   Ú	test_0dimzQMCEngineTests.test_0dim#  óH   € à—’˜q¨8�Ñ4Ô4ˆØ—’˜qÑ!Ô!ˆÝ�2œ8 FÑ+Ô+¨VÑ4Ô4Ð4Ð4Ð4r3   c                 ó¢   — |                       d|¬¦  «        }|                     d¦  «        }t          t          j        d¦  «        |¦  «         d S )Nr   r5  r   ©r   r   r6  r8  s       r1   Útest_0samplezQMCEngineTests.test_0sample)  r:  r3   c                 óx   — |                       d|¬¦  «        }|                     d¦  «        }d|j        k    sJ ‚d S )Nr   r5  r   ©r   r   )r  r8   r±   r8  s       r1   Útest_1samplezQMCEngineTests.test_1sample/  sA   € à—’˜q¨8�Ñ4Ô4ˆØ—’˜qÑ!Ô!ˆØ˜œÒ%Ð%Ð%Ð%Ð%Ð%r3   c                 óÆ   — |                       d|¬¦  «        }|                     d¦  «        }t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚d S )Nr¡   r5  é   r   r   )r  r8   r)   Úallr8  s       r1   Útest_boundszQMCEngineTests.test_bounds5  sb   € à—’˜s¨X�Ñ6Ô6ˆØ—’˜sÑ#Ô#ˆÝŒv�f ’kÑ"Ô"Ð"Ð"Ð"ÝŒv�f ’kÑ"Ô"Ð"Ð"Ð"Ð"Ð"r3   c                 óþ   — |                       |¬¦  «        }|                      d|¬¦  «        }|                     t          |¦  «        ¬¦  «        }t	          ||d¬¦  «         |j        t          |¦  «        k    sJ ‚d S )N©rñ   r   r5  r  r™   rS   )r2  r  r8   Úlenr   r  )r+   rñ   r  r  r;   s        r1   Útest_samplezQMCEngineTests.test_sample<  sx   € à—^’^¨X�^Ñ6Ô6ˆ
Ø—’˜q¨8�Ñ4Ô4ˆØ—’¥ Z¡¤�Ñ1Ô1ˆå˜ 
°Ð6Ñ6Ô6Ð6ØÔ#¥s¨:¡¤Ò6Ð6Ð6Ð6Ð6Ð6r3   c                 ó>  — |                       d|¬¦  «        }|                     d¬¦  «        }|                       d|¬¦  «        }t          |¦  «        dz  }|                     |¬¦  «        }|                     |¬¦  «        }t          |||d …         d¬¦  «         d S )Nr   r5  rG   r  r™   rS   )r  r8   rG  r   )r+   rñ   r  r  Ún_halfÚ_r;   s          r1   Útest_continuingzQMCEngineTests.test_continuingE  s™   € à—’˜q¨8�Ñ4Ô4ˆØ—]’] Q�]Ñ'Ô'ˆ
à—’˜q¨8�Ñ4Ô4ˆå�Z‘” AÑ%ˆà�MŠM˜FˆMÑ#Ô#ˆØ—’ �Ñ(Ô(ˆÝ˜ 
¨6¨7¨7Ô 3¸$Ð?Ñ?Ô?Ð?Ð?Ð?r3   r:   Nc                 óð   — |                       d||¬¦  «        }|                     d¬¦  «        }|                     ¦   «          |j        dk    sJ ‚|                     d¬¦  «        }t	          ||¦  «         d S )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  sx   € ð —’˜q¨8¸�Ñ=Ô=ˆØ—]’] Q�]Ñ'Ô'ˆ
à�Š‰ŒˆØÔ# qÒ(Ð(Ð(Ð(à—’ �Ñ#Ô#ˆÝ˜ 
Ñ+Ô+Ð+Ð+Ð+r3   c                 óv  — |                       d|¬¦  «        }|                     d¬¦  «        }|                       d|¬¦  «        }|                     d¦  «         |                     d¬¦  «        }t          ||dd …         d¬¦  «         |                     ¦   «          g }t          d¦  «        D ]H}|dz  dk    r(|                     |                     ¦   «         ¦  «         Œ3|                     d	¦  «         ŒIt          |d
„ t          d¦  «        D ¦   «                  t          j        |¦  «        d¬¦  «         d S )Nr   r5  rG   r  rM   r™   rS   r   r   c                 ó$   — g | ]}|d z  dk    ¯|‘ŒS )r   r   r{   )rÅ   r¦   s     r1   rÈ   z4QMCEngineTests.test_fast_forward.<locals>.<listcomp>z  s!   € Ð:Ð:Ð:˜a¨q°1©u¸ªz¨z˜¨z¨z¨zr3   çñ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Ô4ˆØ—]’] Q�]Ñ'Ô'ˆ
à—’˜q¨8�Ñ4Ô4ˆà×Ò˜AÑÔÐØ—’ �Ñ#Ô#ˆå˜ 
¨1¨2¨2¤°TÐ:Ñ:Ô:Ð:ð 	�Š‰ŒˆØˆ
Ý�q‘”ð 	'ð 	'ˆAØ�1‰u˜ŠzˆzØ×!Ò! &§-¢-¡/¤/Ñ2Ô2Ð2Ð2à×#Ò# AÑ&Ô&Ð&Ð&ÝØÐ:Ð:¥5¨¡8¤8Ð:Ñ:Ô:Ô;ÝŒN˜:Ñ&Ô&Øð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r3   c                 ó¼  — d}|                       ||¬¦  «        }|                     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¬¦  «         d S )Nr�   r5  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Ô4ˆØ—’˜tÑ$Ô$ˆÝÝŒG�F Ð#Ñ#Ô#¥R¤Y¨s°AÑ%6Ô%6¸Tð	
ñ 	
ô 	
ð 	
õ 	ÝŒM˜& "¨1Ð-Ñ-Ô-­r¬y¸¸qÑ/AÔ/AÈð	
ñ 	
ô 	
ð 	
õ 	ÝŒM˜& "¨1Ð-Ñ-Ô-­r¬y¸¸qÑ/AÔ/AÈð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r3   c                 ó¢   — d}t          j        t          |¬¦  «        5  |                      ddd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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Ñ5Ô5ð 	Bð 	BØ�KŠK˜! e¸&ˆKÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bs   žAÁAÁAzoptimization,metricú	random-CDÚlloydc                 ó"   — t          | ¦  «         S rz   )r   ©r;   s    r1   r|   zQMCEngineTests.<lambda>—  s   € ¥h¨vÑ&6Ô&6Ð%6€ r3   c                 óø   — |                       dd¬¦  «        }|                     d¬¦  «        } ||¦  «        }|                       dd|¬¦  «        }|                     d¬¦  «        } ||¦  «        }||k     sJ ‚d S )Nr   Fr5  rg   r  r`  )r  r8   )	r+   rú   r�   r  Ú
sample_refÚ
metric_refÚoptimal_Úsample_Úmetric_s	            r1   Útest_optimizerszQMCEngineTests.test_optimizers“  s‰   € ð —’˜q¨5�Ñ1Ô1ˆØ—]’] R�]Ñ(Ô(ˆ
Ø�V˜JÑ'Ô'ˆ
à—;’; ¨UÀ�;ÑNÔNˆØ—/’/ B�/Ñ'Ô'ˆØ�&˜‘/”/ˆà˜Ò#Ð#Ð#Ð#Ð#Ð#r3   c                 ó*  — t           j                             d¦  «        }g }t          d¦  «        D ]B}|                      dd|¬¦  «        }|                     |                     d¦  «        ¦  «         ŒCt          j        t          d¬¦  «        5  t          |d	         |d
         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          |d	         |d         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nl	    B©û"V6ÿD¾GlUN¢ r&   r   TrN  rM   zArrays are not equalrC   r   r   )
r)   r8   r9   r¢   r  rS  rH   rI   ÚAssertionErrorr   )r+   r:   r;   r¦   r  s        r1   Útest_consume_prng_statez&QMCEngineTests.test_consume_prng_state¤  s  € ÝŒi×#Ò#Ð$FÑGÔGˆØˆÝ�q‘”ð 	,ð 	,ˆAØ—[’[ 1¨t¸�[Ñ=Ô=ˆFØ�MŠM˜&Ÿ-š-¨Ñ*Ô*Ñ+Ô+Ð+Ð+åŒ]�>Ð1GÐHÑHÔHð 	/ð 	/Ý˜ œ F¨1¤IÑ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/åŒ]�>Ð1GÐHÑHÔHð 	/ð 	/Ý˜ œ F¨1¤IÑ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s$   ÂB8Â8B<Â?B<ÃDÄDÄD)r'  )$rß   rà   rá   Ú__doc__ÚNotImplementedr,  r+  r1  r0  rñ   r3  Úboolr   r  r)   Úndarrayr2  rH   râ   Úparametrizer9  r=  r@  rD  rH  rL  r8   r9   rO  rV  r^  rc  r   ri   rn  rq  r{   r3   r1   r$  r$    s  € € € € € Ø(Ð(Ø€DØ!€LØ"€MØ €Kà�eˆ}€HØ˜Ð
&€Cð 4ð5ð 5Øð5ð 
ð	5ð 5ð 5ð 5ð D $ð D¨2¬:ð Dð Dð Dð Dð „[×Ò˜Z¨°sÐÑ;Ô;ð5ð 5ñ <Ô;ð5ð
 „[×Ò˜Z¨°sÐÑ;Ô;ð5ð 5ñ <Ô;ð5ð
 „[×Ò˜Z¨°sÐÑ;Ô;ð&ð &ñ <Ô;ð&ð
 „[×Ò˜Z¨°sÐÑ;Ô;ð#ð #ñ <Ô;ð#ð „[×Ò˜Z¨°sÐÑ;Ô;ð7ð 7ñ <Ô;ð7ð „[×Ò˜Z¨°sÐÑ;Ô;ð
@ð 
@ñ <Ô;ð
@ð „[×Ò˜Z¨°sÐÑ;Ô;Ø„[×ÒØà3ØŒI×!Ò!Ð"IÑJÔJØð	
ñô ð,ð ,ñô ñ <Ô;ð,ð „[×Ò˜Z¨°sÐÑ;Ô;ð
ð 
ñ <Ô;ð
ð2 „[×Ò˜Z¨$¨Ñ0Ô0ð
ð 
ñ 1Ô0ð
ðBð Bð Bð
 „[×ÒØà˜#œ/Ð*ØÐ6Ð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d"S )#Ú
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                 ó”  — |                       d¬¦  «        }|                      dd¬¦  «        }|                     t          |¦  «        d¬¦  «        }t	          ||d¬¦  «         |                     ¦   «          |                     d	¦  «        }|                     ¦   «          |                     d	d¬
¦  «        }t          ||¦  «         d S )NTrF  r   r5  rG   )r·   rv   gü©ñÒMbP?rS   r7   r}   )r2  r  r8   rG  r   r  r£   r   )r+   r  r  r;   s       r1   Útest_workerszTestHalton.test_workersÃ  s²   € Ø—^’^¨T�^Ñ2Ô2ˆ
Ø—’˜q¨4�Ñ0Ô0ˆØ—’¥ Z¡¤¸!�Ñ<Ô<ˆå˜ 
°Ð6Ñ6Ô6Ð6ð 	�Š‰ŒˆØ—_’_ RÑ(Ô(ˆ
Ø�Š‰ŒˆØ—’ ¨Q�Ñ/Ô/ˆÝ�V˜ZÑ(Ô(Ð(Ð(Ð(r3   N)rß   rà   rá   r   ÚHaltonr,  r+  r)   r*   r1  r0  rz  r{   r3   r1   rx  rx  ±  sÓ   € € € € € ØŒ:€DØ€Là�B”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ô 7€Kð)ð )ð )ð )ð )r3   rx  c                   ó  — e Zd Zej        ZdZd„ Zd„ Zd„ Z	e
j                             dddg¦  «        e
j                             dd	dg¦  «        e
j                             d
ddg¦  «        d„ ¦   «         ¦   «         ¦   «         Zd„ Zd„ ZdS )ÚTestLHSTc                 ó.   — t          j        d¦  «         d S ©NzNot applicable: not a sequence.©rH   r-  ©r+   Úargss     r1   rL  zTestLHS.test_continuingÖ  ó   € ÝŒÐ5Ñ6Ô6Ð6Ð6Ð6r3   c                 ó.   — t          j        d¦  «         d S r  r€  r�  s     r1   rV  zTestLHS.test_fast_forwardÙ  rƒ  r3   c                 ó.   — t          j        d¦  «         d S ©NzJNot applicable: the value of reference sample is implementation dependent.r€  r�  s     r1   rH  zTestLHS.test_sampleÜ  ó%   € ÝŒð 1ñ 	2ô 	2ð 	2ð 	2ð 	2r3   Ústrengthr   r   rñ   Frú   Nrd  c                 ó€  — t           j                             d¦  «        }d}|dz  }d}t          j        |||||¬¦  «        }|                     |¬¦  «        }	|	j        ||fk    sJ ‚|j        |k    sJ ‚t          j        |¦  «        dz   |z  }
t          j        |
||f¦  «        j	        }t          j
        |	|k    ¦  «        sJ ‚t          j        |	d¬	¦  «        }|rd|z  nd}t          |||¬
¦  «         t          j
        |	|z
  |k    ¦  «        sJ ‚|dk    r¢|€¢t          j        |¦  «        }t          t          ||¦  «        ¦  «        }t          t!          |j        ¦  «        d¦  «        D ]P\  }}|	d d …||gf         }||z                       t&          ¦  «        }d„ |D ¦   «         }t)          ||¦  «         ŒMd S d S d S )Nl	   pIrtS"×M¿d@B r!   r   r   )r�   rñ   rˆ  rú   r:   r  r   r   r®   rS   c                 ó,   — h | ]}t          |¦  «        ’ŒS r{   )Útuple)rÅ   Úrows     r1   ú	<setcomp>z1TestLHS.test_sample_stratified.<locals>.<setcomp>  s   € Ð5Ð5Ð5¨#�5 ™:œ:Ð5Ð5Ð5r3   )r)   r8   r9   r   r‘   r±   r  ÚarangeÚbroadcast_toÚTÚanyÚsortr   Úsetr   r   r¢   r�   r  Úintr   )r+   rú   rñ   rˆ  r:   Úpr·   r�   r  r;   Ú
expected1dÚexpectedÚsorted_sampleÚtolÚunique_elementsÚdesiredr¦   rÇ   Ú
samples_2dÚresÚres_sets                        r1   Útest_sample_stratifiedzTestLHS.test_sample_stratifiedà  sù  € õ Œi×#Ò#Ð$JÑKÔKˆØˆØˆq‰DˆØˆåÔ# a°(Ø-5Ø1=Ø(+ð-ñ -ô -ˆð —’ �Ñ#Ô#ˆØŒ|  1˜vÒ%Ð%Ð%Ð%ØÔ# qÒ(Ð(Ð(Ð(õ
 ”i ‘l”l SÑ(¨AÑ-ˆ
Ý”? :°°1¨vÑ6Ô6Ô8ˆÝŒv�f Ò(Ñ)Ô)Ð)Ð)Ð)åœ ¨QÐ/Ñ/Ô/ˆØ!Ð(ˆc�A‰gˆg qˆå˜ x°cÐ:Ñ:Ô:Ð:ÝŒv�f˜xÑ'¨#Ò-Ñ.Ô.Ð.Ð.Ð.à�qŠ=ˆ=˜\Ð1Ý œi¨™lœlˆOÝ�' /°?ÑCÔCÑDÔDˆGå$¥U¨6¬8¡_¤_°aÑ8Ô8ð /ð /‘��1Ø# A A A¨¨1 v IÔ.�
Ø! A‘~×-Ò-­cÑ2Ô2�Ø5Ð5°Ð5Ñ5Ô5�Ý˜W gÑ.Ô.Ð.Ð.ð ˆ=Ð1Ð1ð/ð /r3   c                 óÜ   — |                       dd¬¦  «        }|                     d¬¦  «        }|                       ddd¬¦  «        }|                     d¬¦  «        }t          ||¦  «         d S )Nr   Fr5  rg   r  rd  r`  )r  r8   r   )r+   r  ri  rk  rl  s        r1   Útest_optimizer_1dzTestLHS.test_optimizer_1d  sj   € à—’˜q¨5�Ñ1Ô1ˆØ—]’] R�]Ñ(Ô(ˆ
à—;’; ¨UÀ�;ÑMÔMˆØ—/’/ B�/Ñ'Ô'ˆå˜: wÑ/Ô/Ð/Ð/Ð/r3   c                 óÞ  — d}t          j        t          |¬¦  «        5  t          j        dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j        dd¬¦  «        }|                     d	¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j        dd¬¦  «        }|                     d
¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j        d
d¬¦  «        }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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+   rb  r  s      r1   r  zTestLHS.test_raises  s^  € Ø)ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	.ð 	.ÝÔ˜q¨1Ð-Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð ;ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	ð 	ÝÔ'¨!°aÐ8Ñ8Ô8ˆFØ�MŠM˜"ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ;ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	ð 	ÝÔ'¨!°aÐ8Ñ8Ô8ˆFØ�MŠM˜!ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð *ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	ð 	ÝÔ'¨!°aÐ8Ñ8Ô8ˆFØ�MŠM˜!ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	sG   žAÁAÁAÁ),B!Â!B%Â(B%Ã	,DÄDÄDÄ),E"Å"E&Å)E&)rß   rà   rá   r   r‘   r,  r+  rL  rV  rH  rH   râ   rv  rŸ  r¡  r  r{   r3   r1   r}  r}  Ò  sã   € € € € € ØÔ€DØ€Lð7ð 7ð 7ð7ð 7ð 7ð2ð 2ð 2ð „[×Ò˜Z¨!¨Q¨Ñ0Ô0Ø„[×Ò˜Z¨%°¨Ñ7Ô7Ø„[×Ò˜^¨d°KÐ-@ÑAÔAð#/ð #/ñ BÔAñ 8Ô7ñ 1Ô0ð#/ðJ0ð 0ð 0ðð ð ð ð 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d„ Zd„ Zd„ Zej                             ddd g¦  «        d!„ ¦   «         Zd"„ Zd#S )$Ú	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¦  «        }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nú'The balance properties of Sobol' pointsrC   r   r7   )rH   r…   r†   r   ÚSobolr8   ©r+   r  s     r1   Útest_warningzTestSobol.test_warning>  s£   € ÝŒ\�+ð .>ð ?ñ ?ô ?ð 	ð 	å”Y˜q‘\”\ˆFØ�MŠM˜"ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   œ*AÁAÁAc                 óŒ  — t          j        dd¬¦  «        }|                     d¦  «        }t          | j        d d…         |¦  «         |                     d¦  «        }t          | j        dd…         |¦  «         t          j        t          d¬¦  «        5  |                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   FrF  rM   rG   r§  rC   )r   r¨  Úrandom_base2r   r1  rH   rI   rJ   ©r+   r  r;   s      r1   Útest_random_base2zTestSobol.test_random_base2D  s  € Ý”˜1 uÐ-Ñ-Ô-ˆØ×$Ò$ QÑ'Ô'ˆÝ˜4Ô-¨b¨q¨bÔ1°6Ñ:Ô:Ð:ð ×$Ò$ QÑ'Ô'ˆÝ˜4Ô-¨a°¨cÔ2°FÑ;Ô;Ð;õ Œ]�:ð .>ð ?ñ ?ô ?ð 	#ð 	#à×Ò Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   ÂB9Â9B=Ã B=c                 óL  — t          j        t          d¬¦  «        5  t          j        t          j        j        dz   ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          j        dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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•c”iÔ&¨Ñ*Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,õ Œ]�:ð .=ð >ñ >ô >ð 	"ð 	"åŒI�a˜bÐ!Ñ!Ô!Ð!ð	"ð 	"ð 	"ñ 	"ô 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"ð 	"øøøð 	"ð 	"ð 	"ð 	"ð 	"ð 	"s#   œ'AÁAÁAÁ5BÂBÂ Bc                 óÂ  — t          j        dd¬¦  «        }t          |                     ¦   «                              ¦   «                              ¦   «         ¦  «        }t          |                     ¦   «                              ¦   «                              ¦   «         ¦  «        }t          |t          ddi¦  «        ¦  «         t          |t          ddi¦  «        ¦  «         d S )NiW  FrF  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ˆÝ˜Ÿš™œ×0Ò0Ñ2Ô2×9Ò9Ñ;Ô;Ñ<Ô<ˆÝ˜Ÿš™œ×0Ò0Ñ2Ô2×9Ò9Ñ;Ô;Ñ<Ô<ˆÝ�V�W c¨4 [Ñ1Ô1Ñ2Ô2Ð2Ý�V�W c¨4 [Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r3   r±  r   r&   c                 ó2  — t          j        dd|¬¦  «        }d|z  }|                     |¦  «        }t          | j        d |…         |¦  «         t          j        t          d¬¦  «        5  |                     ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr   F©rñ   r±  zincreasing `bits`rC   )r   r¨  r8   r   r1  rH   rI   rJ   )r+   r±  r  Únsr;   s        r1   Ú	test_bitszTestSobol.test_bitsb  sÕ   € å”˜1 u°4Ð8Ñ8Ô8ˆØ�‰WˆØ—’˜rÑ"Ô"ˆÝ˜4Ô-¨c¨r¨cÔ2°FÑ;Ô;Ð;åŒ]�:Ð-@ÐAÑAÔAð 	ð 	Ø�MŠM‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á*BÂBÂBc                 óˆ   — t          j        ddd¬¦  «        }|                     d¦  «        }t          | j        |¦  «         d S )Nr   Frg   r»  rG   )r   r¨  r8   r   r1  r­  s      r1   Útest_64bitszTestSobol.test_64bitsl  sB   € Ý”˜1 u°2Ð6Ñ6Ô6ˆØ—’˜qÑ!Ô!ˆÝ˜4Ô-¨vÑ6Ô6Ð6Ð6Ð6r3   N)rß   rà   rá   r   r¨  r,  r+  r)   r*   r1  r0  rª  r®  r³  r¹  rH   râ   rv  r½  r¿  r{   r3   r1   r¥  r¥  '  sE  € € € € € ØŒ9€DØ€Là�B”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ô 7€Kðð ð ð#ð #ð #ð"ð "ð "ð3ð 3ð 3ð „[×Ò˜V a¨ VÑ,Ô,ðð ñ -Ô,ðð7ð 7ð 7ð 7ð 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                             dg d	¢g d
¢g¦  «        d„ ¦   «         Zej                             dg d	¢g d
¢g¦  «        d„ ¦   «         Zd„ Zej                             dg d	¢ddgg¦  «        ej                             dddgg¦  «        d„ ¦   «         ¦   «         Zd„ ZdS )ÚTestPoissonFc                 ó.   — t          j        d¦  «         d S )NzToo costly in memory.r€  r�  s     r1   rD  zTestPoisson.test_boundsv  s   € ÝŒÐ+Ñ,Ô,Ð,Ð,Ð,r3   c                 ó.   — t          j        d¦  «         d S )Nz"Not applicable: recursive process.r€  r�  s     r1   rV  zTestPoisson.test_fast_forwardy  s   € ÝŒÐ8Ñ9Ô9Ð9Ð9Ð9r3   c                 ó.   — t          j        d¦  «         d S r†  r€  r�  s     r1   rH  zTestPoisson.test_sample|  r‡  r3   c                 óÈ  — d}d}|                       d|d¬¦  «        }|                     |¬¦  «        }t          |¦  «        |k    sJ ‚t          |¦  «        |k    sJ ‚|                     |¬¦  «        }t          |¦  «        |k    sJ ‚t          |¦  «        |k    sJ ‚t	          j        ||gd¬¦  «        }t          |¦  «        |dz  k    sJ ‚t          |¦  «        |k    sJ ‚d S )	Nçš™™™™™©?r   r   F)r�   Úradiusrñ   r  r   r®   )r  r8   rG  Úl2_normr)   rT  )r+   r‚  rÇ  r¼  r  Úsample_initÚsample_continuedr;   s           r1   rL  zTestPoisson.test_continuing€  s  € ð ˆØˆØ—’˜q¨¸%�Ñ@Ô@ˆà—m’m b�mÑ)Ô)ˆÝ�;ÑÔ 2Ò%Ð%Ð%Ð%Ý�{Ñ#Ô# vÒ-Ð-Ð-Ð-à!Ÿ=š=¨2˜=Ñ.Ô.ÐÝÐ#Ñ$Ô$¨Ò*Ð*Ð*Ð*ÝÐ'Ñ(Ô(¨FÒ2Ð2Ð2Ð2å” Ð.>Ð ?ÀaÐHÑHÔHˆÝ�6‰{Œ{˜b 1™fÒ$Ð$Ð$Ð$Ý�v‰Œ &Ò(Ð(Ð(Ð(Ð(Ð(r3   c                 ó‚  — t           j                             d¦  «        }d}d\  }}||z
  |                     d¦  «        z  |z   }g d¢}ddg}t          |||¦  «        }|D ]^\  }	}
}|                      |	|
||¬¦  «        }|                     |¦  «        }t          |¦  «        |k    sJ ‚t          |¦  «        |
k    sJ ‚Œ_d S )	Nl	   ïx¼_Ù4ê÷vZ.c r�   )g{®Gáz´?çš™™™™™É?r!   )r   r&   rM   ÚvolumeÚsurface)r�   rÇ  Úhyperspherer:   )r)   r8   r9   r   r,  rG  rÈ  )r+   r:   r¼  r  r  ÚradiiÚ
dimensionsÚhypersphere_methodsÚgenr�   rÇ  rÏ  r  r;   s                 r1   Útest_mindistzTestPoisson.test_mindist“  sî   € ÝŒi×#Ò#Ð$KÑLÔLˆØˆà‰	ˆˆTØ˜‘˜sŸzšz¨!™}œ}Ñ,¨sÑ2ˆà�Y�Yˆ
Ø'¨Ð3Ðå�j %Ð)<Ñ=Ô=ˆà&)ð 	-ð 	-Ñ"ˆAˆv�{Ø—Y’YØ˜F°Àð ñ ô ˆFð —]’] 2Ñ&Ô&ˆFå�v‘;”; "Ò$Ð$Ð$Ð$Ý˜6‘?”? fÒ,Ð,Ð,Ð,Ð,ð	-ð 	-r3   c                 óŠ   — d}|                       d|¬¦  «        }|                     ¦   «         }t          |¦  «        |k    sJ ‚d S )NrÌ  r   )r�   rÇ  )r,  Ú
fill_spacerÈ  )r+   rÇ  r  r;   s       r1   Útest_fill_spacezTestPoisson.test_fill_space¨  sJ   € ØˆØ—’˜Q v�Ñ.Ô.ˆà×"Ò"Ñ$Ô$ˆå�v‰Œ &Ò(Ð(Ð(Ð(Ð(Ð(r3   r   ©rw   r   rw   )r   r   r   c                 ó¸   — d}g d¢}|                       d|||¬¦  «        }|                     d¦  «        }|D ]"}t          ||¦  «         t          ||¦  «         Œ#d S )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¢}|                       d|||¬¦  «        }|                     d¦  «        }|D ]"}t          ||¦  «         t          ||¦  «         Œ#d S )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  |                      d|||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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Ê  sÍ   € ØˆØ��ˆØ��ˆÝŒ]ÝØEðGñ Gô Gð 	Pð 	Pð �IŠI˜ &°8ÀhˆIÑOÔOÐOð	Pð 	Pð 	Pñ 	Pô 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pð 	Pøøøð 	Pð 	Pð 	Pð 	Pð 	Pð 	Ps   ¦AÁAÁArw   r   r&   r   c                 ó¤   — d}t          j        t          d¬¦  «        5  |                      d|||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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Ó  s³   € ð ˆÝŒ]Ýð$ð%ñ %ô %ð 	ð 	ð �IŠIØ˜FØ!¨Hð ñ ô ð ð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   žAÁA	ÁA	c                 óž   — d}t          j        t          |¬¦  «        5  t          j        dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz*'toto' is not a valid hypersphere samplingrC   r   rr   )rÏ  )rH   rI   rJ   r   ÚPoissonDiskra  s     r1   r  zTestPoisson.test_raisesà  s•   € Ø?ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	3ð 	3ÝŒO˜A¨6Ð2Ñ2Ô2Ð2ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð 	3ð 	3s   žAÁAÁ	AN)rß   rà   rá   r   rç  r,  r+  rD  rV  rH  rL  rÔ  r×  rH   râ   rv  rÝ  rà  rã  rå  r  r{   r3   r1   rÁ  rÁ  r  sr  € € € € € ØŒ?€DØ€Lð-ð -ð -ð:ð :ð :ð2ð 2ð 2ð)ð )ð )ð&-ð -ð -ð*)ð )ð )ð „[×Ò˜Z¨,¨,¨,¸	¸	¸	Ð)BÑCÔCð
/ð 
/ñ DÔCð
/ð „[×Ò˜Z¨,¨,¨,¸	¸	¸	Ð)BÑCÔCð
/ð 
/ñ DÔCð
/ðPð Pð Pð „[×Ò˜Z¨,¨,¨,¸¸R¸Ð)AÑBÔBØ„[×Ò˜Z¨1¨a¨&¨Ñ2Ô2ð	ð 	ñ 3Ô2ñ CÔBð	ð3ð 3ð 3ð 3ð 3r3   rÁ  c                   ó¬   — e Zd Zd„ Zej                             d¦  «        d„ ¦   «         Zd„ Zd„ Z	ej                             d¦  «        d„ ¦   «         Z
dS )ÚTestMultinomialQMCc                 óB  — t          j        g d¢¦  «        }t          j        t          d¬¦  «        5  t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        g d¢¦  «        }d}t          j        t          |¬¦  «        5  t          j        |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        g d¢¦  «        }d	}t          j        t          |¬¦  «        5  t          j        |dt          j        d
¬¦  «        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j        |dt           j         	                    ¦   «         ¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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•  rb  s      r1   Útest_validationsz#TestMultinomialQMC.test_validationsç  s¶  € åŒHÐ4Ð4Ð4Ñ5Ô5ˆÝŒ]�:ð .Að Bñ Bô Bð 	/ð 	/åÔ˜q¨2Ð.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/õ
 ŒHÐ2Ð2Ð2Ñ3Ô3ˆØ5ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	/ð 	/ÝÔ˜q¨2Ð.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/õ ŒHÐ3Ð3Ð3Ñ4Ô4ˆà5ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	Fð 	FÝÔ˜q¨2µc´iÀ!°n±n´nÐEÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð 8ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	Oð 	OÝÔ˜q¨2µb´i×6KÒ6KÑ6MÔ6MÐNÑNÔNÐNð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð 	Oð 	OsG   ²AÁAÁAÂB6Â6B:Â=B:Ã4+D+Ä+D/Ä2D/Å4FÆFÆFzignore::UserWarningc                 óJ  — t           j                             d¦  «        }t          j        g d¢¦  «        }d}t          j        ||z  ¦  «                             t          ¦  «        }t          j        |||¬¦  «        }t          |                     d¦  «        |d¬¦  «         d S )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þ  s’   € åŒi×#Ò#Ð$IÑJÔJˆÝŒHÐ3Ð3Ð3Ñ4Ô4ˆØˆÝ”= ¨A¡Ñ.Ô.×5Ò5µcÑ:Ô:ˆåÔ# A°¸sÐCÑCÔCˆÝ˜Ÿš aÑ(Ô(¨(¸Ð;Ñ;Ô;Ð;Ð;Ð;r3   c                 ó:  — t           j                             d¦  «        }t          j        g d¢¦  «        }t	          j        |d|¬¦  «        }|                     d¦  «        }t          |t          j        |¦  «        z  t          j        |¦  «        d¬¦  «         d S )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  sˆ   € ÝŒi×#Ò#Ð$JÑKÔKˆÝŒHÐ3Ð3Ð3Ñ4Ô4ˆÝÔ# A°¸#Ð>Ñ>Ô>ˆØ—’˜aÑ Ô ˆÝ˜¥¤ u¡¤Ñ-­r¬}¸QÑ/?Ô/?ÀdÐKÑKÔKÐKÐKÐKr3   c                 óŒ  — 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
  ¦  «         d S )N)r™   çš™™™™™Ù?gÍÌÌÌÌÌÜ?g333333ã?rŠ   çÍÌÌÌÌÌì?g®Gáz®ï?rO   rç   r   rü  r   g»aÛ¢ÌÜ?g”Þ7¾öÌÜ?r&   rO   r   )r)   r*   rG  r   r   )r+   Úp_cumulativer!  s      r1   Útest_FindIndexz!TestMultinomialQMC.test_FindIndex  sÀ   € Ý”xÐ KÐ KÐ KÑLÔLˆÝ�<Ñ Ô ˆÝÕ% l°D¸#Ñ>Ô>ÀÑBÔBÐBÝÕ% l°D¸#Ñ>Ô>ÀÑBÔBÐBÝÕ% l°D¸'ÑBÔBÀAÑFÔFÐFÝÕ% l°D¸'ÑBÔBÀAÑFÔFÐFÝÕ% l°D¸#Ñ>Ô>ÀÀqÁÑIÔIÐIÐIÐIr3   c                 óz  — t           j                             d¦  «        }t          j        g d¢¦  «        }d}t          j        ||z  ¦  «                             t          ¦  «        }t          j        dd|¬¦  «        }t          j	        ||||¬¦  «        }t          |                     d¦  «        |d¬¦  «         d S )	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×#Ò#Ð$KÑLÔLˆÝŒHÐ3Ð3Ð3Ñ4Ô4ˆØˆÝ”= ¨A¡Ñ.Ô.×5Ò5µcÑ:Ô:ˆÝ”i ¨D°cÐ:Ñ:Ô:ˆÝÔ# A°ÀØ(+ð-ñ -ô -ˆå˜Ÿš aÑ(Ô(¨(¸Ð;Ñ;Ô;Ð;Ð;Ð;r3   N)rß   rà   rá   rô  rH   râ   Úfilterwarningsr÷  rú  rÿ  r  r{   r3   r1   ré  ré  æ  s¤   € € € € € ðOð Oð Oð. „[×ÒÐ 5Ñ6Ô6ð<ð <ñ 7Ô6ð<ðLð Lð LðJð Jð Jð „[×ÒÐ 5Ñ6Ô6ð	<ð 	<ñ 7Ô6ð	<ð 	<ð 	<r3   ré  c                   ó8   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚTestNormalQMCc                 óò  — t          j        t          j        d¦  «        ¬¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d¦  «         t          j        t          j        d¦  «        ¬¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d	¦  «         d S )
Nr   )r[  ©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¬¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d¦  «         t          j        t          j        d¦  «        d¬¦  «        }|                     ¦   «         }t          |j        d	¦  «         |                     d¬¦  «        }t          |j        d
¦  «         d S )Nr   T)r[  Úinv_transformr  r!   r  r  r   r?  r	  r
  r  s      r1   Útest_NormalQMCInvTransformz(TestNormalQMC.test_NormalQMCInvTransform4  sØ   € åÔ*Ý”˜!‘”¨Dð2ñ 2ô 2ˆà—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+åÔ*Ý”˜!‘”¨Dð2ñ 2ô 2ˆà—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+Ð+Ð+r3   c                 ór  — t           j                             d¦  «        }t          j        t          j        d¦  «        d|¬¦  «        }|                     d¬¦  «        }t          j        ddgdd	gg¦  «        }t          ||d
¬¦  «         t           j                             d¦  «        }t          j        t          j        d¦  «        d|¬¦  «        }|                     d¬¦  «        }t          j        g d¢g d¢g¦  «        }t          ||d
¬¦  «         t           j                             d¦  «        }t          j        dd|¬¦  «        }t          j        t          j        d¦  «        d||¬¦  «        }|                     d¬¦  «        }t          j        g d¢g d¢g¦  «        }t          ||d
¬¦  «         d S )Nl	   q)í*s�yRóM¦@
KÎ r   F)r[  r  r*  r  çƒÛÚÂóÒí¿çLpêÉ»à¿g†U¼‘y¤÷¿gx·²Dgë?rR   rS   r&   ©r[  r  r:   )r  r  gÀ”�Zº¢?)g#ÚŽ©»rü¿gÎŒ~4œ2í?gÔ»x?n¿°¿rM   Trð   )r[  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  sÔ  € åŒi×#Ò#Ð$KÑLÔLˆåÔ*Ý”˜!‘”¨E¸ð=ñ =ô =ˆà—-’- !�-Ñ$Ô$ˆÝœ8 i°Ð%;Ø&/°Ð%:ð%<ñ =ô =Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œi×#Ò#Ð$KÑLÔLˆÝÔ*Ý”˜!‘”¨E°sð<ñ <ô <ˆà—-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%EÐ%EÐ%Eð%Gñ Hô HÐå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œi×#Ò#Ð$KÑLÔLˆÝ”i ¨D°cÐ:Ñ:Ô:ˆÝÔ*Ý”˜!‘”¨EØ Cð
ñ 
ô 
ˆð —-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%EÐ%EÐ%Eð%Gñ Hô HÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r3   c                 ó.  — t           j                             d¦  «        }t          j        t          j        d¦  «        |d¬¦  «        }|                     d¬¦  «        }t          j        ddgdd	gg¦  «        }t          ||d
¬¦  «         t           j                             d¦  «        }t          j        t          j        d¦  «        |d¬¦  «        }|                     d¬¦  «        }t          j        g d¢g d¢g¦  «        }t          ||d
¬¦  «         d S )Nl	   9e)-%ÿ5ŸZµ%Ö_6Ù r   T)r[  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×#Ò#Ð$KÑLÔLˆÝÔ*Ý”˜!‘” #°Tð;ñ ;ô ;ˆà—-’- !�-Ñ$Ô$ˆÝœ8 i°Ð%;Ø&.°Ð%9ð%;ñ <ô <Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œi×#Ò#Ð$KÑLÔLˆÝÔ*Ý”˜!‘” #°Tð;ñ ;ô ;ˆà—-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%BÐ%BÐ%Bð%Dñ Eô EÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r3   c                 óä   — dD ]l}t          j        |d¬¦  «        }t          j        t          j        |¦  «        |d¬¦  «        }|                     ¦   «         }t          |j        d|f¦  «         Œmd S )N©r   r   r   Fr5  T)r[  r  r  r   )r   r¨  r  r)   r  r8   r   r±   )r+   r�   r  r  r  s        r1   r  zTestNormalQMC.test_other_enginew  s�   € Øð 	0ð 	0ˆAÝœ) a°%Ð8Ñ8Ô8ˆKÝÔ.µB´H¸Q±K´KØ6AØ=AðCñ Cô CˆFð —m’m‘o”oˆGÝ˜œ¨¨A¨Ñ/Ô/Ð/Ð/ð	0ð 	0r3   c                 ó�  — t           j                             d¦  «        }t          j        t          j        d¦  «        |¬¦  «        }|                     d¬¦  «        }t          t          j        |                     d¬¦  «        ¦  «        dk     ¦  «        sJ ‚t          t          j        | 	                    d¬¦  «        d	z
  ¦  «        dk     ¦  «        sJ ‚d
D ]&}t          |d d …|f         ¦  «        \  }}|dk    sJ ‚Œ't          j        |                     ¦   «         ¦  «        }t          j        |d
         ¦  «        dk     sJ ‚d S )Niº3  r   )r[  r:   é   r  r   r®   rX  r   ©r   r   rý  ©r)   r8   r9   r   r  r  rC  r´   r[  Ústdr   ÚcovÚ	transpose©r+   r:   r  r  r¦   rK  Úpvalr$  s           r1   Útest_NormalQMCShapiroz#TestNormalQMC.test_NormalQMCShapiro€  s)  € ÝŒi×#Ò# EÑ*Ô*ˆÝÔ*µ´¸±´ÀÐEÑEÔEˆØ—-’- #�-Ñ&Ô&ˆÝ•2”6˜'Ÿ,š,¨A˜,Ñ.Ô.Ñ/Ô/°$Ò6Ñ7Ô7Ð7Ð7Ð7Ý•2”6˜'Ÿ+š+¨1˜+Ñ-Ô-°Ñ1Ñ2Ô2°TÒ9Ñ:Ô:Ð:Ð:Ð:àð 	ð 	ˆAÝ˜g a a a¨ dœmÑ,Ô,‰GˆAˆtØ˜#’:�:�:�:�:åŒf�W×&Ò&Ñ(Ô(Ñ)Ô)ˆÝŒv�c˜$”iÑ Ô  4Ò'Ð'Ð'Ð'Ð'Ð'r3   c                 ó’  — t           j                             d¦  «        }t          j        t          j        d¦  «        d|¬¦  «        }|                     d¬¦  «        }t          t          j        |                     d¬¦  «        ¦  «        d	k     ¦  «        sJ ‚t          t          j        | 	                    d¬¦  «        d
z
  ¦  «        d	k     ¦  «        sJ ‚dD ]&}t          |d d …|f         ¦  «        \  }}|dk    sJ ‚Œ't          j        |                     ¦   «         ¦  «        }t          j        |d         ¦  «        d	k     sJ ‚d S )Niê‰ír   Tr  r   r  r   r®   rX  r   r!  rý  r"  r&  s           r1   Ú!test_NormalQMCShapiroInvTransformz/TestNormalQMC.test_NormalQMCShapiroInvTransformŽ  s2  € ÝŒi×#Ò# HÑ-Ô-ˆÝÔ*Ý”˜!‘”¨D°cð;ñ ;ô ;ˆà—-’- #�-Ñ&Ô&ˆÝ•2”6˜'Ÿ,š,¨A˜,Ñ.Ô.Ñ/Ô/°$Ò6Ñ7Ô7Ð7Ð7Ð7Ý•2”6˜'Ÿ+š+¨1˜+Ñ-Ô-°Ñ1Ñ2Ô2°TÒ9Ñ:Ô:Ð:Ð:Ð:àð 	ð 	ˆAÝ˜g a a a¨ dœmÑ,Ô,‰GˆAˆtØ˜#’:�:�:�:�:åŒf�W×&Ò&Ñ(Ô(Ñ)Ô)ˆÝŒv�c˜$”iÑ Ô  4Ò'Ð'Ð'Ð'Ð'Ð'r3   N)
rß   rà   rá   r  r  r  r  r  r(  r*  r{   r3   r1   r  r  %  s~   € € € € € ð,ð ,ð ,ð,ð ,ð ,ð >ð >ð >ð@>ð >ð >ð&0ð 0ð 0ð(ð (ð (ð(ð (ð (ð (ð (r3   r  c                   óD   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
S )ÚTestMultivariateNormalQMCc                 óB  — d}t          j        t          |¬¦  «        5  t          j        dgt          j        d¬¦  «        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j        g d¢t          j        d¬¦  «        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   d	}t          j        t          |¬¦  «        5  t          j        ddgt          j                             ¦   «         ¬¦  «         d d d ¦  «         n# 1 swxY w Y   d
}t          j        t          |¬¦  «        5  t          j        ddgddgddgg¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j        ddgddgddgg¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          j        dgddgddgg¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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   ra  s     r1   rô  z*TestMultivariateNormalQMC.test_validations   sã  € à=ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	Bð 	BÝÔ% q cµ#´)¸a°.±.´.ÐAÑAÔAÐAð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð >ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	Hð 	HÝÔ% i i i½¼	ÀA¸¹¼ÐGÑGÔGÐGð	Hð 	Hð 	Hñ 	Hô 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Høøøð 	Hð 	Hð 	Hð 	Hð 8ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	Nð 	NÝÔ% q¨! fµR´Y×5JÒ5JÑ5LÔ5LÐMÑMÔMÐMð	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nð 0ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	@ð 	@ÝÔ% q¨! f°°1¨v¸¸1°vÐ.>Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð 9ˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	@ð 	@ÝÔ% q¨! f°°1¨v¸¸1°vÐ.>Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð EˆÝŒ]�:¨WÐ5Ñ5Ô5ð 	=ð 	=ÝÔ% q c¨Q°¨F°Q¸°FÐ+;Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=sk   ž+AÁAÁAÁ=,B5Â5B9Â<B9Ã5DÄD"Ä%D"ÅE0Å0E4Å7E4ÆGÇGÇ	GÇ*HÈHÈHc                 óX   — t          j        g d¢g d¢g d¢g d¢g¦  «        }|j        €J ‚d S )Nr%   )r   r   r   )r   r   r   )r   r   r   )r   r  Ú_corr_matrixr©  s     r1   Útest_MultivariateNormalQMCNonPDz9TestMultivariateNormalQMC.test_MultivariateNormalQMCNonPDº  sG   € åÔ*ØˆIˆI˜	˜	˜	 9 9 9¨i¨i¨iÐ8ñ
ô 
ˆð Ô"Ð.Ð.Ð.Ð.Ð.r3   c                 óö  — t          j        dd¬¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d¦  «         t          j        ddgddgddgg¬¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d	¦  «         t          j        g d
¢¦  «        }t          j        g d¢g d¢g d¢g¦  «        }t          j        ||¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d¦  «         d S )Nr   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  r8   r   r±   r)   r*   ©r+   r  r  r[  r$  s        r1   Útest_MultivariateNormalQMCz4TestMultivariateNormalQMC.test_MultivariateNormalQMCÁ  sZ  € åÔ*°°qÐ9Ñ9Ô9ˆØ—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+õ Ô*°°A°¸aÀ¸VÀaÈÀVÐ<LÐMÑMÔMˆØ—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+õ Œx˜	˜	˜	Ñ"Ô"ˆÝŒh˜	˜	˜	 9 9 9¨i¨i¨iÐ8Ñ9Ô9ˆÝÔ*¨4°Ñ5Ô5ˆØ—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+Ð+Ð+r3   c                 óþ  — t          j        ddd¬¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d¦  «         t          j        ddgddgddggd¬¦  «        }|                     ¦   «         }t          |j        d	¦  «         |                     d¬¦  «        }t          |j        d
¦  «         t          j        g d¢¦  «        }t          j        g d¢g d¢g d¢g¦  «        }t          j        ||d¬¦  «        }|                     ¦   «         }t          |j        d¦  «         |                     d¬¦  «        }t          |j        d¦  «         d S )Nr   r!   T)r[  r$  r  r  r  r  r   r?  r	  r  r2  r3  r4  )r  r5  r6  r7  r8  s        r1   Ú&test_MultivariateNormalQMCInvTransformz@TestMultivariateNormalQMC.test_MultivariateNormalQMCInvTransformÙ  sl  € åÔ*°°qÈÐMÑMÔMˆØ—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+õ Ô*Ø�Q�˜q !˜f q¨! fÐ-¸Tð
ñ 
ô 
ˆð —-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+õ Œx˜	˜	˜	Ñ"Ô"ˆÝŒh˜	˜	˜	 9 9 9¨i¨i¨iÐ8Ñ9Ô9ˆÝÔ*¨4°ÀDÐIÑIÔIˆØ—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+Ð+Ð+r3   c                 óŠ  — t           j                             d¦  «        }|                     d¦  «        }||                     ¦   «         z  t          j        |                     d¦  «        ¦  «        z   }t          j        t          j        ddg¦  «        |d|¬¦  «        }|                     d¬¦  «        }t          j        dd	gd
dgg¦  «        }t          ||d¬¦  «         t           j                             d¦  «        }|                     d¦  «        }||                     ¦   «         z  t          j        |                     d¦  «        ¦  «        z   }t          j        t          j        g d¢¦  «        |d|¬¦  «        }|                     d¬¦  «        }t          j        g d¢g d¢g¦  «        }t          ||d¬¦  «         d S )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×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*­2¬8°Q¸°FÑ+;Ô+;¸QØ9>ÀCðIñ Iô Iˆà—-’- !�-Ñ$Ô$ˆÝœ8 h°	Ð%:Ø&.°Ð%9ð%;ñ <ô <Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œi×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*­2¬8°I°I°IÑ+>Ô+>ÀØ9>ÀCðIñ Iô Iˆà—-’- !�-Ñ$Ô$ˆÝœ8Ð%FÐ%FÐ%FØ%CÐ%CÐ%Cð%Eñ Fô FÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r3   c                 óŠ  — t           j                             d¦  «        }|                     d¦  «        }||                     ¦   «         z  t          j        |                     d¦  «        ¦  «        z   }t          j        t          j        ddg¦  «        ||d¬¦  «        }|                     d¬¦  «        }t          j        dd	gd
dgg¦  «        }t          ||d¬¦  «         t           j                             d¦  «        }|                     d¦  «        }||                     ¦   «         z  t          j        |                     d¦  «        ¦  «        z   }t          j        t          j        g d¢¦  «        ||d¬¦  «        }|                     d¬¦  «        }t          j        g d¢g d¢g¦  «        }t          ||d¬¦  «         d S )Nl	   A^ª}�KT0zub‡N¨ r=  r   r   T)r:   r  r  g�òèFXÔå?gãý¸ýòéÀgRµÝß4¹¿gèO=Ò`å?rR   rS   r>  r&   r%   )go.2žï?gÛikD0Nú¿gÆPN´«ì¿)g4óäšYü¿gÒ«JC�ñ?g„-vû¬2 @r?  rB  s          r1   Ú,test_MultivariateNormalQMCSeededInvTransformzFTestMultivariateNormalQMC.test_MultivariateNormalQMCSeededInvTransform
  s¶  € åŒi×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*ÝŒH�a˜�VÑÔ˜a S¸ð
ñ 
ô 
ˆð —-’- !�-Ñ$Ô$ˆÝœ8 h°	Ð%:Ø&/°Ð%:ð%<ñ =ô =Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œi×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*ÝŒH�Y�Y�YÑÔ ¨¸4ð
ñ 
ô 
ˆð —-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%DÐ%DÐ%Dð%Fñ Gô GÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r3   c                 óì  — t           j                             d¦  «        }t          j        ddgddgddgg|¬¦  «        }|                     d¬¦  «        }t          t          j        |                     d¬¦  «        ¦  «        dk     ¦  «        sJ ‚t          t          j        |                     d¬¦  «        dz
  ¦  «        dk     ¦  «        sJ ‚d	D ]&}t          |d d …|f         ¦  «        \  }}|d
k    sJ ‚Œ't          j
        |                     ¦   «         ¦  «        }t          j        |d	         ¦  «        dk     sJ ‚t          j        ddgddgddgg|¬¦  «        }|                     d¬¦  «        }t          t          j        |                     d¬¦  «        ddgz
  ¦  «        dk     ¦  «        sJ ‚t          t          j        |                     d¬¦  «        t          j        d¦  «        z
  ¦  «        dk     ¦  «        sJ ‚d	D ]&}t          |d d …|f         ¦  «        \  }}|d
k    sJ ‚Œ't          j
        |                     ¦   «         ¦  «        }t          j        |d	         dz
  ¦  «        dk     sJ ‚d S )Nl   ¸–ÅVù^�Am%¦2r   r   ©r[  r$  r:   r   r  r®   rX  r!  rý  rO   rN   r'   r   r   ©r)   r8   r9   r   r  rC  r´   r[  r#  r   r$  r%  rj   r&  s           r1   Ú!test_MultivariateNormalQMCShapiroz;TestMultivariateNormalQMC.test_MultivariateNormalQMCShapiro#  su  € åŒi×#Ò#Ð$HÑIÔIˆÝÔ*Ø�Q�˜q !˜f q¨! fÐ-°3ð
ñ 
ô 
ˆð —-’- #�-Ñ&Ô&ˆÝ•2”6˜'Ÿ,š,¨A˜,Ñ.Ô.Ñ/Ô/°$Ò6Ñ7Ô7Ð7Ð7Ð7Ý•2”6˜'Ÿ+š+¨1˜+Ñ-Ô-°Ñ1Ñ2Ô2°TÒ9Ñ:Ô:Ð:Ð:Ð:àð 	ð 	ˆAÝ˜g a a a¨ dœmÑ,Ô,‰GˆAˆtØ˜#’:�:�:�:�:åŒf�W×&Ò&Ñ(Ô(Ñ)Ô)ˆÝŒv�c˜$”iÑ Ô  4Ò'Ð'Ð'Ð'õ Ô*Ø�s� 3¨ *¨s°C¨jÐ!9¸sð
ñ 
ô 
ˆð —-’- #�-Ñ&Ô&ˆÝ•2”6˜'Ÿ,š,¨A˜,Ñ.Ô.°!°Q°Ñ7Ñ8Ô8¸4Ò?Ñ@Ô@Ð@Ð@Ð@Ý•2”6˜'Ÿ+š+¨1˜+Ñ-Ô-µ´¸±´Ñ<Ñ=Ô=ÀÒDÑEÔEÐEÐEÐEàð 	ð 	ˆAÝ˜g a a a¨ dœmÑ,Ô,‰GˆAˆtØ˜#’:�:�:�:�:åŒf�W×&Ò&Ñ(Ô(Ñ)Ô)ˆÝŒv�c˜$”i #‘oÑ&Ô&¨Ò-Ð-Ð-Ð-Ð-Ð-r3   c                 óð  — t           j                             d¦  «        }t          j        ddgddgddgg|d¬¦  «        }|                     d¬¦  «        }t          t          j        |                     d¬¦  «        ¦  «        d	k     ¦  «        sJ ‚t          t          j        |                     d¬¦  «        dz
  ¦  «        d	k     ¦  «        sJ ‚d
D ]&}t          |d d …|f         ¦  «        \  }}|dk    sJ ‚Œ't          j
        |                     ¦   «         ¦  «        }t          j        |d
         ¦  «        d	k     sJ ‚t          j        ddgddgddgg|d¬¦  «        }|                     d¬¦  «        }t          t          j        |                     d¬¦  «        ddgz
  ¦  «        d	k     ¦  «        sJ ‚t          t          j        |                     d¬¦  «        t          j        d¦  «        z
  ¦  «        d	k     ¦  «        sJ ‚d
D ]&}t          |d d …|f         ¦  «        \  }}|dk    sJ ‚Œ't          j
        |                     ¦   «         ¦  «        }t          j        |d
         dz
  ¦  «        d	k     sJ ‚d S )Nl	   A"l7D#maxbwcuòC– r   r   T)r[  r$  r:   r  r   r  r®   rX  r!  rý  rO   rN   r'   r   r   rI  r&  s           r1   Ú-test_MultivariateNormalQMCShapiroInvTransformzGTestMultivariateNormalQMC.test_MultivariateNormalQMCShapiroInvTransformC  s|  € åŒi×#Ò#Ð$KÑLÔLˆÝÔ*Ø�Q�˜q !˜f q¨! fÐ-°3Àdð
ñ 
ô 
ˆð —-’- #�-Ñ&Ô&ˆÝ•2”6˜'Ÿ,š,¨A˜,Ñ.Ô.Ñ/Ô/°$Ò6Ñ7Ô7Ð7Ð7Ð7Ý•2”6˜'Ÿ+š+¨1˜+Ñ-Ô-°Ñ1Ñ2Ô2°TÒ9Ñ:Ô:Ð:Ð:Ð:àð 	ð 	ˆAÝ˜g a a a¨ dœmÑ,Ô,‰GˆAˆtØ˜#’:�:�:�:�:åŒf�W×&Ò&Ñ(Ô(Ñ)Ô)ˆÝŒv�c˜$”iÑ Ô  4Ò'Ð'Ð'Ð'õ Ô*Ø�s�Ø�s�˜c 3˜ZÐ(ØØð	
ñ 
ô 
ˆð —-’- #�-Ñ&Ô&ˆÝ•2”6˜'Ÿ,š,¨A˜,Ñ.Ô.°!°Q°Ñ7Ñ8Ô8¸4Ò?Ñ@Ô@Ð@Ð@Ð@Ý•2”6˜'Ÿ+š+¨1˜+Ñ-Ô-µ´¸±´Ñ<Ñ=Ô=ÀÒDÑEÔEÐEÐEÐEàð 	ð 	ˆAÝ˜g a a a¨ dœmÑ,Ô,‰GˆAˆtØ˜#’:�:�:�:�:åŒf�W×&Ò&Ñ(Ô(Ñ)Ô)ˆÝŒv�c˜$”i #‘oÑ&Ô&¨Ò-Ð-Ð-Ð-Ð-Ð-r3   c                 ó^  — t           j                             d¦  «        }t          j        g d¢g d¢g d¢g d¢g|¬¦  «        }|                     d¬¦  «        }t          t          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k    sJ ‚Œ't          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 ‚d S )Nl	   ì@ÁjŒSÆmÆ-\1:cž# )rç   rç   rç   )rO   rç   rO   )rç   rO   rO   )rO   rO   rN   rH  rB  r  r   r®   rX  r   r   r  gš™™™™™é?r!  r<  rR  )r)   r8   r9   r   r  rC  r´   r[  r#  rj   r   r$  r%  r&  s           r1   Ú$test_MultivariateNormalQMCDegeneratez>TestMultivariateNormalQMC.test_MultivariateNormalQMCDegeneratef  s?  € åŒi×#Ò#Ð$JÑKÔKˆÝÔ*Ø ��Ø �� / / /°?°?°?ÐCØð
ñ 
ô 
ˆð
 —-’- #�-Ñ&Ô&ˆÝ•2”6˜'Ÿ,š,¨A˜,Ñ.Ô.Ñ/Ô/°$Ò6Ñ7Ô7Ð7Ð7Ð7ÝŒv•b”f˜W Q Q Q¨ Tœ]Ñ+Ô+¨aÑ/Ñ0Ô0°4Ò7Ð7Ð7Ð7ÝŒv•b”f˜W Q Q Q¨ Tœ]Ñ+Ô+¨aÑ/Ñ0Ô0°4Ò7Ð7Ð7Ð7ÝŒv•b”f˜W Q Q Q¨ Tœ]Ñ+Ô+­b¬g°a©j¬jÑ8Ñ9Ô9¸DÒ@Ð@Ð@Ð@Øð 	ð 	ˆAÝ˜g a a a¨ dœmÑ,Ô,‰GˆAˆtØ˜#’:�:�:�:�:ÝŒf�W×&Ò&Ñ(Ô(Ñ)Ô)ˆÝŒv�c˜$”iÑ Ô  4Ò'Ð'Ð'Ð'ÝŒv�c˜$”i !‘mÑ$Ô$ tÒ+Ð+Ð+Ð+å•2”6˜' ! ! ! Q $œ-¨'°!°!°!°Q°$¬-Ñ7¸'À!À!À!ÀQÀ$¼-ÑGÑHÔHØòñ ô ð 	ð 	ð 	ð 	ð 	r3   N)rß   rà   rá   rô  r0  r9  r;  rD  rF  rJ  rL  rN  r{   r3   r1   r,  r,  ž  s�   € € € € € ð=ð =ð =ð4/ð /ð /ð,ð ,ð ,ð0,ð ,ð ,ð4>ð >ð >ð.>ð >ð >ð2.ð .ð .ð@!.ð !.ð !.ðFð ð ð ð r3   r,  c                   ó    — e Zd Zd„ Zd„ Zd„ ZdS )Ú	TestLloydc                 ó^  — t           j                             d¦  «        }|                     ddd¬¦  «        }t	          |¦  «        }t          |¦  «        }t          d¦  «        D ]G}t          |d¬¦  «        }t	          |¦  «        }t          |¦  «        }||k     sJ ‚||k     sJ ‚|}|}|}ŒHd S )Ni§� r   r   )é€   r   )r!  rM   )Úmaxiter)r)   r8   ÚRandomStateÚuniformr   rÈ  r¢   r   )	r+   r:   r;   Úbase_l1Úbase_l2rK  Úsample_lloydÚcurr_l1Úcurr_l2s	            r1   Ú
test_lloydzTestLloyd.test_lloyd  sÏ   € åŒi×#Ò# GÑ,Ô,ˆØ—’˜Q ¨�Ñ1Ô1ˆÝ˜6Ñ"Ô"ˆÝ˜&‘/”/ˆå�q‘”ð 	"ð 	"ˆAÝAØ Aðñ ô ˆLõ ˜|Ñ,Ô,ˆGÝ˜lÑ+Ô+ˆGð ˜WÒ$Ð$Ð$Ð$Ø˜WÒ$Ð$Ð$Ð$àˆGØˆGà!ˆFˆFð	"ð 	"r3   c                 óÜ   — t          j        ddgddgddgddgg¦  «        }|                     ¦   «         }t          |¬¦  «        }t	          ||¦  «         t          j        ||¦  «        rJ ‚dS )zƒ
        Verify that the input samples are not mutated in place and that they do
        not share memory with the output.
        r™   rÌ  rg  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–  s�   € õ
 ”h  c 
Ø!$ c 
Ø!$ c 
Ø!$ c 
ð ,ñ -ô -ˆð "×&Ò&Ñ(Ô(ˆÝ;Øð
ñ 
ô 
ˆ
õ 	˜ [Ñ1Ô1Ð1ÝÔ& {°JÑ?Ô?Ð?Ð?Ð?Ð?Ð?r3   c                 óÊ  — t          j        t          d¬¦  «        5  g d¢}t          |¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  dgdgdgg}t          |¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  d	dgd
dgddgg}t          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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ÑKÔKð 	;ð 	;Ø �[�[ˆFÝ2°6Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 0ˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	;ð 	;Ø�c˜C˜5 1 #Ð&ˆFÝ2°6Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 3ˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	;ð 	;Ø˜Q�i # s ¨a°¨VÐ4ˆFÝ2°6Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;s3   œ<¼A ÁA Á$BÂBÂBÂ0CÃCÃCN)rß   rà   rá   r[  rb  rd  r{   r3   r1   rP  rP  ~  sD   € € € € € ð"ð "ð "ð.@ð @ð @ð ;ð ;ð ;ð ;ð ;r3   rP  c                 óN   — t          j        | ¦  «                             ¦   «         S rz   )r
   Úpdistr  rg  s    r1   rÈ  rÈ  ·  s   € ÝŒ>˜&Ñ!Ô!×%Ò%Ñ'Ô'Ð'r3   r  c                 óJ  — d}t           j                             |¦  «        } | d|¬¦  «                             d¦  «        }t           j                             |¦  «        } | d|¬¦  «                             d¦  «        }t          ||¦  «         t           j                             |¦  «        } | d|¬¦  «                             d¦  «        } | d|¬¦  «                             d¦  «        }t          ||¦  «         t           j                             |¦  «        } | d|¬¦  «                             d¦  «        }t          ||¦  «         t          ||¦  «         d}t          j        t          |¬¦  «        5   | d||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nl   Ø7P r   )r�   r*  rM   rŽ   z3got multiple values for argument now known as `rng`rC   )r�   r:   r*  )r)   r8   rT  r   r9   rH   rI   Ú	TypeError)r  Úseed_numberr:   Úres1Úres2Úres3rb  s          r1   Útest_deterministicrm  »  sÜ  € ð €Kå
Œ)×
Ò
 Ñ
,Ô
,€CØˆ6�A˜CÐ Ñ Ô ×'Ò'¨Ñ*Ô*€DÝ
Œ)×
Ò
 Ñ
,Ô
,€CØˆ6�A˜CÐ Ñ Ô ×'Ò'¨Ñ*Ô*€DÝ��tÑÔÐå
Œ)×
Ò
 Ñ
,Ô
,€CØˆ6�A˜CÐ Ñ Ô ×'Ò'¨Ñ*Ô*€DØˆ6�A˜;Ð'Ñ'Ô'×.Ò.¨qÑ1Ô1€DÝ��tÑÔÐÝ
Œ)×
Ò
 Ñ
,Ô
,€CØˆ6�A˜3ÐÑÔ×&Ò& qÑ)Ô)€DÝ��tÑÔÐÝ��tÑÔÐàC€GÝ	Œ•y¨Ð	0Ñ	0Ô	0ð 7ð 7Øˆ�˜¨+Ð6Ñ6Ô6Ð6ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7ð 7ð 7s   Å<FÆFÆF)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$  rx  r}  r¥  rÁ  ré  r  r,  rP  rÈ  râ   rv  r{  r¨  r‘   rç  rm  r{   r3   r1   ú<module>rv     s
  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à €€€Ø Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð #Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðh%ð h%ð h%ð h%ð h%ñ h%ô h%ð h%ðV#'ð #'ð #'ð #'ð #'ñ #'ô #'ð #'ðLð ð ð ð �3”=ñ ô ð ð&ð &ð &ð.2ð 2ð 2ð<ð <ð <ðD+ð +ð +ð h/ð h/ð h/ð h/ð h/ñ h/ô h/ð h/ðV)ð )ð )ð )ð )�ñ )ô )ð )ðBRð Rð Rð Rð Rˆnñ Rô Rð RðjH7ð H7ð H7ð H7ð H7�ñ H7ô H7ð H7ðVq3ð q3ð q3ð q3ð q3�.ñ q3ô q3ð q3ðh<<ð <<ð <<ð <<ð <<ñ <<ô <<ð <<ð~v(ð v(ð v(ð v(ð v(ñ v(ô v(ð v(ðr]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð@5;ð 5;ð 5;ð 5;ð 5;ñ 5;ô 5;ð 5;ðr(ð (ð (ð „×Ò˜ C¤J°´	Ø$'Ô$6¸¼ð$Iñ Jô Jð7ð 7ñJô Jð7ð 7ð 7r3   