o
    EbG                     @   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                   @   T   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      t ttdtj d S N   )r   npisnanr   nanself r   E/usr/lib/python3/dist-packages/scipy/special/tests/test_kolmogorov.pytest_nan      zTestSmirnov.test_nanc                 C   v   g 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 )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      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      g | ]}|d dfqS r%   r   .0nr   r   r   
<listcomp>       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   
   "
  $zTestSmirnov.test_x_equals_0c                 C   r2   )Nc                 S   r3   r   r   r   r4   r   r   r   r7   &   r8   z/TestSmirnov.test_x_equals_1.<locals>.<listcomp>r!   r9   r:   r;   r%   r&   r'   r   r(   r<   r/   r   r   r   test_x_equals_1%   rA   zTestSmirnov.test_x_equals_1c                 C   r   )N)
r         ?rE   )r!   rE         ?)r#   rE   g?UUUU?)   rE   g      ?)   rE   gy&1?)   rE   gEʠ?)   rE   g>?)   rE   g!?)	   rE   g+ˎ{?)
   rE   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   xr0   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 )NrE   r   rO   TrP   r!   r%   r&   r'   r(   r   rQ   powerarrayrS   rR   r   r   r+   r,   r-   r.   r   r   rT   pr6   r0   r   r   r   test_n_equals_2D        $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      TrP   r#   r%   r!   r&   r'   r(   rV   rY   r   r   r   test_n_equals_3M   r\   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   r4   rT   r   r   r7   Z   r8   z,TestSmirnov.test_n_large.<locals>.<listcomp>i  iL  r9   r   zNot all diffs negative %s)msg)r   rX   r?   Zdiffr   all)r   ZpvalsZdfsr   ra   r   test_n_largeV   s    
