§
    ¢éUguÕ  ã                   ó  — 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 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-dS )'é    N)ÚCounter)ÚcombinationsÚproduct)Úassert_allcloseÚassert_equalÚassert_array_equal)Ú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           úY/var/www/surfInsights/venv3-11/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î ©é   é
   r6   F)r#   T)r(   ÚrandomÚdefault_rngr   r'   r   )r*   ÚrngÚsampleÚaÚbÚscaledÚunscaleds          r0   Útest_scale_randomzTestUtils.test_scale_random3   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ˆÝ˜ &Ñ)Ô)Ð)Ð)Ð)r2   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         r0   Ú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   rL   rF   é   é    é@   úL2-star)r(   r)   r   r   ÚdiscrepancyÚsqrt)r*   Úspace_1Úspace_2r:   ÚdimÚrefs         r0   Ú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r2   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   rL   r    rE   rB   rA   r   r   ú'toto' is not a valid ...Útotor]   )r(   r)   rG   rH   rI   r   rh   ©r*   r:   s     r0   Ú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 )!NrT   rU   rV   rW   rX   rY   rZ   rM   rN   r[   r\   rF   )r^   Úworkersr!   rQ   rR   r_   r`   ra   rb   rc   r%   r   rg   éÿÿÿÿÚ	cpu_countc                  ó   — d S ©N© rz   r2   r0   ú<lambda>z5TestUtils.test_discrepancy_parallel.<locals>.<lambda>®   s   € °T€ r2   zCannot determine therB   ©ru   zInvalid number of workers...r   )r(   r)   r   r   rh   ri   ÚsetattrÚosrG   rH   ÚNotImplementedErrorrI   )r*   Úmonkeypatchr:   rl   rm   s        r0   Ú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   rL   r    rE   rB   rA   r   r   rp   rq   r]   z!Sample contains duplicate points.z'Sample must contain at least two points)	r(   r)   rG   rH   rI   r   Úgeometric_discrepancyÚwarnsÚUserWarningrr   s     r0   Ú!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   ç      è?ç      Ð?rL   Ú	chebyshev)Úmetric)r^   rŒ   l	   ’sˆ;80øri�R$½� r%   )ÚdÚseedé2   g–˜Y�$ª?guÚ—¼8É?)	r(   r)   r   r   rƒ   ri   r7   r8   ÚLatinHypercube)r*   r:   r9   s      r0   Ú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¨cÐ2Ñ2Ô2×9Ò9¸"Ñ=Ô=ˆÝ�Ô1°&Ñ9Ô9Ð;NÑOÔOÐOÝÝÔ% f°UÐ;Ñ;Ô;Ð=Pñ	
ô 	
ð 	
ð 	
ð 	
r2   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ƒ   rr   s     r0   Ú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ÐMr2   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   rL   r    rM   rN   rO   rv   T)Ú	iterativerP   rQ   rR   l	   gy°,!uUx‡FYo9"]µ )rL   r6   rE   rB   rA   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   rh   r   r   r7   r8   rG   rH   rI   )r*   rj   Ú	disc_initÚ	disc_iterr9   Údisc_refÚx_news          r0   Ú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Ž   r6   éd   )
r(   r7   r8   r   r�   rh   ÚrangeÚintegersr   r   )
r*   r9   Úqmc_genr:   ÚdiscÚiÚrow_1Úrow_2ÚcolÚdisc_references
             r0   Útest_perm_discrepancyzTestUtils.test_perm_discrepancy  s  € ÝŒi×#Ò#Ð$JÑKÔKˆÝÔ$ Q¨SÐ1Ñ1Ô1ˆØ—’ Ñ#Ô#ˆÝŒ˜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ð 		2r2   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          r0   Ú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Ñ:Ð:r2   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         r0   Údisc_wdzFTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_wd7  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¨™}Ñ,Ð,r2   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          r0   Údisc_mdzFTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_mdA  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Ñ:Ð:r2   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      €€r0   ú
