U
    HvfG                     @   s   d dl Z 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mZmZ d dlmZmZmZmZmZmZ dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZG dd dZdS )    N)assert_)FuncData)
kolmogorovkolmogismirnovsmirnovi)_kolmogc	_kolmogci_kolmogp	_smirnovc
_smirnovci	_smirnovpg|=c                   @   sT   e Z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 )TestSmirnovc                 C   s   t ttdtj d S N   )r   npisnanr   nanself r   G/tmp/pip-unpacked-wheel-96ln3f52/scipy/special/tests/test_kolmogorov.pytest_nan   s    zTestSmirnov.test_nanc                 C   sz   ddddg}t |}tt|ddtdjtttgd d	|d d d
f  |d d d
f< tt|ddtdjtttgd d S )N)r   皙??)r         ?      ?)   r         ?)   r         `?r   r   r   ZrtolZdtypesr   	r   asarrayr   r   _rtolcheckintfloatr   r   datasetr   r   r   
test_basic   s    
  zTestSmirnov.test_basicc                 C   s   dd t tddtddD }t|}tt|ddtdjt	t
t
gd	 d
|d d df  |d d df< tt|ddtdjt	t
t
gd	 d S )Nc                 S   s   g | ]}|d dfqS r!   r   .0nr   r   r   
<listcomp>   s     z/TestSmirnov.test_x_equals_0.<locals>.<listcomp>r          r!   r"   r#   r   r$   	itertoolschainranger   r&   r   r   r'   r(   r)   r*   r   r+   r   r   r   test_x_equals_0   s
    "
  zTestSmirnov.test_x_equals_0c                 C   s   dd t tddtddD }t|}tt|ddtdjt	t
t
gd	 d
|d d df  |d d df< tt|ddtdjt	t
t
gd	 d S )Nc                 S   s   g | ]}|d dfqS r   r   r   r.   r   r   r   r1   &   s     z/TestSmirnov.test_x_equals_1.<locals>.<listcomp>r   r2   r3   r4   r!   r"   r#   r   r$   r5   r+   r   r   r   test_x_equals_1%   s
    "
  zTestSmirnov.test_x_equals_1c              
   C   s   ddddddddd	d
g
}t |}tt|ddtdjtttgd d|d d df  |d d df< tt|ddtdjtttgd d S )Nr         ?r=   )r   r=         ?)r   r=   g?UUUU?)   r=   g      ?)   r=   gy&1?)   r=   gEʠ?)   r=   g>?)   r=   g!?)	   r=   g+ˎ{?)
   r=   g4o?r!   r   r"   r#   r   r$   r%   r+   r   r   r   test_x_equals_0point5,   s    
  z!TestSmirnov.test_x_equals_0point5c                 C   s   t jddddd}t dgt| |d| g}tt|ddtdjtt	t	gd	 d|d d d
f  |d d d
f< tt
|ddtdjtt	t	gd	 d S )Nr   r   e   TZendpointr!   r   r"   r#   r$   )r   linspacecolumn_stacklenr   r   r'   r(   r)   r*   r   )r   xr,   r   r   r   test_n_equals_1=   s
      zTestSmirnov.test_n_equals_1c                 C   s   t jddddd}t d| d}t dgt| }t |||g}tt|ddtdj	t
ttgd	 d|d d d
f  |d d d
f< tt|ddtdj	t
ttgd	 d S )Nr=   r   rG   TrH   r   r!   r"   r#   r$   r   rI   powerarrayrK   rJ   r   r   r'   r(   r)   r*   r   r   rL   pr0   r,   r   r   r   test_n_equals_2D   s      zTestSmirnov.test_n_equals_2c                 C   s   t jddddd}t d| d}t dgt| }t |||g}tt|ddtd	j	t
ttgd
 d|d d df  |d d df< tt|ddtd	j	t
ttgd
 d S )Nffffff?r      TrH   r   r!   r   r"   r#   r$   rN   rQ   r   r   r   test_n_equals_3M   s      zTestSmirnov.test_n_equals_3c                    sL   d t  fddtdddD }t |}tt |dkd| d	 d S )
N皙?c                    s   g | ]}t | qS r   )r   r.   rL   r   r   r1   Z   s     z,TestSmirnov.test_n_large.<locals>.<listcomp>i  iL  r2   r   zNot all diffs negative %s)msg)r   rP   r8   Zdiffr   all)r   Zpvalsdfsr   rX   r   test_n_largeV   s     
zTestSmirnov.test_n_largeN)__name__
__module____qualname__r   r-   r9   r;   rF   rM   rS   rV   r\   r   r   r   r   r      s   		r   c                   @   sT   e Z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 )TestSmirnovic                 C   s   t ttdtj d S r   )r   r   r   r   r   r   r   r   r   r   `   s    zTestSmirnovi.test_nanc                 C   s   dddddddg}t |}tt|dd	td
jtttgd d|d d df  |d d df< tt|dd	td
jtttgd d S )N)r   rW   333333?)r   ra   rW   )r   Gz?{Gz?)r   rc   rb   )r   r   r   )r   r    r   )rE   g      p=g      ?r!   r   r"   r#   r   	r   r&   r   r   r'   r(   r)   r*   r   r+   r   r   r   r-   c   s    
  zTestSmirnovi.test_basicc                 C   s   dd t tddtddD }t|}tt|ddtdjt	t
