
    geG                        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dS )    N)assert_)FuncData)
kolmogorovkolmogismirnovsmirnovi)_kolmogc	_kolmogci_kolmogp	_smirnovc
_smirnovci	_smirnovpg|=c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestSmirnovc                 x    t          t          j        t          dt          j                                       d S N   )r   npisnanr   nanselfs    Clib/python3.11/site-packages/scipy/special/tests/test_kolmogorov.pytest_nanzTestSmirnov.test_nan   s,    BF++,,-----    c                 r   g d}t          j        |          }t          t          |ddt                                        t          t          t          g           d|d d df         z
  |d d df<   t          t          |ddt                                        t          t          t          g           d S )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 6 6
 *W%%'615999??UTYGZ?[[[WQQQU^+2GVQU;;;AA#uV[I\A]]]]]r   c                    d t          j        t          dd          t          dd                    D             }t          j        |          }t          t          |ddt                                        t          t          t          g           d	|d d d
f         z
  |d d d
f<   t          t          |ddt                                        t          t          t          g           d S )Nc                     g | ]}|d dfS r%    .0ns     r   
<listcomp>z/TestSmirnov.test_x_equals_0.<locals>.<listcomp>       WWWAq!9WWWr   r!          r%   r&   r(   r   r*   	itertoolschainranger   r,   r   r   r-   r.   r/   r0   r   r1   s     r   test_x_equals_0zTestSmirnov.test_x_equals_0       WWioeArllE$PTDUDU&V&VWWW*W%%'615999??UTYGZ?[[[WQQQU^+2GVQU;;;AA#uV[I\A]]]]]r   c                    d t          j        t          dd          t          dd                    D             }t          j        |          }t          t          |ddt                                        t          t          t          g           d	|d d d
f         z
  |d d d
f<   t          t          |ddt                                        t          t          t          g           d S )Nc                     g | ]}|d dfS r   r   r6   r7   s     r   r:   z/TestSmirnov.test_x_equals_1.<locals>.<listcomp>&   r;   r   r!   r<   r=   r>   r%   r&   r(   r   r*   r?   r1   s     r   test_x_equals_1zTestSmirnov.test_x_equals_1%   rD   r   c                 r   g d}t          j        |          }t          t          |ddt                                        t          t          t          g           d|d d df         z
  |d d df<   t          t          |ddt                                        t          t          t          g           d S )N)
r         ?rK   )r!   rK         ?)r#   rK   g?UUUU?)   rK   g      ?)   rK   gy&1?)   rK   gEʠ?)   rK   g>?)   rK   g!?)	   rK   g+ˎ{?)
   rK   g4o?r%   r!   r&   r(   r   r*   r+   r1   s     r   test_x_equals_0point5z!TestSmirnov.test_x_equals_0point5,   s    	+ 	+ 	+ *W%%'615999??UTYGZ?[[[WQQQ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                                        t          t          t          g	           d|d d d
f         z
  |d d d
f<   t	          t          |ddt                                        t          t          t          g	           d S )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    K1cD111/A3s1vv:q!A#"677'615999??UTYGZ?[[[WQQQ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                    	                    t          t          t          g	           d|d d d
f         z
  |d d d
f<   t          t          |ddt                    	                    t          t          t          g	           d S )NrK   r   rV   TrW   r!   r%   r&   r(   r*   r   rY   powerarrayr[   rZ   r   r   r-   r.   r/   r0   r   r   r\   pr9   r2   s        r   test_n_equals_2zTestSmirnov.test_n_equals_2D   s    KQd333HQqS!HaS3q66\""/1a),,'615999??UTYGZ?[[[WQQQ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          	          	                    t          t          t          g
           d|d d df         z
  |d d df<   t          t          |ddt          	          	                    t          t          t          g
           d S )Nffffff?r      TrW   r#   r%   r!   r&   r(   r*   r_   rb   s        r   test_n_equals_3zTestSmirnov.test_n_equals_3M   s    KQT222HQqS!HaS3q66\""/1a),,'615999??UTYGZ?[[[WQQQU^+2GVQU;;;AA#uV[I\A]]]]]r   c                     dt          j        fdt          ddd          D                       }t          j        |          }t	          t          j        |dk              d|z             d S )	N皙?c                 0    g | ]}t          |          S r6   )r   )r8   r9   r\   s     r   r:   z,TestSmirnov.test_n_large.<locals>.<listcomp>Z   s!    FFFA'!Q--FFFr   i  iL  r<   r   zNot all diffs negative %s)msg)r   ra   rB   diffr   all)r   pvalsdfsr\   s      @r   test_n_largezTestSmirnov.test_n_largeV   st     FFFFsD"1E1EFFFGGgennsax  &AC&GHHHHHHr   N)__name__
