
    tKg                     z    d dl Zd dlmZmZmZmZmZ d dlm	Z	m
Z
 d Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zy)    N)assert_almost_equalassert_equalassert_allcloseassert_array_almost_equalassert_)	logsumexpsoftmaxc                     g } t         j                   }t        t        |       |       t        j                  d      } t        j
                  t        j                  t        j                  |                   }t        t        |       |       ddg}dt        j
                  d      z   }t        t        |      |       d}t        j                  |dd      }dt        j
                  |      z   }t        t        |      |       t        j                  d	gd
z        }t        j
                  |      }t        j                  ||g      }t        j                  ||g      }t        t        j                  t        |            |j                                t        t        j                  t        |d            |j                  d             t        t        j                  t        |d            |j                  d             t        t        t         j                        t         j                         t        t        t         j                         t         j                          t        t        t         j                        t         j                         t        t        t         j                   t         j                   g      t         j                          t        t        ddgdt         j                   ggd      ddg       t        t        ddgdt         j                   ggdd      dgdgg       t        t        ddgdt         j                   ggd      d       y )N     g     @@g       @'  float64)dtypeg     @Ww'&l7i@B r   axis   g    _Bg|=g    _T)r   keepdims)r   )npinfr   r   arangelogsumexpr   fullarrayvstackr   nan)adesiredbnxlogxXlogXs           f/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/special/tests/test_logsumexp.pytest_logsumexpr*      s   
AvvgG1w' 			#AffRVVBFF1I&'G	!g. 
tArvvc{"G	!g.A
5	*Aq	!G	!g.
%7"#A66!9D
		1a&A99dD\"DbffYt_5quuw?bffYt!%<=quu!u}MbffYt!%<=quu!u}M 266"BFF+BFF7#bffW-266"BFF+RVVGbffW-.8 i$*/"&&)9);ACE#Um-
 i$*/"&&)9);-/157 !%vw/	1 i$*/"&&)9);-46 #$    c            	         t        j                  d      } t        j                  ddd      }t        j                  t        j                  |t        j                  |       z              }t        t        | |      |       ddg} ddg}dt        j                  d      z   }t        t        | |      |       t        j                  dgd	z        }t        j                  d
dd	      }t        j                  |      }t        j                  ||f      }t        j                  ||f      }t        j                  ||f      }t        t        j                  t        ||            ||z  j                                t        t        j                  t        ||d            ||z  j                  d             t        t        j                  t        ||d
            ||z  j                  d
             y )Nr   r   r   r#   r   g333333?g333333@r   i r   )r#   r   r   )r   r   r   r   r   r   r   r   linspacer   r   )r!   r#   r"   r%   r&   r'   r(   Bs           r)   test_logsumexp_br0   ?   st   
		#A
		#q"AffRVVAbffQiK()G	!q)73	tA	c
ARVVG_$G	!q)73
%6!"A
AtV$A66!9D
		1a&A99dD\"D
		1a&AbffYtq%9:QUKKMJbffYtqq%AB!"Q 35bffYtqq%AB!"Q 35r+   c                  f    g d} g d}t        | |d      \  }}t        |d       t        |d       y )N)r   r   r   )r   r   r   Tr#   return_signr   r   )r   r   r   r!   r#   rss       r)   test_logsumexp_signr7   X   s2    AAQ!.DAq!2r+   c                      ddg} ddg}t        | |d      \  }}t        t        j                  |              t        t        j                  |              t        |dk         t        |d       y )Nr   r   Tr2   r   )r   r   r   isfiniteisnanr   r4   s       r)   test_logsumexp_sign_zeror;   a   s`    	
1A	
2AQ!.DAqAOAEN1r+   c                  x   t        j                  d      } t        j                  |       }t        | d|d      \  }}t	        |j
                  |j
                         t	        |j
                  d       t        | d|d      \  }}t	        |j
                  |j
                         t	        |j
                  d       y )Nr            r>   T)r   r#   r3   r   r>   r@   r   r?   r   ones	ones_liker   r   shaper4   s       r)   test_logsumexp_sign_shaperG   l   s    
	A
QAQQ!6DAq!''"'"QUaT:DAq!''"% r+   c                     t        j                  g d      } t        | d      \  }}t        j                  |       j	                         }|t        |      z  }t        ||       t        |t        j                  |      z  |       y )N)y      ?      ?y       @      y             @T)r3   )r   r   r   r   r   absr   )r!   r5   r6   expected_sumexpexpected_signs        r)   test_logsumexp_complex_signrL   {   sc    
*+AQD)DAqffQimmoO#c/&::MA}%Aq	M?3r+   c                      t        j                  d      } t        j                  |       }t        | d|      }t	        |j
                  d       t        | d|      }t	        |j
                  d       y )Nr=   r>   )r   r#   rA   rB   rC   )r!   r#   r5   s      r)   test_logsumexp_shaperN      sU    
A
QA!!q!A)$!&A&A&!r+   c                  B    ddg} ddg}t        t        | |      d       y )Nr   r   r   r-   )r   r   r!   r#   s     r)   test_logsumexp_b_zerorQ      s%    	
5	A	
1A	!q)1-r+   c                  r    t        j                  d      } t        j                  d      }t        | |       y )N)r@   r   r>   r   )r?   r      r-   )r   zerosrD   r   rP   s     r)   test_logsumexp_b_shaperU      s(    
A
Aa1r+   c                     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        | j                  dd            |j                  dd      d       y )N)r   r   r   r   )r   r   r   r   vIh%<=rtolr         ?r   r@   )g*lI9i?g{O?gW-R?gI?d   r>   )r   r	   r   r   er   reshape)r%   expecteds     r)   test_softmax_fixturesr_      s    GO,bhh|.D GQFORXXr2h%7eDGQFORXXq"$$i%8!bdd(%C 
 			!Axx - .H
 GAJu5 GAG$hU; GAIIaO,h.>.>q!.D r+   c                  V   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       | j                  ddd      }t        t        |d      |j                  ddd      d       y )Nr   r   r   rZ   rW   rX   r   )ir      2   )r   iE  i  i  )g	+9g.K|T}%m;g]7=g\?)g        gpk&gTV6?gd?r>   )r   r>   )r   r	   r   r   Tr]   )r%   r^   x3ds      r)   test_softmax_multi_axesre      s   GdAYq	2;HHr2hR12@GdAYq	2;HHq!fq!f-.U<
 	"$& 	'Axx -.	/ 0H GAA&u=GACCa((**5A ))Aq!
CGCf-x/?/?1a/H r+   )numpyr   numpy.testingr   r   r   r   r   scipy.specialr   r	   r*   r0   r7   r;   rG   rL   rN   rQ   rU   r_   re    r+   r)   <module>rj      sO    ? ? -4$n52!
4". 6 r+   