
    Cpj                     :   S SK r S SKrS SKJr  S SKJrJrJrJ	r	  S SK
JrJrJrJrJrJrJrJrJrJr  S SKJrJr  S SKJr  S SKJs  Jr  S SKJr  \ R@                  RB                  r!\/r"\" SS	5      S
 5       r#\RH                  " S S1S9S 5       r%S r&\" \RN                  5       " S S5      5       r(\" SS5      S 5       r)\" \5       " S S5      5       r*\" SS5      S 5       r+S SSSS.S jr,\-" \." \5      5      r/\" \R`                  5       " S S5      5       r1g)    N)stats)_xp_searchsorted_estimated_cdf_methods$_estimated_cdf_discontinuous_methods!_estimated_cdf_continuous_methods)
xp_default_dtypeis_numpyis_torchis_jaxis_cupyis_array_api_strictmake_xp_test_caseSCIPY_ARRAY_APIxp_sizexp_copy)xp_assert_closexp_assert_equal)_apply_over_batch)_broadcast_arrays)x   )pr   c                    US:X  a  U [         R                  " U 5      )    n [         R                  " U5      nUR                  5       nSX'   US:X  aS  U R                  S:X  a  [         R                  " XS   5      O([
        R                  R                  X5      R                  nOLUR                  S5      (       a!  [        [         R                  " U 5      X5      nO[         R                  " XUS9n[         R                  " U5      nUS:X  aB  [         R                  " [         R                  " U 5      5      (       a  [         R                  US S & [         R                  XT'   U$ )	Nomit      ?harrell-davisr   r   roundmethod	propagate)npisnancopysize	full_liker   mstatshdquantilesdata
startswithwinsor_reference_1dsortquantileasarrayanynan)r   r   
nan_policyr   p_maskress         [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/scipy/stats/tests/test_quantile.pyquantile_reference_last_axisr4      s    Vrxx{lOXXa[F	AAI ()!r||At$LL,,Q277 				7	#	#!"''!*a8kk!v.
**S/C[ RVVBHHQK%8%8A&&CKJ       )excludedc                    [        U 5      nUS:X  aF  [        US:  a  [        R                  " X-  5      O[        R                  " X1-  S-
  5      5      nX   $ US:X  aF  [        US:  a  [        R                  " X-  5      O[        R
                  " X1-  S-
  5      5      nX   $ US:X  aB  [        US:  a  [        R
                  " X-  5      O[        R                  " X1-  S-
  5      5      nU W   $ )Nround_nearestr   r   round_outwardround_inward)lenintr!   r   floorceil)yr   r   njs        r3   r*   r*   4   s     	AA 1s70CD
 4K	 
?	"1s7	0BC 4K 
>	!!c'rxx	/BCQ4Kr5   c                   [         R                  " XS5      [         R                  " [         R                  " U5      US5      p[        XX55      n[         R                  " USU5      nU(       d  [         R                  " XbS9nU$ )Naxis)r!   moveaxis
atleast_1dr4   squeeze)r   r   rF   r0   keepdimsr   r2   s          r3   quantile_referencerK   B   s^    ;;q#R[[q1A4%Lq
&qZ
@C
++c2t
$Cjj(Jr5   c                      \ rS rSrS rS r\" SSS/S9\R                  R                  S/ S	Q5      \R                  R                  S
/ SQ5      \R                  R                  SSS/5      S 5       5       5       5       r
\R                  R                  S5      \" SSSS/S9\R                  R                  SSS/5      \R                  R                  SSS/5      \R                  R                  S/ SQ5      \R                  R                  SSS/5      \R                  R                  S/ SQ5      \R                  R                  SSS/5      S 5       5       5       5       5       5       5       5       rS r\R                  R                  S/ S\R                  0 4/ SQS SSS!\R                  /\R                  SS"\R                  \R                  /0 4/ SQ/ / 0 4\R                  S#//S\R                  S#/SS$04/ / /S\R                   " S#\R                  5      SS 04/ / /S\R"                  " S%5      SSS&.4/ / /S\R"                  " S'5      SSS&.4/ SS(/\R                   " S#\R                  5      0 4\R$                  " SS)5      R'                  S*5      SS+///S,SS&.4SS#/S"S-/// S.Q/ S/Q/S,SS&.4/
5      S0 5       r\R                  R                  S/ S1Q5      \R                  R                  SSS/5      S2 5       5       r\R                  R                  S/ S3Q5      S4 5       r\R                  R                  S5SS/5      S6 5       r\R                  R                  S/ S7Q5      S8 5       r\R                  R                  S5      \R                  R                  S/ S7Q5      \R                  R                  S9S:S;/5      S< 5       5       5       r\" SSSS/S9S= 5       rS>rg,)?TestQuantileK   c           	      	   UR                  / SQ5      nUR                  S5      nSn[        R                  " [        US9   [        R
                  " UR                  SS/5      U5        S S S 5        [        R                  " [        5         [        R
                  " UR                  SS/5      U5        S S S 5        S	n[        R                  " [        US9   [        R
                  " X!R                  S
S/5      5        S S S 5        Sn[        R                  " [        US9   [        R
                  " X#UR                  X!R                  5      S9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        [        R                  " [        US9   [        R
                  " X#SS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        [        U5      (       dV  Sn[        R                  " [        US9   [        R
                  " UR                  UR                  SS/5      USS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#USS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#USS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        S n[        R                  " [        US9   [        R
                  " X!R                  SS!/5      SS9  S S S 5        g ! , (       d  f       GN7= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN^= f! , (       d  f       GN9= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNo= f! , (       d  f       GNG= f! , (       d  f       GN = f! , (       d  f       g = f)"Nr   r6      r   `x` must have real dtype.matchTF      ?      ?r6   z"`p` must have real floating dtype.r   r   z`weights` must have real dtype.)weights"`axis` must be an integer or None.rE   r   rD   7`axis` is not compatible with the shapes of the inputs.The input contains nan valuesraiser0   z`method` must be one of...a duckr   z4`method='harrell-davis'` does not support `weights`.r   rV   r   z4`method='round_nearest'` does not support `weights`.r9   /If specified, `keepdims` must be True or False.*   rJ   zD`keepdims` may be False only if the length of `p` along `axis` is 1.333333?)
r-   pytestraises
ValueErrorr   r,   astype	complex64r   r/   )selfxpr   r   messages        r3   test_input_validation"TestQuantile.test_input_validationN   s   JJy!JJsO-]]:W5NN2::tUm4a8 6]]:&NN2::tQi0!4 ' 7]]:W5NN1jj!Q01 6 4]]:W5NN11ll)CD 6 7]]:W5NN1c* 6]]:W5NN1g. 6 L]]:W5NN1a( 6 bzz5Gz9rzz2661a.91Q : /]]:W5NN11 6 I]]:W5NN1?C 6 I]]:W5NN1?C 6 D]]:W5NN1"- 6 Y]]:W5NN1jj#s4uE 65[ 65&& 65 65 6555 65
 :9 65 65 65 65 65s    )N)N+(N="/O4O!+O3$P-3PP)<P;6Q0Q)'Q1
N(+
N:=
O
O!
O03
P
P
P&)
P8;
Q

Q
Q.1
Q?c                    [         R                  " XS5      nUR                  n[         R                  " U5      nUR	                  SUR
                  S   [         R                  S9n/ n/ nU HJ  nUR                  U5      n	UR                  [         R                  " X5      5        UR                  U	5        ML     [         R                  " U5      [         R                  " U5      pvUS:  a)  [         R                  " USS9[         R                  " USS9pv[         R                  " USU5      [         R                  " USU5      pv[         R                  " XqR                  S9nXv4$ )NrD   
   )r$   dtyper6   r   rE   ro   )r!   swapaxesndim
atleast_2dintegersshapeint32permutedappendrepeatstackrI   r-   ro   )
rh   r   rF   rngrr   countsx_reprV   x_counts_s
             r3   _get_weights_x_repTestQuantile._get_weights_x_rep   s   KK$vvMM!bqwwr{"((CBll6*GLL2/0NN7#  %"((7*;w!8ZZA6

7QR8S7UB5r{{7BPT7Uw**WGG4~r5   TzPyTorch doesn't have `betainc`.cupy)cpu_onlyreason
exceptionsr   )inverted_cdfaveraged_inverted_cdfclosest_observationhazeninterpolated_inverted_cdflinearmedian_unbiasednormal_unbiasedweibullr   r9   r:   r;   _lower_higher	_midpoint_nearestzshape_x, shape_p, axis))rn   NrD   )rn   rn   rD   )rn   )r6   rQ   rD   ))rn   r6   Nr   rV   Fc           	         U(       aH  UR                  S5      (       d  UR                  S5      (       d  US:X  a  [        R                  " S5        [        U5      n[        R
                  R                  S5      nUR                  US9n	UR                  US9n
U(       a  U R                  XU5      u  p[OS U	p[        XUR                  S5      (       a  USS  OUUSUS LS	9nUR                  XS
9UR                  XS
9pUc  UOUR                  XWS
9n[        R                  " XXUS9n[        XR                  XS
95        g )N_r   r   z4`weights` not supported by private (legacy) methods.   lv_r$   r   r    )r   rF   r0   rJ   rp   )r   rV   rF   )r)   rc   skipr   r!   randomdefault_rngr   rK   r-   r   r,   r   )rh   r   shape_xshape_prF   rV   ri   ro   r{   r   r   r}   refr2   s                 r3   test_against_reference#TestQuantile.test_against_reference   s)    ))#..&2C2CG2L2L!?2KKNO $ii##$56JJGJ$JJGJ$!44QcBNGU!1U 6+<+<S+A+AVABZv+t8KM zz!z)2::a:+E1$_'"**W*2RnnQ&MZZZ9:r5   %ignore:torch.searchsorted:UserWarning	jax.numpyrF   r   r   rJ   r0   )r   r    marrayro   float32float64)r   r   r9   c                    [        U5      (       a  US:X  a  [        R                  " S5        U(       a  US;   a  [        R                  " S5        [        R                  R                  S5      nSn	UR	                  U	S9R                  U5      n
UR	                  U	S9R                  U5      nUR	                  U	S9S:  n[        R                  " U5      (       d   e[        R                  X'   U(       d  [        R                  " XS	S
9n[        U5      (       a  UR                  5       nSUS'   SUS'   [        Xt5      nU(       a+  U R                  XU5      u  pnUc  UOUR                  U5      nOS U
pUS:X  a  [        (       d  [        R                  " S5        Ub  [        R                  " S5        [        R                   " S5      n[#        XUS9nUR%                  U5      nUR                  XS9nUc  UOUR                  U5      n[&        R(                  " UUR                  U5      4SU0UD6n[+        X4SS0UD6n[-        UR.                  UR                  UUS95        g [#        XX5S9n[&        R(                  " UR                  U
5      UR                  U5      4SU0UD6n[+        X40 UD6n[-        UUR                  UUS95        g )Nr   (`marray` currently incompatible with JAX>   r9   r   z'These methods don't yet support weightsr         r   皙?TrF   rJ           r         ?-MArray is only available if SCIPY_ARRAY_API=1z)MArray is not yet compatible with weightsrF   rJ   r   maskrV   r0   r   rp   rF   rJ   r0   r   )r   rc   r   r!   r   r   rf   r.   r/   meanr	   ravelgetattrr   r-   r   importorskipdict_get_namespacer   r,   rK   r   r(   )rh   rF   rJ   r0   ro   r   rV   ri   r{   ru   r   r   r   p0r}   r   kwargsmxpx_mpr2   r   s                        r3   test_against_reference_2%TestQuantile.test_against_reference_2   sb    "::*0KKBCv!CCKKABii##$56JJEJ"))%0JJEJ"))%0zzuz%+vvd|||&&t4A
 B<<BBqEBrF"!44QcBNG!(gbjj6IG!1U!"?KL"GH((2FtvFF''+C;;q;,D!(gckk'6JG..s{{1~QwQ&QC$UK&KFKCCHHbjjEj&BC4!+<nnRZZ]BJJqMU7UfU 4V4RZZ5Z9:r5   c                     [         R                  " UR                  SUR                  S9S5      nUR                  [        U5      :X  d   eg )Nrn   rp   r   )r   r,   arangeint64ro   r   )rh   ri   r2   s      r3   test_integer_input_output_dtype,TestQuantile.test_integer_input_output_dtype   s;    nnRYYrY:C@yy,R0000r5   zx, p, ref, kwargsr   rP   rD   g      ?rQ   r6   r   r   r   r   r   rb      rQ   rQ   rQ         ,@N         ?r         ?g      ?      @g      
@c                     [        U5      nUR                  U5      UR                  U5      UR                  X6S9p2n[        R                  " X40 UD6n[	        Xs5        g )Nrp   )r   r-   r   r,   r   )rh   r   r   r   r   ri   default_dtyper2   s           r3   test_edge_casesTestQuantile.test_edge_cases   sO    $ ),JJqM2::a="**S*2VcnnQ,V,!r5   )r   r   r6   c                     / SQnUR                  5       nU(       a  SXQ'   OUR                  U5        [        R                  " UR	                  [        U5      5      SXS9nUR                  [        U5      :X  d   eg )N)rQ   r   r   r   r   r   )r#   popr   r,   zerostupleru   )rh   rF   rJ   ri   ru   	out_shaper2   s          r3   test_size_0TestQuantile.test_size_0  s`     JJL	IOMM$nnRXXeEl3StWyyE),,,,r5   )r   r   r   r   r   r   r   c                    US:X  a*  [         R                  S:  a  [        R                  " S5        [         R                  " S[         R
                  S9n[         R                  " SSS5      n[        R                  " UR                  U5      UR                  U5      US	9n[         R                  " X4UR                  S
5      (       a  USS  OUS	9n[        XRR                  XbR
                  S95        g )Nr   z2.0.1z5Bug in np.quantile (numpy/numpy#26656) fixed in 2.0.1       @rp   r   g     ?g      ?r   r   r   )r!   __version__rc   r   r   r   r   r,   r-   r)   r   )rh   r   ri   r   r   r2   r   s          r3   test_transitionTestQuantile.test_transition!  s     **r~~/GKKOPIIb

+IIa'*nnRZZ]BJJqM&Ikk!V5F5Fs5K5KvabzQWXZZ::Z>?r5   zero_weightsc           
      2   [        U5      (       a-  UR                  S:  a  U(       a  [        R                  " S5        [	        U5      n[
        R                  R                  S5      nSnUR                  SS9nUR                  SS9nU(       a  SXwS:  '   [
        R                  " S	S
S5      n[        R                  " UR                  XcS9UR                  XS9XRR                  XsS9S9n	[
        R                  " XhXWS9n
[        XR                  XS95        g )Nz2.1.3z6`Bug in np.quantile (numpy/numpy#27563) fixed in 2.1.3   z-\"}	r   d   r   r   r   r   r   i,  rp   )r   rV   )r	   r   rc   r   r   r!   r   r   linspacer   r,   r-   r   )rh   r   ri   ro   r{   r   r   rV   r   r2   r   s              r3   test_weights_against_numpy'TestQuantile.test_weights_against_numpy/  s    B<<BNNW4KKPQ $ii##$56JJCJ **#*&%&GcM"KKB$nnRZZZ7A9S$*JJwJ4TVkk!v?ZZZ9:r5   )	r   r   r   r   r   r   r   r   r   c           	         [         R                  R                  S5      nSnUR                  UR                  US95      n[	        U5      nUR                  UR                  US95      nUR                  UR                  US9S:  5      nUR                  UR                  US95      n	UR                  USU	5      n	[        R                  " XWXS9n
[        R                  " XX)    XyU)    US9n[        X5        [        XV5        SnUR                  UR                  US95      n[	        U5      nUR                  UR                  US95      nUR                  UR                  US9S:  5      nUR                  UR                  US95      n	UR                  XR                  U5      nUR                  USU	5      n[        R                  " XWXSS	9n
[        R                  " XU	S
USS9n[        X5        [        XV5        g )Nr   r   r   皙?r   r^   )r   r   rD   )rV   r   rF   r   )rV   r0   r   rF   )r!   r   r   r-   r   wherer   r,   r   r   r/   )rh   r   ri   r{   rA   r   x0r   i_zerorV   r2   r   ru   x_nannedweights_zeroeds                  r3   test_zero_weightsTestQuantile.test_zero_weights@  s   
 ii##$56 JJszzqz)*QZJJszzqz)*CJJAJ.45**SZZQZ/0((62w/nnQ7BnnQwZVG4DVT! JJszzuz-.QZJJszzuz-.CJJEJ2S89**SZZUZ3488FFFA.&"g6nnQ>rRnnX'(.vBH!r5   ru   2   )r   rQ   c                 F   [         R                  R                  S5      nUR                  UR                  US95      nUR                  UR                  US95      nUR	                  U5      n[
        R                  " XVXqS9n[
        R                  " XVUS9n	[        X5        g )Nl   .,+r   r^   r   )r!   r   r   r-   	ones_liker   r,   r   )
rh   r   ru   ri   r{   r   r   rV   r2   r   s
             r3   test_unity_weightsTestQuantile.test_unity_weightsc  s     ii##$56JJszzuz-.JJszzuz-.,,q/nnQ7BnnQ&1!r5   c                    [        SSS9nUR                  UR                  UR                  UR                  /UR                  SS//5      n[        R                  " US40 UDSS0D6n[        XAR                  UR                  S	/5      5        [        R                  " US40 UDSS
0D6n[        XAR                  UR                  UR                  /5      5        g )Nr   rD   r   rF   r6   rQ   r   r0   r   r   r    )r   r-   r/   r   r,   r   )rh   ri   r   r   r2   s        r3   "test_all_nan_harrell_davis_gh24707/TestQuantile.test_all_nan_harrell_davis_gh24707s  s     _26JJ02661a.ABnnQAvA&AZZ67nnQFvF+FZZ(89:r5    )__name__
__module____qualname____firstlineno__rk   r   skip_xp_backendsrc   markparametrizer   filterwarningsr   r   r!   r/   fullr   r   reshaper   r   r   r   r   r   r   __static_attributes__r   r5   r3   rM   rM   K   s5   3Fl& t,M"(+[[X
89 [[5LN[[Y6; 7N9+;2 [[ GHt,M"(+!68[[VaV,[[Z%7[[\+JK[[Wy)&<=[[X'ST[[Y64; 7 U > L 8 -8 I4;l1 [[0
c2662	
b!QRVV,rvvq!RVVRVV.Lb	Q
RR	 FFA;-rvvqkL&+A	Br(CBFF+fb\	:r(C$!)G	Hr(C&)A4+H	I
sCj"''!RVV,b	1
))Ar

"
"9
-sseWIT
*
,q6Aq6
-0A/BT
*
,	""#"" [[VY/[[Z%7- 8 0- [[X	78	@8	@ [[^eT];; <;  [[X		> [[ GH[[X	 [[Wr7m4" 5	 I" t,M"(+!68;8;r5   rM   )ar   )vr   c                 ,    [         R                  " XUS9$ )Nside)r!   searchsorted)r  r  r  s      r3   np_searchsortedr
    s    ??1d++r5   c            	       d   \ rS rSr\R
                  R                  SSS/5      \R
                  R                  SSS/5      \R
                  R                  S/ S	Q5      \R
                  R                  S
SS/5      \R
                  R                  SSS/5      S 5       5       5       5       5       rSrg)Test_XPSearchsortedi  r  leftrighttiesFTru   )r   r   r6   rn      i  i'  )r6   r   )r   r6   r6   rn   r6   rQ   r  nans_xinfs_xc                 4   U(       a&  [        U5      (       a  [        R                  " S5        [        R                  R                  S5      nU(       a  UR                  SUS9nOUR	                  U5      n[        R                  " U[        R                  S9n[        R                  " U[        R                  5      n	[        R                  " U[        R                  * 5      n
[        R                  " [        R                  * [        R                  [        R                  /5      n[        R                  " XR                  S S S-   5      nUR                  [        R                  " XX4SS9SS9nU(       a&  UR	                  U5      S	:  n[        R                  X'   U(       aM  UR	                  U5      S	:  n[        R                  * X'   UR	                  U5      S
:  n[        R                  X'   [        R                   " USS9n[        R                  " U[        R"                  S9[        R                  " U[        R"                  S9pUR                  S5      R$                  n['        U5      S:X  aR  UR(                  S:  aB  UR                  S   S:w  a/  UR+                  UR                  S S UR                  S   4-   US9nOUR                  [-        XUS9US9nUR                  U5      UR                  U5      p[/        XUS9n[1        UU5        g )Nztorch sorts NaNs differentlyl   %Dg hr   r   rp   rD   )rQ   rE   r   g?r   r   r  )r
   rc   r   r!   r   r   rt   r-   r   	nextafterinfr/   broadcast_toru   rw   concatenater+   r   ro   r   rr   emptyr
  r   r   )rh   r  r  ru   r  r  ri   r{   r   xrxlr~   r@   r   xp_default_intr   r2   s                    r3   test_ndTest_XPSearchsorted.test_nd  s2    hrllKK67ii##$67QU+A

5!AJJq

+\\!RVV$\\!bffW%ZZ"&&"&&"&&12__R"!45LLbALK::e$s*DffAG::e$s*DvvgAG::e$s*DffAGGGABzz!2::.

1BJJ0O1A,,1:?qvvzaggbkQ.>((1773B<1772;.8(OC**_Q=^*TCzz!}bjjm1q$/S!r5   r   N)	r   r   r   r   rc   r   r   r  r  r   r5   r3   r  r    s    [[Vfg%67[[VeT]3[[W 'L M[[Xt}5[[Xt}5 " 6 6M 4 8 "r5   r  )r@   r   c                     [         R                  " U 5      nUS:X  a@  [         R                  " U5      (       a%  [         R                  " U[         R                  5      $ US:X  a  X)    n [
        R                  " XSUS9$ )Nr    r   T)rJ   r   )r!   r"   r.   r%   r/   r   estimated_cdf)r   r@   r0   r   i_nans        r3   !estimated_cdf_reference_last_axisr#    s^    HHQKE[ RVVE]]||Arvv&&	v	fIqd6BBr5   r    r   )rF   r0   rJ   r   c                    [        X4US9u  p[        R                  " XS5      [        R                  " XS5      p[        XX55      n[        R                  " USU5      nU(       d  [        R                  " XbS9nU$ )NrE   rD   )r   r!   rG   r#  rI   )r   r@   rF   r0   rJ   r   r2   s          r3   estimated_cdf_referencer%    sc    aV$/DA;;q#R[["%=q
+A*
EC
++c2t
$Cjj(Jr5   c                   	   \ rS rSrS r\R                  R                  S\5      \R                  R                  S/ SQ5      \R                  R                  SSS/5      \R                  R                  S	S
S/5      S 5       5       5       5       r	\R                  R                  S5      \R                  R                  SSS/5      \R                  R                  SS
S/5      \R                  R                  S/ SQ5      \R                  R                  SSS/5      \R                  R                  SS
S/5      \R                  R                  SSS/5      S 5       5       5       5       5       5       5       r\R                  R                  SSS9\R                  R                  SS S!/5      \R                  R                  S"\R                  " 5       5      S# 5       5       5       r\R                  R                  S	S
S/5      S$ 5       rS% r\R                  R                  S/ SQ5      \R                  R                  S\5      S& 5       5       r\R                  R                  SS'S(/5      \R                  R                  S\5      S) 5       5       r\R                  R                  S*/ S+\R*                  0 4/ S,QS-S.\R*                  /S/S0\R*                  /0 4/ S,Q/ / 0 4\R*                  S1//S1\R*                  S+/S(S2S3.4/ / /S+\R,                  " S1\R*                  5      SS404/ / /S+\R.                  " S55      SS
S6.4/ / /S+\R.                  " S75      SSS6.4/ S+S8/\R,                  " S1\R*                  5      0 4\R0                  " SS95      R3                  S:5      S;S+///SSS6.4SS1/S<S=/// S>Q/ S?Q/SSS6.4/ S,Q\R4                  * \R4                  /S/S0/0 4\R4                  * S4SS\R4                  /\R4                  * S@S4SSS1\R4                  /SASASAS+SBSB\R*                  /SS04\R4                  * S4SS\R4                  /\R4                  * S@S4SSS1\R4                  // SCQSS04/5      SD 5       r\R                  R                  SESFS9\R                  R                  S\R:                  " 5       5      SG 5       5       rSHrg)ITestEstimatedCDFi  c                 
   UR                  / SQ5      nUR                  S5      nSn[        R                  " [        US9   [        R
                  " UR                  SS/5      U5        S S S 5        [        R                  " [        5         [        R
                  " UR                  SS/5      U5        S S S 5        Sn[        R                  " [        US9   [        R
                  " X!R                  S	S
/5      5        S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        [        R                  " [        US9   [        R
                  " X#SS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        [        U5      (       dV  Sn[        R                  " [        US9   [        R
                  " UR                  UR                  S
S/5      USS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X#SS9  S S S 5        Sn[        R                  " [        US9   [        R
                  " X!R                  SS/5      SS9  S S S 5        g ! , (       d  f       GNq= f! , (       d  f       GN8= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN8= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)NrP   r6   rR   rS   TFrU   z`y` must have real dtype.y              ?r   rW   r   rE   rX   rY   rZ   r[   r\   zmethod` must be one of...r]   r   r_   r`   ra   zD`keepdims` may be False only if the length of `y` along `axis` is 1.rb   )r-   rc   rd   re   r   r!  r   r/   )rh   ri   r   r@   rj   s        r3   rk   &TestEstimatedCDF.test_input_validation  s\   JJy!JJqM-]]:W5

D%= 91= 6]]:&

D!9 5q9 ' .]]:W5::tQi#89 6 7]]:W53/ 6]]:W573 6 L]]:W51- 6 bzz5Gz9##BJJ1~$>gV : .]]:W5X6 6 D]]:W5r2 6 Y]]:W5::sCj#9EJ 65C 65&& 65 6555 65
 :9 65 65 65sx    )K)K%(K7"L	LL-3L?1M*M##'M4
K"%
K47
L	
L
L*-
L<?
M
M #
M14
Nr   x_shape)r6   rn   r  r   i  r  r  y_shapeN   r  FTc                    U[         ;   n[        U5      n[        R                  R	                  S5      nUc  UOUnU(       a  UR                  UR                  SUS9US9n	OUR                  UR                  US9US9n	UR                  UR                  US9US9n
[        R                  " XUSS9n[        R                  " XUSS9nUR                  U
/ U	R                  S S QUR                  S   P75      nU(       a  US-
  OUn[        R                  " XUSS9nXuR                  :X  a  SOS	n[        XUS
9  U(       d  U(       a  g [        U   u  nnU	R                  S   nSU-
  US-   U-
  U-
  -  nUU-
  US-   U-
  U-
  -  nXR!                  U	SSS9:  nXR#                  U	SSS9:  nUU:*  U) -  nUU:  U) -  nUU-  U-  U-  ) n[        UU   UU   5        [%        SSSS9n[        UU   UR                  U5      40 UD6  [        UU   UR                  U5      40 UD6  [        UU   UR                  S5      40 UD6  [        UU   UR                  S5      40 UD6  g )Nl   S9UP+	   r   rp   rD   r   gư>gh㈵>g-q=)atolr   Tr   F)check_shapecheck_dtypecheck_0dr   r   )r   r   r!   r   r   r-   rt   standard_normalr   r,   r!  r  ru   r   r   r   minmaxr   )rh   r   r*  r+  r  ri   discontinuousro   r{   r   r   r@   r2   r   y2r/  r  brA   p_minp_max
i_very_lowi_very_highi_lowi_highi_okr   s                              r3   test_against_quantile&TestEstimatedCDF.test_against_quantile  sx   
 "FF $ii##$67$_''

3<<<8
FA

3..G.<E
JAJJszzwz/uJ=NN1R8!!!vB?ooa!=1773B<!=!=> *cDjs^^A6;

*tD) = 181GGBKQ1q519q=)Q1q519q=)T::
&&d&;;*,,;,.*,{:; 	D	3t9- %UTJE
BJJu$5@@FRZZ%6A&AJCCFCK("**S/DVDr5   r   rF   r   r   rJ   r0   )r    r   r   ro   r   r   nansmethr   r   c                 F   [        U5      (       a  US:X  a  [        R                  " S5        [        R                  R                  S5      nSn	UR                  U	S9R                  U5      n
UR                  U	S9R                  U5      nS nU(       aA  UR	                  U	S9S:  n[        R                  " U5      (       d   e[        R                  X'   U(       d  [        R                  " XSS9n[        Xt5      nUS:X  a  [        (       d  [        R                  " S	5        [        R                  " S5      n[        XUS
9nUR                  U5      nUR!                  XS9n["        R$                  " UUR!                  U5      40 UD6n['        X4SS0UD6n[)        UR*                  UR!                  UUS95        g [        XX6S9n["        R$                  " UR!                  U
5      UR!                  U5      40 UD6n['        X40 UD6n[)        UUR!                  UUS95        g )Nr   r   r   r   r   r   Tr   r   r   r   r0   r   rp   r   )r   rc   r   r!   r   r   r3  rf   r.   r/   r   r   r   r   r   r   r-   r   r!  r%  r   r(   )rh   rF   rJ   r0   ro   rB  rC  ri   r{   ru   r   r@   r   r   r   r   r   r2   r   s                      r3   r   'TestEstimatedCDF.test_against_reference1  s    "::*0KKBCii##$56U+2259U+2259::5:)C/D66$<<<ffAGt4A"!"?KL((2FttDF''+C;;q;,D%%dCKKNEfEC)!L6LVLCCHHbjjEj&BC4!+:!!"**Q-AI&I%a5f5RZZ5Z9:r5   torchzissues with sorting NaNs)r   rA   r   i  z
method, abc                 R   Uu  pV[         R                  R                  S5      nUR                  U5      nUR                  U5      S:  n	[         R                  X'   UR                  U	5      n	[         R                  R                  U5      n
[        R                  R                  XU5      nUR                  UR                  5      nUR                  U5      n[        R                  " XSUS9n[        X)    X)    5        UR                  UR                  X   5      5      (       d   eg )Nl   \H|;r   r   r0   r   )r!   r   r   r3  r/   r-   mamasked_invalidr   r&   plotting_positionsr(   r!  r   allr"   )rh   rA   r   abri   r  r8  r{   r   r   x_maskedr   r2   s                r3   test_plotting_positions(TestEstimatedCDF.test_plotting_positions]  s     ii##$67"zz!}s"&&zz$55''*ll--h1=jj"JJqM!!!6&IE
CJ/vvbhhsy)****r5   c                 P   [         R                  R                  S5      nSn[        U5      nU(       a  UR	                  SUS9OUR                  US9nU(       a  UR	                  SSS9OUR                  SS9n[        R                  " U5      R                  R                  U5      n[        R                  " XgS5      n	UR                  XeS9UR                  XuS9pv[        R                  " XgSS	9n
UR                  XS9UR                  XS9p[        X5        [        XS
-  5        g )Nl   mKJ^r   rn   r   r,  weakrp   r   r   r   )r!   r   r   r   rt   r3  r   ecdfcdfevaluatepercentileofscorer-   r!  r   )rh   r  ri   r{   rA   ro   r   r@   r   ref2r2   s              r3   #test_against_ecdf_percentileofscore4TestEstimatedCDF.test_against_ecdf_percentileofscores  s    ii##$67 $(,CLL!L$#2E2E12E2M)-CLL"L%33F3FB3F3Ojjm((+&&qV4zz!z)2::a:+E1!!!~>JJsJ0"**T*2OT!CZ(r5   c                     UR                  SUR                  S9n[        R                  " X"5      nUR                  [        U5      :X  d   eg )Nrn   rp   )r   r   r   r!  ro   r   )rh   ri   r   r2   s       r3   r   0TestEstimatedCDF.test_integer_input_output_dtype  s@    IIbI)!!!'yy,R0000r5   c                 n   U[         ;   nUR                  S5      nUR                  / SQ5      n[        U5      (       a  [        R                  " S5      OUR                  S5      n[        R
                  " SSS9   U(       a  UR                  / SQ5      nO6[        U   u  pUR                  [        Xy-
  US-   U	-
  U
-
  -  5      SS/5      nS S S 5        US	:X  a
  US S nS
S	0nOUS:X  a7  [        R                  " U5      SS  R                  UR                  5      nS
S0nOUS:X  a  [        U5      (       a  [        R                  " S5        [        (       d  [        R                  " S5        [        R                   " S5      nUR#                  U5      nUS:  nUR                  X^S9nUR                  U5      n0 n[        R
                  " SSS9   [$        R&                  " XV4SU0WD6nS S S 5        US:X  a  WR(                  OWn[+        UW5        g ! , (       d  f       GNO= f! , (       d  f       NA= f)N      $@r   g      r   r   ignoredivideinvalid)r   r   r   r   r   r    r0   r   r   (JAX currently incompatible with `marray`r   r   r   )r   r   r-   r   r!   errstater   floatxpxatsetr/   r   rc   r   r   r   r   r   r!  r(   r   )rh   r0   r   ri   r6  r   r@   rA   r   r  r8  r   r   r   r   r2   s                   r3   test_size_one_sample%TestEstimatedCDF.test_size_one_sample  s    "FFIIcNJJ}%1"55BJJrN2::b>[[(;jj.8@jj%1q519q=(A"BB!KL < $"1A"K0F6!q	!"!!"&&)A"F+F8#bzzFG"?KL((2F''+CFDA)AAAF[[(;%%aD6DVDC <$0chhcS!9 <;2 <;s   :AHH&
H#&
H4r    r   c                 L   UR                  S5      nUR                  / SQ5      nUR                  XSR                  5      nUS:X  a
  USS nSS0nOUS:X  a7  [        R
                  " U5      S S  R                  UR                  5      nSS0nOUS:X  a  [        (       d  [        R                  " S5        [        U5      (       a  [        R                  " S	5        [        R                  " S5      nUR                  U5      n	US
:  n
U	R                  XJS9nU	R                  U5      n0 n[        R                  " SSS9   [        R                   " XE4SU0WD6nS S S 5        US:X  a#  UR#                  WR$                  5      (       d   eg ['        WU5        g ! , (       d  f       ND= f)Nr]  r^  r    r   r0   r   r   r   rc  r   r   r_  r`  r   )r   r-   r%   r/   rf  rg  rh  r   rc   r   r   r   r   r!   rd  r   r!  rL  r   r   )rh   r0   r   ri   r   r@   r   r   r   r   r   r2   s               r3   test_size_zero_sample&TestEstimatedCDF.test_size_zero_sample  s^    IIcNJJ}%ll1ff%$!AA"K0F6!q	!  (A"F+F8#"?KLbzzFG((2F''+CGDA)AAAF[[(;%%aD6DVDC < !66#((####C% <;s   =F
F#zx, y, ref, kwargsr   rP   g+?g5^I@r   r   r6   r   rH  rD   r   r   r   rb   r   r   r   rQ   r   r   r   r   r   r   )皙?rn  g?rb   r   r   r   c                    UR                  SS 5      S:X  a&  [        U5      (       a  [        R                  " S5        UR                  SS 5      S:X  a&  [	        U5      (       a  [        R                  " S5        [        U5      nUR                  U5      UR                  U5      UR                  X6S9p2n[        R                  " X40 UD6n[        XsSS	9  g )
Nr   r   zdata-apis/array-api-compat#360rF   rD   zFails; need to investigate.rp   gV瞯<)rtol)
getr
   rc   r   r   r   r-   r   r!  r   )rh   r   r@   r   r   ri   r   r2   s           r3   r    TestEstimatedCDF.test_edge_cases  s    > ::h%2x||KK89::fd#r)gbkkKK56(,JJqM2::a="**S*2Vc!!!1&1u-r5   r   z-1e-45 is not less than 0?c                    [         R                  " S[         R                  S9n[         R                  " U[         R                  * 5      [         R                  " U[         R                  5      pTUS:X  a  SOSnUS-   U-   S-  nSUS	'   X6-   S-  nSUS
'   UR                  U5      UR                  U5      UR                  U5      pTnUR                  U5      UR                  U5      px[        [        R                  " X3US9U5        [        [        R                  " X5US9U5        [        [        R                  " X4US9U5        g )Nr   rp   r   r   r   r      r   rD   r   r   )	r!   r   r   r  r  r-   r   r   r!  )	rh   r   ri   r   r  r  offsetref_rref_ls	            r3   r    TestEstimatedCDF.test_transition  s    
 IIb

+a"&&)2<<266+BB"77SQ1$b	q aJJqM2::b>2::b>rzz%("**U*;u++A@%H++A&A5I++A&A5Ir5   r   ) r   r   r   r   rk   rc   r   r   _estimated_cdf_methods_listr@  r   r   r   r   itemsrO  rX  r   ri  rl  r!   r/   r  r   r   r  r  r   r   keysr   r  r   r5   r3   r'  r'    s   'KR [[X'BC[[Y(ST[[Yr
3[[VeT]31E 4 4 U D1Ef [[ GH[[VaV,[[Z%7[[\+JK[[Wy)&<=[[VeT]3[[Vh%?@#; A 4 > L 8 - I#;J [[!!'2L!M[[S2s),[[\+L+R+R+TU+ V - N+& [[VeT]3) 4)1
 [[\+JK[[X'BC!" D L!"H [[\K+@A[[X'BC& D B&> [[0
c2662	
eUBFF+b"bff-=r	B
RR	 FFA;-RVVSM&I+V	Wr(CBFF+fb\	:r(C$!)G	Hr(C&)A4+H	I
sCj"''!RVV,b	1
))Ar

"
"9
-sseWIT
*
,q6Aq6
-0A/BT
*
,
rvvgrvv&c
B	7 FF7B1bff
%RAq"&&'ItS4rvv
6(8K
MFF7B1bff
%RAq"&&'I
,x.H
J5	
<.=<. [[!!+6R!S[[X'K'P'P'RSJ T TJr5   r'  )2rc   numpyr!   scipyr   scipy.stats._quantiler   r   r   r   scipy._lib._array_apir   r	   r
   r   r   r   r   r   r   r   scipy._lib._array_api_no_0dr   r   scipy._lib._utilr   scipy._external.array_api_extra	_externalarray_api_extrarf  scipy.stats._axis_nan_policyr   r   r   lazy_xp_modulesr4   	vectorizer*   rK   r,   rM   r
  r  r#  r%  sortedlistry  r!  r'  r   r5   r3   <module>r     s]     M M   I . - - :;;// '8X& '. 1v
 
 5>>"w; w; #w;t	 8X&, ', #$'" '" %'"T 8X&C 'C +,!%h %T*@%AB  5&&'vJ vJ (vJr5   