
    xfG                         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      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z G d d      Zy)    N)assert_)FuncData)
kolmogorovkolmogismirnovsmirnovi)_kolmogc	_kolmogci_kolmogp	_smirnovc
_smirnovci	_smirnovpg|=c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestSmirnovc                 p    t        t        j                  t        dt        j                                     y N   )r   npisnanr   nanselfs    E/usr/lib/python3/dist-packages/scipy/special/tests/test_kolmogorov.pytest_nanzTestSmirnov.test_nan   s    BFF+,-    c                 8   g d}t        j                  |      }t        t        |ddt              j                  t        t        t        g       d|d d df   z
  |d d df<   t        t        |ddt              j                  t        t        t        g       y )N))r   皙??)r         ?      ?)   r         ?)   r         `?r   r   r!   rtoldtypesr   	r   asarrayr   r   _rtolcheckintfloatr   r   datasets     r   
test_basiczTestSmirnov.test_basic   s    6
 **W%'6159??UTYGZ?[WQU^+2GVQU;AA#uV[I\A]r   c                    t        j                  t        dd      t        dd            D cg c]  }|ddf	 }}t        j                  |      }t        t        |ddt              j                  t        t        t        g	       d|d d d
f   z
  |d d d
f<   t        t        |ddt              j                  t        t        t        g	       y c c}w )Nr!          r   r   r%   r&   r(   r*   	itertoolschainranger   r,   r   r   r-   r.   r/   r0   r   r   nr2   s      r   test_x_equals_0zTestSmirnov.test_x_equals_0       &/ooeArlE$PTDU&VWAq!9WW**W%'6159??UTYGZ?[WQU^+2GVQU;AA#uV[I\A]	 X   Cc                    t        j                  t        dd      t        dd            D cg c]  }|ddf	 }}t        j                  |      }t        t        |ddt              j                  t        t        t        g	       d|d d d
f   z
  |d d d
f<   t        t        |ddt              j                  t        t        t        g	       y c c}w )Nr!   r5   r6   r7   r   r   r%   r&   r(   r*   r8   r<   s      r   test_x_equals_1zTestSmirnov.test_x_equals_1%   r?   r@   c                 8   g d}t        j                  |      }t        t        |ddt              j                  t        t        t        g       d|d d df   z
  |d d df<   t        t        |ddt              j                  t        t        t        g       y )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+   r1   s     r   test_x_equals_0point5z!TestSmirnov.test_x_equals_0point5,   s    	+ **W%'6159??UTYGZ?[WQU^+2GVQU;AA#uV[I\A]r   c                    t        j                  dddd      }t        j                  dgt        |      z  |d|z
  g      }t	        t
        |ddt              j                  t        t        t        g	       d|d d d
f   z
  |d d d
f<   t	        t        |ddt              j                  t        t        t        g	       y )Nr   r   e   Tendpointr%   r!   r&   r(   r*   )r   linspacecolumn_stacklenr   r   r-   r.   r/   r0   r   )r   xr2   s      r   test_n_equals_1zTestSmirnov.test_n_equals_1=   s    KK1cD1//A3s1v:q!A#"67'6159??UTYGZ?[WQU^+2GVQU;AA#uV[I\A]r   c                    t        j                  dddd      }t        j                  d|z
  d      }t        j                  dgt	        |      z        }t        j
                  |||g      }t        t        |ddt              j                  t        t        t        g	       d|d d d
f   z
  |d d d
f<   t        t        |ddt              j                  t        t        t        g	       y )NrE   r   rP   TrQ   r!   r%   r&   r(   r*   r   rS   powerarrayrU   rT   r   r   r-   r.   r/   r0   r   r   rV   pr=   r2   s        r   test_n_equals_2zTestSmirnov.test_n_equals_2D   s    KKQd3HHQqS!HHaS3q6\"//1a),'6159??UTYGZ?[WQU^+2GVQU;AA#uV[I\A]r   c                    t        j                  dddd      }t        j                  d|z
  d      }t        j                  dgt	        |      z        }t        j
                  |||g      }t        t        |ddt        	      j                  t        t        t        g
       d|d d df   z
  |d d df<   t        t        |ddt        	      j                  t        t        t        g
       y )Nffffff?r      TrQ   r#   r%   r!   r&   r(   r*   rY   r\   s        r   test_n_equals_3zTestSmirnov.test_n_equals_3M   s    KKQT2HHQqS!HHaS3q6\"//1a),'6159??UTYGZ?[WQU^+2GVQU;AA#uV[I\A]r   c           	          d}t        j                  t        ddd      D cg c]  }t        ||       c}      }t        j                  |      }t        t        j                  |dk        d|z         y c c}w )N皙?i  iL  r5   r   zNot all diffs negative %s)msg)r   r[   r;   r   diffr   all)r   rV   r=   pvalsdfss        r   test_n_largezTestSmirnov.test_n_largeV   sa     sD"1EFA'!Q-FGggensax &AC&GH Gs   A7N)__name__
__module____qualname__r   r3   r>   rB   rN   rW   r^   rb   rj    r   r   r   r      s7    .	^^^^"^^^Ir   r   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestSmirnovic                 p    t        t        j                  t        dt        j                                     y r   )r   r   r   r   r   r   s    r   r   zTestSmirnovi.test_nan`   s    !RVV,-.r   c                 8   g d}t        j                  |      }t        t        |ddt              j                  t        t        t        g       d|d d df   z
  |d d df<   t        t        |ddt              j                  t        t        t        g       y )N))r   rd   333333?)r   rs   rd   )r   Gz?{Gz?)r   ru   rt   )r!   r"   r   )r#   r$   r   )rM   g      p=g      ?r%   r!   r&   r(   r   	r   r,   r   r   r-   r.   r/   r0   r   r1   s     r   r3   zTestSmirnovi.test_basicc   s    7 **W%7FAE:@@eUZH[@\GAqDM)1Wfae<BB3PUW\J]B^r   c                    t        j                  t        dd      t        dd            D cg c]  }|ddf	 }}t        j                  |      }t        t        |ddt              j                  t        t        t        g	       d|d d df   z
  |d d df<   t        t        |ddt              j                  t        t        t        g	       y c c}w )
