a
    QeG                     @   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   W/var/www/sunrise/env/lib/python3.9/site-packages/scipy/special/tests/test_kolmogorov.pytest_nan   s    zTestSmirnov.test_nanc                 C   sv   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   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>       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   &   r2   z/TestSmirnov.test_x_equals_1.<locals>.<listcomp>r   r3   r4   r5   r!   r"   r#   r   r$   r6   r+   r   r   r   test_x_equals_1%   s
    "
  zTestSmirnov.test_x_equals_1c                 C   sv   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>   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   rH   TrI   r   r!   r"   r#   r$   r   rJ   powerarrayrL   rK   r   r   r'   r(   r)   r*   r   r   rM   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      TrI   r   r!   r   r"   r#   r$   rO   rR   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.   rM   r   r   r1   Z   r2   z,TestSmirnov.test_n_large.<locals>.<listcomp>i  iL  r3   r   zNot all diffs negative %s)msg)r   rQ   r9   diffr   all)r   Zpvalsdfsr   rY   r   test_n_largeV   s     
zTestSmirnov.test_n_largeN)__name__
__module____qualname__r   r-   r:   r<   rG   rN   rT   rW   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   sv   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   rX   333333?)r   rc   rX   )r   Gz?{Gz?)r   re   rd   )r   r   r   )r   r    r   )rF   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   r2   z0TestSmirnovi.test_x_equals_0.<locals>.<listcomp>r   r3   r4   r5   r!   r"   r#   r   r7   r8   r9   r   r&   r   r   r'   r(   r)   r*   r   r+   r   r   r   r:   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   r2   z0TestSmirnovi.test_x_equals_1.<locals>.<listcomp>r   r3   r4   r5   r!   r"   r#   r   rg   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   rH   TrI   r!   r   r"   r#   )r   rJ   rK   rL   r   r   r'   r(   r)   r*   r   )r   ppr,   r   r   r   rN      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   rH   TrI   r   r!   r"   r#   r   rJ   rP   rQ   rL   rK   r   r   r'   r(   r)   r*   r   rR   r   r   r   rT      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 )NrU   r   rV   TrI   r   r!   r   r"   r#   ri   rR   r   r   r   rW      s      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   s   t | t| |S N)r   r   r0   rS   r   r   r   _sm_smi   s    z-TestSmirnovi.test_round_trip.<locals>._sm_smic                 S   s   t | t| |S rj   )r   r   rk   r   r   r   	_smc_smci   s    z/TestSmirnovi.test_round_trip.<locals>._smc_smci))r   rX   rX   )r   rc   rc   )r   r   r   )r   r   r   )r   r   r   )rF   +?rn   )rF   -C6?ro   r!   r   r"   r#   )r   r&   r   r'   r(   r)   r*   )r   rl   rm   r,   r   r   r   test_round_trip   s    
 zTestSmirnovi.test_round_tripc                 C   sv   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>   gwzl?)r   r?   r>   )r   r>   g<{?)r@   r>   gFwrZ?)rA   r>   g0 ?)rB   r>   g0@?)rC   r>   g A?)rD   r>   g^CKf?)rE   r>   g޵&?)rF   r>   gL4J?r!   r   r"   r#   r   rf   r+   r   r   r   rG      s
    
  z"TestSmirnovi.test_x_equals_0point5N)r_   r`   ra   r   r-   r:   r<   rN   rT   rW   rp   rG   r   r   r   r   rb   _   s   		rb   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   rF   r   r$   r!   r   r"   r#         ?)
r   arangerK   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   r3   rr   r   r>   r!   r"   r#   )
r   rs   signrK   r   r   r'   r(   r)   r*   )r   r0   rM   Zxm1Zpp1ru   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   r3   r>   r   r!   r"   r#   	r   rs   rK   r   r   r'   r(   r)   r*   r   r0   rM   rh   rt   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   rF   rr   r>   r!   r"   r#   rx   ry   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   r3   rr   r   r   r!   r"   r#   )r   rs   Zfinfor*   ZepsrK   r   r   r'   r(   r)   )r   r0   rM   rh   rt   ru   r   r   r   test_oneovernclose   s     "zTestSmirnovp.test_oneoverncloseN)r_   r`   ra   r   r-   rw   rz   r{   pytestmarkZxfailsysmaxsizer}   r   r   r   r   rq      s   

rq   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 rj   )r   r   r   r   r   r   r   r   r   r      s    zTestKolmogorov.test_nanc                 C   s,   g d}t |}tt|ddtd  d S )N))r   rr   )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   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          @   )rr   rr   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   rJ   rK   r   r   r'   r(   r   )r   rM   r,   	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   rr   r   TrI   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   rJ   infrK   r   r   r'   r(   r	   )r   rS   r,   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   rs   rQ   rK   r   r   r'   r(   r   epsilonrM   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 rj   )r   r   _xr   r   r   _ki_k?  s    z-TestKolmogorov.test_round_trip.<locals>._ki_kc                 S   s   t t| S rj   )r	   r   r   r   r   r   _kci_kcB  s    z/TestKolmogorov.test_round_trip.<locals>._kci_kcr   r   r   TrI   r   gzG?r   r   r"   r   rJ   rK   r   r'   r(   )r   r   r   rM   Zx02Z	dataset02r,   r   r   r   rp   >  s    zTestKolmogorov.test_round_tripN)	r_   r`   ra   r   r-   r   r   r   rp   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 rj   )r   r   r   r   r   r   r   r   r   r   O  s    zTestKolmogi.test_nanc                 C   s,   g d}t |}tt|ddtd  d S )N))rr   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   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 )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   rs   rQ   rK   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 )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 rj   )r   r   )_pr   r   r   _k_ki  s    z*TestKolmogi.test_round_trip.<locals>._k_kir   rr   rF   TrI   r   r   r"   r   )r   r   rS   r,   r   r   r   rp     s    zTestKolmogi.test_round_tripN)r_   r`   ra   r   r-   r   r   rp   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 rj   )r   r   r   r
   r   r   r   r   r   r     s    zTestKolmogp.test_nanc                 C   s,   g d}t |}tt|ddtd  d S )N))r   g       )g?g=)rX   gt鹿)rc   g^ڛ/)g?g!$J)rr   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`   ra   r   r-   r   r   r   r   r     s   r   )r7   r   r~   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   rb   rq   r   r   r   r   r   r   r   <module>   s    P`9V<