
    Џkhr]                        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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`                  jb                  d        Z2d Z3d Z4d Z5d Z6d Z7e!dd       Z8d Z9d Z: 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is_numpy)_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         W/var/www/teggl/fontify/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   r8   r:      )r$   r%   Nr8   r9   r:   )r'   uint8float64range)niterr6   r!   nr2   r(   r,   js           r5   test__aligned_zerosrG      s    E. 3 > 	>A) > hh

3 >E"#aAq\!2 >!&u >A!%u=>>>>	>>r7   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 )Nr8   a)
r   r   typer'   randomRandomStateassert_raisesr1   	GeneratorPCG64)rsirgs     r5   test_check_random_staterR   ?   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//0r7   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 )Nr8   pool)r8   funciterablec                       e Zd ZddddZy)0test_getfullargspec_no_self.<locals>._rv_genericNr/   c                     y N )selfrI   bcr/   argskwargss          r5   _rvsz5test_getfullargspec_no_self.<locals>._rv_generic._rvsZ   s    r7   r9   r:   )__name__
__module____qualname__rb   r\   r7   r5   _rv_genericrX   Y   s    	 	r7   rg   )rI   r^   r_   r`   ra   rc   r/   )r   r   __init__r   r   __call__rb   )pargspecrg   rv_objs       r5   test_getfullargspec_no_selfrm   P   s    1A$QZZ0G+vhdD"&*B0 1$QZZ0G+vz&:D$&($4 5  ]F$V[[1G+ovx&,vhL Mr7   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      $@r8   Fr   )r'   arangesinr   r   _mapfuncmaprT   	_own_poollistr   rM   RuntimeError)in_argout_argrj   outs       r5   test_mapwrapper_serialrz   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)Nr9   )r8   r9   r:   r;   )r   rs   mathrq   )rj   s    r5   	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)Nro   r9   TF)r'   rp   rq   r   r   ru   r   rt   
isinstancerT   PWLrr   rM   	ExceptionrJ   r1   r   rs   close)rw   rx   rj   ry   excinfoqs         r5   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 r[   )r   r   r'   arrayru   rq   )r4   r^   workerss      r5   user_of_workersr      sA    gz***88DQ/011r7   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          @r9   )r   r^   )r^   )r^   r   )
r'   linspacepirq   r   r   rs   r   	functoolspartial)arrreqrj   vpart_fs        r5   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)Nr9      d   T)lowhighr/   endpoint)r   )r   r/   r   r   Fr;   )	r'   rK   rL   r   maxminr,   default_rngAttributeError)rngr   s     r5   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)	TestValidateIntrE   r;   c                 *    t        |d      }|dk(  sJ y )NrE   r;   )r   r]   rE   s     r5   test_validate_intz!TestValidateInt.test_validate_int   s    !S!Avvr7         @r8   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matchrE   )pytestr   	TypeErrorr   r   s     r5   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   rE   r   )r   r   r1   r   r]   s    r5   test_validate_int_below_minz+TestValidateInt.test_validate_int_below_min   s6    ]]: .; < 	&"c1%	& 	& 	&s   3<N)rd   re   rf   r   markparametrizer'   rA   int16r   r   r   r   r   r\   r7   r5   r   r      s    [[S1hbhhqk8288A;"LM N [[S3!x1~"FG" H"&r7   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 r[   r\   r]   r   s     r5   old_keyword_still_acceptedz.TestRenameParameter.old_keyword_still_accepted      
r7   z1.9.0)dep_versionc                     |S r[   r\   r   s     r5   old_keyword_deprecatedz*TestRenameParameter.old_keyword_deprecated  r   r7   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        r5   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     r5   
kwarg_lockzTestRenameParameter.kwarg_lock$  s    "vr7   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          r5   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)rd   re   rf   r   r   r   r   r   fixturer   r   r\   r7   r5   r   r     s]    
 ue$ % ue9 :<* ^^ @r7   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)Nr8   r9   r:   	propagate)