Nr!   r5   r6   r7   r   r   r%   r&   r(   r9   r:   r;   r   r,   r   r   r-   r.   r/   r0   r   r<   s      r   r>   zTestSmirnovi.test_x_equals_0q       &/ooeArlE$PTDU&VWAq!9WW**W%7FAE:@@eUZH[@\GAqDM)1Wfae<BB3PUW\J]B^	 Xr@   c                    t        j                  t        dd      t        dd            D cg c]  }|ddf	 }}t        j                  |      }t        t        |ddt              j                  t        t        t        g	       d|d d df   z
  |d d df<   t        t        |ddt              j                  t        t        t        g	       y c c}w )
Nr!   r5   r6   r7   r   r   r%   r&   r(   rx   r<   s      r   rB   zTestSmirnovi.test_x_equals_1x   ry   r@   c                    t        j                  dddd      }t        j                  dgt        |      z  |d|z
  g      }t	        t
        |ddt              j                  t        t        t        g	       d|d d df   z
  |d d df<   t	        t        |ddt              j                  t        t        t        g	       y )
Nr   r   rP   TrQ   r%   r!   r&   r(   )r   rS   rT   rU   r   r   r-   r.   r/   r0   r   )r   ppr2   s      r   rW   zTestSmirnovi.test_n_equals_1   s    [[AsT2//A3s2w;AbD"9:7FAE:@@eUZH[@\GAqDM)1Wfae<BB3PUW\J]B^r   c                    t        j                  dddd      }t        j                  d|z
  d      }t        j                  dgt	        |      z        }t        j
                  |||g      }t        t        |ddt              j                  t        t        t        g	       d|d d df   z
  |d d df<   t        t        |ddt              j                  t        t        t        g	       y )