zTestSmirnov.test_n_largeN)__name__
__module____qualname__r   r1   r@   rC   rN   rU   r[   r_   rd   r   r   r   r   r      s    		r   c                   @   r   )TestSmirnovic                 C   r   r   )r   r   r   r   r   r   r   r   r   r   `   r   zTestSmirnovi.test_nanc                 C   v   g 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 )N))r   r`   333333?)r   rj   r`   )r   Gz?{Gz?)r   rl   rk   )r!   r"   r   )r#   r$   r   )rM   g      p=g      ?r%   r!   r&   r'   r   	r   r*   r   r   r+   r,   r-   r.   r   r/   r   r   r   r1   c   s
   
  $zTestSmirnovi.test_basicc                 C      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   r3   r%   r   r4   r   r   r   r7   r   r8   z0TestSmirnovi.test_x_equals_0.<locals>.<listcomp>r!   r9   r:   r;   r%   r&   r'   r   r=   r>   r?   r   r*   r   r   r+   r,   r-   r.   r   r/   r   r   r   r@   q   rA   zTestSmirnovi.test_x_equals_0c                 C   rn   )Nc                 S   r3   rB   r   r4   r   r   r   r7   y   r8   z0TestSmirnovi.test_x_equals_1.<locals>.<listcomp>r!   r9   r:   r;   r%   r&   r'   r   ro   r/   r   r   r   rC   x   rA   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   rO   TrP   r%   r!   r&   r'   )r   rQ   rR   rS   r   r   r+   r,   r-   r.   r   )r   ppr0   r   r   r   rU      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 )
NrE   r   rO   TrP   r!   r%   r&   r'   r   rQ   rW   rX   rS   rR   r   r   r+   r,   r-   r.   r   rY   r   r   r   r[      r\   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 )Nr]   r   r^   TrP   r#   r%   r!   r&   r'   rq   rY   r   r   r   r_      r\   zTestSmirnovi.test_n_equals_3c                 C   sf   dd }dd }g d}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      t | t| |S N)r   r   r6   rZ   r   r   r   _sm_smi      z-TestSmirnovi.test_round_trip.<locals>._sm_smic                 S   rr   rs   )r   r   rt   r   r   r   	_smc_smci   rv   z/TestSmirnovi.test_round_trip.<locals>._smc_smci))r   r`   r`   )r   rj   rj   )r!   r   r   )r#   r   r   )r#   r    r    )rM   +?rx   )rM   -C6?ry   r%   r!   r&   r'   )r   r*   r   r+   r,   r-   r.   )r   ru   rw   r0   r   r   r   test_round_trip   s   
 $zTestSmirnovi.test_round_tripc                 C   ri   )N)rD   )r!   rE   gwzl?)r!   rF   rE   )r#   rE   g<{?)rG   rE   gFwrZ?)rH   rE   g0 ?)rI   rE   g0@?)rJ   rE   g A?)rK   rE   g^CKf?)rL   rE   g޵&?)rM   rE   gL4J?r%   r!   r&   r'   r   rm   r/   r   r   r   rN      s
   
  $z"TestSmirnovi.test_x_equals_0point5N)re   rf   rg   r   r1   r@   rC   rU   r[   r_   rz   rN   r   r   r   r   rh   _   s    		rh   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   r   r   )r   r   r   r   r   r   r   r   r   r      r   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   rM   r   r(   r%   r!   r&   r'         ?)
r   arangerR   Z	full_liker   r   r+   r,   r-   r.   )r   Zn1_10dataset0Zn2_10dataset1r   r   r   r1      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   r9   r|   r!   rE   r%   r&   r'   )
r   r}   signrR   r   r   r+   r,   r-   r.   )r   r6   rT   Zxm1Zpp1r   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   r9   rE   r!   r%   r&   r'   	r   r}   rR   r   r   r+   r,   r-   r.   r   r6   rT   rp   r~   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   rM   r|   rE   r%   r&   r'   r   r   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#   r9   r|   r!   r   r%   r&   r'   )r   r}   Zfinfor.   ZepsrR   r   r   r+   r,   r-   )r   r6   rT   rp   r~   r   r   r   r   test_oneovernclose   s    "$zTestSmirnovp.test_oneoverncloseN)re   rf   rg   r   r1   r   r   r   pytestZmarkZxfailsysmaxsizer   r   r   r   r   r{      s    

r{   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      t tttj d S rs   )r   r   r   r   r   r   r   r   r   r         zTestKolmogorov.test_nanc                 C   ,   g d}t |}tt|ddtd  d S )N))r   r|   )rE   ˜?)BgR{{?rE   )r   	=G?)r!    !E?r   r   r&   )r   r*   r   r   r+   r,   r/   r   r   r   r1      s   
zTestKolmogorov.test_basicc                 C   sj   t ddd}g d}g d}t ||g}tt|ddtd  t ||g}tt|ddtd  d S )	Nr          @   )r|   r|   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   rQ   rR   r   r   r+   r,   r   )r   rT   r0   	dataset_cr   r   r   test_linspace  s   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   r|   r   TrP   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   rQ   infrR   r   r   r+   r,   r	   )r   rZ   r0   r   r   r   r   test_linspacei  s*   zTestKolmogorov.test_linspaceic                 C   sJ   dt dd }t g d}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   r}   rX   rR   r   r   r+   r,   r   epsilonrT   r0   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      t t| S rs   )r   r   Z_xr   r   r   _ki_k?     z-TestKolmogorov.test_round_trip.<locals>._ki_kc                 S   r   rs   )r	   r   r   r   r   r   _kci_kcB  r   z/TestKolmogorov.test_round_trip.<locals>._kci_kcr   r   r   TrP   r   gzG?r   r   r&   r   rQ   rR   r   r+   r,   )r   r   r   rT   Zx02Z	dataset02r0   r   r   r   rz   >  s   zTestKolmogorov.test_round_tripN)	re   rf   rg   r   r1   r   r   r   rz   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   r   rs   )r   r   r   r   r   r   r   r   r   r   O  r   zTestKolmogi.test_nanc                 C   r   )N))r|   r   )r   rE   )r   r   )rE   r   )r   r   )r   r!   r   r   r&   )r   r*   r   r   r+   r,   r/   r   r   r   r1   R  s   
zTestKolmogi.test_basicc                 C   sp   dt ddd }t g d}t d| |g}tt|ddtd  t ||g}tt|ddtd  d S )NrE   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   r}   rX   rR   r   r   r+   r,   r	   r   r   r   r   test_smallpcdf]  s   zTestKolmogi.test_smallpcdfc                 C   sp   dt ddd }t g d}t ||g}tt|ddtd  t d| |g}tt|ddtd  d S )NrE   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   r   rs   )r   r   )Z_pr   r   r   _k_ki  r   z*TestKolmogi.test_round_trip.<locals>._k_kir   r|   rM   TrP   r   r   r&   r   )r   r   rZ   r0   r   r   r   rz     s   zTestKolmogi.test_round_tripN)re   rf   rg   r   r1   r   r   rz   r   r   r   r   r   N  s    r   c                   @   s   e Zd Zdd Zdd ZdS )TestKolmogpc                 C   r   rs   )r   r   r   r
   r   r   r   r   r   r     r   zTestKolmogp.test_nanc                 C   r   )N))r   g       )g?g=)r`   gt鹿)rj   g^ڛ/)g?g!$J)r|   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   r1     s   
zTestKolmogp.test_basicN)re   rf   rg   r   r1   r   r   r   r   r     s    r   )r=   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   rh   r{   r   r   r   r   r   r   r   <module>   s     P`9V<