__module____qualname__r   r3   rC   rH   rT   r]   rd   rh   rq   r6   r   r   r   r      s        . . .	^ 	^ 	^^ ^ ^^ ^ ^^ ^ ^"^ ^ ^^ ^ ^^ ^ ^I I I I Ir   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestSmirnovic                 x    t          t          j        t          dt          j                                       d S r   )r   r   r   r   r   r   s    r   r   zTestSmirnovi.test_nan`   s,    !RV,,--.....r   c                 r   g d}t          j        |          }t          t          |ddt                                        t          t          t          g           d|d d df         z
  |d d df<   t          t          |ddt                                        t          t          t          g           d S )N))r   rj   333333?)r   ry   rj   )r   Gz?{Gz?)r   r{   rz   )r!   r"   r   )r#   r$   r   )rS   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 7 7 *W%%7FAE:::@@eUZH[@\\\GAAAqDM)1Wfae<<<BB3PUW\J]B^^^^^r   c                    d t          j        t          dd          t          dd                    D             }t          j        |          }t          t          |ddt                                        t          t          t          g           d	|d d d	f         z
  |d d d	f<   t          t          |ddt                                        t          t          t          g           d S )
Nc                     g | ]}|d dfS r%   r6   r7   s     r   r:   z0TestSmirnovi.test_x_equals_0.<locals>.<listcomp>r   r;   r   r!   r<   r=   r>   r%   r&   r(   r   r@   rA   rB   r   r,   r   r   r-   r.   r/   r0   r   r1   s     r   rC   zTestSmirnovi.test_x_equals_0q       WWioeArllE$PTDUDU&V&VWWW*W%%7FAE:::@@eUZH[@\\\GAAAqDM)1Wfae<<<BB3PUW\J]B^^^^^r   c                    d t          j        t          dd          t          dd                    D             }t          j        |          }t          t          |ddt                                        t          t          t          g           d	|d d d	f         z
  |d d d	f<   t          t          |ddt                                        t          t          t          g           d S )
Nc                     g | ]}|d dfS rG   r6   r7   s     r   r:   z0TestSmirnovi.test_x_equals_1.<locals>.<listcomp>y   r;   r   r!   r<   r=   r>   r%   r&   r(   r   r   r1   s     r   rH   zTestSmirnovi.test_x_equals_1x   r   r   c                    t          j        dddd          }t          j        dgt          |          z  |d|z
  g          }t	          t
          |ddt                                        t          t          t          g	           d|d d df         z
  |d d df<   t	          t          |ddt                                        t          t          t          g	           d S )
Nr   r   rV   TrW   r%   r!   r&   r(   )r   rY   rZ   r[   r   r   r-   r.   r/   r0   r   )r   ppr2   s      r   r]   zTestSmirnovi.test_n_equals_1   s    [AsT222/A3s2ww;AbD"9::7FAE:::@@eUZH[@\\\GAAAqDM)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                    	                    t          t          t          g	           d|d d df         z
  |d d df<   t          t          |ddt                    	                    t          t          t          g	           d S )