NrE   r   rP   TrQ   r!   r%   r&   r(   r   rS   rZ   r[   rU   rT   r   r   r-   r.   r/   r0   r   r\   s        r   r^   zTestSmirnovi.test_n_equals_2   s    KKQd3HHQqS!HHaS3q6\"//1a),7FAE:@@eUZH[@\GAqDM)1Wfae<BB3PUW\J]B^r   c                    t        j                  dddd      }t        j                  d|z
  d      }t        j                  dgt	        |      z        }t        j
                  |||g      }t        t        |ddt        	      j                  t        t        t        g
       d|d d df   z
  |d d df<   t        t        |ddt        	      j                  t        t        t        g
       y )Nr`   r   ra   TrQ   r#   r%   r!   r&   r(   r~   r\   s        r   rb   zTestSmirnovi.test_n_equals_3   s    KKQT2HHQqS!HHaS3q6\"//1a),7FAE:@@eUZH[@\GAqDM)1Wfae<BB3PUW\J]B^r   c                    d }d }g d}t        j                  |      }t        ||ddt              j	                  t
        t        t        g       t        ||ddt              j	                  t
        t        t        g       y )Nc                 .    t        | t        | |            S N)r   r   r=   r]   s     r   _sm_smiz-TestSmirnovi.test_round_trip.<locals>._sm_smi   s    1hq!n--r   c                 .    t        | t        | |            S r   )r   r   r   s     r   	_smc_smciz/TestSmirnovi.test_round_trip.<locals>._smc_smci   s    Q
1a 011r   ))r   rd   rd   )r   rs   rs   )r!   r   r   )r#   r   r   )r#   r    r    )rM   +?r   )rM   -C6?r   r%   r!   r&   r(   )r   r,   r   r-   r.   r/   r0   )r   r   r   r2   s       r   test_round_tripzTestSmirnovi.test_round_trip   so    	.	2) **W%'6159??UTYGZ?[GVQU;AA#uV[I\A]r   c                 8   g d}t        j                  |      }t        t        |ddt              j                  t        t        t        g       d|d d df   z
  |d d df<   t        t        |ddt              j                  t        t        t        g       y )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   rv   r1   s     r   rN   z"TestSmirnovi.test_x_equals_0point5   s    
- **W%7FAE:@@eUZH[@\GAqDM)1Wfae<BB3PUW\J]B^r   N)rk   rl   rm   r   r3   r>   rB   rW   r^   rb   r   rN   rn   r   r   rp   rp   _   s7    /______^&_r   rp   c                       e Zd Zd Zd Zd Zd Zd Zej                  j                  ej                  dk  d      d	        Zy
)TestSmirnovpc                 p    t        t        j                  t        dt        j                                     y r   )r   r   r   r   r   r   s    r   r   zTestSmirnovp.test_nan   s    1bff-./r   c                 8   t        j                  dd      }t        j                  |t        j                  |d      t        j                  |d      g      }t	        t
        |ddt              j                  t        t        t        g       t        j                  dd      }t        j                  |t        j                  |d	      t        j                  |d      g      }t	        t
        |ddt              j                  t        t        t        g       y )
Nr   rM   r   r*   r%   r!   r&   r(         ?)
r   arangerT   	full_liker   r   r-   r.   r/   r0   )r   n1_10dataset0n2_10dataset1s        r   r3   zTestSmirnovp.test_basic   s    		!R ??E2<<q+A2<<PUWYCZ#[\Hfae<BB3PUW\J]B^		!R ??E2<<s+CR\\RWYZE[#\]Hfae<BB3PUW\J]B^r   c                 H   t        j                  dd      }d|z  }dd|z  z
  }| ||dz
  z  z  }|dt        j                  |dz
        dz  z
  dz  z  }t        j                  |||g      }t	        t
        |ddt              j                  t        t        t        g       y )	Nr   r5   r   r!   rE   r%   r&   r(   )
r   r   signrT   r   r   r-   r.   r/   r0   )r   r=   rV   xm1pp1r   s         r   test_oneminusoneovernz"TestSmirnovp.test_oneminusoneovern   s    IIaEAgb1qs8m"''!A#,/!S((??AsC=1Hfae<BB3PUW\J]B^r   c                    t        j                  dd      }d|z  }||z  dz    d|z   |dz
  z  z  }t        j                  |||g      }t        t        |ddt
              j                  t        t        t        g       y )Nr   r5   rE   r!   r%   r&   r(   	r   r   rT   r   r   r-   r.   r/   r0   r   r=   rV   r|   r   s        r   test_oneovertwonzTestSmirnovp.test_oneovertwon   sv    IIa!Gs1uX1!$??Aq":.Hfae<BB3PUW\J]B^r   c                    dt        j                  dd      z  }d|z  }||z  dz    d|z   |dz
  z  z  dz   }t        j                  |||g      }t        t        |ddt
              j                  t        t        t        g       y )	Nr!   r   rM   r   rE   r%   r&   r(   r   r   s        r   test_oneovernzTestSmirnovp.test_oneovern   s    ryyBEs1uX1!$s*??Aq":.Hfae<BB3PUW\J]B^r   l        zrequires 64-bit platform)reasonc                 v   t        j                  dd      }d|z  dt        j                  t              j                  z  z
  }||z  dz    d|z   |dz
  z  z  }t        j
                  |||g      }t        t        |ddt              j                  t        t        t        g       d|z  dt        j                  t              j                  z  z   }||z  dz    d|z   |dz
  z  z  dz   }t        j
                  |||g      }t        t        |ddt              j                  t        t        t        g       y )	Nr#   r5   r   r!   r   r%   r&   r(   )r   r   finfor0   epsrT   r   r   r-   r.   r/   )r   r=   rV   r|   r   r   s         r   test_oneovernclosezTestSmirnovp.test_oneovernclose   s    IIaEAbhhuo))))s1uX1!$??Aq":.Hfae<BB3PUW\J]B^EAbhhuo))))s1uX1!$q(??Aq":.Hfae<BB3PUW\J]B^r   N)rk   rl   rm   r   r3   r   r   r   pytestmarkxfailsysmaxsizer   rn   r   r   r   r      sW    0____ [[s{{e+8  :_:_r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestKolmogorovc                 n    t        t        j                  t        t        j                                     y r   )r   r   r   r   r   r   s    r   r   zTestKolmogorov.test_nan   s    BFF+,-r   c                     g d}t        j                  |      }t        t        |ddt              j                          y )N))r   r   )rE   ˜?)BgR{{?rE   )r   	=G?)r!    !E?r   r   r&   )r   r,   r   r   r-   r.   r1   s     r   r3   zTestKolmogorov.test_basic   s2    0 **W%WdAE:@@Br   c                 6   t        j                  ddd      }g d}g d}t        j                  ||g      }t        t        |ddt
              j                          t        j                  ||g      }t        t        |ddt
              j                          y )	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   rS   rT   r   r   r-   r.   r	   )r   rV   r2   	dataset_cs       r   test_linspacezTestKolmogorov.test_linspace  s|    KK3#OQ	 //1g,/WdAE:@@BOOQ	N3	9dAE:@@Br   c                    t        j                  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        j                  |d d  |d d  g      }t	        t
        |d!d t        "      j                          t        j                  |d d# |d d# g      }t	        t        |d!d t        "      j                          y )$Nr   r   r   TrQ   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   rS   infrT   r   r   r-   r.   r
   )r   r]   r2   r   s       r   test_linspaceizTestKolmogorov.test_linspacei  s   KK3T266-/A%'9;M%'9;M%'9;M%'9;M%'9;M%'9;MO ();=O');=O');=O');=O');=O');=O');RVVE	 //1QR5'!"+"67'47==?OOQsVYs^$<=	ItQU;AACr   c                     dt        j                  dd      z  }t        j                  g d      }t        j                  |d|z
  g      }t	        t
        |ddt              j                          y )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[   rT   r   r   r-   r.   r   epsilonrV   r2   s       r   test_smallxzTestKolmogorov.test_smallx4  s[    1b))HH % &
 //1ai.1WdAE:@@Br   c                 B   d }d }t        j                  dddd      }||dk(  |d	kD  z     }t        j                  ||g      }t        ||d
dt              j                          t        j                  ||g      }t        ||d
dt              j                          y )Nc                 *    t        t        |             S r   )r   r   _xs    r   _ki_kz-TestKolmogorov.test_round_trip.<locals>._ki_k?  s    :b>**r   c                 *    t        t        |             S r   )r
   r	   r   s    r   _kci_kcz/TestKolmogorov.test_round_trip.<locals>._kci_kcB  s    Xb\**r   r   r   r   TrQ   r   gzG?r   r   r&   r   rS   rT   r   r-   r.   )r   r   r   rV   x02	dataset02r2   s          r   r   zTestKolmogorov.test_round_trip>  s    	+	+ KKS"t4aAH%&OOS#J/		47==?//1a&)'47==?r   N)	rk   rl   rm   r   r3   r   r   r   r   rn   r   r   r   r      s%    .CC.D.C@r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestKolmogic                 n    t        t        j                  t        t        j                                     y r   )r   r   r   r   r   r   s    r   r   zTestKolmogi.test_nanO  s    )*r   c                     g d}t        j                  |      }t        t        |ddt              j                          y )N))r   r   )r   rE   )r   r   )rE   r   )r   r   )r   r!   r   r   r&   )r   r,   r   r   r-   r.   r1   s     r   r3   zTestKolmogi.test_basicR  s2    0 **W%'47==?r   c                 `   dt        j                  ddd      z  }t        j                  g d      }t        j                  d|z
  |g      }t	        t
        |ddt              j                          t        j                  ||g      }t	        t        |ddt              j                          y )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   r[   rT   r   r   r-   r.   r
   r   s       r   test_smallpcdfzTestKolmogi.test_smallpcdf]  s    1b!,, HH R S //1W9a.1'47==?//7A,/GT159??Ar   c                 `   dt        j                  ddd      z  }t        j                  g d      }t        j                  ||g      }t	        t
        |ddt              j                          t        j                  d|z
  |g      }t	        t        |ddt              j                          y )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   s       r   test_smallpsfzTestKolmogi.test_smallpsfo  s    1b!,, HH R S //7A,/'47==?//1W9a.1GT159??Ar   c                     d }t        j                  dddd      }t        j                  ||g      }t        ||ddt        	      j                          y )