<listcomp>z_TestUtils.test_discrepancy_alternative_implementation.<locals>.disc_star_l2.<locals>.<listcomp>V  sv   ø€ ð ð ð à­u°Q©x¬xðð à*+õ ”G˜A¥¤
¨1¨Q°°°¨T¬7°A°a¸¸¸°d´GÑ <Ô <Ñ<Ñ=Ô=ðð ð ð r2   )r°   r(   ri   r±   r²   r¡   )rµ   r·   r¶   s   ` @r0   Údisc_star_l2zKTestUtils.test_discrepancy_alternative_implementation.<locals>.disc_star_l2Q  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ñññô ð r2   l	   Áj¤;<Q`sºi—y—õX r4   ra   r]   r_   r\   rg   N)r(   r7   r8   r   rh   r   )	r*   r¼   r¾   rÀ   rÈ   r9   r:   Ú	disc_currÚdisc_alts	            r0   Ú+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Ñ,Ô,Ð,Ð,Ð,r2   c                 ó´   — t          d¦  «        }|d         dk    sJ ‚t          d¦  «        }|d         dk    sJ ‚t          d¦  «        }|d         dk    sJ ‚d S )Nr6   rv   é   é¨   iå  i^  i5	  )r   )r*   Úprimess     r0   Útest_n_primeszTestUtils.test_n_primeso  sh   € Ý˜"‘”ˆØ�bŒz˜RÒÐÐÐå˜#‘”ˆØ�bŒz˜SÒ Ð Ð Ð å˜#‘”ˆØ�bŒz˜TÒ!Ð!Ð!Ð!Ð!Ð!r2   c                 óL   — t          d¦  «        }g d¢}t          ||¦  «         d S )Nr�   )r   r%   r    é   é   é   é   é   é   rÍ   é   é%   é)   é+   é/   )r   r   )r*   rÏ   r,   s      r0   Útest_primeszTestUtils.test_primesy  s0   € Ý! "Ñ%Ô%ˆØFÐFÐFˆÝ˜ Ñ$Ô$Ð$Ð$Ð$r2   N)Ú__name__Ú
__module__Ú__qualname__r1   r?   rJ   rn   rs   r�   r†   r‘   rG   ÚmarkÚxfailr•   r�   rª   rË   rÐ   rÝ   rz   r2   r0   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"ð "ð "ð%ð %ð %ð %ð %r2   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 )	Nr6   )
ç        r   rŠ   r‰   ç      À?ç      ä?ç      Ø?ç      ì?g      °?g      â?rL   r|   rF   rÒ   r%   )Ústart_index©r   r   )r*   r:   r,   s      r0   Útest_van_der_corputzTestVDC.test_van_der_corput€  s¤   € Ý Ñ#Ô#ˆð-ð -ð -ˆå˜ Ñ$Ô$Ð$å ¨AÐ.Ñ.Ô.ˆÝ˜ Ñ$Ô$Ð$å ¨AÐ.Ñ.Ô.ˆÝ˜ Ñ$Ô$Ð$å ¨qÐ1Ñ1Ô1ˆÝ˜  A B B¤Ñ(Ô(Ð(Ð(Ð(r2   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þ r6   T©ÚscramblerŽ   rÒ   r%   )rë   rð   rŽ   rL   )rë   rð   rŽ   ru   rF   rì   )r*   rŽ   r,   r:   s       r0   Útest_van_der_corput_scramblez$TestVDC.test_van_der_corput_scramble�  sÁ   € Ø6ˆÝ˜R¨$°TÐ:Ñ:Ô:ˆå ¨q¸4ÀdÐKÑKÔKˆÝ˜  A B B¤Ñ(Ô(Ð(åØ˜1 t°$Àð
ñ 
ô 
ˆõ 	˜  A B B¤Ñ(Ô(Ð(åØ˜1 t°$Àð
ñ 
ô 
ˆõ 	˜  A B B¤Ñ(Ô(Ð(Ð(Ð(r2   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 2rB   r6   r   )Úbase)rG   rH   rI   r   ©r*   s    r0   Útest_invalid_base_errorzTestVDC.test_invalid_base_error   s�   € ÝŒ]�:Ð-IÐJÑJÔJð 	'ð 	'Ý˜2 AÐ&Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   œ;»?Á?N)rÞ   rß   rà   rí   rñ   rõ   rz   r2   r0   rä   rä     sA   € € € € € ð)ð )ð )ð)ð )ð )ð"'ð 'ð 'ð 'ð 'r2   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       €r0   rû   zRandomEngine.__init__¦  s(   ø€ Ý‰Œ×Ò˜1¨<¸dÐÑCÔCÐCÐCÐCr2   r   r|   c                óH   — | j                              || j        f¦  «        }|S ry   )r9   r7   r�   )r*   r¶   ru   r:   s       r0   Ú_randomzRandomEngine._random©  s    € Ø”—’ ! T¤V Ñ-Ô-ˆØˆr2   )NN)r   )rÞ   rß   rà   rû   rþ   Ú__classcell__)rü   s   @r0   r÷   r÷   ¥  sc   ø€ € € € € ðDð Dð Dð Dð Dð Dð að ð ð ð ð ð ð ð ð r2   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÷   r7   Únum_generatedÚresetr   Úfast_forward)ÚengineÚsample_1Úsample_2Úsample_1_testÚsample_2_tests        r0   Útest_subclassing_QMCEnginer  ®  sø   € Ý˜!Ð"IÐJÑJÔJ€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Ò%Ð%Ð%Ð%Ð%Ð%r2   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 integerrB   )r   rv   z*'u_bounds' and 'l_bounds' must be integersr   gš™™™™™ñ?r   )rG   rH   rI   r÷   r¢   )Úmsgr  s     r0   Ú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Ÿ   r6   r  r   Úint64T)r¶   ÚendpointéûÿÿÿrÒ   é   F©r   r¶   r  r    )r÷   r¢   r   r(   ÚuniqueÚdtyper  r7   ÚfloorÚastyper  ÚminÚmax)r  r:   ÚlowÚhighÚ
ref_samples        r0   Útest_integersr  Ó  s¼  € Ý˜!Ð"IÐJÑJÔJ€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¨{Ñ;Ô;Ð;Ð;Ð;r2   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 )Nr6   l	   G]	#0¦m$avâe r  rv   )r  r  Úsizer   r    T)r  r  r   r  rŸ   r    Fr  r   r­   )r(   r7   r8   r¢   r÷   r   r  r  )r�   r9   r  r  r  r:   s         r0   Ú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Ñ*Ô*Ð*Ð*Ð*r2   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 )Nrï   rŽ   rz   )Úcan_scrambleÚqmcerG   Úskip)r*   rð   rŽ   Úkwargss       r0   r  zQMCEngineTests.engine  sb   € ð
 Ôð 	6Ø�4”9ÐD h°TÐDÐD¸VÐDÐDÐDàð 6Ý”‘”���à �t”yÐ5Ð5 dÐ5¨fÐ5Ð5Ð5r2   c                 ó"   — |r| j         n| j        S ry   )Úscramble_ndÚunscramble_nd)r*   rð   s     r0   Ú	referencezQMCEngineTests.reference  s   € Ø#+ÐCˆtÔÐ°Ô1CÐCr2   )Úidsc                 ó¢   — |                       d|¬¦  «        }|                     d¦  «        }t          t          j        d¦  «        |¦  «         d S )Nr   ©r�   rð   rL   )rL   r   ©r  r7   r   r(   Úempty©r*   rð   r  r:   s       r0   Ú	test_0dimzQMCEngineTests.test_0dim  óH   € à—’˜q¨8�Ñ4Ô4ˆØ—’˜qÑ!Ô!ˆÝ�2œ8 FÑ+Ô+¨VÑ4Ô4Ð4Ð4Ð4r2   c                 ó¢   — |                       d|¬¦  «        }|                     d¦  «        }t          t          j        d¦  «        |¦  «         d S )Nr   r3  r   ©r   r   r4  r6  s       r0   Útest_0samplezQMCEngineTests.test_0sample%  r8  r2   c                 óx   — |                       d|¬¦  «        }|                     d¦  «        }d|j        k    sJ ‚d S )Nr   r3  r   ©r   r   )r  r7   r°   r6  s       r0   Útest_1samplezQMCEngineTests.test_1sample+  sA   € à—’˜q¨8�Ñ4Ô4ˆØ—’˜qÑ!Ô!ˆØ˜œÒ%Ð%Ð%Ð%Ð%Ð%r2   c                 óÆ   — |                       d|¬¦  «        }|                     d¦  «        }t          j        |dk    ¦  «        sJ ‚t          j        |dk    ¦  «        sJ ‚d S )Nr    r3  é   r   r   )r  r7   r(   Úallr6  s       r0   Útest_boundszQMCEngineTests.test_bounds1  sb   € à—’˜s¨X�Ñ6Ô6ˆØ—’˜sÑ#Ô#ˆÝŒv�f ’kÑ"Ô"Ð"Ð"Ð"ÝŒv�f ’kÑ"Ô"Ð"Ð"Ð"Ð"Ð"r2   c                 óþ   — |                       |¬¦  «        }|                      d|¬¦  «        }|                     t          |¦  «        ¬¦  «        }t	          ||d¬¦  «         |j        t          |¦  «        k    sJ ‚d S )N©rð   r   r3  r  r˜   rR   )r0  r  r7   Úlenr   r  )r*   rð   r  r  r:   s        r0   Útest_samplezQMCEngineTests.test_sample8  sx   € à—^’^¨X�^Ñ6Ô6ˆ