nan_policyomitThe input contains nan valuesr   raiseznan_policy must be one ofnan)r'   r   r   r   r   r   r1   )r]   r"   s     r5   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(   )r8   r9   r:   r8   r9   r:   r;   )      ?r         @)r                  @r   r   r   r   r   r   )r   r'   r   floatr   r   s    r5   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&>?@@@r7   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 )Nr8   r9   3objectr   1r:   )r'   r   r   r   )r]   data1data2data3data4s        r5   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###r7   Tzlazy backends tested separately)
eager_onlyreasonr   )r   r   r   c                 t   t         j                  j                  d      }|j                  d      }|j                  |      }t	        ||      rJ t        j                  |      d   j                  t         j                        }|dk(  r1t        j                  t        d      5  t	        ||       d d d        y |dk(  rLt        |      sAt        j                  t        d	      5  t	        ||       d d d        t	        ||d
      sJ y |dk(  rt	        ||      sJ y y # 1 sw Y   y xY w# 1 sw Y   ;xY w)N   }? r9   r:   r;   rY   r8   r9   r8   r   r   r   r   z!nan_policy='omit' is incompatibleTxp_omit_okayr   )r'   rK   r   asarrayr   xpxatsetr   r   r   r1   r
   )r]   xpr   r   x0r4   s         r5   test_array_apizTestContainsNaN.test_array_apiz  s    ii##O4ZZYZ'JJrN J///FF1Ig""266* z1PQ -a,- -6!(2,z1TU -a,- JTBBB;& J/// '- -- -s   &D"'D."D+.D7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   rY   Fr   r   Tr   znot supported for lazy arraysr   r   r   )r'   rK   r   r   r	   r   r   r   r   r   r   r   r   )r]   r   r   r   r4   r   s         r5   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)rd   re   rf   r   r   r   r   r   r   skip_xp_backendsr   r   r  r\   r7   r5   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&r7   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    r5   mock_strz(test__rng_html_rewrite.<locals>.mock_str  s    
 r7   )np.random.default_rng()r  r  r	  )r   )r  resrefs      r5   test__rng_html_rewriter    s.     &
H
%
'CC #::r7   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edfg      d!                      Z$y")#TestTransitionToRNGc                     t         j                  j                  d      }t        j                  j
                  |j                  d      dfi |S N   2Faj  )   r:   rY   r:   r'   rK   r   r   vqkmeans2r]   ra   r   s      r5   kmeanszTestTransitionToRNG.kmeans  >    ii##$78zz!!#**'*":AHHHr7   c                     t         j                  j                  d      }t        j                  j
                  |j                  d      dfi |S r  r  r  s      r5   r  zTestTransitionToRNG.kmeans2  r  r7   c                     t         j                  j                  d      }|j                  d      \  }}}t        j                  ||fi |} ||      S )Nr  )r:   r   )r'   rK   r   r   BarycentricInterpolator)r]   ra   r   x1x2y1fs          r5   barycentriczTestTransitionToRNG.barycentric  sK    ii##$78ZZ(
B//BA&Aur7   c                     t         j                  j                  d      }t        j                  |j                  d      dfi |S )Nr  r   r   r:   )r'   rK   r   r   clarkson_woodruff_transformr  s      r5   r&  z/TestTransitionToRNG.clarkson_woodruff_transform  s8    ii##$7811#**X2FTVTTr7   c                     t         j                  j                  d      }t        j                  t        j
                  |j                  d      fi |j                  S )Nr  r:   )r'   rK   r   r   basinhoppingrosenr4   r  s      r5   r(  z TestTransitionToRNG.basinhopping  sA    ii##$78$$X^^SZZ]MfMOOOr7   c                     t         j                  j                  d      }t        j                  |j                  d       dz  |j                  d      dz        } |t        j
                  |fi |j                  S )Nr  r:   r   )r'   rK   r   r   Boundsr)  r4   )r]   funra   r   boundss        r5   optzTestTransitionToRNG.opt  s_    ii##$78#**Q-"!4cjjmb6HI8>>64V4666r7   c                 D     | j                   t        j                  fi |S r[   )r.  r   differential_evolutionr]   ra   s     r5   r0  z*TestTransitionToRNG.differential_evolution  s    txx77B6BBr7   c                 D     | j                   t        j                  fi |S r[   )r.  r   dual_annealingr1  s     r5   r3  z"TestTransitionToRNG.dual_annealing  s    txx//:6::r7   c                     t         j                  j                  d      }|j                  d      }t        j                  t        j
                  t        j                  |fddi|S )Nr  r:   	directionrK   )r'   rK   r   r   
