
    bi\                        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^                  j`                  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>y)    )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 ]]  }dD ]V  }dD ]O  }t         j                  t         j                  fD ]*  }|ddd|ffD ]  }t        |       D ]  } |||||         , Q X _ y )	N
   c                 t   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                  |       y |dk(  r1|j                  dkD  r!t        |j                  j                  |       y y |!t        |j                  j                  |       y 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         V/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/_lib/tests/test__util.pycheckz"test__aligned_zeros.<locals>.check   s    ueU345%e<=HHUO--EQ**6215=qA5)$%15(G4QWWe$C<AGG(('2c\vvz,,g6  ]AGG(('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) > hh

3 >E"#aAq\!2 >!&u >A!%u=>>>>	>>r6   c                  d   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                  j                  t        j                  j                               }t        |      } t        t        |       t        j                  j                         y )Nr7   a)
r   r   typer&   randomRandomStateassert_raisesr0   	GeneratorPCG64)rsirgs     r4   test_check_random_staterQ   ?   s    
 Q
CcBII112
S
!CcBII112
T
"CcBII112*0#6			RYY__.	/B
R
 CcBII//0r6   c                  l   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              y )Nr7   pool)r7   funciterablec                       e Zd ZddddZy)0test_getfullargspec_no_self.<locals>._rv_genericNr.   c                     y N )selfrH   bcr.   argskwargss          r4   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsZ   s    r6   r8   r9   )__name__
__module____qualname__ra   r[   r6   r4   _rv_genericrW   Y   s    	 	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$QZZ0G+vhdD"&*B0 1$QZZ0G+vz&:D$&($4 5  ]F$V[[1G+ovx&,vhL 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        y # 1 sw Y   y xY w)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    YYs^FffVnG1AAJJ#AFFdNAKK5 !
q 
!Cg	|	$ qM  s   :CCc                      t        d      5 } | j                  t        j                  g d       d d d        y # 1 sw Y   y xY w)Nr8   )r7   r8   r9   r:   )r   rr   mathrp   )ri   s    r4   	test_poolr|   r   s2    	a &A	dhh%& & &s	   #8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        t        t              5 } t         j                  |        d d d        t        j                  t        u        t!        d      5 }t        |j"                        }t        |j                  du        |j%                          |j#                  t         j                  |       }t	        t        |      |       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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   s@   YYs^FffVnG	A (!T#Y(t#$
1663'(

$&'( 
y	! W	"&&& GLLJ&' 
a 	)Aquuu$%		 eeBFFF#T#Y(	) 	)!( ( 	) 	)s%   A>FFA2F$FF!$F-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      sA    gz***88DQ/011r6   c                  v   t        j                  dt         j                        } t        j                  | dz        }t	        d      5 }t        | |j                  d      }t        ||       d d d        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        y # 1 sw Y   xY w# 1 sw Y   y xY w)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Q 	TQ/ACQ!,AC !4Fc"	a 'A""?aGVC[#&' ' ' 's   %D#!9D/#D,/D8c                     t         j                  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                  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 y # t        $ r Y y w xY w)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      s   
))


!C sd
CC66#;!66#;!99 sd
;C66#;!66#;!99 se
DC66#;!66#;!99 se
<C66#;!66#;!99ii##%
 sd
CC66#;!66#;!99 sd
;C66#;!66#;!99 se
DC66#;!66#;!99 se
<C66#;!66#;!993  s   2K# #	K/.K/c            	       8   e Zd Zej                  j                  dd ej                  d       ej                  d       ej                  d      g      d        Z
ej                  j                  dd ej                  dg       edd      g      d        Zd Zy)	TestValidateIntrD   r:   c                 *    t        |d      }|dk(  sJ y )NrD   r:   )r   r\   rD   s     r4   test_validate_intz!TestValidateInt.test_validate_int   s    !S!Avvr6         @r7   c                 |    t        j                  t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nzn must be an integermatchrD   )pytestr   	TypeErrorr   r   s     r4   test_validate_int_badz%TestValidateInt.test_validate_int_bad   s0    ]]9,BC 	"!S!	" 	" 	"s   2;c                 ~    t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)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   s6    ]]: .; < 	&"c1%	& 	& 	&s   3<N)rc   rd   re   r   markparametrizer&   r@   int16r   r   r   r   r   r[   r6   r4   r   r      s    [[S1hbhhqk8288A;"LM N [[S3!x1~"FG" H"&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
y
)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                    | j                  d      }| j                  d      }| j                  d      }||cxk(  r|cxk(  rdk(  sJ  J t        j                  d      }t        j                  t
        |      5  | j                  d       d d d        t        j                  d      }t        j                  t
        |      5  | j                  dd       d d d        t        j                  t
        |      5  | j                  dd       d d d        t        j                  t
        |      5  | j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)	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  sS   ..r2..2.6..2.6t)t)r))))) ))LM]]9G4 	;++r+:	; ))GH]]9G4 	8++BB+7	8]]9G4 	8++BB+7	8]]9G4 	<+++;	< 	<	; 	;
	8 	8	8 	8	< 	<s0   <EE>E*5E6EE'*E36E?c                     ddl m}  |       S )Nr   )Lock)	threadingr   )r\   r   s     r4   
kwarg_lockzTestRenameParameter.kwarg_lock$  s    "vr6   c                    d}| j                  d      }| j                  d      }|5  t        j                  t        |      5  | j                  d      }d d d        d d d        ||cxk(  rcxk(  rdk(  sJ  J t	        j
                  d      }t        j                  t        |      5  | j                  d       d d d        t	        j
                  d      }t        j                  t        |      5  | j                  dd       d d d        |5  t        j                  t        |      5  t        j                  t        |      5  | j                  dd       d d d        d d d        d d d        |5  t        j                  t        |      5  t        j                  t        |      5  | j                  dd	       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   =xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   qxY w# 1 sw Y   uxY w# 1 sw Y   y xY w)
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)  s"    @**2.**r*2 	?0@ ?6626>D?	? t)t)r))))) ))HI]]9G4 	7''2'6	7
 ))CD]]9G4 	4'''3	4 	<y8 <LL!37C< ///;< <	<
  	@y8 @LL!37C@//BB/?@ @	@ 	@'? ?	? 	?	7 	7	4 	4< < < <	< 	<@ @ @ @	@ 	@s   G.G!G.-G;8HH,2H H"H *H,<II4H8II!G+	&G..G8;HHHH  H)	%H,,H58I=II		IIN)rc   rd   re   r   r   r   r   r   fixturer   r   r[   r6   r4   r   r     s]    
 ue$ % ue9 :<* ^^ @r6   r   c                      e Zd Zd Zd Zed        Zej                  j                  dd      ej                  j                  dg d      d	               Zej                  j                  d
d      ej                  j                  dd      ej                  j                  dd      ej                  j                  dd      d                             Zy)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        t        |d d d	      rJ t	        j
                  t        d
      5  t        |d       d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY w)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   xxAq"&&)*T"""Tk:::Tf555 bq*** bqkBBB bqf===]]:-LM 	4$73	4 bqg>>>]]:-HI 	2$51	2 	2		4 	4	2 	2s   "C<%D<DDc                 ^   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 y )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555 Aq6Aq6*:!;<<< ,!7888 -!8999RXXr3&78999RXXr2rvv&67888RXXrvvr266&:;<<< B8b"X*>!?@@@RXXBx"bff&>?@@@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 y )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RVV,- '''!QRVV,H=U###3(QK01 '''3(QK0AU###r6   Tzlazy backends tested separately)
eager_onlyreasonr   )r   r   r   c                    t         j                  j                  d      }|j                  d      }|j                  |      }t	        ||      rJ t        j                  |      d   j                  |j                        }|dk(  r1t        j                  t        d      5  t	        ||       d d d        y |dk(  rt	        ||d	
      sJ y |dk(  rt	        ||      sJ y y # 1 sw Y   y xY w)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  s     ii##O4ZZYZ'JJrN J///FF1Ig""266* z1PQ -a,- -6! JTBBB;& J/// '	- -s   "C##C,numpyzlazy backends only)r   cupyarray_api_stricttorchc                    t         j                  j                  d      }|j                  d      }|j                  |      }t	        t        |      |j                  d             t	        t        |d      |j                  d             t	        t        |dd      |j                  d             d	}t        j                  t        |
      5  t        |d       d d d        t        j                  t        |
      5  t        |d       d d d        t        j                  |      d   j                  t         j                        }t	        t        |      |j                  d             t	        t        |d      |j                  d             t	        t        |dd      |j                  d             t        j                  t        |
      5  t        |d       d d d        t        j                  t        |
      5  t        |d       d d d        y # 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   TxY w# 1 sw Y   y xY w)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  s   
 ii##O4ZZYZ'JJrNa("**U*;<a5rzz%7HIadCRZZPUEVW/]]9E2 	%!V$	%]]9E2 	&!W%	& FF1Ig""266*a("**T*:;a5rzz$7GHadCRZZPTEUV]]9E2 	%!V$	%]]9E2 	&!W%	& 	&	% 	%	& 	&	% 	%	& 	&s0   H H(H5IH%(H25H>I
N)rc   rd   re   r   r   r   r   r   r   skip_xp_backendsr   r   r  r[   r6   r4   r   r   J  s    2"A  $ $ [[!!T)J " L[[\+IJ0 KL0  [[!!'2F!G[[!!&1E!F[[!!"4=Q!R[[!!'2F!G& H S G H&r6   r   c                  @    d }  t        |              }g d}||k(  sJ y )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    s.     &
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@                  jC                  d      ej@                  jD                  ej@                  jG                  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$y")#TestTransitionToRNGc                     t         j                  j                  d      }t        j                  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  >    ii##$78zz!!#**'*":AHHHr6   c                     t         j                  j                  d      }t        j                  j
                  |j                  d      dfi |S r  r  r  s      r4   r  zTestTransitionToRNG.kmeans2  r  r6   c                     t         j                  j                  d      }|j                  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  sK    ii##$78ZZ(
B//BA&Aur6   c                     t         j                  j                  d      }t        j                  |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  s8    ii##$7811#**X2FTVTTr6   c                     t         j                  j                  d      }t        j                  t        j
                  |j                  d      fi |j                  S )Nr  r9   )r&   rJ   r   r   basinhoppingrosenr3   r  s      r4   r'  z TestTransitionToRNG.basinhopping  sA    ii##$78$$X^^SZZ]MfMOOOr6   c                     t         j                  j                  d      }t        j                  |j                  d       dz  |j                  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  s_    ii##$78#**Q-"!4cjjmb6HI8>>64V4666r6   c                 D     | j                   t        j                  fi |S rZ   )r-  r   differential_evolutionr\   r`   s     r4   r/  z*TestTransitionToRNG.differential_evolution  s    txx77B6BBr6   c                 D     | j                   t        j                  fi |S rZ   )r-  r   dual_annealingr0  s     r4   r2  z"TestTransitionToRNG.dual_annealing  s    txx//:6::r6   c                     t         j                  j                  d      }|j                  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  s[    ii##$78JJqM""8>>83E3Eq A-5A9?A 	Ar6   c                 L    t        j                  dddi|j                         S )Ndensityr   )r$  )r   random_arraytoarrayr0  s     r4   r9  z TestTransitionToRNG.random_array  s$    ""CSCFCKKMMr6   c                 L    t        j                  dddi|j                         S Nr8  r   r$  )r   rJ   r:  r0  s     r4   rJ   zTestTransitionToRNG.random  s"    }};S;F;CCEEr6   c                 L    t        j                  dddi|j                         S r<  )r   randr:  r0  s     r4   r>  zTestTransitionToRNG.rand  s"    {{939&9AACCr6   c                     t         j                  j                  d      }|j                  d      }t        j                  j
                  |fi |S )Nr  r$  )r&   rJ   r   r   r   svds)r\   r`   r   As       r4   r@  zTestTransitionToRNG.svds  s?    ii##$78JJx }}!!!.v..r6   c                 p    t        j                  j                  j                  di |j	                         S )N)r9   )r   	transformRotationrJ   	as_matrixr0  s     r4   random_rotationz#TestTransitionToRNG.random_rotation  s+      ))00=f=GGIIr6   c                     t         j                  j                  d      }|j                  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  sF    ii##$78zz#$$U]]DCFCJJJr6   c                     t         j                  j                  d      }t        |j                  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#    "''!$*?"''!RVBW*W#Wr6   )r&   rJ   r   tupler   permutation_testrK  )r\   r`   r   r!   rS  s        r4   rU  z$TestTransitionToRNG.permutation_test  sK    ii##$78SZZ)*W%%dI@@GGGr6   c                     t         j                  j                  d      }|j                  d      f}t        j                  |t         j
                  fi |j                  S rH  )r&   rJ   r   r   	bootstraprQ  confidence_intervalrL  s       r4   rW  zTestTransitionToRNG.bootstrap  sG    ii##$78

