o
    	hPK                     @   s   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   W/var/www/vscode/kcb/lib/python3.10/site-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!   rtol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/   r0   r   r1   r   r   r   test_x_equals_0       "


 


zTestSmirnov.test_x_equals_0c                 C   r4   )Nc                 S   r5   r   r   r   r6   r   r   r   r9   ,   r:   z/TestSmirnov.test_x_equals_1.<locals>.<listcomp>r!   r;   r<   r=   r%   r&   r(   r   r*   r>   r1   r   r   r   test_x_equals_1+   rC   zTestSmirnov.test_x_equals_1c                 C   r   )N)
r         ?rG   )r!   rG         ?)r#   rG   g?UUUU?)   rG   g      ?)   rG   gy&1?)   rG   gEʠ?)   rG   g>?)   rG   g!?)	   rG   g+ˎ{?)
   rG   g4o?r%   r!   r&   r(   r   r*   r+   r1   r   r   r   test_x_equals_0point56   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endpointr%   r!   r&   r(   r*   )r   linspacecolumn_stacklenr   r   r-   r.   r/   r0   r   )r   xr2   r   r   r   test_n_equals_1K   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 )NrG   r   rQ   TrR   r!   r%   r&   r(   r*   r   rT   powerarrayrV   rU   r   r   r-   r.   r/   r0   r   r   rW   pr8   r2   r   r   r   test_n_equals_2V      

 


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      TrR   r#   r%   r!   r&   r(   r*   rY   r\   r   r   r   test_n_equals_3c   r_   zTestSmirnov.test_n_equals_3c                    sN   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   r6   rW   r   r   r9   t   r:   z,TestSmirnov.test_n_large.<locals>.<listcomp>i  iL  r;   r   zNot all diffs negative )msg)r   r[   rA   diffr   all)r   pvalsdfsr   rd   r   test_n_largep   s    
 zTestSmirnov.test_n_largeN)__name__
__module____qualname__r   r3   rB   rE   rP   rX   r^   rb   rj   r   r   r   r   r      s    r   c                   @   r   )TestSmirnovic                 C   r   r   )r   r   r   r   r   r   r   r   r   r   z   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   rc   333333?)r   rp   rc   )r   Gz?{Gz?)r   rr   rq   )r!   r"   r   )r#   r$   r   )rO   g      p=g      ?r%   r!   r&   r(   r   	r   r,   r   r   r-   r.   r/   r0   r   r1   r   r   r   r3   }   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   r5   r%   r   r6   r   r   r   r9      r:   z0TestSmirnovi.test_x_equals_0.<locals>.<listcomp>r!   r;   r<   r=   r%   r&   r(   r   r?   r@   rA   r   r,   r   r   r-   r.   r/   r0   r   r1   r   r   r   rB      rC   zTestSmirnovi.test_x_equals_0c                 C   rt   )Nc                 S   r5   rD   r   r6   r   r   r   r9      r:   z0TestSmirnovi.test_x_equals_1.<locals>.<listcomp>r!   r;   r<   r=   r%   r&   r(   r   ru   r1   r   r   r   rE      rC   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   rQ   TrR   r%   r!   r&   r(   )r   rT   rU   rV   r   r   r-   r.   r/   r0   r   )r   ppr2   r   r   r   rX      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 )
NrG   r   rQ   TrR   r!   r%   r&   r(   r   rT   rZ   r[   rV   rU   r   r   r-   r.   r/   r0   r   r\   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   ra   TrR   r#   r%   r!   r&   r(   rw   r\   r   r   r   rb      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   r8   r]   r   r   r   _sm_smi      z-TestSmirnovi.test_round_trip.<locals>._sm_smic                 S   rx   ry   )r   r   rz   r   r   r   	_smc_smci   r|   z/TestSmirnovi.test_round_trip.<locals>._smc_smci))r   rc   rc   )r   rp   rp   )r!   r   r   )r#   r   r   )r#   r    r    )rO   +?r~   )rO   -C6?r   r%   r!   r&   r(   )r   r,   r   r-   r.   r/   r0   )r   r{   r}   r2   r   r   r   test_round_trip   s   





zTestSmirnovi.test_round_tripc                 C   ro   )N)rF   )r!   rG   gwzl?)r!   rH   rG   )r#   rG   g<{?)rI   rG   gFwrZ?)rJ   rG   g0 ?)rK   rG   g0@?)rL   rG   g A?)rM   rG   g^CKf?)rN   rG   g޵&?)rO   rG   gL4J?r%   r!   r&   r(   r   rs   r1   r   r   r   rP      s   


 