NrK   r   rV   TrW   r!   r%   r&   r(   r   rY   r`   ra   r[   rZ   r   r   r-   r.   r/   r0   r   rb   s        r   rd   zTestSmirnovi.test_n_equals_2   s    KQd333HQqS!HaS3q66\""/1a),,7FAE:::@@eUZH[@\\\GAAAqDM)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          	          	                    t          t          t          g
           d|d d df         z
  |d d df<   t          t          |ddt          	          	                    t          t          t          g
           d S )Nrf   r   rg   TrW   r#   r%   r!   r&   r(   r   rb   s        r   rh   zTestSmirnovi.test_n_equals_3   s    KQT222HQqS!HaS3q66\""/1a),,7FAE:::@@eUZH[@\\\GAAAqDM)1Wfae<<<BB3PUW\J]B^^^^^r   c                 >   d }d }g d}t          j        |          }t          ||ddt                                        t
          t          t          g           t          ||ddt                                        t
          t          t          g           d S )Nc                 >    t          | t          | |                    S N)r   r   r9   rc   s     r   _sm_smiz-TestSmirnovi.test_round_trip.<locals>._sm_smi   s    1hq!nn---r   c                 >    t          | t          | |                    S r   )r   r   r   s     r   	_smc_smciz/TestSmirnovi.test_round_trip.<locals>._smc_smci   s    Q
1a 0 0111r   ))r   rj   rj   )r   ry   ry   )r!   r   r   )r#   r   r   )r#   r    r    )rS   +?r   )rS   -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   s    	. 	. 	.	2 	2 	2) ) ) *W%%'615999??UTYGZ?[[[GVQU;;;AA#uV[I\A]]]]]r   c                 r   g d}t          j        |          }t          t          |ddt                                        t          t          t          g           d|d d df         z
  |d d df<   t          t          |ddt                                        t          t          t          g           d S )N)rJ   )r!   rK   gwzl?)r!   rL   rK   )r#   rK   g<{?)rM   rK   gFwrZ?)rN   rK   g0 ?)rO   rK   g0@?)rP   rK   g A?)rQ   rK   g^CKf?)rR   rK   g޵&?)rS   rK   gL4J?r%   r!   r&   r(   r   r|   r1   s     r   rT   z"TestSmirnovi.test_x_equals_0point5   s    
- 
- 
- *W%%7FAE:::@@eUZH[@\\\GAAAqDM)1Wfae<<<BB3PUW\J]B^^^^^r   N)rr   rs   rt   r   r3   rC   rH   r]   rd   rh   r   rT   r6   r   r   rv   rv   _   s        / / /_ _ __ _ __ _ __ _ __ _ __ _ _^ ^ ^&_ _ _ _ _r   rv   c                       e Zd Zd Zd Zd Zd Zd Zej	        
                    ej        dk    d          d	             Zd
S )TestSmirnovpc                 x    t          t          j        t          dt          j                                       d S r   )r   r   r   r   r   r   s    r   r   zTestSmirnovp.test_nan   s,    1bf--../////r   c                 ^   t          j        dd          }t          j        |t          j        |d          t          j        |d          g          }t	          t
          |ddt                                        t          t          t          g           t          j        dd          }t          j        |t          j        |d	          t          j        |d          g          }t	          t
          |ddt                                        t          t          t          g           d S )
Nr   rS   r   r*   r%   r!   r&   r(         ?)
r   arangerZ   	full_liker   r   r-   r.   r/   r0   )r   n1_10dataset0n2_10dataset1s        r   r3   zTestSmirnovp.test_basic   s    	!R  ?E2<q+A+A2<PUWYCZCZ#[\\Hfae<<<BB3PUW\J]B^^^	!R  ?E2<s+C+CR\RWYZE[E[#\]]Hfae<<<BB3PUW\J]B^^^^^r   c                 ^   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                                        t          t          t          g           d S )	Nr   r<   r   r!   rK   r%   r&   r(   )
r   r   signrZ   r   r   r-   r.   r/   r0   )r   r9   r\   xm1pp1r   s         r   test_oneminusoneovernz"TestSmirnovp.test_oneminusoneovern   s    IaEAgb1qs8m"'!A#,,/!S((?AsC=1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
                                        t          t          t          g           d S )Nr   r<   rK   r!   r%   r&   r(   	r   r   rZ   r   r   r-   r.   r/   r0   r   r9   r\   r   r   s        r   test_oneovertwonzTestSmirnovp.test_oneovertwon   s    Ia!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
                                        t          t          t          g           d S )	Nr!   r   rS   r   rK   r%   r&   r(   r   r   s        r   test_oneovernzTestSmirnovp.test_oneovern   s    ryBEs1uX1!$s*?Aq":..Hfae<<<BB3PUW\J]B^^^^^r   l        zrequires 64-bit platform)reasonc                    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                    	                    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                    	                    t          t          t          g           d S )	Nr#   r<   r   r!   r   r%   r&   r(   )r   r   finfor0   epsrZ   r   r   r-   r.   r/   )r   r9   r\   r   r   r   s         r   test_oneovernclosezTestSmirnovp.test_oneovernclose   s,    IaEAbhuoo)))s1uX1!$?Aq":..Hfae<<<BB3PUW\J]B^^^EAbhuoo)))s1uX1!$q(?Aq":..Hfae<<<BB3PUW\J]B^^^^^r   N)rr   rs   rt   r   r3   r   r   r   pytestmarkxfailsysmaxsizer   r6   r   r   r   r      s        0 0 0_ _ __ _ __ _ __ _ _ [s{e+8  : :_ _: :_ _ _r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestKolmogorovc                 v    t          t          j        t          t          j                                       d S r   )r   r   r   r   r   r   s    r   r   zTestKolmogorov.test_nan   s*    BF++,,-----r   c                     g d}t          j        |          }t          t          |ddt                                                     d S )N))r   r   )rK   ˜?)BgR{{?rK   )r   	=G?)r!    !E?r   r   r&   )r   r,   r   r   r-   r.   r1   s     r   r3   zTestKolmogorov.test_basic   sO    0 0 0 *W%%WdAE:::@@BBBBBr   c                 Z   t          j        ddd          }g d}g d}t          j        ||g          }t          t          |ddt
                                                     t          j        ||g          }t          t          |ddt
                                                     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   rY   rZ   r   r   r-   r.   r	   )r   r\   r2   	dataset_cs       r   test_linspacezTestKolmogorov.test_linspace  s    K3##O O OQ Q Q	 /1g,//WdAE:::@@BBBOQ	N33	9dAE:::@@BBBB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          "                                           t          j        |d d#         |d d#         g          }t	          t          |d!d t          "                                           d S )$Nr   r   r   TrW   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   rY   infrZ   r   r   r-   r.   r
   )r   rc   r2   r   s       r   test_linspaceizTestKolmogorov.test_linspacei  sG   K3T2226-/A%'9;M%'9;M%'9;M%'9;M%'9;M%'9;MO ();=O');=O');=O');=O');=O');=O');RVE	 /1QRR5'!""+"677'4777==???OQssVYss^$<==	ItQU;;;AACCCCCr   c                     dt          j        dd          z  }t          j        g d          }t          j        |d|z
  g          }t	          t
          |ddt                                                     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   ra   rZ   r   r   r-   r.   r   epsilonr\   r2   s       r   test_smallxzTestKolmogorov.test_smallx4  s|    1b)))H % % % & &
 /1ai.11WdAE:::@@BBBBBr   c                 l   d }d }t          j        dddd          }||dk    |d	k    z           }t          j        ||g          }t          ||d
dt                                                     t          j        ||g          }t          ||d
dt                                                     d S )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   TrW   r   gzG?r   r   r&   r   rY   rZ   r   r-   r.   )r   r   r   r\   x02	dataset02r2   s          r   r   zTestKolmogorov.test_round_trip>  s    	+ 	+ 	+	+ 	+ 	+ KS"t444aAH%&OS#J//		4777==???/1a&))'4777==?????r   N)	rr   rs   rt   r   r3   r   r   r   r   r6   r   r   r   r      s        . . .C C CC C C.D D D.C C C@ @ @ @ @r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestKolmogic                 v    t          t          j        t          t          j                                       d S 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                                                     d S )N))r   r   )r   rK   )r   r   )rK   r   )r   r   )r   r!   r   r   r&   )r   r,   r   r   r-   r.   r1   s     r   r3   zTestKolmogi.test_basicR  sO    0 0 0 *W%%'4777==?????r   c                    dt          j        ddd          z  }t          j        g d          }t          j        d|z
  |g          }t	          t
          |ddt                                                     t          j        ||g          }t	          t          |ddt                                                     d S )NrK   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   ra   rZ   r   r   r-   r.   r
   r   s       r   test_smallpcdfzTestKolmogi.test_smallpcdf]  s    1b!,,, H R R R S S /1W9a.11'4777==???/7A,//GT15999??AAAAAr   c                    dt          j        ddd          z  }t          j        g d          }t          j        ||g          }t	          t
          |ddt                                                     t          j        d|z
  |g          }t	          t          |ddt                                                     d S )NrK   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!,,, H R R R S S /7A,//'4777==???/1W9a.11GT15999??AAAAAr   c                     d }t          j        dddd          }t          j        ||g          }t          ||ddt          	                                           d S )
Nc                 :    t          t          |                     S r   )r   r   )_ps    r   _k_kiz*TestKolmogi.test_round_trip.<locals>._k_ki  s    gbkk***r   r   r   rS   TrW   r   r   r&   r   )r   r   rc   r2   s       r   r   zTestKolmogi.test_round_trip  si    	+ 	+ 	+ KS"t444/1a&))qu555;;=====r   N)rr   rs   rt   r   r3   r   r   r   r6   r   r   r   r   N  sh        + + +	@ 	@ 	@B B B$B B B$> > > > >r   r   c                       e Zd Zd Zd ZdS )TestKolmogpc                 v    t          t          j        t          t          j                                       d S 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                                                     d S )N))r   g       )g?g=)rj   gt鹿)ry   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  sO    
6 
6 
6 *W%%7D!%888>>@@@@@r   N)rr   rs   rt   r   r3   r6   r   r   r   r     s7        , , ,A A A A Ar   r   )r@   r   r   numpyr   numpy.testingr   scipy.special._testutilsr   scipy.specialr   r   r   r   scipy.special._ufuncsr	   r
   r   r   r   r   r-   r   rv   r   r   r   r   r6   r   r   <module>r      s       



      ! ! ! ! ! ! - - - - - - @ @ @ @ @ @ @ @ @ @ @ @E E E E E E E E E E E E E E E E 	MI MI MI MI MI MI MI MI`]_ ]_ ]_ ]_ ]_ ]_ ]_ ]_@6_ 6_ 6_ 6_ 6_ 6_ 6_ 6_rS@ S@ S@ S@ S@ S@ S@ S@l9> 9> 9> 9> 9> 9> 9> 9>xA A A A A A A A A Ar   