
    Pi\                        d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dl	Z
d dlmZmZ d dl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mZmZm Z  d dl!m"c m#Z$ d d	l%m&Z& d d
l'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.  e&e           ej/        j0        d             Z1d Z2d Z3d Z4d Z5d Z6e dd            Z7d Z8d Z9 G d d          Z: G d d          Z; G d d          Z<d Z= G d d          Z>dS )    )PoolN)Fraction)assert_equalassert_)raises)skip_xp_invalid_arg)xp_assert_equal)_aligned_zeroscheck_random_state
MapWrappergetfullargspec_no_selfFullArgSpecrng_integers_validate_int_rename_parameter_contains_nan_rng_html_rewrite_workers_wrapper)lazy_xp_function)clusterinterpolatelinalgoptimizesparsespatialstatsc                      d} d }dD ]R}dD ]M}dD ]H}t           j        t           j        fD ]-}|ddd|ffD ]"}t          |           D ]} |||||           #.INSd S )	N
   c                 l   t          | |||f          }t          | |||          }|t          j        |          j        }t          |j        d         d         |z  d           t          | d          rt          |j        | |           nt          |j        | f|           t          |j        |           |dk    rt          |j
        j        |           d S |dk    r)|j        dk    rt          |j
        j        |           d S d S |t          |j
        j        |           d S t                      )N)aligndatar   __len__CF)reprr
   npdtype	alignmentr   __array_interface__hasattrshaper   flagsc_contiguoussizef_contiguous
ValueError)r+   r'   orderr    err_msgxs         o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/scipy/_lib/tests/test__util.pycheckz"test__aligned_zeros.<locals>.check   s<   ueU3445%e<<<=HUOO-EQ*6215=qAAA5)$$ 	5%11115(G444QWe$$$C<<AG('22222c\\vzz,g66666 z ]AG('22222,,    )	                      @   N)r   r7   r9      )r#   r$   Nr7   r8   r9   )r&   uint8float64range)niterr5   r    nr1   r'   r+   js           r4   test__aligned_zerosrF      s    E  . 3 > > 	> 	>A) > > h
3 > >E"#aAq\!2 > >!&u > >A!E%u====>>>>	>> >r6   c                     t          d          } t          t          |           t          j        j                   t          |           } t          t          |           t          j        j                   t          d           } t          t          |           t          j        j                   t          t          t           d           t          j                            t          j        	                                          }t          |          } t          t          |           t          j        j                   d S )Nr7   a)
r   r   typer&   randomRandomStateassert_raisesr0   	GeneratorPCG64)rsirgs     r4   test_check_random_staterQ   ?   s    
 Q

CcBI1222
S
!
!CcBI1222
T
"
"CcBI1222*0#666			RY__..	/	/B
R
 
 CcBI/00000r6   c                     t          d          } t          | j                  }t          |t	          dgd d dg d i                      t          | j                  }t          |t	          ddgd d d g d i                       G d d          } |            }t          |j                  }t          |t	          g dd	d
