ó
    Eñi¬N  ã                   ó4  • S SK rS SKrS SKJs  Jr  S SKJ	r	  Sr
\R                  " \R                  " S5      \
5      r\R                  " \R                  " S5      \
* 5      r\R                  " S\R                   -  5      r\R$                  " S\R                   -  5      rSr\R                  " S5      r\R                   S-  r\R                   S-  r\R                   S	-  r/ S
QrS rS rSS jrSS jrS rSS jrSS jr SS jr!S r"S r#SS jr$S r%SS jr&g)é    N)Ú_derivativeé€   é   é   i<ýÿÿé   é   é   )g˜SË†Bž¿g¤A¤Az?g}<™Ù°j_¿g#ÿ+•K?g8�8�C¿g  J?glÁlÁf¿gUUUUUUµ?c                 óš   • SU -  n[         R                  " U 5      S-  U -
  [        S-  -   U[         R                  " [        X-  5      -  -   $ )Nç      ð?r   )ÚnpÚlogÚ_LOG_2PIÚpolyvalÚ_STIRLING_COEFFS)ÚnÚrns     ÚQ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/scipy/stats/_ksstats.pyÚ_log_nfactorial_div_n_pow_nr   ]   sD   € ð 
ˆQ‰€BÜ�6Š6�!‹9�Q‰;˜‰?œX a™ZÑ'¨"¬r¯zªzÔ:JÈBÉDÓ/QÑ*QÑQÐQó    c                 ó2   • [         R                  " U SS5      $ )z%clips a probability to range 0<=p<=1.ç        r   )r   Úclip)Úps    r   Ú
_clip_probr   g   s   € ä�7Š7�1�c˜3ÓÐr   c                 óF   • [         R                  " X U5      n[        U5      $ )z>Selects either the CDF or SF, and then clips to range 0<=p<=1.)r   Úwherer   )ÚcdfprobÚsfprobÚcdfr   s       r   Ú_select_and_clip_probr    l   s   € ä
�Š�˜vÓ&€AÜ�a‹=Ðr   c                 ó  • US:¼  a  [        SSU5      $ X-  nUS::  a  [        SSU5      $ [        [        R                  " U5      5      nXC-
  nSU-  S-
  n[        R                  " Xf/5      n[        R
                  " SUS-   5      nSXX-  -
  n	[        R                  " U5      n
SnU H  nXºUS-
  '   X¼-  nXœS-
  ==   U-  ss'   M     [        SU-  S-
  S5      U-  SXV-  -  -
  nSU-   U-  U	S'   [        SU5       H  nU
SXn-
  S-    X~S-
  S2U4'   M     X—SS2S4'   [        R                  " U	SS	9USSS24'   [        R                  " [        R                  " U5      S   5      nU nSnSnUS:”  a‡  US-  (       a  [        R                  " X÷5      nUU-  n[        R                  " Xw5      nUS-  n[        R                  " XtS-
  US-
  4   5      [        :”  a  U[        -  nU[        -  nUS-  nUS:”  a  M‡  XôS-
  US-
  4   n[        SU S-   5       H=  nUU-  U -  n[        R                  " U5      [         :  d  M+  U[        -  nU[        -  nM?     US:w  a  [        R"                  " UU5      n[        USU-
  U5      $ )
z›Computes the Kolmogorov CDF:  Pr(D_n <= d) using the MTW approach to
the Durbin matrix algorithm.

Durbin (1968); Marsaglia, Tsang, Wang (2003). [1], [3].
r   r   ç      à?r   r   r   éÿÿÿÿN)Úaxis)r    Úintr   ÚceilÚzerosÚarangeÚemptyÚmaxÚrangeÚflipÚeyeÚshapeÚmatmulÚabsÚ_EP128Ú_E128Ú_EM128Úldexp)r   Údr   ÚndÚkÚhÚmÚHÚintmÚvÚwÚfacÚjÚttÚiÚHpwrÚnnÚexpntÚHexpntr   s                       r   Ú_kolmogn_DMTWrF   r   s�  € ð 	ˆCƒxÜ$ S¨#¨sÓ3Ð3Ø	
‰€BØ	ˆSƒyÜ$ S¨#¨sÓ3Ð3ÜŒB�GŠG�B‹KÓ€AØ	‰€AØ	ˆA‰�‰	€Aä
�Š�!�Ó€Aô �9Š9�Q˜˜A™Ó€DØˆa‰i‰€AÜ
�Š�‹€AØ
€CÛˆØˆ!ˆa‰%‰Ø‰ˆØ	ˆa‰%‹�C‰�ñ ô 
ˆQ�‰U�S‰[˜!Ó	˜aÑ	 ! A¡D¡&Ñ	(€BØ�2‰X˜Ñ€A€b�Eä�1�aŽ[ˆØ˜˜!™% !™)�}ˆˆa‰%‰&�!ˆ)‹ñ à‚aˆ€d�GÜ�wŠw�q˜qÑ!€A€bŠ!€e�Hä�6Š6”"—(’(˜1“+˜a‘.Ó!€DØ	
€BØ€EØ€FØ
ˆq‹&Ø��6Ü—9’9˜TÓ%ˆDØ�V‰OˆEÜ�IŠI�a‹OˆØ�!‰ˆä�6Š6�!˜‘E˜1˜q™5�L‘/Ó"¤VÓ+Ø”‰KˆAØ”e‰OˆFØ�1‰Wˆð ˆq�&ð 	�‰U�A˜‘Eˆ\Ñ€Aô �1�a˜!‘eŽ_ˆØ�‰E�A‰IˆÜ�6Š6�!‹9”vÕØ”‰KˆAØ”U‰NŠEñ	 ð �ƒzÜ�HŠH�Q˜Óˆä   C¨¡E¨3Ó/Ð/r   c                 ó&  • U S:X  a  U* U-
  S-
  X#-   S-
  peOb[        U S-   S5      u  pxUS:X  a7  XqS-   :X  a  X-
  U-
  S-
  X-   U-   S-
  peO/US-
  U-
  U-
  S-
  Xr-   S-
  U-   S-
  peOUS-
  U-
  S-
  Xr-   U-   S-
  pe[        US-   S5      [        Xa5      4$ )z0Compute the endpoints of the interval for row i.r   r   r   )Údivmodr*   Úmin)	rA   r   ÚllÚceilfÚroundfÚj1Új2Úip1div2Úip1mod2s	            r   Ú_pomeranz_compute_j1j2rQ   ½   sÉ   € àˆAƒvØ��u‘˜q‘ "¡*¨q¡.‰Bô " ! a¡%¨Ó+ÑˆØ�a‹<Ø˜a™%ÓØ™ %™¨!Ñ+¨Q©V°e©^¸aÑ-?‘Bà  1™ rÑ)¨FÑ2°QÑ6¸¹ÀqÑ8HÈ5Ñ8PÐSTÑ8T‘Bà˜q‘[ 2Ñ%¨Ñ)¨7©<¸&Ñ+@À1Ñ+D�äˆr�A‰v�q‹>œ3˜r›:Ð%Ð%r   c                 óŒ  • X-  n[        [        R                  " U5      5      nSX4-
  -  n[        USU-
  5      nUS:”  a  SOSnUS:”  a  SOSnSUS-   -  n	[        R                  " U	5      n
[        R                  " U	5      n[        R                  " U	5      nSU
S'   SUS'   SUS'   SnX`-  SU-  U -  SSU-  -
  U -  npþ[        SU	5       H6  nU
US-
     U-  U-  U
U'   UUS-
     U-  U-  UU'   UUS-
     U-  U-  UU'   M8     [        R                  " U	/5      n[        R                  " U	/5      nSUS'   Su  nn[        SXXx5      u  nn[        SSU -  S-   5       Há  nUnUUnnUUnnUR                  S5        [        UXXx5      u  nnUS:X  d  USU -  S-   :X  a  U
nOUS-  (       a  UOUnUU-
  S-   nUS:”  d  Ma  [        R                  " UUU-
  UU-
  U-    USU 5      nUU-
  nUU-
  S-   nUUUU-    USU& S[        R                  " U5      s=:  a
  [        :  a  O  OU[        -  nU[        -  nUU-   U-
  nMã     UU U-
     n[        SU S-   5       H8  n[        R                  " U5      [        :”  a  U[        -  nU[        -  nUU-  nM:     US:w  a  [        R                  " UU5      n[!        USU-
  U5      nU$ )	zSComputes Pr(D_n <= d) using the Pomeranz recursion algorithm.

Pomeranz (1974) [2]
r   r   r   r"   r   )r   r   r   N)r%   r   ÚfloorrI   r)   r+   r'   rQ   ÚfillÚconvolver*   r3   r1   r2   r0   r4   r    ) r   Úxr   ÚtrJ   ÚfÚgrK   rL   ÚnpwrsÚgpowerÚ	twogpowerÚonem2gpowerrD   Úg_over_nÚtwo_g_over_nÚone_minus_two_g_over_nr9   ÚV0ÚV1ÚV0sÚV1srM   rN   rA   Úk1ÚpwrsÚln2ÚconvÚ
conv_startÚconv_lenÚanss                                    r   Ú_kolmogn_Pomeranzrl   Ï   s  € ð$ 	
‰€AÜ	ŒR�XŠX�a‹[Ó	€BØˆq‰v‰€AÜˆAˆs�Q‰w‹€AØ�a“%‰Q˜Q€EØ�s“7‰a €FØ��a‘‰L€EÜ�XŠX�e‹_€FÜ—’˜“€IÜ—(’(˜5“/€Kð €Fˆ1�IØ€Iˆa�LØ€K��NØ€EØ56±S¸!¸A¹#¸a¹%À!ÀaÈÁcÁ'È1ÁÐ2ˆlÜ�1�eŽ_ˆØ˜1˜q™5‘M HÑ,¨qÑ0ˆˆq‰	Ø   Q¡Ñ'¨,Ñ6¸Ñ:ˆ	�!‰Ø$ Q¨¡UÑ+Ð.DÑDÀqÑHˆ�A‹ñ ô
 
�Š�5�'Ó	€BÜ	�Š�5�'Ó	€BØ€B€q�EØ�H€Cˆä# A q¨eÓ<�F€BˆÜ�1�a˜!‘e˜a‘iÖ ˆàˆØ�RˆBˆØ˜ˆSˆØ
�‰�ŒÜ'¨¨1°%Ó@‰ˆˆBØ�‹6�Q˜!˜a™% !™)“^Ø‰Dà!" Q§‘I¨KˆDØ�2‰g˜‰kˆØ��7Ü—;’;˜r " s¡(¨2°©8°c©>Ð:¸DÀÀ#¸JÓGˆDØ˜b™ˆJØ˜B‘w ‘{ˆHØ  ¨J¸Ñ,AÐBˆBˆy�ˆMà”2—6’6˜"“:Õ&¤Ö&Ø”f‘�Øœ‘�Ø˜‘(˜R‘-ŠCñ+ !ð0 ˆQ�‰W‰+€CÜ�1�a˜!‘eŽ_ˆÜ�6Š6�#‹;œÓØ”6‰MˆCØ”U‰NˆEØˆq‰Šñ	 ð �ƒzÜ�hŠh�s˜EÓ"ˆÜ
  S¨3¡Y°Ó
4€CØ€Jr   c           	      óÎ  • US::  a  [        SSUS9$ US:¼  a  [        SSUS9$ [        R                  " U 5      U-  nUS-  US-  US-  US-  4u  pEpg[        * S-  U-  nU[        :  a  [        SSUS9$ [        R
                  " U5      n	U* n
[        S-  nSU-  SU-  -   nSU-  S	U-  -
  [        -  S-  n[        S
SU-  -
  -  S-  n[        S	SU-  -
  -  S-  n[        SU-  SU-  -   -  S-  n[        SU-  SU-  -
  -  S-  nSU-  SUS-  -  -
  n[        R                  " S5      n[        [        R                  " SU-  [        R                  -  5      5      n[        USS5       Hz  nSU-  S
-
  nUS-  US-  US-  nnn[        R                  " U	SU-  5      n[        R                  " SX«U-  -   XÍU-  -   UU-  -   UUU-  -   UU-  -   UU-  -   /5      nUU-  nUU-  nM|     UU	-  nU[        -  nU[        R                  " USU-  SUS-  -  SUS-  -  /5      -  n[        R
                  " [        * S-  U-  5      n	[        R                   " USS5      nUS-  n["        U-  n[        R                  U-  nU	U-  n [        R$                  " UU -  5      n!U![        [        -  SU-  -  -  n!US==   U!-  ss'   [        R$                  " UU-   UU-
  -  U-  U -  5      n"U"[        [        -  SU-  -  -  n"US==   U"-  ss'   [        R                  " U S-  [        R                   " ['        U5      5      S-  5      n#UU#-  nU(       d  US-  nUS==   S
-  ss'   [%        U5      n$U$$ )a4  Computes the Pelz-Good approximation to Prob(Dn <= x) with 0<=x<=1.

Start with Li-Chien, Korolyuk approximation:
    Prob(Dn <= x) ~ K0(z) + K1(z)/sqrt(n) + K2(z)/n + K3(z)/n**1.5
where z = x*sqrt(n).
Transform each K_(z) using Jacobi theta functions into a form suitable
for small z.
Pelz-Good (1976). [6]
r   r   ©r   r   r   r   r	   é   é   r   é   é   é@   iÄÿÿÿéÔ   é‡   é`   iâÿÿÿéZ   r   r#   éH   é   iP  é
   iÜÿÿÿéØ   ç       @)r    r   ÚsqrtÚ_PI_SQUAREDÚ_MIN_LOGÚexpÚ_PI_FOURÚ_PI_SIXr'   r%   r&   Úpir+   ÚpowerÚarrayÚ_SQRT2PIr(   Ú_SQRT3ÚsumÚlen)%r   rV   r   ÚzÚzsquaredÚzthreeÚzfourÚzsixÚqlogÚqÚk1aÚk1bÚk2aÚk2bÚk2cÚk3dÚk3cÚk3bÚk3aÚK0to3Úmaxkr7   r9   ÚmsquaredÚmfourÚmsixÚqpowerÚcoeffsÚksÚksquaredÚsqrt3zÚkspiÚqpwersÚk2extraÚk3extraÚpowers_of_nÚKsums%                                        r   Ú_kolmogn_PelzGoodrª   #  s­  € ð 	ˆCƒxÜ$ S¨#°3Ñ7Ð7ØˆCƒxÜ$ S¨#°3Ñ7Ð7ä
�Š�‹
�Q‰€AØ$% q¡D¨!¨Q©$°°1±°a¸±dÐ$:Ñ!€H�eäˆ<˜!Ñ˜hÑ&€DØŒhƒÜ$ S¨#°3Ñ7Ð7ä
�Šˆt‹€Að ˆ)€CÜ
˜‰/€Cà
ˆd‰(�Q˜‘YÑ
€CØˆu‰9�q˜8‘|Ñ#¤{Ñ
2°QÑ
6€CÜ
�a˜!˜h™,Ñ&Ñ
'¨"Ñ
,€Cä
�Q˜˜h™Ñ&Ñ
'¨"Ñ
,€CÜ
�c˜H‘n s¨U¡{Ñ2Ñ
3°bÑ
8€CÜ
˜˜u™ r¨D¡yÑ0Ñ
1°AÑ
5€CØ
�‰*�r˜A˜q™D‘yÑ
 €Cä�HŠH�Q‹K€Eô Œr�wŠw�r˜A‘v¤§¡‘~Ó&Ó'€DÜ�4˜˜BÖˆØ�‰E�A‰IˆØ ! 1¡ a¨¡d¨A¨q©D˜�%ˆÜ—’˜!˜Q ™UÓ#ˆÜ—’˜3Ø X¡Ñ-Ø X¡Ñ-°°E±	Ñ9Ø  X¡Ñ-°°E±	Ñ9¸CÀ¹HÑDðFó Gˆð 	�‰ˆØ�‰Šñ  ð 
ˆQ�J€EØ	ŒXÑ€Eà	ŒR�XŠX�q˜!˜e™) R¨!¨Q©$¡Y°°q¸"±u±Ð=Ó>Ñ>€Eô 	�Š”ˆ|˜aÑ (Ñ*Ó+€AÜ	�Š�4˜˜BÓ	€BØ�Q‰w€HÜ�a‰Z€FÜ�5‰5�2‰:€DØ�(‰]€FÜ�fŠf�X Ñ&Ó'€GØŒ{œXÑ% s¨V¡|Ñ4Ñ4€GØ	ˆ!ƒH�ÑƒHÜ�fŠf�f˜t‘m¨°©Ñ6¸ÑAÀFÑJÓK€GØŒ{œXÑ% s¨T¡zÑ2Ñ2€GØ	ˆ!ƒH�ÑƒHÜ—(’(˜1˜s™7¤B§I¢I¬c°%«jÓ$9¸CÑ$?Ó@€KØ	ˆ[Ñ€EæØ�‰ˆØˆa‹�A‰‹äˆu‹:€DØ€Kr   c                 ó²  • [         R                  " U 5      (       a  U $ [        U 5      U :w  d  U S::  a  [         R                  $ US:¼  a  [	        SSUS9$ US::  a  [	        SSUS9$ X-  nUS::  a¢  US::  a  [	        SSUS9$ U S::  a>  [         R
                  " [         R                  " SU S-   5      SU -  -  SU-  S-
  -  5      nO?[         R                  " [        U 5      U [         R                  " SU-  S-
  5      -  -   5      n[	        USU-
  US9$ X0S-
  :¼  a  SSU-
  U -  -  n[	        SU-
  XBS9$ US:¼  a/  S[        R                  R                  X5      -  n[	        SU-
  XBS9$ X1-  nU S::  ak  US	::  a  [        XS
S9n[	        USU-
  US9$ US::  a  [        XS
S9n[	        USU-
  US9$ S[        R                  R                  X5      -  n[	        SU-
  XBS9$ U(       d:  US:¼  a  gUS:¼  a-  S[        R                  R                  X5      -  n[        U5      $ US:¼  a  SnO&U S::  a  XS-  -  S::  a  [        XS
S9nO
[!        XS
S9n[	        USU-
  US9$ )z”Computes the CDF(or SF) for the two-sided Kolmogorov-Smirnov statistic.

x must be of type float, n of type integer.

Simard & L'Ecuyer (2011) [7].
r   r   r   rn   r"   éŒ   r   r   gã¤0ïq&è?Tr   g      w@gš™™™™™@g      2@i † g      ø?gffffffö?)r   Úisnanr%   Únanr    Úprodr(   r€   r   r   ÚscipyÚspecialÚsmirnovrF   rl   r   rª   )r   rV   r   rW   ÚprobÚ	nxsquaredr   s          r   Ú_kolmognrµ   v  se  € ô 
‡x‚x�‡{�{ØˆÜ
ˆ1ƒv�ƒ{�a˜1“fÜ�v‰vˆØˆCƒxÜ$ S¨#°3Ñ7Ð7ØˆCƒxÜ$ S¨#°3Ñ7Ð7Ø	‰€AØˆCƒxØ�‹8Ü(¨¨c°sÑ;Ð;Ø�‹8Ü—7’7œ2Ÿ9š9 Q¨¨!©Ó,°°A±Ñ6¸!¸A¹#À¹'ÑBÓC‰Dä—6’6Ô5°aÓ8¸1¼r¿vºvÀaÈÁcÈ!Áe»}Ñ;LÑLÓMˆDÜ$ T¨3°©:¸3Ñ?Ð?Ø�‰EƒzØ�C˜!‘G˜a‘<ÑˆÜ$ Q¨¡X¨tÑ=Ð=ØˆCƒxØ”5—=‘=×(Ñ(¨Ó.Ñ.ˆÜ$ S¨4¡Z°Ñ?Ð?à‘€IØˆCƒxØ˜Ó Ü  ¨4Ñ0ˆDÜ(¨¨s°T©z¸sÑCÐCØ˜‹>Ü$ Q¨tÑ4ˆDÜ(¨¨s°T©z¸sÑCÐCà”5—=‘=×(Ñ(¨Ó.Ñ.ˆÜ$ S¨4¡Z°Ñ?Ð?ö Ø˜ÓØØ˜ÓØ”u—}‘}×,Ñ,¨QÓ2Ñ2ˆDÜ˜dÓ#Ð#à�DÓØ‰Ø	
ˆf‹˜ ™V™ sÓ*Ü ¨$Ñ/‰ä# A¨dÑ3ˆÜ  ¨#°©-¸SÑAÐAr   c                 óè  ^ • [         R                  " T 5      (       a  T $ [        T 5      T :w  d  T S::  a  [         R                  $ US:¼  d  US::  a  gT U-  nUS::  a•  US::  a  gT S::  a;  [         R                  " [         R
                  " ST 5      ST -  -  SU-  S-
  -  5      nOB[         R                  " [        T 5      T S-
  [         R                  " SU-  S-
  5      -  -   5      nUS-  T S-  -  $ UT S-
  :¼  a  SSU-
  T S-
  -  -  T -  $ US:¼  a-  S[        R                  R                  R                  UT 5      -  $ US-  n[        XAST -  -
  5      n[        USU-
  5      nU 4S	 jn[        XQUS
S9$ )znComputes the PDF for the two-sided Kolmogorov-Smirnov statistic.

x must be of type float, n of type integer.
r   r   r"   r   r¬   r   r   g      ð@c                 ó   >• [        TU 5      $ ©N)Úkolmogn)Ú_xr   s    €r   Ú_kkÚ_kolmogn_p.<locals>._kkÖ  s   ø€ Ü�q˜"‹~Ðr   rp   )ÚdxÚorder)r   r­   r%   r®   r¯   r(   r€   r   r   r°   ÚstatsÚksoneÚpdfrI   r   )r   rV   rW   ÚprdÚdeltar»   s   `     r   Ú
_kolmogn_prÄ   ²  sj  ø€ ô
 
‡x‚x�‡{�{ØˆÜ
ˆ1ƒv�ƒ{�a˜1“fÜ�v‰vˆØˆCƒx�1˜“6ØØ	ˆA‰€AØˆCƒxà�‹8ØØ�‹8Ü—'’'œ"Ÿ)š) A q›/¨S°1©WÑ5¸¸Q¹À¹ÑCÓD‰Cä—&’&Ô4°QÓ7¸1¸Q¹3Ä"Ç&Â&ÈÈQÉÐQRÉÓBSÑ:SÑSÓTˆCØ�Q‰w˜˜A™‰~ÐØˆA�‰Eƒzà�C˜!‘G  1¡Ñ%Ñ%¨Ñ)Ð)ØˆCƒxØ”5—;‘;×$Ñ$×(Ñ(¨¨AÓ.Ñ.Ð.ð �‰K€EÜ�˜3˜q™5‘yÓ!€EÜ��s˜Q‘wÓ€Eõô �s %¨qÑ1Ð1r   c                 óÆ  ^ ^• [         R                  " T 5      (       a  T $ [        T 5      T :w  d  T S::  a  [         R                  $ TS::  a  ST -  $ US::  a  g[         R                  " [         R
                  " T5      [        R                  R                  T S-   5      -
  T -  5      nUST -  ::  a  UST -  -   S-  $ [         R                  " [         R
                  " US-  5      T -  5      * nUSST -  -
  :¼  a  U$ [        R                  " T5      [         R                  " T 5      -  n[        USST -  -
  5      nU U4S jn[        R                  R                  UST -  USS9$ )	zYComputes the PPF/ISF of kolmogn.

n of type integer, n>= 1
p is the CDF, q the SF, p+q=1
r   r   r   r   r|   c                 ó"   >• [        TU 5      T-
  $ r¸   )rµ   )rV   r   r   s    €€r   Ú_fÚ_kolmogni.<locals>._fó  s   ø€ Ü˜˜1‹~ Ñ!Ð!r   g›+¡†›„=)Úxtol)r   r­   r%   r®   r€   r   r°   r±   ÚloggammaÚexpm1ÚscuÚ	_kolmogcir}   rI   ÚoptimizeÚbrentq)r   r   r�   rÃ   rV   Úx1rÇ   s   ``     r   Ú	_kolmognirÑ   Ü  s)  ù€ ô 
‡x‚x�‡{�{ØˆÜ
ˆ1ƒv�ƒ{�a˜1“fÜ�v‰vˆØˆAƒvØ�1‰uˆØˆAƒvØÜ�FŠF”B—F’F˜1“I¤§¡× 6Ñ 6°q¸±sÓ ;Ñ;¸QÑ>Ó?€EØ��A‘ƒ~Ø˜˜a™‘ 1Ñ$Ð$Ü	�Š”"—&’&˜˜3™“- ‘/Ó	"Ð"€AØˆA��A‘‰Iƒ~ØˆÜ	�Š�qÓ	œ"Ÿ'š' !›*Ñ	$€BÜ	ˆR��s˜1‘u‘Ó	€Bö"ô �>‰>× Ñ   S¨¡U¨B°UÐ Ð;Ð;r   c                 ót  • [         R                  " XUS/S/S[         R                  [         R                  [         R                  /S9nU HZ  u  pEpg[         R                  " U5      (       a  XGS'   M'  [        U5      U:w  a  [        SU 35      e[        [        U5      XVS9US'   M\     UR                  S   nU$ )aÊ  Computes the CDF for the two-sided Kolmogorov-Smirnov distribution.

The two-sided Kolmogorov-Smirnov distribution has as its CDF Pr(D_n <= x),
for a sample of size n drawn from a distribution with CDF F(t), where
:math:`D_n &= sup_t |F_n(t) - F(t)|`, and
:math:`F_n(t)` is the Empirical Cumulative Distribution Function of the sample.

Parameters
----------
n : integer, array_like
    the number of samples
x : float, array_like
    The K-S statistic, float between 0 and 1
cdf : bool, optional
    whether to compute the CDF(default=true) or the SF.

Returns
-------
cdf : ndarray
    CDF (or SF it cdf is False) at the specified locations.

The return value has shape the result of numpy broadcasting n and x.
NÚzerosize_ok)ÚflagsÚ	op_dtypes.ún is not integral: rn   r#   )	r   ÚnditerÚfloat64Úbool_r­   r%   Ú
ValueErrorrµ   Úoperands)	r   rV   r   ÚitÚ_nrº   Ú_cdfrŠ   Úresults	            r   r¹   r¹   ù  s£   € ô0 
�Š�A˜#˜tÐ$¨]¨OØ"¤B§J¡J´·±¼"¿*¹*ÐEñ
G€Bã‰ˆ�Ü�8Š8�B�<‰<Øˆc‰FÙÜˆr‹7�b‹=ÜÐ2°2°$Ð7Ó8Ð8Üœ#˜b›' 2Ñ0ˆˆ#‹ñ ð �[‰[˜‰_€FØ€Mr   c                 ó  • [         R                  " XS/5      nU H\  u  p4n[         R                  " U5      (       a  X5S'   M'  [        U5      U:w  a  [	        SU 35      e[        [        U5      U5      US'   M^     UR                  S   nU$ )a\  Computes the PDF for the two-sided Kolmogorov-Smirnov distribution.

Parameters
----------
n : integer, array_like
    the number of samples
x : float, array_like
    The K-S statistic, float between 0 and 1

Returns
-------
pdf : ndarray
    The PDF at the specified locations

The return value has shape the result of numpy broadcasting n and x.
N.rÖ   r#   )r   r×   r­   r%   rÚ   rÄ   rÛ   )r   rV   rÜ   rÝ   rº   rŠ   rß   s          r   Úkolmognprá     s�   € ô" 
�Š�A˜$�<Ó	 €BÛ‰	ˆ�Ü�8Š8�B�<‰<Øˆc‰FÙÜˆr‹7�b‹=ÜÐ2°2°$Ð7Ó8Ð8ÜœC ›G RÓ(ˆˆ#‹ñ ð �[‰[˜‰_€FØ€Mr   c                 óH  • [         R                  " XUS/5      nU Hs  u  pEpg[         R                  " U5      (       a  XGS'   M'  [        U5      U:w  a  [	        SU 35      eU(       a  USU-
  4OSU-
  U4u  p‰[        [        U5      X‰5      US'   Mu     UR                  S   n
U
$ )aÃ  Computes the PPF(or ISF) for the two-sided Kolmogorov-Smirnov distribution.

Parameters
----------
n : integer, array_like
    the number of samples
q : float, array_like
    Probabilities, float between 0 and 1
cdf : bool, optional
    whether to compute the PPF(default=true) or the ISF.

Returns
-------
ppf : ndarray
    PPF (or ISF if cdf is False) at the specified locations

The return value has shape the result of numpy broadcasting n and x.
N.rÖ   r   r#   )r   r×   r­   r%   rÚ   rÑ   rÛ   )r   r�   r   rÜ   rÝ   Ú_qrÞ   rŠ   Ú_pcdfÚ_psfrß   s              r   Úkolmogniræ   ;  sŸ   € ô& 
�Š�A˜#˜tÐ$Ó	%€BÛ‰ˆ�Ü�8Š8�B�<‰<Øˆc‰FÙÜˆr‹7�b‹=ÜÐ2°2°$Ð7Ó8Ð8Þ$(�r˜1˜R™4‘j¨q°©t°R¨j‰ˆÜœ3˜r›7 EÓ0ˆˆ#‹ñ ð �[‰[˜‰_€FØ€Mr   )T)'Únumpyr   Úscipy.specialr°   Úscipy.special._ufuncsr±   Ú_ufuncsrÌ   Úscipy.stats._finite_differencesr   r2   r4   Ú
longdoubler1   r3   r}   rƒ   r†   r   r   r   r‡   r~   r�   r‚   r   r   r   r    rF   rQ   rl   rª   rµ   rÄ   rÑ   r¹   rá   ræ   © r   r   Ú<module>rî      s
  ðóH Û ß #Ð #Ý 7à€Ø	�Š�"—-’- Ó" EÓ	*€Ø	�Š�"—-’- Ó" U FÓ	+€à�7Š7�1�r—u‘u‘9Ó€Ø�6Š6�!�b—e‘e‘)Ó€Ø€Ø	�Š�‹€Ø�e‰e�q‰j€Ø�5‰5�A‰:€Ø
�%‰%�1‰*€òIÐ òRò ô
ôH0òV&ô$QôhPôf9Bòx'2òT<ô:"òJõ:r   