t
gd	 d
|d d d
f  |d d d
f< tt|ddtdjt	t
t
gd	 d S )Nc                 S   s   g | ]}|d dfqS r!   r   r.   r   r   r   r1   r   s     z0TestSmirnovi.test_x_equals_0.<locals>.<listcomp>r   r2   r3   r4   r!   r"   r#   r   r6   r7   r8   r   r&   r   r   r'   r(   r)   r*   r   r+   r   r   r   r9   q   s
    "
  zTestSmirnovi.test_x_equals_0c                 C   s   dd t tddtddD }t|}tt|ddtdjt	t
t
gd	 d
|d d d
f  |d d d
f< tt|ddtdjt	t
t
gd	 d S )Nc                 S   s   g | ]}|d dfqS r:   r   r.   r   r   r   r1   y   s     z0TestSmirnovi.test_x_equals_1.<locals>.<listcomp>r   r2   r3   r4   r!   r"   r#   r   re   r+   r   r   r   r;   x   s
    "
  zTestSmirnovi.test_x_equals_1c                 C   s   t jddddd}t dgt| |d| g}tt|ddtdjtt	t	gd	 d|d d df  |d d df< tt
|ddtdjtt	t	gd	 d S )
Nr   r   rG   TrH   r!   r   r"   r#   )r   rI   rJ   rK   r   r   r'   r(   r)   r*   r   )r   ppr,   r   r   r   rM      s
      zTestSmirnovi.test_n_equals_1c                 C   s   t jddddd}t d| d}t dgt| }t |||g}tt|ddtdj	t
ttgd	 d|d d df  |d d df< tt|ddtdj	t
ttgd	 d S )
Nr=   r   rG   TrH   r   r!   r"   r#   r   rI   rO   rP   rK   rJ   r   r   r'   r(   r)   r*   r   rQ   r   r   r   rS      s      zTestSmirnovi.test_n_equals_2c                 C   s   t jddddd}t d| d}t dgt| }t |||g}tt|ddtd	j	t
ttgd
 d|d d df  |d d df< tt|ddtd	j	t
ttgd
 d S )NrT   r   rU   TrH   r   r!   r   r"   r#   rg   rQ   r   r   r   rV      s      zTestSmirnovi.test_n_equals_3c                 C   sp   dd }dd }ddddd	d
dg}t |}t||ddtdjtttgd t||ddtdjtttgd d S )Nc                 S   s   t | t| |S N)r   r   r0   rR   r   r   r   _sm_smi   s    z-TestSmirnovi.test_round_trip.<locals>._sm_smic                 S   s   t | t| |S rh   )r   r   ri   r   r   r   	_smc_smci   s    z/TestSmirnovi.test_round_trip.<locals>._smc_smci)r   rW   rW   )r   ra   ra   )r   r   r   )r   r   r   )r   r   r   )rE   +?rl   )rE   -C6?rm   r!   r   r"   r#   )r   r&   r   r'   r(   r)   r*   )r   rj   rk   r,   r   r   r   test_round_trip   s    
 zTestSmirnovi.test_round_tripc                 C   s   ddddddddd	d
dg}t |}tt|ddtdjtttgd d|d d df  |d d df< tt|ddtdjtttgd d S )Nr<   )r   r=   gwzl?)r   r>   r=   )r   r=   g<{?)r?   r=   gFwrZ?)r@   r=   g0 ?)rA   r=   g0@?)rB   r=   g A?)rC   r=   g^CKf?)rD   r=   g޵&?)rE   r=   gL4J?r!   r   r"   r#   r   rd   r+   r   r   r   rF      s     
  z"TestSmirnovi.test_x_equals_0point5N)r]   r^   r_   r   r-   r9   r;   rM   rS   rV   rn   rF   r   r   r   r   r`   _   s   		r`   c                   @   sR   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
