
    ^Mhe3                        d dl Z d dl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 d dlmZmZ d dlmZ g dZd	d
gZeej                            d          ej                            dd          d                                     Zeej                            d          ej                            dd           G d d                                              Z G d d          ZdS )    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                    |                      t          j         dz
  t          j         dddddt          j        t          j        dz   g	          }|                      t          j        dz
  t          j        dddddt          j        t          j         dz   g	          }t          ||           }t	          ||d           d S )N   gYnr   gYn)atol)asarraymathpir   r   )xpxrefress       b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/special/tests/test_logsumexp.pytest_wrap_radiansr!      s    
 	

TWHQJ"gvq$'47196 	7 	7A
**dgai"gvq$'DG8A:7 8 8C
2

CC1%%%%%%    c                   P   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
dg df          ej                            d          d                         Zej                            dd          d             Zej                            de          d             Zej                            de          ej                            de          d                         Zd Zej                            dddg          d             Zd Zd ZdS )TestLogSumExpc                    |                     g           }|                     |j                   }t          t          |          |           |                    d|j                  }|                    |                    |                    |                              }t          t          |          |           |                     ddg          }|                     dt          j        d          z             }t          t          |          |           d}|                    |fd          }|                     dt          j        |          z             }t          t          |          |           |                     dgd	z            }|                    |          }|                    ||g          }|                    ||g          }	t          |                    t          |	                    |                    |                     t          |                    t          |	d
                    |                    |d
                     t          |                    t          |	d                    |                    |d                     |                     |j        g          }
|                     |j        g          }t          t          |
          |
d
                    t          t          |
           |
d
                     t          t          |          |d
                    t          t          |                     |j         |j         g                    |
d
                     |                     ddgdt          j         gg          }|                     ddg          }t          t          |d          |           t          |          }|                    |d          }t          t          |dd          |           t          t          |d          |                     d                     d S )N      i@dtype     @@       @  '  g     @Ww'&l7i@B r   axisr   g    _Bg|=g    _r   T)r/   keepdims)r   )r   infr   r
   aranger   logsumexpr   r   fullstacknannpr   expand_dims)selfr   adesiredbnr   logxXlogXr2   r9   r   xp_tests                 r    test_logsumexpzTestLogSumExp.test_logsumexp&   s   JJrNN**bfW%%	!g... IId"*I--&&q		**++	!g... JJu~&&**Vdhsmm344	!g...GGQD%  **Wtx{{233	!g...JJw())vvayyHHaVxxt%%y//;;;yA666779J9JKKKyA666779J9JKKK jj"&""jj"&""	#A///	3$#a&111	#A///	"**rvgw-?"@"@AACF7KKK JJu(* + +jj$''	!"---s333 "!$$!!#B!//	!"t<<<cBBB 		!(333RZZ5E5EFFFFFr"   c           	         |                     d|j                  }|                     ddd          }|                    |                    ||                    |          z                      }t          t          ||          |           |                    ddg          }|                    ddg          }|                    dt          j        d          z             }t          t          ||          |           |                    d	gd
z            }|	                    ddd
          }|                    |          }|
                    ||f          }|
                    ||f          }|
                    ||f          }	t          |                    t          ||	                    |                    |	|z                       t          |                    t          ||	d                    |                    |	|z  d                     t          |                    t          ||	d                    |                    |	|z  d                     d S )Nr&   r'                 r?   r+   g333333?g333333@r-   i r   r   )r?   r/   r.   )r3   r   r4   r5   r6   r   r
   r   r   linspacer8   )