check_gradr)  	rosen_der)r]   ra   r   r4   s       r5   r6  zTestTransitionToRNG.check_grad  s[    ii##$78JJqM""8>>83E3Eq A-5A9?A 	Ar7   c                 L    t        j                  dddi|j                         S )Ndensityr   )r%  )r   random_arraytoarrayr1  s     r5   r:  z TestTransitionToRNG.random_array  s$    ""CSCFCKKMMr7   c                 L    t        j                  dddi|j                         S Nr9  r   r%  )r   rK   r;  r1  s     r5   rK   zTestTransitionToRNG.random  s"    }};S;F;CCEEr7   c                 L    t        j                  dddi|j                         S r=  )r   randr;  r1  s     r5   r?  zTestTransitionToRNG.rand  s"    {{939&9AACCr7   c                     t         j                  j                  d      }|j                  d      }t        j                  j
                  |fi |S )Nr  r%  )r'   rK   r   r   r   svds)r]   ra   r   As       r5   rA  zTestTransitionToRNG.svds  s?    ii##$78JJx }}!!!.v..r7   c                 p    t        j                  j                  j                  di |j	                         S )N)r:   )r   	transformRotationrK   	as_matrixr1  s     r5   random_rotationz#TestTransitionToRNG.random_rotation  s+      ))00=f=GGIIr7   c                     t         j                  j                  d      }|j                  d      }t        j                  t        j
                  |fi |j                  S Nr  r   )r'   rK   r   r   goodness_of_fitlaplacepvaluer]   ra   r   r"   s       r5   rJ  z#TestTransitionToRNG.goodness_of_fit  sF    ii##$78zz#$$U]]DCFCJJJr7   c                     t         j                  j                  d      }t        |j                  d            }d }t	        j
                  ||fi |j                  S )Nr  r9   r   c                 `    t        j                  | |      t        j                  ||      z
  S )N)axis)r'   mean)r4   yrQ  s      r5   	statisticz7TestTransitionToRNG.permutation_test.<locals>.statistic  s#    "''!$*?"''!RVBW*W#Wr7   )r'   rK   r   tupler   permutation_testrL  )r]   ra   r   r"   rT  s        r5   rV  z$TestTransitionToRNG.permutation_test   sK    ii##$78SZZ)*W%%dI@@GGGr7   c                     t         j                  j                  d      }|j                  d      f}t        j                  |t         j
                  fi |j                  S rI  )r'   rK   r   r   	bootstraprR  confidence_intervalrM  s       r5   rX  zTestTransitionToRNG.bootstrap  sG    ii##$78

3!tRWW77KKKr7   c                     t         j                  j                  d      }|j                  d      \  }}}t        j                  ||fd|i|j
                  S )Nr  )r:   r   control)r'   rK   r   r   dunnettrL  )r]   ra   r   r4   rS  r[  s         r5   r\  zTestTransitionToRNG.dunnett  sL    ii##$78

8,1g}}Q=7=f=DDDr7   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      r8   r9   g?r;   )r'   rq   )r4   s    r5   
f_ishigamiz5TestTransitionToRNG.sobol_indices.<locals>.f_ishigami  sX    266!A$<!bffQqTla6G2G#G%(AaDAI%6!%E$F Gr7   r9   )locscalei   )rU   rE   distsr\   )r   uniformr'   r   sobol_indicesfirst_order)r]   ra   r`  rc  r  s        r5   re  z!TestTransitionToRNG.sobol_indices  s    	GBEE6RUU;BEE6RUU;BEE6RUU;= !!QzTQ&Qr7   c                 8     |dddi|}|j                  d      S )Ndr8   r;   r\   )rK   )r]   enginera   qrngs       r5   
qmc_enginezTestTransitionToRNG.qmc_engine  s"    $$V${{1~r7   c                 X     | j                   t        j                  j                  fi |S r[   )rk  r   qmcHaltonr1  s     r5   haltonzTestTransitionToRNG.halton  s"    tuyy//:6::r7   c                 X     | j                   t        j                  j                  fi |S r[   )rk  r   rm  Sobolr1  s     r5   sobolzTestTransitionToRNG.sobol   s     tuyy9&99r7   c                 X     | j                   t        j                  j                  fi |S r[   )rk  r   rm  LatinHypercuber1  s     r5   latin_hypercubez#TestTransitionToRNG.latin_hypercube#  s"    tuyy77B6BBr7   c                 X     | j                   t        j                  j                  fi |S r[   )rk  r   rm  PoissonDiskr1  s     r5   poisson_diskz TestTransitionToRNG.poisson_disk&  s"    tuyy44???r7   c                 f    t        j                  j                  dgfi |}|j                  d      S )Nr   r;   )r   rm  MultivariateNormalQMCrK   r]   ra   Xs      r5   multivariate_normal_qmcz+TestTransitionToRNG.multivariate_normal_qmc)  s+    II++QC:6:xx{r7   c                 j    t        j                  j                  ddgdfi |}|j                  d      S )Ng      ?r;   )r   rm  MultinomialQMCrK   r{  s      r5   multinomial_qmcz#TestTransitionToRNG.multinomial_qmc-  s/    II$$c3Z=f=xx{r7   c                     t         j                  j                  d      }t        |j                  d            }t	        j
                  di |}t	        j                  |d|ij                  S )Nr  rO  methodr\   )r'   rK   r   rU  r   PermutationMethodpearsonrrL  )r]   ra   r   r"   r  s        r5   permutation_methodz&TestTransitionToRNG.permutation_method1  sW    ii##$78SZZ)*((262~~t3F3:::r7   c                     t         j                  j                  d      }t        |j                  d            }t	        j
                  | }t	        j                  di |}|j                  |      S )Nr  rO  )r  r\   )r'   rK   r   rU  r   r  BootstrapMethodrY  )r]   ra   r   r"   r  r  s         r5   bootstrap_methodz$TestTransitionToRNG.bootstrap_method7  s_    ii##$78SZZ)*nnd#&&00&&f&55r7   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\  re  >   rr  ro  rx  ru  r  r}  )
r'   rK   r  r   r   r   r   r   rd   rL   )r]   r  arg_namer  r   r   r   r   r   res1bres2bs              r5   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)%rd   re   rf   r  r  r#  r&  r(  r.  r0  r3  r6  r:  rK   r?  rA  rG  rJ  rV  rX  r\  re  rk  ro  rr  ru  rx  r}  r  r  r  r   r   	fail_slowslowr   r  r\   r7   r5   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	 &)	&!52 8%!9  <%!r7   r  )r8   N)@multiprocessingr   multiprocessing.poolr   r   r|   r   	fractionsr   r   r'   numpy.testingr   r   r   r   rM   scipy.conftestr   scipy._lib._array_apir	   r
   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  rG   rR   rm   rz   r}   r   r   r   r   r   r   r   r  r  r\   r7   r5   <module>r     s      , 	     /  * . ;R R R R ) ( ? P P P    >  >F1"M&&
)@ 2 2'.7 t& &$F@ F@R`& `&F*! !r7   