U
    »mœd$  ã                   @   sˆ   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d„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Úassert_almost_equalÚassert_equalÚassert_allcloseÚassert_array_almost_equalÚassert_)Ú	logsumexpÚsoftmaxc                  C   sà  t  d¡} t  t  t  | ¡¡¡}tt| ƒ|ƒ ddg}dt  d¡ }tt|ƒ|ƒ d}t j|ddd�}dt  |¡ }tt|ƒ|ƒ t  d	gd
 ¡}t  |¡}t  	||g¡}t  	||g¡}t
t  t|ƒ¡| ¡ ƒ t
t  t|dd�¡|jdd�ƒ t
t  t|dd�¡|jd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dgƒ t
tddgdt j ggddd�dgdggƒ t
tddgdt j ggdd�dƒ d S )NéÈ   éè  g     @�@g       @é'  Zfloat64)Zdtypeg     ˆÃ@çœWw'&l¡7i@B r   ©Úaxisé   g    _ Bg»½×Ùß|Û=g    _ ÂéÿÿÿÿT)r   Zkeepdims)r   éþÿÿÿ)ÚnpÚarangeÚlogÚsumÚexpr   r   ÚfullÚarrayÚvstackr   r   ÚinfÚnan)ÚaÚdesiredÚbÚnÚxÚlogxÚXÚlogX© r$   ú[/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/special/tests/test_logsumexp.pyÚtest_logsumexp   sV    

  

ÿÿþ

ÿý
ü

ÿþýr&   c                  C   s6  t  d¡} t  ddd¡}t  t  |t  | ¡ ¡¡}tt| |d�|ƒ ddg} ddg}dt  d¡ }tt| |d�|ƒ t  dgd	 ¡}t  d
dd	¡}t  |¡}t  	||f¡}t  	||f¡}t  	||f¡}t
t  t||d�¡||  ¡ ƒ t
t  t||dd�¡|| jdd�ƒ t
t  t||d
d�¡|| jd
d�ƒ d S )Nr	   r   r   ©r   r
   g333333ó?g333333@r   i † r   )r   r   r   )r   r   r   r   r   r   r   r   Zlinspacer   r   )r   r   r   r    r!   r"   r#   ÚBr$   r$   r%   Útest_logsumexp_b:   s*    

 ÿÿr)   c                  C   s>   dddg} dddg}t | |dd�\}}t|dƒ t|dƒ d S )Nr   r   T©r   Úreturn_sign)r   r   r   ©r   r   ÚrÚsr$   r$   r%   Útest_logsumexp_signS   s
    


r/   c                  C   s\   ddg} ddg}t | |dd�\}}tt |¡ ƒ tt |¡ ƒ t|dk ƒ t|dƒ d S )Nr   r   Tr*   r   )r   r   r   ÚisfiniteÚisnanr   r,   r$   r$   r%   Útest_logsumexp_sign_zero\   s    r2   c                  C   st   t  d¡} t  | ¡}t| d|dd�\}}t|j|jƒ t|jdƒ t| d|dd�\}}t|j|jƒ t|jdƒ d S )N©r   é   é   é   r4   T)r   r   r+   ©r   r4   r6   ©r   r5   ©r   ÚonesZ	ones_liker   r   Úshaper,   r$   r$   r%   Útest_logsumexp_sign_shapeg   s    

r<   c                  C   sL   t  d¡} t  | ¡}t| d|d�}t|jdƒ t| d|d�}t|jdƒ d S )Nr3   r4   )r   r   r7   r8   r9   )r   r   r-   r$   r$   r%   Útest_logsumexp_shapev   s    

r=   c                  C   s&   ddg} ddg}t t| |d�dƒ d S )Nr   r   r   r'   )r   r   ©r   r   r$   r$   r%   Útest_logsumexp_b_zero�   s    r?   c                  C   s$   t  d¡} t  d¡}t| |d� d S )N)r6   r   r4   r   )r5   r   é   r'   )r   Zzerosr:   r   r>   r$   r$   r%   Útest_logsumexp_b_shapeˆ   s    

rA   c                  C   sÞ   t tddddgƒt ddddg¡dd� t tddgƒt ddg¡dd� t tddgƒt dtjg¡dtj  dd� t d¡} t dd	d
dg¡}t t| ƒ|dd� t t| d ƒ|dd� t t|  dd¡ƒ| dd¡dd� d S )Nr
   r   r   ç‚vIhÂ%<=©Zrtolç      à?r6   g*lI9üi ?g™{O¶?gW-RÎ?gI³ôòšä?éd   r4   )r   r   r   r   Úer   Úreshape)r    Úexpectedr$   r$   r%   Útest_softmax_fixtures�   s$     ÿ $ÿ
ýÿrI   c                  C   s  t tddgddggdd�t ddgddgg¡dd� t tddgddggdd�t ddgddgg¡dd� t ddd	d
gddddgg¡} t ddddgddddgg¡}t t| dd�|dd� t t| jdd�|jdd� |  ddd¡}t t|dd�| ddd¡dd� d S )Nr
   r   r   rD   rB   rC   r   içÿÿÿé   é2   iE  ií  iî  g£×Ù	Ñ+9g.K|T}%m;gÕð]¤7Š®=g\þÿÿÿï?g        g‘pk´&•g†ºTV6Ñ?g¼¢ÕõÔdç?r4   )r   r4   )r   r   r   r   ÚTrG   )r    rH   Zx3dr$   r$   r%   Útest_softmax_multi_axesª   s8     ÿ ÿ
ÿýýüÿrM   )Únumpyr   Znumpy.testingr   r   r   r   r   Zscipy.specialr   r   r&   r)   r/   r2   r<   r=   r?   rA   rI   rM   r$   r$   r$   r%   Ú<module>   s   2	