r<   r   r=   r?   r>   r   rA   rB   rC   Bs
             r    test_logsumexp_bzTestLogSumExp.test_logsumexp_bY   s   IId"*I--IIdB$$&&"&&)),,--	!q)))7333JJd|$$JJSz""**TDHW$5$5566	!q)))7333JJw'((KK4((vvayyHHaVxxt%%HHaVy33344bffQUmmDDDy;;;<<bffQUQRf>S>STTTy;;;<<bffQUQRf>S>STTTTTr"   c                    |                     g d          }|                     g d          }t          ||d          \  }}t          ||                     d                     t          ||                     d                     d S )N)r   r   r   )r   r   r   Tr?   return_sign      ?rH   )r   r
   r   r   r<   r   r=   r?   rss         r    test_logsumexp_signz!TestLogSumExp.test_logsumexp_signn   s~    JJyyy!!JJ{{{##aT22212::b>>***2::c??+++++r"   c                    |                     ddg          }|                     ddg          }t          ||d          \  }}|                    |          rJ |                    |          rJ |dk     sJ |dk    sJ d S )Nr   r   TrN   r   )r   r
   isfiniteisnanrQ   s         r    test_logsumexp_sign_zeroz&TestLogSumExp.test_logsumexp_sign_zerov   s    JJ1vJJ2waT2221;;q>>!!!88A;;1uuuuAvvvvvvr"   c                    |                     d          }|                    |          }t          |d|d          \  }}|j        |j        cxk    rdk    sn J t          |d|d          \  }}|j        |j        cxk    rdk    sn J d S )Nr            r[   T)r/   r?   rO   r   r[   r]   r   r\   ones	ones_liker
   shaperQ   s         r    test_logsumexp_sign_shapez'TestLogSumExp.test_logsumexp_sign_shape   s    GGL!!LLOOaT:::1w!'....Y......1$???1w!'****U********r"   c                 H   |                     g d          }t          |d          \  }}|                    |                    |                    }||                    |          z  }t          ||           t          ||                    |          z  |           d S )N)y      ?      ?y       @      y             @T)rO   )r   r
   r5   r6   absr   )r<   r   r=   rR   rS   expected_sumexpexpected_signs          r    test_logsumexp_complex_signz)TestLogSumExp.test_logsumexp_complex_sign   s    JJ00011---1&&++'"&&*A*AA=)))BFF1II77777r"   c                     |                     d          }|                    |          }t          |d|          }|j        dk    sJ t          |d|          }|j        dk    sJ d S )NrZ   r[   )r/   r?   r^   r_   r`   )r<   r   r=   r?   rR   s        r    test_logsumexp_shapez"TestLogSumExp.test_logsumexp_shape   sv    GGL!!LLOOaa1%%%w)####af***w&      r"   c                     |                     ddg          }|                     ddg          }t          t          ||          |                     d                     d S )Nr   r,   r   rI   rP   )r   r   r
   r<   r   r=   r?   s       r    test_logsumexp_b_zeroz#TestLogSumExp.test_logsumexp_b_zero   sY    JJ5z""JJ1v	!q)))2::b>>:::::r"   c                 |    |                     d          }|                    d          }t          ||           d S )N)r]   r   r[   r   )r\   r      rI   )zerosra   r
   rm   s       r    test_logsumexp_b_shapez$TestLogSumExp.test_logsumexp_b_shape   s=    HH\""GGI!qr"   argr   )r   r[   r\   T)np_onlyc                     t          |          t          t          j        t          j        |                              k    sJ d S )N)r
   r:   r   
atleast_1d)r<   rs   r   s      r    test_xp_invalid_inputz#TestLogSumExp.test_xp_invalid_input   s=     ~~2:bmC6H6H+I+I!J!JJJJJJJr"   z#Lists correspond with NumPy backend)rt   r   c                     ddg}|                     dt          j        d          z   t          j                  }t          t          |          |           d S )Nr+   r)   r*   r'   )r   r   r4   r:   r   r   r
   )r<   r   r=   r>   s       r    	test_listzTestLogSumExp.test_list   sM     4L**Vdhsmm32:*FF	!g.....r"   r(   c                 l   t          ||          }|                    ddg|          }t          |          }|                    |d          r|                    d          j        n|}|                    dt          j        d          z   |          }t          t          |          |           d S )Nr)   r'   integralrP   r*   )	getattrr   r   isdtyper(   r   r4   r   r
   )r<   r(   r   r=   rD   desired_dtyper>   s          r    test_dtypes_azTestLogSumExp.test_dtypes_a   s    E""JJu~UJ33!!$$18
1S1S $B--# 	**Vdhsmm3=*II	!g.....r"   dtype_adtype_bc                    t          ||          }t          ||          }|                    ddg|          }|                    ddg|          }t          ||          t          |          r[fd||fD             }t	          |          dk     r-|                    |                    d          j                    j        | }	n                    |||j                  }	|                    t          j
        t          j        d          t          j        d          z
            |	          }
t          t          ||          |
           d S )Nr[   r   r'   r   c                 @    g | ]}                     |d           |S )r{   )r}   ).0r(   rD   s     r    
<listcomp>z0TestLogSumExp.test_dtypes_ab.<locals>.<listcomp>   sB     J J J&-ooeZ&H&HJu J J Jr"   rP   rI   )r|   r   r   r   lenappendr(   result_typer   r   r4   r6   r   r
   )r<   r   r   r   
xp_dtype_a
xp_dtype_br=   r?   xp_float_dtypesr~   r>   rD   s              @r    test_dtypes_abzTestLogSumExp.test_dtypes_ab   s_    R))
R))
JJ1vZJ00JJ2wjJ11!!Q''r"" 	TJ J J J:z2J J J JO?##a''&&rzz"~~';<<</G/AMM $//
J
SSM**TXdhqkkDHQKK&?@@*VV	!q)))733333r"   c                     |                     ddg          }t          |          }|                    |d         |d                   }t          ||           d S )NrG   g      Dr   r   )r   r
   	logaddexpr   )r<   r   r=   r   r   s        r    test_gh18295zTestLogSumExp.test_gh18295   sU     JJU|$$llll1Q41&&S!!!!!r"   r   r   c                 F   t           j                            d          }t          ||          }d}|                    dd|          d|                    dd|          z  z   }|                    ||          }t          |d          }|                    |                    |	                    |          d                    }|
                    |                    |          |                    |j                            }t          |                    |                    |                    |           t          ||           t          |dd	          \  }	}
