
    (phe3                        S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
  S SKJrJrJr  S SKJrJr  S SKJr  / SQrS	S
/r\\R,                  R/                  S5      \R,                  R1                  SSS9S 5       5       5       r\\R,                  R/                  S5      \R,                  R1                  SSS9 " S S5      5       5       5       r " S S5      rg)    N)assert_allclose)array_api_compatible)array_namespaceis_array_api_strict)xp_assert_equalxp_assert_closexp_assert_less)	logsumexpsoftmax)_wrap_radians)float32float64int32int64	complex64
complex128r   r   skip_xp_backendsz	jax.numpyz)JAX arrays do not support item assignment)reasonc                    U R                  [        R                  * S-
  [        R                  * SSSSS[        R                  [        R                  S-   /	5      nU R                  [        R                  S-
  [        R                  SSSSS[        R                  [        R                  * S-   /	5      n[        X5      n[	        X2SS9  g )N   gYnr   gYn)atol)asarraymathpir   r   )xpxrefress       U/var/www/html/venv/lib/python3.13/site-packages/scipy/special/tests/test_logsumexp.pytest_wrap_radiansr!      s    
 	

TWWHQJ"gvq$''477196 	7A
**dggai"gvq$''DGG8A:7 8C

CC1%    c                   .   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  R                  SS/ SQ45      \R                  R!                  SS9S 5       5       r\R                  R!                  SSS9S 5       r\R                  R                  S\5      S 5       r\R                  R                  S\5      \R                  R                  S\5      S 5       5       rS r\R                  R                  SSS/5      S 5       rS rS rSrg )!TestLogSumExp!   c           	      
   UR                  / 5      nUR                  UR                  * 5      n[        [        U5      U5        UR	                  SUR
                  S9nUR                  UR                  UR                  U5      5      5      n[        [        U5      U5        UR                  SS/5      nUR                  S[        R                  " S5      -   5      n[        [        U5      U5        SnUR                  U4S5      nUR                  S[        R                  " U5      -   5      n[        [        U5      U5        UR                  S/S	-  5      nUR                  U5      nUR                  Xf/5      nUR                  Xw/5      n	[        UR                  [        U	5      5      UR                  U5      5        [        UR                  [        U	S
S95      UR                  US
S95        [        UR                  [        U	SS95      UR                  USS95        UR                  UR                  /5      n
UR                  UR                  /5      n[        [        U
5      U
S
   5        [        [        U
* 5      U
S
   * 5        [        [        U5      US
   5        [        [        UR                  UR                  * UR                  * /5      5      U
S
   * 5        UR                  SS/S[        R                  * //5      nUR                  SS/5      n[        [        USS9U5        [        U5      nUR!                  USS9n[        [        USSS9U5        [        [        USS9UR                  S5      5        g )N      i@dtype     @@       @  '  g     @Ww'&l7i@B r   axisr   g    _Bg|=g    _r   T)r0   keepdims)r   )r   infr   r
   aranger   logsumexpr   r   fullstacknannpr   expand_dims)selfr   adesiredbnr   logxXlogXr3   r:   r   xp_tests                 r    test_logsumexpTestLogSumExp.test_logsumexp&   s   JJrN**bffW%	!g. IId"**I-&&q	*+	!g. JJu~&**Vdhhsm34	!g.GGQD% **Wtxx{23	!g.JJw()vvayHHaVxx%y/;yA679JKyA679JK jj"&&"jj"&&"	#A/	3$#a&1	#A/	"**rvvgw-?"@ACF7K JJu(* +jj$'	!"-s3 "!$!!#B!/	!"t<cB 		!(3RZZ5EFr"   c           
         UR                  SUR                  S9nUR                  SSS5      nUR                  UR                  X1R	                  U5      -  5      5      n[        [        X#S9U5        UR                  SS/5      nUR                  SS/5      nUR                  S[        R                  " S5      -   5      n[        [        X#S9U5        UR                  S	/S
-  5      nUR                  SSS
5      nUR                  U5      nUR                  XU45      nUR                  Xf45      nUR                  X345      n	[        UR	                  [        XS95      UR                  X-  5      5        [        UR	                  [        XSS95      UR                  X-  SS95        [        UR	                  [        XSS95      UR                  X-  SS95        g )Nr'   r(                 r@   r,   g333333?g333333@r.   i r   r   )r@   r0   r/   )r4   r   r5   r6   r7   r   r
   r   r   linspacer9   )
r=   r   r>   r@   r?   r   rB   rC   rD   Bs
             r    test_logsumexp_bTestLogSumExp.test_logsumexp_bY   s   IId"**I-IIdB$&&&&),-	!)73JJd|$JJSz"**TDHHW$556	!)73JJw'(KK4(vvayHHaVxx%HHaVy34bffQUmDy;<bffQUQRf>STy;<bffQUQRf>STr"   c                     UR                  / SQ5      nUR                  / SQ5      n[        X#SS9u  pE[        XAR                  S5      5        [        XQR                  S5      5        g )N)r   r   r   )r   r   r   Tr@   return_sign      ?rJ   )r   r
   r   r   r=   r   r>   r@   rss         r    test_logsumexp_sign!TestLogSumExp.test_logsumexp_signn   sL    JJy!JJ{#T2::b>*::c?+r"   c                     UR                  SS/5      nUR                  SS/5      n[        X#SS9u  pEUR                  U5      (       a   eUR                  U5      (       a   eUS:  d   eUS:X  d   eg )Nr   r   TrQ   r   )r   r
   isfiniteisnanrT   s         r    test_logsumexp_sign_zero&TestLogSumExp.test_logsumexp_sign_zerov   so    JJ1vJJ2wT2;;q>>!!88A;;1uuAvvr"   c                    UR                  S5      nUR                  U5      n[        USUSS9u  pEUR                  UR                  s=:X  a  S:X  d   e   e[        USUSS9u  pEUR                  UR                  s=:X  a  S:X  d   e   eg )Nr            r`   T)r0   r@   rR   r   r`   rb   r   ra   ones	ones_liker
   shaperT   s         r    test_logsumexp_sign_shape'TestLogSumExp.test_logsumexp_sign_shape   s    GGL!LLOaT:ww!''.Y.....1$?ww!''*U*****r"   c                     UR                  / SQ5      n[        USS9u  p4UR                  UR                  U5      5      nXQR	                  U5      -  n[        XF5        [        XAR                  U5      -  U5        g )N)y      ?      ?y       @      y             @T)rR   )r   r
   r6   r7   absr   )r=   r   r>   rU   rV   expected_sumexpexpected_signs          r    test_logsumexp_complex_sign)TestLogSumExp.test_logsumexp_complex_sign   sb    JJ01-&&+'&&*AA)FF1I7r"   c                     UR                  S5      nUR                  U5      n[        USUS9nUR                  S:X  d   e[        USUS9nUR                  S:X  d   eg )Nr_   r`   )r0   r@   rc   rd   re   )r=   r   r>   r@   rU   s        r    test_logsumexp_shape"TestLogSumExp.test_logsumexp_shape   s]    GGL!LLOaa1%ww)###af*ww&   r"   c                     UR                  SS/5      nUR                  SS/5      n[        [        X#S9UR                  S5      5        g )Nr   r-   r   rK   rS   )r   r   r
   r=   r   r>   r@   s       r    test_logsumexp_b_zero#TestLogSumExp.test_logsumexp_b_zero   s=    JJ5z"JJ1v	!)2::b>:r"   c                 Z    UR                  S5      nUR                  S5      n[        X#S9  g )N)rb   r   r`   r   )ra   r      rK   )zerosrf   r
   ru   s       r    test_logsumexp_b_shape$TestLogSumExp.test_logsumexp_b_shape   s&    HH\"GGI!r"   argr   )r   r`   ra   T)np_onlyc                     [        U5      [        [        R                  " [        R                  " U5      5      5      :X  d   eg )N)r
   r;   r   
atleast_1d)r=   r}   r   s      r    test_xp_invalid_input#TestLogSumExp.test_xp_invalid_input   s-     ~2::bmmC6H+I!JJJJr"   z#Lists correspond with NumPy backend)r~   r   c                     SS/nUR                  S[        R                  " S5      -   [        R                  S9n[        [        U5      U5        g )Nr,   r*   r+   r(   )r   r   r5   r;   r   r   r
   )r=   r   r>   r?   s       r    	test_listTestLogSumExp.test_list   s>     4L**Vdhhsm32::*F	!g.r"   r)   c                 4   [        X!5      nUR                  SS/US9n[        U5      nUR                  US5      (       a  UR                  S5      R                  OUnUR                  S[
        R                  " S5      -   US9n[        [        U5      U5        g )Nr*   r(   integralrS   r+   )	getattrr   r   isdtyper)   r   r5   r   r
   )r=   r)   r   r>   rE   desired_dtyper?   s          r    test_dtypes_aTestLogSumExp.test_dtypes_a   s    "JJu~UJ3!!$18
1S1SB--# 	**Vdhhsm3=*I	!g.r"   dtype_adtype_bc                    [        X15      n[        X25      nUR                  SS/US9nUR                  SS/US9n[        Xg5      n[        U5      (       au  XE4 V	s/ s H  n	UR	                  U	S5      (       a  M  U	PM      n
n	[        U
5      S:  a*  U
R                  UR                  S5      R                  5        UR                  " U
6 nOUR                  XEUR                  5      nUR                  [        R                  " [        R                  " S5      [        R                  " S5      -
  5      US9n[        [        XgS9U5        g s  sn	f )Nr`   r   r(   r   r   rS   rK   )r   r   r   r   r   lenappendr)   result_typer   r   r5   r7   r   r
   )r=   r   r   r   
xp_dtype_a
xp_dtype_br>   r@   rE   r)   xp_float_dtypesr   r?   s                r    test_dtypes_abTestLogSumExp.test_dtypes_ab   s    R)
R)
JJ1vZJ0JJ2wjJ1!!'r""3=2J J2J&-ooeZ&H  %2JO J?#a'&&rzz"~';';<#//AM $//


SM**TXXdhhqkDHHQK&?@*V	!)73Js   E
:E
c                     UR                  SS/5      n[        U5      nUR                  US   US   5      n[        X45        g )NrI   g      Dr   r   )r   r
   	logaddexpr   )r=   r   r>   r   r   s        r    test_gh18295TestLogSumExp.test_gh18295   s?     JJU|$lll1Q41&!r"   r   r   c                 T   [         R                  R                  S5      n[        X5      nSnUR	                  SSU5      SUR	                  SSU5      -  -   nUR                  XRS9n[        USS9nUR                  UR                  UR                  U5      SS95      nUR                  UR                  U5      UR                  UR                  5      5      n[        UR                  UR                  U5      5      U5        [        Xg5        [        USSS	9u  pUR                  UR                  U5      SS9n[        UR                  UR                  U
5      5      U5        [        XR!                  UR                  U5      5      5        [        XUR                  U5      -  5        g )
Nl   &DN$)
   d   r   (   y              ?r(   r/   T)rR   r0   )r;   randomdefault_rngr   uniformr   r
   r5   r6   r7   	full_likeimagr   r	   rl   r   real)r=   r   r)   rngrh   r   r   r   maxoutsgns              r    test_gh21610TestLogSumExp.test_gh21610   sJ    ii##$67"KK2u%ckk!R.G(GGJJqJ&"ffRVVBFF1IAV./ll2773<BEE):;rvvbggcl+S1!QDq9ffRVVAYQf'rvvbggcl+S1WWRVVC[12_-r"   c                 
   UR                  SS/5      n[        U5      nUR                  S5      n[        UR                  U5      UR                  U5      5        [        UR	                  U5      UR	                  U5      SSS9  g )Nr   y        y<y9B.?i<gV瞯<)r   rtol)r   r
   r   r   r   )r=   r   r   r   r   s        r    test_gh21709_small_imaginary*TestLogSumExp.test_gh21709_small_imaginary   sj     JJ567l
 jjCDbggcl3bggclGr"   c           	      
   UR                  / SQ5      nUR                  / SQ5      n[        [        X#S9[        X#SS9S   5        UR                  / SQ5      n[        [        X#S9UR                  UR                  5      5        g )N)grC@g X?g	ml@)_+J?eY@g|H4rK   TrQ   r   )r   r   gR%)r   r   r
   r:   ru   s       r    test_gh22903TestLogSumExp.test_gh22903  sj     JJ;<JJ<=	!)9Q+Nq+QR JJ<=	!)2::bff+=>r"    N)__name__
__module____qualname____firstlineno__rF   rN   rW   r\   ri   ro   rr   rv   r{   pytestmarkparametrizer   r   r   dtypesr   r   r   r   r   r   __static_attributes__r   r"   r    r$   r$   !   sD   
1GfU*,+
8!; [[UQ	N3[[!!$!/K 0 4K [[!!$)N " P/P/
 [[Wf-/ ./ [[Y/[[Y/4 0 04$" [[W{L&AB. C.0H?r"   r$   c                        \ rS rSrS rS rSrg)TestSoftmaxi  c                 j   [        [        / SQ5      [        R                  " / SQ5      SS9  [        [        SS/5      [        R                  " SS/5      SS9  [        [        SS/5      [        R                  " S[        R                  /5      S[        R                  -   -  SS9  [        R
                  " S5      n[        R                  " / S	Q5      n[        [        U5      USS9  [        [        US
-   5      USS9  [        [        UR                  SS5      5      UR                  SS5      SS9  g )N)r,   r   r   r   )r   r   r   r   vIh%<=r   r         ?r   rb   )g*lI9i?g{O?gW-R?gI?r   r`   )r   r   r;   arrayer4   reshape)r=   r   expecteds      r    test_softmax_fixtures!TestSoftmax.test_softmax_fixtures  s    0"((<2H"	$A2r();%HA1bdd))<a"$$h)G"	$
 IIaL88 0 1
 	
H59 	C((? 			!Q0(2B2B1a2H"	$r"   c                 "   [        [        SS/SS//SS9[        R                  " SS/SS//5      SS9  [        [        SS/SS//SS9[        R                  " SS/SS//5      SS9  [        R                  " / SQ/ S	Q/5      n[        R                  " / S
Q/ SQ/5      n[        [        USS9USS9  [        [        UR                  SS9UR                  SS9  UR                  SSS5      n[        [        USS9UR                  SSS5      SS9  g )Nr,   r   r/   r   r   r   r   )ir      2   )r   iE  i  i  )g	+9g.K|T}%m;g]7=g\?)rI   gpk&gTV6?gd?r`   )r   r`   )r   r   r;   r   Tr   )r=   r   r   x3ds       r    test_softmax_multi_axes#TestSoftmax.test_softmax_multi_axes/  s   $T1I 6Q?2r(RH!56U	D$T1I 6Q?1a&1a&!12	@
 HH&&( )88 /0	1 2 	*H5A!,hjjuE ii1a &183C3CAq!3L"	$r"   r   N)r   r   r   r   r   r   r   r   r"   r    r   r     s    $6$r"   r   )r   r   numpyr;   numpy.testingr   scipy.conftestr   scipy._lib._array_apir   r   scipy._lib._array_api_no_0dr   r   r	   scipy.specialr
   r   scipy.special._logsumexpr   r   integral_dtypesr   usefixturesr   r!   r$   r   r   r"   r    <module>r      s       ) / F9 9 - 2 
MG$ +,k%P  R&R - & +,k%P  Rk? k?R - k?\4$ 4$r"   