ddgdd ii                      d S )Nr7   pool)r7   funciterablec                       e Zd ZddddZdS )0test_getfullargspec_no_self.<locals>._rv_genericr8   r9   Nr.   c                    d S N )selfrH   bcr.   argskwargss          r4   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsZ   s    4r6   r8   r9   )__name__
__module____qualname__ra   r[   r6   r4   _rv_genericrW   Y   s4        	 	 	 	 	 	 	 	r6   rf   )rH   r]   r^   r_   r`   rb   r.   )r   r   __init__r   r   __call__ra   )pargspecrf   rv_objs       r4   test_getfullargspec_no_selfrl   P   s   1A$QZ00G+vhdD"&*B0 0 1 1 1$QZ00G+vz&:D$&($4 4 5 5 5        []]F$V[11G+ooovx&,vhL L M M M M Mr6   c                     t          j        d          } t          j        |           }t          d          }t	          |j        t          u            t	          |j        d u            t	          |j        du            t           |t           j        |                     }t          ||           t          t                    5  t          d          }d d d            d S # 1 swxY w Y   d S )N      $@r7   Fr   )r&   arangesinr   r   _mapfuncmaprS   	_own_poollistr   rL   RuntimeError)in_argout_argri   outs       r4   test_mapwrapper_serialry   c   s   Ys^^FfVnnG1AAJ#AFdNAK5 !!!
qq  
!
!Cg	|	$	$  qMM                 s   C##C'*C'c                      t          d          5 } |                     t          j        g d           d d d            d S # 1 swxY w Y   d S )Nr8   )r7   r8   r9   r:   )r   rr   mathrp   )ri   s    r4   	test_poolr|   r   s    	a &A	dh%%%& & & & & & & & & & & & & & & & & &s   #A  AAc                     t          j        d          } t          j        |           }t          d          5 } |t           j        |           }t	          t          |          |           t          |j        du            t          t          |j	        t                               t          |j        d u           d d d            n# 1 swxY w Y   t          t                    5 } |t           j        |            d d d            n# 1 swxY w Y   t          |j        t          u            t!          d          5 }t          |j                  }t          |j        du            |                                 |                    t           j        |           }t	          t          |          |           d d d            d S # 1 swxY w Y   d S )Nrn   r8   TF)r&   ro   rp   r   r   rt   r   rs   
isinstancerS   PWLrq   rL   	ExceptionrI   r0   r   rr   close)rv   rw   ri   rx   excinfoqs         r4   test_mapwrapper_parallelr   w   sA   Ys^^FfVnnG	A (!aT#YY(((t#$$$
163''(((
$&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
y	!	! W	"&&               GLJ&''' 
a 	)Aquu$%%%				 eeBFF##T#YY(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s7   BCCC*DDDA<GGGr7   c           	          |J t          |t                    sJ t          j        t	           |t          j        | |z                                S rZ   )r~   r   r&   arrayrt   rp   )r3   r]   workerss      r4   user_of_workersr      sN    gz*****8DQ//00111r6   c                     t          j        dt           j                  } t          j        | dz            }t	          d          5 }t          | |j        d          }t          ||           d d d            n# 1 swxY w Y   t          | d d          }t          ||           t          | dd          }t          ||           t          j	        t
          d          }t           ||           |           t	          d          5 }t          j	        t
          d|j                  }t           ||           |           d d d            d S # 1 swxY w Y   d S )Nr          @r8   )r   r]   )r]   )r]   r   )
r&   linspacepirp   r   r   rr   r   	functoolspartial)arrreqri   vpart_fs        r4   test__workers_wrapperr      s   
+a

C
&s

C	a AC!444Q               	TQ///ACQ!,,,AC !444Fc"""	a 'A"?aGGGVVC[[#&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's$   (A::A>A>;EEEc                     t           j                                        } t          | dddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | dddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ 	 t           j                                        } n# t          $ r Y d S w xY wt          | dddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd          }t          j        |          dk    sJ t          j        |          dk    sJ |j        dk    sJ t          | dddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ t          | ddd	          }t          j        |          d
k    sJ t          j        |          dk    sJ |j        dk    sJ d S )Nr8      d   T)lowhighr.   endpoint)r   )r   r.   r   r   Fr:   )	r&   rJ   rK   r   maxminr+   default_rngAttributeError)rngr   s     r4   test_rng_integersr      sG   
)


!
!C sd
C
C
CC6#;;!6#;;!9 sd
;
;
;C6#;;!6#;;!9 se
D
D
DC6#;;!6#;;!9 se
<
<
<C6#;;!6#;;!9i##%%    sd
C
C
CC6#;;!6#;;!9 sd
;
;
;C6#;;!6#;;!9 se
D
D
DC6#;;!6#;;!9 se
<
<
<C6#;;!6#;;!9s   2F 
FFc            	       8   e Zd Zej                            dd ej        d           ej        d           ej	        d          g          d             Z
ej                            dd ej	        dg           edd          g          d             Zd ZdS )	TestValidateIntrD   r:   c                 6    t          |d          }|dk    sJ d S )NrD   r:   )r   r\   rD   s     r4   test_validate_intz!TestValidateInt.test_validate_int   s"    !S!!Avvvvvvr6         @r7   c                     t          j        t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nzn must be an integermatchrD   )pytestr   	TypeErrorr   r   s     r4   test_validate_int_badz%TestValidateInt.test_validate_int_bad   s    ]9,BCCC 	" 	"!S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   :>>c                     t          j        t          d          5  t          ddd           d d d            d S # 1 swxY w Y   d S )Nz$n must be an integer not less than 0r   rD   r   )r   r   r0   r   r\   s    r4   test_validate_int_below_minz+TestValidateInt.test_validate_int_below_min   s    ]: .; < < < 	& 	&"c1%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   ;??N)rc   rd   re   r   markparametrizer&   r@   int16r   r   r   r   r   r[   r6   r4   r   r      s        [S1hbhqkk828A;;"LMM  NM [S3!xx1~~"FGG" " HG"& & & & &r6   r   c                       e Zd Z edd          d             Z eddd          d             Zd Zej        d             Z	d	 Z
d
S )TestRenameParameteroldnewc                     |S rZ   r[   r\   r   s     r4   old_keyword_still_acceptedz.TestRenameParameter.old_keyword_still_accepted      
r6   z1.9.0)dep_versionc                     |S rZ   r[   r   s     r4   old_keyword_deprecatedz*TestRenameParameter.old_keyword_deprecated  r   r6   c                 X   |                      d          }|                      d          }|                      d          }||cxk    r|cxk    rdk    sn J t          j        d          }t          j        t
          |          5  |                      d           d d d            n# 1 swxY w Y   t          j        d          }t          j        t
          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                      dd           d d d            n# 1 swxY w Y   t          j        t
          |          5  |                      dd           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   z.old_keyword_still_accepted() got an unexpectedr   
unexpectedz)old_keyword_still_accepted() got multipler   r   )r   reescaper   r   r   )r\   res1res2res3messages        r4   test_old_keyword_still_acceptedz3TestRenameParameter.test_old_keyword_still_accepted  s   ..r22..2.66..2.66t))))t))))r)))))) )LMM]9G444 	; 	;++r+:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; )GHH]9G444 	8 	8++BB+777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]9G444 	8 	8++BB+777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8]9G444 	< 	<+++;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<sH   	B,,B03B0&D

DD0EEE:FF#&F#c                 "    ddl m}  |            S )Nr   )Lock)	threadingr   )r\   r   s     r4   
kwarg_lockzTestRenameParameter.kwarg_lock$  s    """"""tvvr6   c                 *   d}|                      d          }|                      d          }|5  t          j        t          |          5  |                      d          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ||cxk    r|cxk    rdk    sn J t	          j        d          }t          j        t          |          5  |                      d           d d d            n# 1 swxY w Y   t	          j        d          }t          j        t          |          5  |                      dd           d d d            n# 1 swxY w Y   |5  t          j        t          |          5  t          j        t          |          5  |                      dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |5  t          j        t          |          5  t          j        t          |          5  |                      dd	           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nz+Use of keyword argument `old` is deprecatedr   r   r   r   z*old_keyword_deprecated() got an unexpectedr   z%old_keyword_deprecated() got multipler   )r   r   warnsDeprecationWarningr   r   r   r   )r\   r   dep_msgr   r   r   r   s          r4   test_old_keyword_deprecatedz/TestRenameParameter.test_old_keyword_deprecated)  sG    @**2..**r*22 	? 	?0@@@ ? ?6626>>D? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? t))))t))))r)))))) )HII]9G444 	7 	7''2'666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7
 )CDD]9G444 	4 	4'''333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	< 	<y888 < <L!37CCC< < ///;;;< < < < < < < < < < < < < < < < < < < < < < < < < < < < < <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<
  	@ 	@y888 @ @L!37CCC@ @//BB/???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s  BA/#B/A3	3B6A3	7BB
B
C;;C?C?5EE E&G0GG6GGG	G
GG0G	G0 G	!G00G47G4=JI05II0II0 I!I0$J0I4	4J7I4	8JJJN)rc   rd   re   r   r   r   r   r   fixturer   r   r[   r6   r4   r   r     s        
 ue$$  %$ ue999  :9< < <* ^  ^@ @ @ @ @r6   r   c                      e Zd Zd Zd Zed             Zej        	                    dd          ej        
                    dg d          d	                         Zej        	                    d
d          ej        	                    dd          ej        	                    dd          ej        	                    dd          d                                                 ZdS )TestContainsNaNc                    t          j        dddt           j        g          }t          |          sJ t          |d          sJ t          |d          sJ t          |d d                   rJ t          |d d         d          rJ t          |d d         d          rJ t	          j        t          d          5  t          |d	           d d d            n# 1 swxY w Y   t          |d d         d	          rJ t	          j        t          d
          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr7   r8   r9   	propagate)
nan_policyomitThe input contains nan valuesr   raiseznan_policy must be one ofnan)r&   r   r   r   r   r   r0   )r\   r!   s     r4   test_policyzTestContainsNaN.test_policyK  s   xAq"&)**T"""""Tk::::::Tf555555 bqb***** bqbkBBBBBB bqbf======]:-LMMM 	4 	4$73333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 bqbg>>>>>>]:-HIII 	2 	2$51111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s$   C""C&)C&#EE	Ec                 v   t          t          j        g t                              rJ t          t          j        g d                    rJ t          t          j        ddgddgg                    rJ t          t          j        g d                    rJ t          t          j        g d                    rJ t          t          j        d	d
t          j        g                    sJ t          t          j        d	dt          j        g                    sJ t          t          j        t          j        dt          j        g                    sJ t          t          j        d	dgddgg                    rJ t          t          j        d	dgdt          j        gg                    sJ d S )Nr'   )r7   r8   r9   r7   r8   r9   r:   )      ?r         @)r                  @r   r   r   r   r   r   )r   r&   r   floatr   r   s    r4   test_contains_nanz!TestContainsNaN.test_contains_nan\  s    "E!:!:!:;;;;; !)))!4!455555 Aq6Aq6*:!;!;<<<<< ,,,!7!788888 ---!8!899999RXr3&78899999RXr2rv&67788888RXrvr26&:;;<<<<< B8b"X*>!?!?@@@@@RXBx"bf&>??@@@@@@@r6   c                    t          j        dddt           j        g          }t          |          rJ t          j        dddt           j        gd          }t          |          sJ t          j        ddgdt           j        gg          }t          |          rJ t          j        ddgdt           j        ggd          }t          |          sJ d S )Nr7   r8   3objectr   1r9   )r&   r   r   r   )r\   data1data2data3data4s        r4   test_contains_nan_with_stringsz.TestContainsNaN.test_contains_nan_with_stringsl  s    !QRV,-- '''''!QRV,H===U#####3(QK011 '''''3(QK0AAAU#######r6   Tzlazy backends tested separately)
eager_onlyreasonr   )r   r   r   c                 &   t           j                            d          }|                    d          }|                    |          }t	          ||          rJ t          j        |          d                             |j                  }|dk    rFt          j
        t          d          5  t	          ||           d d d            d S # 1 swxY w Y   d S |dk    rt	          ||d	
          sJ d S |dk    rt	          ||          sJ d S d S )N   }? r8   r9   r:   rX   r7   r8   r7   r   r   r   r   Txp_omit_okayr   )r&   rJ   r   asarrayr   xpxatsetr   r   r   r0   )r\   xpr   r   x0r3   s         r4   test_array_apizTestContainsNaN.test_array_apiz  sc    i##O44ZZYZ''JJrNN J/////F1IIg""26**  z1PQQQ - -a,,,- - - - - - - - - - - - - - - - - -6!! JTBBBBBBBB;&& J///// '&//s   0CCCnumpyzlazy backends only)r   cupyarray_api_stricttorchc                 v   t           j                            d          }|                    d          }|                    |          }t	          t          |          |                    d                     t	          t          |d          |                    d                     t	          t          |dd          |                    d                     d	}t          j        t          |
          5  t          |d           d d d            n# 1 swxY w Y   t          j        t          |
          5  t          |d           d d d            n# 1 swxY w Y   t          j
        |          d                             t           j                  }t	          t          |          |                    d                     t	          t          |d          |                    d                     t	          t          |dd          |                    d                     t          j        t          |
          5  t          |d           d d d            n# 1 swxY w Y   t          j        t          |
          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr   r   rX   Fr   r   Tr   znot supported for lazy arraysr   r   r   )r&   rJ   r   r   r	   r   r   r   r   r   r   r   r   )r\   r   r   r   r3   r   s         r4   test_array_api_lazyz#TestContainsNaN.test_array_api_lazy  sG   
 i##O44ZZYZ''JJrNNa(("**U*;*;<<<a55rzz%7H7HIIIadCCCRZZPUEVEVWWW/]9E222 	% 	%!V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]9E222 	& 	&!W%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& F1IIg""26**a(("**T*:*:;;;a55rzz$7G7GHHHadCCCRZZPTEUEUVVV]9E222 	% 	%!V$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]9E222 	& 	&!W%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&sH   <DD D?EE #E I**I.1I.J..J25J2N)rc   rd   re   r   r   r   r   r   r   skip_xp_backendsr   r   r  r[   r6   r4   r   r   J  sN       2 2 2"A A A  $ $ $ [!!T)J " L L[\+I+I+IJJ0 0 KJL L0  [!!'2F!GG[!!&1E!FF[!!"4=Q!RR[!!'2F!GG& & HG SR GF HG& & &r6   r   c                  R    d }  t          |                       }g d}||k    sJ d S )Nc                      g d} | S )N)znp.random.default_rng(8989843)np.random.default_rng(seed)z8np.random.default_rng(0x9a71b21474694f919882289dc1559ca) bob r[   )liness    r4   mock_strz(test__rng_html_rewrite.<locals>.mock_str  s    
 
 
 r6   )np.random.default_rng()r  r  r  )r   )r
  resrefs      r4   test__rng_html_rewriter    sM       &
H
%
%
'
'C  C #::::::r6   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej         !                    d          ej         j"        ej         #                    dedfedfed fedfedfe	dfe
dfedfed fed fed fed fed fed fed fed fed fed fed fedfedfedfedfedfedfg          d!                                     Z$d"S )#TestTransitionToRNGc                     t           j                            d          }t          j        j        |                    d          dfi |S N   2Faj  )   r9   rX   r9   r&   rJ   r   r   vqkmeans2r\   r`   r   s      r4   kmeanszTestTransitionToRNG.kmeans  C    i##$788z!#**'*":":AHHHHHr6   c                     t           j                            d          }t          j        j        |                    d          dfi |S r  r  r  s      r4   r  zTestTransitionToRNG.kmeans2  r  r6   c                     t           j                            d          }|                    d          \  }}}t          j        ||fi |} ||          S )Nr  )r9   r   )r&   rJ   r   r   BarycentricInterpolator)r\   r`   r   x1x2y1fs          r4   barycentriczTestTransitionToRNG.barycentric  sV    i##$788ZZ((
B/BAA&AAquur6   c                     t           j                            d          }t          j        |                    d          dfi |S )Nr  r   r   r9   )r&   rJ   r   r   clarkson_woodruff_transformr  s      r4   r%  z/TestTransitionToRNG.clarkson_woodruff_transform  s?    i##$7881#**X2F2FTTVTTTr6   c                     t           j                            d          }t          j        t          j        |                    d          fi |j        S )Nr  r9   )r&   rJ   r   r   basinhoppingrosenr3   r  s      r4   r'  z TestTransitionToRNG.basinhopping  sB    i##$788$X^SZZ]]MMfMMOOr6   c                     t           j                            d          }t          j        |                    d           dz  |                    d          dz            } |t          j        |fi |j        S )Nr  r9   r   )r&   rJ   r   r   Boundsr(  r3   )r\   funr`   r   boundss        r4   optzTestTransitionToRNG.opt  sh    i##$788#**Q--"!4cjjmmb6HIIs8>644V4466r6   c                 2     | j         t          j        fi |S rZ   )r-  r   differential_evolutionr\   r`   s     r4   r/  z*TestTransitionToRNG.differential_evolution  s    tx7BB6BBBr6   c                 2     | j         t          j        fi |S rZ   )r-  r   dual_annealingr0  s     r4   r2  z"TestTransitionToRNG.dual_annealing  s    tx/::6:::r6   c                     t           j                            d          }|                    d          }t          j        t          j        t          j        |fddi|S )Nr  r9   	directionrJ   )r&   rJ   r   r   
check_gradr(  	rosen_der)r\   r`   r   r3   s       r4   r5  zTestTransitionToRNG.check_grad  sb    i##$788JJqMM"8>83Eq A A-5A9?A A 	Ar6   c                 L    t          j        dddi|                                S )Nr$  densityr   )r$  )r   random_arraytoarrayr0  s     r4   r9  z TestTransitionToRNG.random_array  s*    "CCSCFCCKKMMMr6   c                 L    t          j        dddi|                                S Nr   r8  r   r$  )r   rJ   r:  r0  s     r4   rJ   zTestTransitionToRNG.random  s)    };;S;F;;CCEEEr6   c                 L    t          j        dddi|                                S r<  )r   randr:  r0  s     r4   r>  zTestTransitionToRNG.rand  s)    {9939&99AACCCr6   c                     t           j                            d          }|                    d          }t          j        j        |fi |S )Nr  r$  )r&   rJ   r   r   r   svds)r\   r`   r   As       r4   r@  zTestTransitionToRNG.svds  sD    i##$788JJx  }!!..v...r6   c                 \    t          j        j        j        di |                                S )Nr9   )r9   )r   	transformRotationrJ   	as_matrixr0  s     r4   random_rotationz#TestTransitionToRNG.random_rotation  s+     )0==f==GGIIIr6   c                     t           j                            d          }|                    d          }t          j        t          j        |fi |j        S Nr  r   )r&   rJ   r   r   goodness_of_fitlaplacepvaluer\   r`   r   r!   s       r4   rI  z#TestTransitionToRNG.goodness_of_fit  sG    i##$788zz#$U]DCCFCCJJr6   c                     t           j                            d          }t          |                    d                    }d }t	          j        ||fi |j        S )Nr  r8   r   c                 \    t          j        | |          t          j        ||          z
  S )N)axis)r&   mean)r3   yrP  s      r4   	statisticz7TestTransitionToRNG.permutation_test.<locals>.statistic  s+    "'!$*?*?*?"'!RVBWBWBW*W#Wr6   )r&   rJ   r   tupler   permutation_testrK  )r\   r`   r   r!   rS  s        r4   rU  z$TestTransitionToRNG.permutation_test  sX    i##$788SZZ))**WWW%dI@@@@GGr6   c                     t           j                            d          }|                    d          f}t          j        |t           j        fi |j        S rH  )r&   rJ   r   r   	bootstraprQ  confidence_intervalrL  s       r4   rW  zTestTransitionToRNG.bootstrap  sI    i##$788