z"TestSmirnovi.test_x_equals_0point5N)rk   rl   rm   r   r3   rB   rE   rX   r^   rb   r   rP   r   r   r   r   rn   y   s    rn   c                   @   <   e Zd Zdd Zdd Zdd Zdd Zd	d
 Z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   rO   r   r*   r%   r!   r&   r(         ?)
r   arangerU   	full_liker   r   r-   r.   r/   r0   )r   n1_10dataset0n2_10dataset1r   r   r   r3      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   r;   r   r!   rG   r%   r&   r(   )
r   r   signrU   r   r   r-   r.   r/   r0   )r   r8   rW   xm1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   r;   rG   r!   r%   r&   r(   	r   r   rU   r   r   r-   r.   r/   r0   r   r8   rW   rv   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   rO   r   rG   r%   r&   r(   r   r   r   r   r   test_oneovern%  s   "


zTestSmirnovp.test_oneovernc                 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#   r;   r   r!   r   r%   r&   r(   )r   r   finfor0   epsrU   r   r   r-   r.   r/   )r   r8   rW   rv   r   r   r   r   r   test_oneovernclose0  s"   

"


zTestSmirnovp.test_oneoverncloseN)	rk   rl   rm   r   r3   r   r   r   r   r   r   r   r   r      s    
r   c                   @   r   )TestKolmogorovc                 C      t tttj d S ry   )r   r   r   r   r   r   r   r   r   r   E     zTestKolmogorov.test_nanc                 C   ,   g d}t |}tt|ddtd  d S )N))r   r   )rG   ˜?)BgR{{?rG   )r   	=G?)r!    !E?r   r   r&   )r   r,   r   r   r-   r.   r1   r   r   r   r3   H  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   rT   rU   r   r   r-   r.   r   )r   rW   r2   	dataset_cr   r   r   test_linspaceR  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   TrR   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   rT   infrU   r   r   r-   r.   r	   )r   r]   r2   r   r   r   r   test_linspaceii  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   r[   rU   r   r   r-   r.   r   epsilonrW   r2   r   r   r   test_smallx  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 ry   )r   r   _xr   r   r   _ki_k     z-TestKolmogorov.test_round_trip.<locals>._ki_kc                 S   r   ry   )r	   r   r   r   r   r   _kci_kc  r   z/TestKolmogorov.test_round_trip.<locals>._kci_kcr   r   r   TrR   r   gzG?r   r   r&   r   rT   rU   r   r-   r.   )r   r   r   rW   x02	dataset02r2   r   r   r   r     s   zTestKolmogorov.test_round_tripN)	rk   rl   rm   r   r3   r   r   r   r   r   r   r   r   r   D  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   ry   )r   r   r   r   r   r   r   r   r   r     r   zTestKolmogi.test_nanc                 C   r   )N))r   r   )r   rG   )r   r   )rG   r   )r   r   )r   r!   r   r   r&   )r   r,   r   r   r-   r.   r1   r   r   r   r3     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 )NrG   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   r[   rU   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 )NrG   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_smallpsf  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   ry   )r   r   )_pr   r   r   _k_ki  r   z*TestKolmogi.test_round_trip.<locals>._k_kir   r   rO   TrR   r   r   r&   r   )r   r   r]   r2   r   r   r   r     s   zTestKolmogi.test_round_tripN)rk   rl   rm   r   r3   r   r   r   r   r   r   r   r     s    r   c                   @   s   e Zd Zdd Zdd ZdS )TestKolmogpc                 C   r   ry   )r   r   r   r
   r   r   r   r   r   r     r   zTestKolmogp.test_nanc                 C   r   )N))r   g       )g?g=)rc   gt鹿)rp   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.   r1   r   r   r   r3     s   
zTestKolmogp.test_basicN)rk   rl   rm   r   r3   r   r   r   r   r     s    r   )r?   numpyr   numpy.testingr   scipy.special._testutilsr   scipy.specialr   r   r   r   scipy.special._ufuncsr   r	   r
   r   r   r   r-   r   rn   r   r   r   r   r   r   r   r   <module>   s     l KW>