Ø—’˜q¨8�Ñ4Ô4ˆØ—’¥ Z¡¤�Ñ1Ô1ˆå˜ 
°Ð6Ñ6Ô6Ð6ØÔ#¥s¨:¡¤Ò6Ð6Ð6Ð6Ð6Ð6r2   c                 ó>  — |                       d|¬¦  «        }|                     d¬¦  «        }|                       d|¬¦  «        }t          |¦  «        dz  }|                     |¬¦  «        }|                     |¬¦  «        }t          |||d …         d¬¦  «         d S )Nr   r3  rF   r  r˜   rR   )r  r7   rE  r   )r*   rð   r  r  Ún_halfÚ_r:   s          r0   Útest_continuingzQMCEngineTests.test_continuingA  s™   € à—’˜q¨8�Ñ4Ô4ˆØ—]’] Q�]Ñ'Ô'ˆ
à—’˜q¨8�Ñ4Ô4ˆå�Z‘” AÑ%ˆà�MŠM˜FˆMÑ#Ô#ˆØ—’ �Ñ(Ô(ˆÝ˜ 
¨6¨7¨7Ô 3¸$Ð?Ñ?Ô?Ð?Ð?Ð?r2   rŽ   Nc                 óð   — |                       d||¬¦  «        }|                     d¬¦  «        }|                     ¦   «          |j        dk    sJ ‚|                     d¬¦  «        }t	          ||¦  «         d S )Nr   ©r�   rð   rŽ   rF   r  r   )r  r7   r  r  r   )r*   rð   rŽ   r  r  r:   s         r0   Ú
test_resetzQMCEngineTests.test_resetN  sx   € ð —’˜q¨8¸$�Ñ?Ô?ˆØ—]’] Q�]Ñ'Ô'ˆ
à�Š‰ŒˆØÔ# qÒ(Ð(Ð(Ð(à—’ �Ñ#Ô#ˆÝ˜ 
Ñ+Ô+Ð+Ð+Ð+r2   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   r3  rF   r  rL   r˜   rR   r   r   c                 ó$   — g | ]}|d z  dk    ¯|‘ŒS )r   r   rz   )rÄ   r¥   s     r0   rÇ   z4QMCEngineTests.test_fast_forward.<locals>.<listcomp>v  s!   € Ð:Ð:Ð:˜a¨q°1©u¸ªz¨z˜¨z¨z¨zr2   çñhãˆµøä>)	r  r7   r  r   r  r¡   Úappendr(   Úconcatenate)r*   rð   r  r  r:   Ú
even_drawsr¥   s          r0   Útest_fast_forwardz QMCEngineTests.test_fast_forwarda  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˜:Ñ&Ô&Øð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r2   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�   r3  i   r   r­   r   ç{®Gáz„?rR   é   rŠ   éK   r‰   )r  r7   r   r(   ÚmeanÚrepeatÚ
percentile)r*   rð   r�   r  r:   s        r0   Ú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Èð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r2   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 methodrB   r   Frq   ©r�   rð   rù   )rG   rH   rI   r  ©r*   Úmessages     r0   Ú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 ry   )r   ©r:   s    r0   r{   zQMCEngineTests.<lambda>“  s   € ¥h¨vÑ&6Ô&6Ð%6€ r2   c                 óø   — |                       dd¬¦  «        }|                     d¬¦  «        } ||¦  «        }|                       dd|¬¦  «        }|                     d¬¦  «        } ||¦  «        }||k     sJ ‚d S )Nr   Fr3  rf   r  r^  )r  r7   )	r*   rù   rŒ   r  Ú
sample_refÚ
metric_refÚoptimal_Úsample_Úmetric_s	            r0   Útest_optimizerszQMCEngineTests.test_optimizers�  s‰   € ð —’˜q¨5�Ñ1Ô1ˆØ—]’] R�]Ñ(Ô(ˆ
Ø�V˜JÑ'Ô'ˆ
à—;’; ¨UÀ�;ÑNÔNˆØ—/’/ B�/Ñ'Ô'ˆØ�&˜‘/”/ˆà˜Ò#Ð#Ð#Ð#Ð#Ð#r2   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   TrL  rL   zArrays are not equalrB   r   r   )
r(   r7   r8   r¡   r  rQ  rG   rH   ÚAssertionErrorr   )r*   r9   r:   r¥   r  s        r0   Ú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)  r/  r.  rð   r1  Úboolr   r  r(   Úndarrayr0  rG   rá   Úparametrizer7  r;  r>  rB  rF  rJ  r7   r8   rM  rT  r\  ra  r   rh   rl  ro  rz   r2   r0   r#  r#    s  € € € € € Ø(Ð(Ø€DØ!€LØ"€MØ €Kà�eˆ}€HØ˜Ð
&€Cð 5ð6ð 6Øð6ð 
ð	6ð 6ð 6ð 6ð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ñô ð	$ð 	$ñô ð	$ð
/ð 
/ð 
/ð 
/ð 
/r2   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 )NTrD  r   r3  rF   )r¶   ru   gü©ñÒMbP?rR   r6   r|   )r0  r  r7   rE  r   r  r¢   r   )r*   r  r  r:   s       r0   Útest_workerszTestHalton.test_workers¿  s²   € Ø—^’^¨T�^Ñ2Ô2ˆ
Ø—’˜q¨4�Ñ0Ô0ˆØ—’¥ Z¡¤¸!�Ñ<Ô<ˆå˜ 
°Ð6Ñ6Ô6Ð6ð 	�Š‰ŒˆØ—_’_ RÑ(Ô(ˆ
Ø�Š‰ŒˆØ—’ ¨Q�Ñ/Ô/ˆÝ�V˜ZÑ(Ô(Ð(Ð(Ð(r2   N)rÞ   rß   rà   r   ÚHaltonr*  r)  r(   r)   r/  r.  rx  rz   r2   r0   rv  rv  ­  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ð)ð )ð )ð )ð )r2   rv  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.©rG   r+  ©r*   Úargss     r0   rJ  zTestLHS.test_continuingÒ  ó   € ÝŒÐ5Ñ6Ô6Ð6Ð6Ð6r2   c                 ó.   — t          j        d¦  «         d S r}  r~  r  s     r0   rT  zTestLHS.test_fast_forwardÕ  r�  r2   c                 ó.   — t          j        d¦  «         d S ©NzJNot applicable: the value of reference sample is implementation dependent.r~  r  s     r0   rF  zTestLHS.test_sampleØ  ó%   € ÝŒð 1ñ 	2ô 	2ð 	2ð 	2ð 	2r2   Ústrengthr   r   rð   Frù   Nrb  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­   rR   c                 ó,   — h | ]}t          |¦  «        ’ŒS rz   )Útuple)rÄ   Úrows     r0   ú	<setcomp>z1TestLHS.test_sample_stratified.<locals>.<setcomp>  s   € Ð5Ð5Ð5¨#�5 ™:œ:Ð5Ð5Ð5r2   )r(   r7   r8   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                        r0   Útest_sample_stratifiedzTestLHS.test_sample_stratifiedÜ  sù  € õ Œy×$Ò$Ð%KÑLÔLˆØˆØˆ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ð/ð /r2   c                 óÜ   — |                       dd¬¦  «        }|                     d¬¦  «        }|                       ddd¬¦  «        }|                     d¬¦  «        }t          ||¦  «         d S )Nr   Fr3  rf   r  rb  r^  )r  r7   r   )r*   r  rg  ri  rj  s        r0   Útest_optimizer_1dzTestLHS.test_optimizer_1d  sj   € à—’˜q¨5�Ñ1Ô1ˆØ—]’] R�]Ñ(Ô(ˆ
à—;’; ¨UÀ�;ÑMÔMˆØ—/’/ B�/Ñ'Ô'ˆå˜: wÑ/Ô/Ð/Ð/Ð/r2   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 strengthrB   r   r%   )r†  z%n is not the square of a prime numberr   )r�   r†  rd   r    zn is too small for dé	   )rG   rH   rI   r   r�   r7   )r*   r`  r  s      r0   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)  rJ  rT  rF  rG   rá   rt  r�  rŸ  r  rz   r2   r0   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ðð ð ð ð r2   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' pointsrB   r   r6   )rG   r„   r…   r   ÚSobolr7   ©r*   r  s     r0   Ú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   FrD  rL   rF   r¥  rB   )r   r¦  Úrandom_base2r   r/  rG   rH   rI   ©r*   r  r:   s      r0   Útest_random_base2zTestSobol.test_random_base2@  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 dimensionalityrB   r   zMaximum supported 'bits' is 64éA   )Úbits)rG   rH   rI   r   r¦  ÚMAXDIMrô   s    r0   Ú
test_raisezTestSobol.test_raiseN  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  FrD  ræ   r   )r   r¦  r   r7   ÚflattenÚtolistr   )r*   r  Úcount1Úcount2s       r0   Útest_high_dimzTestSobol.test_high_dimW  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Ð2r2   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`rB   )r   r¦  r7   r   r/  rG   rH   rI   )r*   r¯  r  Únsr:   s        r0   Ú	test_bitszTestSobol.test_bits^  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   Frf   r¹  rF   )r   r¦  r7   r   r/  r«  s      r0   Útest_64bitszTestSobol.test_64bitsh  sB   € Ý”˜1 u°2Ð6Ñ6Ô6ˆØ—’˜qÑ!Ô!ˆÝ˜4Ô-¨vÑ6Ô6Ð6Ð6Ð6r2   N)rÞ   rß   rà   r   r¦  r*  r)  r(   r)   r/  r.  r¨  r¬  r±  r·  rG   rá   rt  r»  r½  rz   r2   r0   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ð 7r2   r£  c                   óJ   — e Zd Zej        ZdZd„ Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd„ Zd	S )
ÚTestPoissonFc                 ó.   — t          j        d¦  «         d S )NzToo costly in memory.r~  r  s     r0   rB  zTestPoisson.test_boundsr  s   € ÝŒÐ+Ñ,Ô,Ð,Ð,Ð,r2   c                 ó.   — t          j        d¦  «         d S )Nz"Not applicable: recursive process.r~  r  s     r0   rT  zTestPoisson.test_fast_forwardu  s   € ÝŒÐ8Ñ9Ô9Ð9Ð9Ð9r2   c                 ó.   — t          j        d¦  «         d S r„  r~  r  s     r0   rF  zTestPoisson.test_samplex  r…  r2   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  r7   rE  Úl2_normr(   rR  )r*   r€  rÅ  rº  r  Úsample_initÚsample_continuedr:   s           r0   rJ  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‰Œ &Ò(Ð(Ð(Ð(Ð(Ð(r2   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%   rL   ÚvolumeÚsurface)r�   rÅ  ÚhypersphererŽ   )r(   r7   r8   r   r*  rE  rÆ  )r*   r9   rº  r  r  ÚradiiÚ
dimensionsÚhypersphere_methodsÚgenr�   rÅ  rÍ  r  r:   s                 r0   Ú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Ò,Ð,Ð,Ð,Ð,ð	-ð 	-r2   c                 óŠ   — d}|                       d|¬¦  «        }|                     ¦   «         }t          |¦  «        |k    sJ ‚d S )NrÊ  r   )r�   rÅ  )r*  Ú
fill_spacerÆ  )r*   rÅ  r  r:   s       r0   Útest_fill_spacezTestPoisson.test_fill_space¤  sJ   € ØˆØ—’˜Q v�Ñ.Ô.ˆà×"Ò"Ñ$Ô$ˆå�v‰Œ &Ò(Ð(Ð(Ð(Ð(Ð(r2   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 samplingrB   r   rq   )rÍ  )rG   rH   rI   r   ÚPoissonDiskr_  s     r0   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)  rB  rT  rF  rJ  rÒ  rÕ  r  rz   r2   r0   r¿  r¿  n  s‰   € € € € € ØŒ?€DØ€Lð-ð -ð -ð:ð :ð :ð2ð 2ð 2ð)ð )ð )ð&-ð -ð -ð*)ð )ð )ð3ð 3ð 3ð 3ð 3r2   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.rB   r6   )Ú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)   rG   rH   rI   r   ÚMultinomialQMCr¦  r7   r8   )r*   r“  r`  s      r0   Ú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   rR   )
r(   r7   r8   r)   Ú
atleast_2dr  r’  r   rã  r   )r*   rŽ   r“  rß  r•  r  s         r0   Útest_MultinomialBasicDrawz,TestMultinomialQMC.test_MultinomialBasicDrawÊ  s’   € åŒy×$Ò$Ð%JÑKÔKˆÝŒHÐ3Ð3Ð3Ñ4Ô4ˆØˆÝ”= ¨A¡Ñ.Ô.×5Ò5µcÑ:Ô:ˆÝÔ# A°¸tÐDÑDÔDˆÝ˜Ÿš aÑ(Ô(¨(¸Ð;Ñ;Ô;Ð;Ð;Ð;r2   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   rQ   rR   )	r(   r7   r8   r)   r   rã  r   r±   rç  )r*   rŽ   r“  r  Údrawss        r0   Útest_MultinomialDistributionz/TestMultinomialQMC.test_MultinomialDistributionÓ  sˆ   € ÝŒy×$Ò$Ð%KÑLÔLˆÝŒHÐ3Ð3Ð3Ñ4Ô4ˆÝÔ# A°¸4Ð@Ñ@Ô@ˆØ—’˜aÑ Ô ˆÝ˜¥¤ u¡¤Ñ-­r¬}¸QÑ/?Ô/?ÀdÐKÑKÔKÐKÐKÐKr2   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®ï?rN   ræ   r   rí  r   g»aÛ¢ÌÜ?g”Þ7¾öÌÜ?r%   rN   r   )r(   r)   rE  r   r   )r*   Úp_cumulativer   s      r0   Ú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ÐIr2   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Ž   rR   )r(   r7   r8   r)   rç  r  r’  r   r¦  rã  r   )r*   rŽ   r“  rß  r•  Úbase_enginer  s          r0   Útest_other_enginez$TestMultinomialQMC.test_other_engineã  s³   € õ Œy×$Ò$Ð%LÑMÔMˆÝŒHÐ3Ð3Ð3Ñ4Ô4ˆØˆÝ”= ¨A¡Ñ.Ô.×5Ò5µcÑ:Ô:ˆÝ”i ¨D°tÐ<Ñ<Ô<ˆÝÔ# A°ÀØ)-ð/ñ /ô /ˆå˜Ÿš aÑ(Ô(¨(¸Ð;Ñ;Ô;Ð;Ð;Ð;r2   N)rÞ   rß   rà   rä  rG   rá   Úfilterwarningsrè  rë  rð  ró  rz   r2   r0   rÙ  rÙ  ²  s¤   € € € € € ðOð Oð Oð. „[×ÒÐ 5Ñ6Ô6ð<ð <ñ 7Ô6ð<ðLð Lð LðJð Jð Jð „[×ÒÐ 5Ñ6Ô6ð	<ð 	<ñ 7Ô6ð	<ð 	<ð 	<r2   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   )rY  ©r   r   r    r  ©r    r   r   r=  ©r    r   ©r   ÚMultivariateNormalQMCr(   Úzerosr7   r   r°   ©r*   r  Úsampless      r0   Útest_NormalQMCzTestNormalQMC.test_NormalQMCñ  sÆ   € åÔ*µ´¸±´Ð<Ñ<Ô<ˆØ—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+åÔ*µ´¸±´Ð<Ñ<Ô<ˆØ—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+Ð+Ð+r2   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)rY  Úinv_transformrø  r    r  rù  r   r=  rú  rû  rþ  s      r0   Útest_NormalQMCInvTransformz(TestNormalQMC.test_NormalQMCInvTransformÿ  sØ   € åÔ*Ý”˜!‘”¨Dð2ñ 2ô 2ˆà—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+åÔ*Ý”˜!‘”¨Dð2ñ 2ô 2ˆà—-’-‘/”/ˆÝ�W”] FÑ+Ô+Ð+Ø—-’- !�-Ñ$Ô$ˆÝ�W”] FÑ+Ô+Ð+Ð+Ð+r2   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©rY  r  rŽ   r  çƒÛÚÂóÒí¿çLpêÉ»à¿g†U¼‘y¤÷¿gx·²Dgë?rQ   rR   r%   )r  r  gÀ”�Zº¢?)g#ÚŽ©»rü¿gÎŒ~4œ2í?gÔ»x?n¿°¿rL   Trï   )rY  r  r  rŽ   )	r(   r7   r8   r   rü  rý  r)   r   r¦  )r*   rŽ   r  rÿ  Úsamples_expectedrò  s         r0   Útest_NormalQMCSeededz"TestNormalQMC.test_NormalQMCSeeded  sÔ  € åŒy×$Ò$Ð%LÑMÔMˆÝÔ*Ý”˜!‘”¨E¸ð>ñ >ô >ˆà—-’- !�-Ñ$Ô$ˆÝœ8 i°Ð%;Ø&/°Ð%:ð%<ñ =ô =Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œy×$Ò$Ð%LÑMÔMˆÝÔ*Ý”˜!‘”¨E¸ð>ñ >ô >ˆà—-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%EÐ%EÐ%Eð%Gñ Hô HÐå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œy×$Ò$Ð%LÑMÔMˆÝ”i ¨D°tÐ<Ñ<Ô<ˆÝÔ*Ý”˜!‘”¨EØ Tð
ñ 
ô 
ˆð —-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%EÐ%EÐ%Eð%Gñ Hô HÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r2   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)rY  rŽ   r  r  ç«èÍ<9í¿ç\ÌÏMÙî¿gî˜º+»`Ð?g]‰@õ"i?rQ   rR   r%   )r  r  g»,D‡ÀÖ?)gÁÈËšX`æ?g�ìõî�7@gaTR' ‰ä¿)r(   r7   r8   r   rü  rý  r)   r   )r*   rŽ   r  rÿ  r  s        r0   Ú test_NormalQMCSeededInvTransformz.TestNormalQMC.test_NormalQMCSeededInvTransform.  s&  € åŒy×$Ò$Ð%LÑMÔMˆÝÔ*Ý”˜!‘” 4°tð=ñ =ô =ˆà—-’- !�-Ñ$Ô$ˆÝœ8 i°Ð%;Ø&.°Ð%9ð%;ñ <ô <Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œy×$Ò$Ð%LÑMÔMˆÝÔ*Ý”˜!‘” 4°tð=ñ =ô =ˆà—-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%BÐ%BÐ%Bð%Dñ Eô EÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r2   c                 óä   — dD ]l}t          j        |d¬¦  «        }t          j        t          j        |¦  «        |d¬¦  «        }|                     ¦   «         }t          |j        d|f¦  «         Œmd S )N©r   r   r   Fr3  T)rY  r  r  r   )r   r¦  rü  r(   rý  r7   r   r°   )r*   r�   rò  r  rÿ  s        r0   ró  zTestNormalQMC.test_other_engineA  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ð 	0r2   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   )rY  rŽ   é   r  r   r­   rV  r   ©r   r   rî  ©r(   r7   r8   r   rü  rý  rA  r³   rY  Ústdr
   ÚcovÚ	transpose©r*   r9   r  rÿ  r¥   rI  Úpvalr  s           r0   Útest_NormalQMCShapiroz#TestNormalQMC.test_NormalQMCShapiroJ  s)  € ÝŒi×#Ò# EÑ*Ô*ˆÝÔ*µ´¸±´À#ÐFÑFÔFˆØ—-’- #�-Ñ&Ô&ˆÝ•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Ò'Ð'Ð'Ð'Ð'Ð'r2   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­   rV  r   r  rî  r  r  s           r0   Ú!test_NormalQMCShapiroInvTransformz/TestNormalQMC.test_NormalQMCShapiroInvTransformX  s2  € ÝŒi×#Ò# HÑ-Ô-ˆÝÔ*Ý”˜!‘”¨D°sð<ñ <ô <ˆà—-’- #�-Ñ&Ô&ˆÝ•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Ò'Ð'Ð'Ð'Ð'Ð'r2   N)