3!tRW7777KKr6   c                     t           j                            d          }|                    d          \  }}}t          j        ||fd|i|j        S )Nr  )r9   r   control)r&   rJ   r   r   dunnettrK  )r\   r`   r   r3   rR  rZ  s         r4   r[  zTestTransitionToRNG.dunnett	  sQ    i##$788

8,,1g}Q==7=f==DDr6   c                 R   d }t          j        t          j         dt          j        z            t          j        t          j         dt          j        z            t          j        t          j         dt          j        z            g}t          j        d|d|d|}|j        S )Nc                     t          j        | d                   dt          j        | d                   dz  z  z   d| d         dz  z  t          j        | d                   z  z   S )Nr      r7   r8   g?r:   )r&   rp   )r3   s    r4   
f_ishigamiz5TestTransitionToRNG.sobol_indices.<locals>.f_ishigami  sX    26!A$<<!bfQqTlla6G2G#G%(AaDAI%6!%E$F Gr6   r8   )locscalei   )rT   rD   distsr[   )r   uniformr&   r   sobol_indicesfirst_order)r\   r`   r_  rb  r  s        r4   rd  z!TestTransitionToRNG.sobol_indices  s    	G 	G 	GBE6RU;;;BE6RU;;;BE6RU;;;= !QzTQQ&QQr6   c                 @     |dddi|}|                     d          S )Ndr7   r:   r[   )rJ   )r\   enginer`   qrngs       r4   
qmc_enginezTestTransitionToRNG.qmc_engine  s,    v$$$V$${{1~~r6   c                 <     | j         t          j        j        fi |S rZ   )rj  r   qmcHaltonr0  s     r4   haltonzTestTransitionToRNG.halton  s!    tuy/::6:::r6   c                 <     | j         t          j        j        fi |S rZ   )rj  r   rl  Sobolr0  s     r4   sobolzTestTransitionToRNG.sobol  s     tuy99&999r6   c                 <     | j         t          j        j        fi |S rZ   )rj  r   rl  LatinHypercuber0  s     r4   latin_hypercubez#TestTransitionToRNG.latin_hypercube!  s!    tuy7BB6BBBr6   c                 <     | j         t          j        j        fi |S rZ   )rj  r   rl  PoissonDiskr0  s     r4   poisson_diskz TestTransitionToRNG.poisson_disk$  s!    tuy4?????r6   c                 \    t          j        j        dgfi |}|                    d          S )Nr   r:   )r   rl  MultivariateNormalQMCrJ   r\   r`   Xs      r4   multivariate_normal_qmcz+TestTransitionToRNG.multivariate_normal_qmc'  s.    I+QC::6::xx{{r6   c                 `    t          j        j        ddgdfi |}|                    d          S )Ng      ?r:   )r   rl  MultinomialQMCrJ   rz  s      r4   multinomial_qmcz#TestTransitionToRNG.multinomial_qmc+  s2    I$c3Z==f==xx{{r6   c                     t           j                            d          }t          |                    d                    }t	          j        di |}t	          j        |d|ij        S )Nr  rN  methodr[   )r&   rJ   r   rT  r   PermutationMethodpearsonrrK  )r\   r`   r   r!   r  s        r4   permutation_methodz&TestTransitionToRNG.permutation_method/  s_    i##$788SZZ))**(22622~t3F33::r6   c                     t           j                            d          }t          |                    d                    }t	          j        | }t	          j        di |}|                    |          S )Nr  rN  )r  r[   )r&   rJ   r   rT  r   r  BootstrapMethodrX  )r\   r`   r   r!   r  r  s         r4   bootstrap_methodz$TestTransitionToRNG.bootstrap_method5  sj    i##$788SZZ))**nd#&0000&&f&555r6   r   zmethod, arg_nameseedrandom_statec           	         t           j                            d            d}t           j                            |          }d}t	          j        t          |          5   || fi d|||i d d d            n# 1 swxY w Y   t           j                            |          } || |          } || |          }t          ||           |j        dv r || fi ||i}t          ||           d S t           j        	                    |          } || fi ||i} || fi ||i}|j        dv rU || fi |t           j        	                    |          i}	t          |	|            || fi ||i}
t          |
|           d S t           j                            |            || fi |d i}t          ||           t          ||           d S )Nl   p_ z3got multiple values for argument now known as `rng`r   r   )r   >   r[  rd  >   rq  rn  rw  rt  r  r|  )
r&   rJ   r  r   r   r   r   r   rc   rK   )r\   r  arg_namer  r   r   r   r   r   res1bres2bs              r4   test_rng_deterministicz*TestTransitionToRNG.test_rng_deterministic<  sx   < 		ti##D))G]9G444 	9 	9F488E3$7888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 i##D))vd$$$vd%%%T4   ?:::6$338T"233Dt$$$Fi##D))vd..xo..vd//x.//? M M M F4KKHbi.C.CD.I.I#JKKE%%%F444Hd#344E%%%F
	tvd//x.//T4   T4     s   A88A<?A<N)%rc   rd   re   r  r  r"  r%  r'  r-  r/  r2  r5  r9  rJ   r>  r@  rF  rI  rU  rW  r[  rd  rj  rn  rq  rt  rw  r|  r  r  r  r   r   	fail_slowslowr   r  r[   r6   r4   r  r    s       I I II I I  U U UP P P7 7 7