ejdkdddd ZdS )TestSmirnovpc                 C   s   t ttdtj d S r   )r   r   r   r   r   r   r   r   r   r      s    zTestSmirnovp.test_nanc                 C   s   t dd}t |t |dt |dg}tt|ddtdjtt	t	gd t dd}t |t |d	t |dg}tt|ddtdjtt	t	gd d S )
Nr   rE   r   r$   r!   r   r"   r#         ?)
r   arangerJ   Z	full_liker   r   r'   r(   r)   r*   )r   Zn1_10dataset0Zn2_10dataset1r   r   r   r-      s       zTestSmirnovp.test_basicc                 C   s   t dd}d| }dd|  }| ||d   }|dt |d d  d 8 }t |||g}tt|ddtdjtt	t	gd d S )	Nr   r2   rp   r   r=   r!   r"   r#   )
r   rq   signrJ   r   r   r'   r(   r)   r*   )r   r0   rL   Zxm1Zpp1rs   r   r   r   test_oneminusoneovern   s    z"TestSmirnovp.test_oneminusoneovernc                 C   sf   t dd}d| }|| d  d| |d   }t |||g}tt|ddtdjtttgd d S )Nr   r2   r=   r   r!   r"   r#   	r   rq   rJ   r   r   r'   r(   r)   r*   r   r0   rL   rf   rr   r   r   r   test_oneovertwon   s
    zTestSmirnovp.test_oneovertwonc                 C   sn   dt dd }d| }|| d  d| |d   d }t |||g}tt|ddtdjtttgd d S )	Nr   r   rE   rp   r=   r!   r"   r#   rv   rw   r   r   r   test_oneovern   s
    "zTestSmirnovp.test_oneovernl        zrequires 64-bit platform)reasonc                 C   s   t dd}d| dt tj  }|| d  d| |d   }t |||g}tt|ddtdj	t
ttgd d| dt tj  }|| d  d| |d   d }t |||g}tt|ddtdj	t
ttgd d S )	Nr   r2   rp   r   r   r!   r"   r#   )r   rq   Zfinfor*   ZepsrJ   r   r   r'   r(   r)   )r   r0   rL   rf   rr   rs   r   r   r   test_oneovernclose   s     "zTestSmirnovp.test_oneoverncloseN)r]   r^   r_   r   r-   ru   rx   ry   pytestmarkZxfailsysmaxsizer{   r   r   r   r   ro      s   

ro   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestKolmogorovc                 C   s   t tttj d S rh   )r   r   r   r   r   r   r   r   r   r      s    zTestKolmogorov.test_nanc                 C   s2   dddddg}t |}tt|ddtd  d S )	N)r   rp   )r=   ˜?)BgR{{?r=   )r   	=G?)r    !E?r   r   r"   )r   r&   r   r   r'   r(   r+   r   r   r   r-      s    
zTestKolmogorov.test_basicc                 C   s   t ddd}ddddddd	d
dddddddddddddg}ddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g}t ||g}tt|d-d.td/  t ||g}tt|d-d.td/  d S )0Nr          @   rp   g;?gCg{?g?r   g<[4?gUOp?g|Xi?g\"?g
=G?gT	@x?g1qVd?grl}n?gS.Q?grI;N?glPz?ghMy?gn㨫D!i?g9=W?gK!E?        glAcR5gkC a=gz>gbk g?gQ3u?g._?gTe`{?g{N,?gQn?g|)\?g=!P?g1csh?grB0?gz$?gl%I?gLZ?gt.d?gWT?gc"?g?r   r   r"   )r   rI   rJ   r   r   r'   r(   r   )r   rL   r,   	dataset_cr   r   r   test_linspace  sZ                            zTestKolmogorov.test_linspacec                 C   s   t jddddd}t jdddd	d
dddddddddddddddg}dddddddddddddddd
d	dddt jg}t |d d  |d d  g}tt|d!d td"  t |d d# |d d# g}tt|d!d td"  d S )$Nr   rp   r   TrH   gź?g3?gn	o5?g	)?g(!N?gU#?g r?gl?g2|?r   gK)|?g?g2 ?gˍ?gu?gN?gk<?gf'G?g&?r   g&?gk?gU#?go	o5?g4?gź?r   r   r"   r$   )	r   rI   infrJ   r   r   r'   r(   r	   )r   rR   r,   r   r   r   r   test_linspacei  sZ                            zTestKolmogorov.test_linspaceic                 C   s`   dt dd }t dddddd	d
ddddddg}t |d| g}tt|ddtd  d S )Nr   r      Z'G?gp=9?g=$7?g,^5?gȤ@?g1l4?gQGד?g%5?g	By?gZbqf-?gK?g	N?g"?r   r"   )r   rq   rP   rJ   r   r   r'   r(   r   epsilonrL   r,   r   r   r   test_smallx4  s          zTestKolmogorov.test_smallxc                 C   s   dd }dd }t jddddd	}||d
k|dkB  }t ||g}t||ddtd  t ||g}t||ddtd  d S )Nc                 S   s   t t| S rh   )r   r   _xr   r   r   _ki_k?  s    z-TestKolmogorov.test_round_trip.<locals>._ki_kc                 S   s   t t| S rh   )r	   r   r   r   r   r   _kci_kcB  s    z/TestKolmogorov.test_round_trip.<locals>._kci_kcr   r   r   TrH   r   gzG?r   r   r"   r   rI   rJ   r   r'   r(   )r   r   r   rL   Zx02Z	dataset02r,   r   r   r   rn   >  s    zTestKolmogorov.test_round_tripN)	r]   r^   r_   r   r-   r   r   r   rn   r   r   r   r   r      s   