rÞ   rß   rà   r   r  r	  r  ró  r  r  rz   r2   r0   rö  rö  ð  s}   € € € € € ð,ð ,ð ,ð,ð ,ð ,ð >ð >ð >ð>>ð >ð >ð&0ð 0ð 0ð(ð (ð (ð(ð (ð (ð (ð (r2   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 consistentrB   r   r   rá  )r  r$   rL   râ  zCovariance matrix not PSD.r   z#Covariance matrix is not symmetric.z/Dimension mismatch between mean and covariance.)	rG   rH   rI   r   rü  r¦  r(   r7   r8   r_  s     r0   rä  z*TestMultivariateNormalQMC.test_validationsj  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     r0   Útest_MultivariateNormalQMCNonPDz9TestMultivariateNormalQMC.test_MultivariateNormalQMCNonPD„  sG   € åÔ*ØˆIˆI˜	˜	˜	 9 9 9¨i¨i¨iÐ8ñ
ô 
ˆð Ô"Ð.Ð.Ð.Ð.Ð.r2   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    )rY  r  rø  r  rù  r   r=  rú  r  ©r   r   r   ©r   r   r   ©r   r   r   ©r   r%   ©r    r%   ©r   rü  r7   r   r°   r(   r)   ©r*   r  rÿ  rY  r  s        r0   Ú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Ñ+Ô+Ð+Ð+Ð+r2   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)rY  r  r  rø  r  rù  r   r=  rú  r  r#  r$  r%  )r  r&  r'  r(  r)  s        r0   Ú&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Ñ+Ô+Ð+Ð+Ð+r2   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ÅÆ\ @rQ   rR   ©r%   r%   r%   r$   )gZhç44æ¿gA-Ó>ô¿gÉZC©½ˆ¶¿)g~TÃ~Oìù?g*Ê¥ño@gc}“EÝ?©
r(   r7   r8   Ústandard_normalr  Údiagr   rü  r)   r   ©r*   r9   r;   ÚAr  rÿ  r  s          r0   Ú test_MultivariateNormalQMCSeededz:TestMultivariateNormalQMC.test_MultivariateNormalQMCSeeded½  s¸  € åŒi×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*­2¬8°Q¸°FÑ+;Ô+;¸QØ9>ÀSðJñ Jô Jˆà—-’- !�-Ñ$Ô$ˆÝœ8 h°	Ð%:Ø&.°Ð%9ð%;ñ <ô <Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œi×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*­2¬8°I°I°IÑ+>Ô+>ÀØ9>ÀSðJñ Jô Jˆà—-’- !�-Ñ$Ô$ˆÝœ8Ð%FÐ%FÐ%FØ%CÐ%CÐ%Cð%Eñ Fô FÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r2   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=Ò`å?rQ   rR   r/  r%   r$   )go.2žï?gÛikD0Nú¿gÆPN´«ì¿)g4óäšYü¿gÒ«JC�ñ?g„-vû¬2 @r0  r3  s          r0   Ú,test_MultivariateNormalQMCSeededInvTransformzFTestMultivariateNormalQMC.test_MultivariateNormalQMCSeededInvTransformÔ  s¶  € åŒi×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*ÝŒH�a˜�VÑÔ˜a c¸ð
ñ 
ô 
ˆð —-’- !�-Ñ$Ô$ˆÝœ8 h°	Ð%:Ø&/°Ð%:ð%<ñ =ô =Ðå˜Ð!1¸Ð=Ñ=Ô=Ð=õ Œi×#Ò#Ð$KÑLÔLˆØ×Ò Ñ'Ô'ˆØ�—’‘”Ñ¥¤¨¯
ª
°1©¬Ñ 6Ô 6Ñ6ˆÝÔ*ÝŒH�Y�Y�YÑÔ ¨¸Dð
ñ 
ô 
ˆð —-’- !�-Ñ$Ô$ˆÝœ8Ð%EÐ%EÐ%EØ%DÐ%DÐ%Dð%Fñ Gô GÐå˜Ð!1¸Ð=Ñ=Ô=Ð=Ð=Ð=r2   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   ©rY  r  rŽ   r  r  r­   rV  r  rî  rN   rM   r&   r   r   ©r(   r7   r8   r   rü  rA  r³   rY  r  r
   r  r  ri   ©r*   rŽ   r  rÿ  r¥   rI  r  r  s           r0   Ú!test_MultivariateNormalQMCShapiroz;TestMultivariateNormalQMC.test_MultivariateNormalQMCShapiroí  su  € åŒy×$Ò$Ð%IÑJÔJˆÝÔ*Ø�Q�˜q !˜f q¨! fÐ-°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� 3¨ *¨s°C¨jÐ!9Àð
ñ 
ô 
ˆð —-’- #�-Ñ&Ô&ˆÝ•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Ñ&Ô&¨Ò-Ð-Ð-Ð-Ð-Ð-r2   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)rY  r  rŽ   r  r  r  r­   rV  r  rî  rN   rM   r&   r   r   r:  r;  s           r0   Ú-test_MultivariateNormalQMCShapiroInvTransformzGTestMultivariateNormalQMC.test_MultivariateNormalQMCShapiroInvTransform  s|  € åŒy×$Ò$Ð%LÑMÔMˆÝÔ*Ø�Q�˜q !˜f q¨! fÐ-°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Ñ&Ô&¨Ò-Ð-Ð-Ð-Ð-Ð-r2   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æ   )rN   ræ   rN   )ræ   rN   rN   )rN   rN   rM   r9  r@  r  r   r­   rV  r   r   r  gš™™™™™é?r  r:  rP  )r(   r7   r8   r   rü  rA  r³   rY  r  ri   r
   r  r  r;  s           r0   Ú$test_MultivariateNormalQMCDegeneratez>TestMultivariateNormalQMC.test_MultivariateNormalQMCDegenerate0  s?  € åŒy×$Ò$Ð%KÑLÔLˆÝÔ*Ø ��Ø �� / / /°?°?°?Ð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Øòñ ô ð 	ð 	ð 	ð 	ð 	r2   N)rÞ   rß   rà   rä  r!  r*  r,  r5  r7  r<  r>  r@  rz   r2   r0   r  r  h  s�   € € € € € ð=ð =ð =ð4/ð /ð /ð,ð ,ð ,ð0,ð ,ð ,ð4>ð >ð >ð.>ð >ð >ð2.ð .ð .ð@!.ð !.ð !.ðFð ð ð ð r2   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   rL   )Úmaxiter)r(   r7   ÚRandomStateÚuniformr   rÆ  r¡   r   )	r*   r9   r:   Úbase_l1Úbase_l2rI  Úsample_lloydÚcurr_l1Úcurr_l2s	            r0   Ú
test_lloydzTestLloyd.test_lloydI  sÏ   € åŒi×#Ò# GÑ,Ô,ˆØ—’˜Q ¨�Ñ1Ô1ˆÝ˜6Ñ"Ô"ˆÝ˜&‘/”/ˆå�q‘”ð 	"ð 	"ˆAÝAØ Aðñ ô ˆLõ ˜|Ñ,Ô,ˆGÝ˜lÑ+Ô+ˆGð ˜WÒ$Ð$Ð$Ð$Ø˜WÒ$Ð$Ð$Ð$àˆGØˆGà!ˆFˆFð	"ð 	"r2   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Ê  re  N)r(   r)   Úcopyr   r   Úmay_share_memory)r*   Úsample_origÚsample_copyÚ
new_samples       r0   Útest_lloyd_non_mutatingz!TestLloyd.test_lloyd_non_mutating`  s�   € õ
 ”h  c 
Ø!$ c 
Ø!$ c 
Ø!$ c 
ð ,ñ -ô -ˆð "×&Ò&Ñ(Ô(ˆÝ;Øð
ñ 
ô 
ˆ
õ 	˜ [Ñ1Ô1Ð1ÝÔ& {°JÑ?Ô?Ð?Ð?Ð?Ð?Ð?r2   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 arrayrB   rD   z`sample` dimension is not >= 2r   rí  r   z!`sample` is not in unit hypercubegš™™™™™ñ¿r˜   r   )rG   rH   rI   r   )r*   r:   r  s      r0   Útest_lloyd_errorszTestLloyd.test_lloyd_errorsp  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à   rM  rT  rV  rz   r2   r0   rB  rB  H  sD   € € € € € ð"ð "ð "ð.@ð @ð @ð ;ð ;ð ;ð ;ð ;r2   rB  c                 óN   — t          j        | ¦  «                             ¦   «         S ry   )r	   Úpdistr  re  s    r0   rÆ  rÆ  �  s   € ÝŒ>˜&Ñ!Ô!×%Ò%Ñ'Ô'Ð'r2   ).r~   Úcollectionsr   Ú	itertoolsr   r   rG   Únumpyr(   Únumpy.testingr   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#  rv  r{  r£  r¿  rÙ  rö  r  rB  rÆ  rz   r2   r0   ú<module>ra     sœ  ðØ 	€	€	€	Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +à €€€Ø Ð Ð Ð Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kà "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðh%ð h%ð h%ð h%ð h%ñ h%ô h%ð h%ðV#'ð #'ð #'ð #'ð #'ñ #'ô #'ð #'ðLð ð ð ð �3”=ñ ô ð ð&ð &ð &ð.2ð 2ð 2ð<ð <ð <ðD+ð +ð +ð e/ð e/ð e/ð e/ð e/ñ e/ô e/ð e/ðP)ð )ð )ð )ð )�ñ )ô )ð )ð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A3ð A3ð A3ð A3ð A3�.ñ A3ô A3ð A3ðH;<ð ;<ð ;<ð ;<ð ;<ñ ;<ô ;<ð ;<ð|u(ð u(ð u(ð u(ð u(ñ u(ô u(ð u(ðp]ð ]ð ]ð ]ð ]ñ ]ô ]ð ]ð@5;ð 5;ð 5;ð 5;ð 5;ñ 5;ô 5;ð 5;ðr(ð (ð (ð (ð (r2   