
    9i@!                         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  S SKJr  \ R                  R                   r\" SS5      S 5       rS	 r\" S
SS9\" SSS9 " S S5      5       5       rg)    N)stats)xp_default_dtypeis_numpyis_torchSCIPY_ARRAY_API)xp_assert_closexp_assert_equal)_apply_over_batch)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  a  U R                  S:X  a  [         R                  " XS   5      O([
        R                  R                  X5      R                  nUS:X  aB  [         R                  " [         R                  " U 5      5      (       a  [         R                  US S & O[         R                  " X5      n[         R                  XT'   U$ )Nomit      ?harrell-davisr   r   	propagate)npisnancopysize	full_liker   mstatshdquantilesdataanynanquantile)r   r   
nan_policymethodp_maskress         _/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/scipy/stats/tests/test_quantile.pyquantile_reference_last_axisr#      s    Vrxx{lOXXa[F	AAI ()!r||At$LL,,Q277 	$)<)<VVCFkk!&&CKJ    c                    [         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$ )Naxis)r   moveaxisr#   squeeze)r   r   r(   r   keepdimsr   r!   s          r"   quantile_referencer,      sS    ;;q#R[["%=q
&qZ
@C
++c2t
$Cjj(Jr$   z
dask.arrayzNo take_along_axis yet.)reasonz	jax.numpyzNo mutation.c                   r   \ rS rSrS r\R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S 5       5       r\	" 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S/5      S 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      S, 5       r\R                  R                  S/ S-Q5      \R                  R                  SSS/5      S. 5       5       r\R                  R                  S/ S/Q5      S0 5       rS1rg()2TestQuantile(   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        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Na= f! , (       d  f       GN(= 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)Nr         r   z`x` must have real dtype.)matchTFy      ?      ?r3   z"`p` must have real floating dtype.r   r   z"`axis` must be an integer or None.r'   )r   r&   z7`axis` is not compatible with the shapes of the inputs.zThe input contains nan valuesraise)r   zmethod` must be one of...za duckr   z/If specified, `keepdims` must be True or False.*   )r+   zD`keepdims` may be False only if the length of `p` along `axis` is 1.333333?)asarraypytestraises
ValueErrorr   r   r   )selfxpr   r   messages        r"   test_input_validation"TestQuantile.test_input_validation,   s?   JJy!JJsO-]]:W5NN2::tUm4a8 6]]:&NN2::tQi0!4 ' 7]]:W5NN1jj!Q01 6 7]]:W5NN1c* 6]]:W5NN1g. 6 L]]:W5NN1a( 6 2]]:W5NN2::rvvq!n5qWM 6 .]]:W5NN11 6 D]]:W5NN1"- 6 Y]]:W5NN1jj#s4uE 65A 65&& 65 6555 65 65 65 65 65sx    )K)K(K'"K9LL3L/!MM'M$
K
K$'
K69
L
L
L,/
L>
M
M!$
M2r   )	inverted_cdfaveraged_inverted_cdfclosest_observationhazeninterpolated_inverted_cdflinearmedian_unbiasednormal_unbiasedweibullzshape_x, shape_p, axis))
   Nr&   )rL   rL   r&   )rL   )r3   r4   r&   )rL   r3   Nr   rM   c                 R   [        U5      n[        R                  R                  S5      nUR                  US9nUR                  US9n	[        R                  " XXS9n
UR                  XS9UR                  XS9p[        R                  " XXS9n[        XR                  XS95        g )N   lv_r   )r   r(   dtype)r   r   randomdefault_rngr   r:   r   r   )r>   r   shape_xshape_pr(   r?   rR   rngr   r   refr!   s               r"   test_against_numpyTestQuantile.test_against_numpyT   s     !$ii##$56JJGJ$JJGJ$kk!v9zz!z)2::a:+E1nnQ&<ZZZ9:r$   TzPyTorch doesn't have `betainc`.)cpu_onlyr-   r(   r   r   r+   Fr   )r   r   marrayrR   float32float64rH   r   c                    [         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
'   [        Xd5      nUS:X  a  US:X  a  [        R                  " S5        [        U5      (       a  [        R                  " S5        [        (       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X5S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 )NrO   )      rP   g?Tr(   r+   g        r   g      ?r\   r   zNeeds gh-22490zFsum_cpu not implemented for UInt64, see data-apis/array-api-compat#242z-MArray is only available if SCIPY_ARRAY_API=1)r(   r+   r   )maskr   r   rQ   )r(   r+   r   r   )r   rS   rT   astyper   r   meanr   ravelgetattrr;   skipr   r   importorskipdict_get_namespacer:   r   r   r,   r   r   )r>   r(   r+   r   rR   r   r?   rW   shaper   r   rd   p0r\   kwargsmxpx_mpr!   rX   s                      r"   test_against_reference#TestQuantile.test_against_referenceg   s    ii##$56JJEJ"))%0JJEJ"))%0zzuz%+vvd|||&&t4A
 B<<BBqEBrF"!(,-|| = >"?KL((2FtvFF''+C;;q;,D..s{{1~@@C$QGfGGCCHHbjjEj&BC4!+<nnRZZ]BJJqMDVD 00RZZ5Z9:r$   c                     [         R                  " UR                  SUR                  S9S5      nUR                  [        U5      :X  d   eg )NrL   rQ   r   )r   r   arangeint64rR   r   )r>   r?   r!   s      r"   test_integer_input_output_dtype,TestQuantile.test_integer_input_output_dtype   s;    nnRYYrY:C@yy,R0000r$   zx, p, ref, kwargsr   r2   r&   g      ?r4   r3   r   )r   rb   )r   r   r9      )r4   r4   r4   g      ,@N   )g      ?r   g      ?)g      ?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 )NrQ   )r   r:   r   r   r	   )r>   r   r   rX   ro   r?   default_dtyper!   s           r"   test_edge_casesTestQuantile.test_edge_cases   sO     ),JJqM2::a="**S*2VcnnQ,V,!r$   )r   r   r3   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)r4   rz   r   r   r   rb   )r   popr   r   zerostuplerm   )r>   r(   r+   r?   rm   	out_shaper!   s          r"   test_size_0TestQuantile.test_size_0   s`     JJL	IOMM$nnRXXeEl3StWyyE),,,,r$   )rC   rD   rE   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S	9n[        XRR                  XbR
                  S95        g )
NrE   z2.0.1z5Bug in np.quantile (numpy/numpy#26656) fixed in 2.0.1g       @rQ   r   g      ?g      ?r7   )
r   __version__r;   ri   ru   r^   r   r   r:   r	   )r>   r   r?   r   r   r!   rX   s          r"   test_transitionTestQuantile.test_transition   s    
 **r~~/GKKOPIIb

+IIa(nnRZZ]BJJqM&Ikk!v.ZZ::Z>?r$    )__name__
__module____qualname____firstlineno__rA   r;   markparametrizerY   skip_xp_backendsrr   rw   r   r   fullr   ru   reshaper}   r   r   __static_attributes__r   r$   r"   r/   r/   (   s   &FP [[X
;< [[5
34
;4	<
; t,MN[[VaV,[[Z%7[[\+JK[[Wy)&<=[[X/'BC*; D > L 8 - O*;X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HJ	@J	@r$   r/   )r;   numpyr   scipyr   scipy._lib._array_apir   r   r   r   scipy._lib._array_api_no_0dr   r	   scipy._lib._utilr
   r   r   r#   r,   r/   r   r$   r"   <module>r      s       W W H .;;//  8X& '$ ,'@A+n5]@ ]@ 6 B]@r$   