r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestKolmogic                 C   s   t tttj d S rh   )r   r   r   r   r   r   r   r   r   r   O  s    zTestKolmogi.test_nanc                 C   s4   ddddddg}t |}tt|ddtd	  d S )
N)rp   r   )r   r=   )r   r   )r=   r   )r   r   )r   r   r   r   r"   )r   r&   r   r   r'   r(   r+   r   r   r   r-   R  s    
zTestKolmogi.test_basicc                 C   s   dt ddd }t ddddd	d
ddddddddddddg}t d| |g}tt|ddtd  t ||g}tt|ddtd  d S )Nr=   r   7   r   r   gza<?gN(?gB9|?gZ"h?g:A?gi.^$?gڎ4?gMtxA?g~Iy?g^?gcw?guz)t?g<?gw(uR?gj_#K7?gvn@?g2n.?r   r"   	r   rq   rP   rJ   r   r   r'   r(   r	   r   r   r   r   test_smallpcdf]  s,    
          zTestKolmogi.test_smallpcdfc                 C   s   dt ddd }t ddddd	d
ddddddddddddg}t ||g}tt|ddtd  t d| |g}tt|ddtd  d S )Nr=   r   r   r   r   gI\%	?gI?gX~=?gA^12@gk@g	@gd1.@g[{U@gNo[\	@gHaI
@gi@g/a<@gAї
(@g~=@g[5;$@gM @gH$@r   r"   r   r   r   r   r   test_smallpsfo  s,    
          zTestKolmogi.test_smallpsfc                 C   sB   dd }t jddddd}t ||g}t||dd	td
  d S )Nc                 S   s   t t| S rh   )r   r   )Z_pr   r   r   _k_ki  s    z*TestKolmogi.test_round_trip.<locals>._k_kir   rp   rE   TrH   r   r   r"   r   )r   r   rR   r,   r   r   r   rn     s    zTestKolmogi.test_round_tripN)r]   r^   r_   r   r-   r   r   rn   r   r   r   r   r   N  s
   r   c                   @   s   e Zd Zdd Zdd ZdS )TestKolmogpc                 C   s   t tttj d S rh   )r   r   r   r
   r   r   r   r   r   r     s    zTestKolmogp.test_nanc                 C   s>   ddddddddd	d
dg}t |}tt|ddtd  d S )N)r   g       )g?g=)rW   gt鹿)ra   g^ڛ/)g?g!$J)rp   g2&)g333333?guk~;)gffffff?ggKk|q̿)g?g)g?g?𝖿)r   gz!ur   r   r"   )r   r&   r   r
   r'   r(   r+   r   r   r   r-     s    
zTestKolmogp.test_basicN)r]   r^   r_   r   r-   r   r   r   r   r     s   r   )r6   r~   r|   Znumpyr   Znumpy.testingr   Zscipy.special._testutilsr   Zscipy.specialr   r   r   r   Zscipy.special._ufuncsr   r	   r
   r   r   r   r'   r   r`   ro   r   r   r   r   r   r   r   <module>   s    P`9V<