|                    |	                    |          d          }t          |                    |                    |
                    |           t          |	|                    |                    |                               t          |
||                    |          z             d S )
Nl   &DN$)
   d   r   (   y              ?r'   r.   T)rO   r/   )r:   randomdefault_rngr|   uniformr   r
   r4   r5   r6   	full_likeimagr   r	   rf   r   real)r<   r   r(   rngrc   r   r   r   maxoutsgns              r    test_gh21610zTestLogSumExp.test_gh21610   s    i##$677E""KK2u%%ckk!R.G.G(GGJJqJ&&"""ffRVVBFF1IIAV..//ll2773<<BE):):;;rvvbggcll++S111S!!!QDq999SffRVVAYYQf''rvvbggcll++S111RWWRVVC[[11222S_-----r"   c                 Z   |                     ddg          }t          |          }|                     d          }t          |                    |          |                    |                     t          |                    |          |                    |          dd           d S )Nr   y        y<y9B.?i<gV瞯<)r   rtol)r   r
   r   r   r   )r<   r   r   r   r   s        r    test_gh21709_small_imaginaryz*TestLogSumExp.test_gh21709_small_imaginary   s     JJ5677ll
 jjCDDbggcll333bggcllGGGGGGr"   c                 h   |                     g d          }|                     g d          }t          t          ||          t          ||d          d                    |                     g d          }t          t          ||          |                     |j                             d S )N)grC@g X?g	ml@)_+J?eY@g|H4rI   TrN   r   )r   r   gR%)r   r   r
   r9   rm   s       r    test_gh22903zTestLogSumExp.test_gh22903  s     JJ;;;<<JJ<<<==	!q)))9Q!+N+N+Nq+QRRR JJ<<<==	!q)))2::bf+=+=>>>>>r"   N)__name__
__module____qualname__rE   rL   rT   rX   rd   ri   rk   rn   rr   pytestmarkparametrizer   rw   ry   dtypesr   r   r   r   r   r    r"   r    r$   r$   !   s       
1G 1G 1GfU U U*, , ,  + + +
8 
8 
8! ! !; ; ;   [UQ			N33[!!$!//K K 0/ 43K [!!$)N " P P/ /P P/
 [Wf--/ / .-/ [Y//[Y//4 4 0/ 0/4$" " " [W{L&ABB. . CB.0H H H? ? ? ? ?r"   r$   c                       e Zd Zd Zd ZdS )TestSoftmaxc                    t          t          g d          t          j        g d          d           t          t          ddg          t          j        ddg          d           t          t          ddg          t          j        dt          j        g          dt          j        z   z  d           t          j        d          }t          j        g d	          }t          t          |          |d           t          t          |d
z             |d           t          t          |                    dd                    |                    dd          d           d S )N)r+   r   r   r   )r   r   r   r   vIh%<=r   r         ?r   r]   )g*lI9i?g{O?gW-R?gI?r   r[   )r   r   r:   arrayer3   reshape)r<   r   expecteds      r    test_softmax_fixturesz!TestSoftmax.test_softmax_fixtures  sg   00"(<<<2H2H"	$ 	$ 	$ 	$A2r(););%HHHHA1bd))<)<a"$h)G"	$ 	$ 	$ 	$
 IaLL8 0 0 0 1 1
 	

H59999 	C(((???? 			!Q00(2B2B1a2H2H"	$ 	$ 	$ 	$ 	$ 	$r"   c                    t          t          ddgddggd          t          j        ddgddgg          d           t          t          ddgddggd          t          j        ddgddgg          d           t          j        g dg d	g          }t          j        g d
g dg          }t          t          |d          |d           t          t          |j        d          |j        d           |                    ddd          }t          t          |d          |                    ddd          d           d S )Nr+   r   r.   r   r   r   r   )ir      2   )r   iE  i  i  )g	+9g.K|T}%m;g]7=g\?)rG   gpk&gTV6?gd?r[   )r   r[   )r   r   r:   r   Tr   )r<   r   r   x3ds       r    test_softmax_multi_axesz#TestSoftmax.test_softmax_multi_axes/  s   $T1I 6Q???2r(RH!566U	D 	D 	D 	D$T1I 6Q???1a&1a&!122	@ 	@ 	@ 	@
 H&&&&&&( ) )8 / / /0 0 0	1 2 2 	***H5AAAA!,,,hjuEEEE ii1a  &11183C3CAq!3L3L"	$ 	$ 	$ 	$ 	$ 	$r"   N)r   r   r   r   r   r   r"   r    r   r     s2        $ $ $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 F F F F F F F9 9 9 9 9 9 9 9 9 9 - , , , , , , , 2 2 2 2 2 2 
M	L	LG$ +,,k%P  R R& &R R -, & +,,k%P  R Rk? k? k? k? k? k? k?R R -, k?\4$ 4$ 4$ 4$ 4$ 4$ 4$ 4$ 4$ 4$r"   