C C C; ; ;A A AN N NF F FD D D/ / /
J J JK K K
H H HL L L
E E E
    ; ; ;: : :C C C@ @ @    ; ; ;6 6 6 [2[[/		&	n%	$f-	v	(	 	V	~&	 	~	.)	.)	>*	N#	^,	>*	.!	'			&!	v	 &)	&!32  6%! %!7   :%! %! %!r6   r  )r7   N)?multiprocessingr   multiprocessing.poolr   r   r{   r   	fractionsr   r   r&   numpy.testingr   r   r   r   rL   scipy.conftestr   scipy._lib._array_apir	   scipy._lib._utilr
   r   r   r   r   r   r   r   r   r   r   scipy._lib.array_api_extra_libarray_api_extrar   "scipy._lib.array_api_extra.testingr   scipyr   r   r   r   r   r   r   r   r  rF   rQ   rl   ry   r|   r   r   r   r   r   r   r   r  r  r[   r6   r4   <module>r     s^               , , , , , , 				                / / / / / / / /  * * * * * * . . . . . . 1 1 1 1 1 1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 ) ( ( ( ( ( ( ( ( ? ? ? ? ? ? P P P P P P P P P P P P P P P P P P       >  >  >F1 1 1"M M M&  & & &
) ) )@ 2 2 2 2' ' '.7  7  7 t& & & & & & & &$F@ F@ F@ F@ F@ F@ F@ F@R^& ^& ^& ^& ^& ^& ^& ^&B  *~! ~! ~! ~! ~! ~! ~! ~! ~! ~!r6   