3!tRWW77KKKr6   c                     t         j                  j                  d      }|j                  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	  sL    ii##$78

8,1g}}Q=7=f=DDDr6   c                    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    266!A$<!bffQqTla6G2G#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BEE6RUU;BEE6RUU;BEE6RUU;= !!QzTQ&Qr6   c                 8     |dddi|}|j                  d      S )Ndr7   r:   r[   )rJ   )r\   enginer`   qrngs       r4   
qmc_enginezTestTransitionToRNG.qmc_engine  s"    $$V${{1~r6   c                 X     | j                   t        j                  j                  fi |S rZ   )rj  r   qmcHaltonr0  s     r4   haltonzTestTransitionToRNG.halton  s"    tuyy//:6::r6   c                 X     | j                   t        j                  j                  fi |S rZ   )rj  r   rl  Sobolr0  s     r4   sobolzTestTransitionToRNG.sobol  s     tuyy9&99r6   c                 X     | j                   t        j                  j                  fi |S rZ   )rj  r   rl  LatinHypercuber0  s     r4   latin_hypercubez#TestTransitionToRNG.latin_hypercube!  s"    tuyy77B6BBr6   c                 X     | j                   t        j                  j                  fi |S rZ   )rj  r   rl  PoissonDiskr0  s     r4   poisson_diskz TestTransitionToRNG.poisson_disk$  s"    tuyy44???r6   c                 f    t        j                  j                  dgfi |}|j                  d      S )Nr   r:   )r   rl  MultivariateNormalQMCrJ   r\   r`   Xs      r4   multivariate_normal_qmcz+TestTransitionToRNG.multivariate_normal_qmc'  s+    II++QC:6:xx{r6   c                 j    t        j                  j                  ddgdfi |}|j                  d      S )Ng      ?r:   )r   rl  MultinomialQMCrJ   rz  s      r4   multinomial_qmcz#TestTransitionToRNG.multinomial_qmc+  s/    II$$c3Z=f=xx{r6   c                     t         j                  j                  d      }t        |j                  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/  sW    ii##$78SZZ)*((262~~t3F3:::r6   c                     t         j                  j                  d      }t        |j                  d            }t	        j
                  | }t	        j                  di |}|j                  |      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  s_    ii##$78SZZ)*nnd#&&00&&f&55r6   r   zmethod, arg_nameseedrandom_statec           	      p   t         j                  j                  d        d}t         j                  j                  |      }d}t	        j
                  t        |      5   || fi d|||i d d d        t         j                  j                  |      } || |      } || |      }t        ||       |j                  dv r || fi ||i}t        ||       y t         j                  j                  |      } || fi ||i} || fi ||i}|j                  dv rL || fi |t         j                  j                  |      i}	t        |	|        || fi ||i}
t        |
|       y t         j                  j                  |        || fi |d i}t        ||       t        ||       y # 1 sw Y   AxY w)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<  s   < 			tii##D)G]]9G4 	948E3$78	9 ii##D)d$d%T4 ??::$38T"23Dt$ii##D)d.xo.d/x./?? M M 4KHbii.C.CD.I#JKE%44Hd#34E%
		td/x./T4 T4 ?	9 	9s   F++F5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UP7
C;ANFD/
JK
HL
E
;:C@;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R R R R ) ( ? P P P    >  >F1"M&&
)@ 2 2'.7 t& &$F@ F@R^& ^&B*~! ~!r6   