Nc                 *    t        t        |             S r   )r   r   )_ps    r   _k_kiz*TestKolmogi.test_round_trip.<locals>._k_ki  s    gbk**r   r   r   rM   TrQ   r   r   r&   r   )r   r   r]   r2   s       r   r   zTestKolmogi.test_round_trip  sH    	+ KKS"t4//1a&)qu5;;=r   N)rk   rl   rm   r   r3   r   r   r   rn   r   r   r   r   N  s    +	@B$B$>r   r   c                       e Zd Zd Zd Zy)TestKolmogpc                 n    t        t        j                  t        t        j                                     y r   )r   r   r   r   r   r   s    r   r   zTestKolmogp.test_nan  s    "&&)*+r   c                     g d}t        j                  |      }t        t        |ddt              j                          y )N))r   g       )g?g=)rd   gt鹿)rs   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   s     r   r3   zTestKolmogp.test_basic  s2    
6 **W%7D!%8>>@r   N)rk   rl   rm   r   r3   rn   r   r   r   r     s    ,Ar   r   )r9   r   r   numpyr   numpy.testingr   scipy.special._testutilsr   scipy.specialr   r   r   r   scipy.special._ufuncsr	   r
   r   r   r   r   r-   r   rp   r   r   r   r   rn   r   r   <module>r      s     
   ! - @ @E E 	MI MI`]_ ]_@6_ 6_rS@ S@l9> 9>xA Ar   