§
    fŠtj¬N  ã                   óÚ  — d dl Zd dlZd dlmc mZ d dlm	Z	 dZ
 ej         ej        d¦  «        e
¦  «        Z ej         ej        d¦  «        e
 ¦  «        Z ej        dej        z  ¦  «        Z ej        dej        z  ¦  «        ZdZ ej        d¦  «        Zej        dz  Zej        dz  Zej        d	z  Zg d
¢Zd„ Zd„ Zdd„Zdd„Zd„ Zdd„Zdd„Z dd„Z!d„ Z"d„ Z#dd„Z$d„ Z%dd„Z&dS )é    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                 ó˜   — d| z  }t          j        | ¦  «        dz  | z
  t          dz  z   |t          j        t          || z  ¦  «        z  z   S )Nç      ð?r   )ÚnpÚlogÚ_LOG_2PIÚpolyvalÚ_STIRLING_COEFFS)ÚnÚrns     úR/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/stats/_ksstats.pyÚ_log_nfactorial_div_n_pow_nr   ]   sG   € ð 
ˆQ‰€BÝŒ6�!‰9Œ9�Q‰;˜‰?�X a™ZÑ'¨"­r¬zÕ:JÈBÈqÉDÑ/QÔ/QÑ*QÑQÐQó    c                 ó.   — t          j        | dd¦  «        S )z%clips a probability to range 0<=p<=1.ç        r   )r   Úclip)Úps    r   Ú
_clip_probr   g   s   € åŒ7�1�c˜3ÑÔÐr   Tc                 óL   — t          j        || |¦  «        }t          |¦  «        S )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!   € å
Œ��g˜vÑ&Ô&€AÝ�a‰=Œ=Ðr   c                 ó8  — |dk    rt          dd|¦  «        S | |z  }|dk    rt          dd|¦  «        S t          t          j        |¦  «        ¦  «        }||z
  }d|z  dz
  }t          j        ||g¦  «        }t          j        d|dz   ¦  «        }d||z  z
  }	t          j        |¦  «        }
d}|D ]"}||
|dz
  <   ||z  }|	|dz
  xx         |z  cc<   Œ#t          d|z  dz
  d¦  «        |z  d||z  z  z
  }d|z   |z  |	d<   t          d|¦  «        D ]}|
d||z
  dz   …         ||dz
  d…|f<   Œ|	|dd…df<   t          j	        |	d¬	¦  «        |ddd…f<   t          j
        t          j        |¦  «        d         ¦  «        }| }d}d}|dk    rƒ|dz  rt          j        ||¦  «        }||z  }t          j        ||¦  «        }|dz  }t          j        ||dz
  |dz
  f         ¦  «        t          k    r|t          z  }|t          z  }|dz  }|dk    °ƒ||dz
  |dz
  f         }t          d| dz   ¦  «        D ];}||z  | z  }t          j        |¦  «        t           k     r|t          z  }|t          z  }Œ<|dk    rt          j        ||¦  «        }t          |d|z
  |¦  «        S )
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€xÝ$ S¨#¨sÑ3Ô3Ð3Ø	
ˆQ‰€BØ	ˆS‚y€yÝ$ S¨#¨sÑ3Ô3Ð3Ý�BŒG�B‰KŒKÑÔ€AØ	ˆB‰€AØ	ˆA‰�‰	€Aå
Œ�!�Q�ÑÔ€Aõ Œ9�Q˜˜A™ÑÔ€DØˆa�4‰i‰€AÝ
Œ�‰Œ€AØ
€CØð ð ˆØˆˆ!ˆa‰%‰Øˆq‰ˆØ	ˆ!ˆa‰%ˆˆŒ�C‰ˆˆ‰ˆÝ	ˆQ�‰U�S‰[˜!Ñ	Ô	˜aÑ	 ! A q¡D¡&Ñ	(€BØ�2‰X˜Ñ€A€b�Eå�1�a‰[Œ[ð %ð %ˆØ˜˜!˜a™% !™)˜”}ˆˆ!ˆa‰%ˆ&ˆ&�!ˆ)‰ˆØ€A€a€a€aˆ€d�GÝŒw�q˜qÐ!Ñ!Ô!€A€bˆ!ˆ!ˆ!€e�HåŒ6•"”(˜1‘+”+˜a”.Ñ!Ô!€DØ	
€BØ€EØ€FØ
ˆqŠ&ˆ&Ø�‰6ð 	Ý”9˜T 1Ñ%Ô%ˆDØ�V‰OˆEÝŒI�a˜‰OŒOˆØ�!‰ˆåŒ6�!�A˜‘E˜1˜q™5�L”/Ñ"Ô"¥VÒ+Ð+Ø•‰KˆAØ•e‰OˆFØ�1‰Wˆð ˆqŠ&ˆ&ð 	ˆQ�‰U�A˜‘Eˆ\Ô€Aõ �1�a˜!‘e‰_Œ_ð ð ˆØ�‰E�A‰IˆÝŒ6�!‰9Œ9•vÒÐØ•‰KˆAØ•U‰NˆEøð �‚z€zÝŒH�Q˜ÑÔˆå   C¨¡E¨3Ñ/Ô/Ð/r   c                 óV  — | dk    r| |z
  dz
  ||z   dz
  }}not          | dz   d¦  «        \  }}|dk    r=||dz   k    r||z
  |z
  dz
  ||z   |z   dz
  }}n3|dz
  |z
  |z
  dz
  ||z   dz
  |z   dz
  }}n|dz
  |z
  dz
  ||z   |z   dz
  }}t          |dz   d¦  «        t          ||¦  «        fS )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€vØ��u‘˜q‘ " u¡*¨q¡.ˆBˆˆõ " ! a¡%¨Ñ+Ô+Ñˆ�Ø�aŠ<ˆ<Ø˜!˜a™%ÒÐØ˜R™ %™¨!Ñ+¨Q°©V°e©^¸aÑ-?�B��à  1™ rÑ)¨FÑ2°QÑ6¸À"¹ÀqÑ8HÈ5Ñ8PÐSTÑ8T�B��à˜q‘[ 2Ñ%¨Ñ)¨7°R©<¸&Ñ+@À1Ñ+D�ˆBåˆr�A‰v�q‰>Œ>�3˜r 1™:œ:Ð%Ð%r   c                 óÜ  — | |z  }t          t          j        |¦  «        ¦  «        }d||z
  z  }t          |d|z
  ¦  «        }|dk    rdnd}|dk    rdnd}d|dz   z  }	t          j        |	¦  «        }
t          j        |	¦  «        }t          j        |	¦  «        }d|
d<   d|d<   d|d<   d}|| z  d|z  | z  dd|z  z
  | z  }}}t          d|	¦  «        D ]>}|
|dz
           |z  |z  |
|<   ||dz
           |z  |z  ||<   ||dz
           |z  |z  ||<   Œ?t          j        |	g¦  «        }t          j        |	g¦  «        }d|d<   d\  }}t          d| |||¦  «        \  }}t          dd| z  dz   ¦  «        D ]ó}|}||}}||}}|                     d¦  «         t          || |||¦  «        \  }}|dk    s|d| z  dz   k    r|
}n	|dz  r|n|}||z
  dz   }|dk    r�t          j	        |||z
  ||z
  |z   …         |d|…         ¦  «        }||z
  }||z
  dz   }||||z   …         |d|…<   dt          j
        |¦  «        cxk     rt          k     rn n|t          z  }|t          z  }||z   |z
  }Œô|| |z
           }t          d| dz   ¦  «        D ]8}t          j        |¦  «        t          k    r|t          z  }|t          z  }||z  }Œ9|dk    rt          j        ||¦  «        }t!          |d|z
  |¦  «        }|S )	z[Computes 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‰€AÝ	�RŒX�a‰[Œ[Ñ	Ô	€BØˆq�2‰v‰€AÝˆAˆs�Q‰w‰Œ€AØ�a’%�%ˆQˆQ˜Q€EØ�s’7�7ˆaˆa €FØ��a‘‰L€EÝŒX�e‰_Œ_€FÝ”˜‘”€IÝ”(˜5‘/”/€Kð €Fˆ1�IØ€Iˆa�LØ€K��NØ€EØ56°q±S¸!¸A¹#¸a¹%À!ÀaÈÁcÁ'È1ÁÐ2ˆl€HÝ�1�e‰_Œ_ð Ið IˆØ˜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°VÑ<Ô<�F€BˆÝ�1�a˜!‘e˜a‘iÑ Ô ð  ð  ˆàˆØ�RˆBˆØ˜ˆSˆØ
�Š�‰ŒˆÝ'¨¨1¨b°%¸Ñ@Ô@‰ˆˆBØ�Š6ˆ6�Q˜!˜a™% !™)’^�^ØˆDˆDà!" Q¡Ð7�I�I¨KˆDØ�2‰g˜‰kˆØ�Š7ˆ7Ý”;˜r " s¡(¨2°©8°c©>Ð"9Ô:¸DÀÀ#À¼JÑGÔGˆDØ˜b™ˆJØ˜B‘w ‘{ˆHØ  ¨J¸Ñ,AÐ!AÔBˆBˆy�ˆy‰Mà•2”6˜"‘:”:Ð&Ð&Ò&Ð&¥Ò&Ð&Ð&Ð&Ð&Ø•f‘�Ø�‘�Ø˜‘(˜R‘-ˆCøð ˆQ�‰WŒ+€CÝ�1�a˜!‘e‰_Œ_ð ð ˆÝŒ6�#‰;Œ;�ÒÐØ•6‰MˆCØ•U‰NˆEØˆq‰ˆˆð �‚z€zÝŒh�s˜EÑ"Ô"ˆÝ
  S¨3¡Y°Ñ
4Ô
4€CØ€Jr   c           	      óú  — |dk    rt          dd|¬¦  «        S |dk    rt          dd|¬¦  «        S t          j        | ¦  «        |z  }|dz  |dz  |dz  |dz  f\  }}}}t           dz  |z  }|t          k     rt          dd|¬¦  «        S t          j        |¦  «        }	| }
t          dz  }d|z  d|z  z   }d|z  d	|z  z
  t          z  dz  }t          d
d|z  z
  z  dz  }t          d	d|z  z
  z  dz  }t          d|z  d|z  z   z  dz  }t          d|z  d|z  z
  z  dz  }d|z  d|dz  z  z
  }t          j        d¦  «        }t          t          j
        d|z  t          j        z  ¦  «        ¦  «        }t          |dd¦  «        D ]w}d|z  d
z
  }|dz  |dz  |dz  }}}t          j        |	d|z  ¦  «        }t          j        d|
||z  z   |||z  z   ||z  z   |||z  z   ||z  z   ||z  z   g¦  «        }||z  }||z  }Œx||	z  }|t          z  }|t          j        |d|z  d|dz  z  d|dz  z  g¦  «        z  }t          j        t           dz  |z  ¦  «        }	t          j        |dd¦  «        }|dz  }t"          |z  }t          j        |z  }|	|z  } t          j        || z  ¦  «        }!|!t          t          z  d|z  z  z  }!|dxx         |!z  cc<   t          j        ||z   ||z
  z  |z  | z  ¦  «        }"|"t          t          z  d|z  z  z  }"|dxx         |"z  cc<   t          j        | dz  t          j        t'          |¦  «        ¦  «        dz  ¦  «        }#||#z  }|s|dz  }|dxx         d
z  cc<   t%          |¦  «        }$|$S )aP  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€xÝ$ S¨#°3Ð7Ñ7Ô7Ð7ØˆC‚x€xÝ$ S¨#°3Ð7Ñ7Ô7Ð7å
Œ�‰
Œ
�Q‰€AØ$% q¡D¨!¨Q©$°°1±°a¸±dÐ$:Ñ!€Hˆf�e˜Tåˆ<˜!Ñ˜hÑ&€DØ�h‚€Ý$ S¨#°3Ð7Ñ7Ô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�Q‰KŒK€Eõ �rŒ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ô Gˆð 	�‰ˆØ�‰ˆˆØ	ˆQ�J€EØ	�XÑ€Eà	�RŒX�q˜!˜e™) R¨!¨Q©$¡Y°°q¸"±u±Ð=Ñ>Ô>Ñ>€Eõ 	Œ•ˆ|˜aÑ (Ñ*Ñ+Ô+€AÝ	Œ�4˜˜BÑ	Ô	€BØ�Q‰w€HÝ�a‰Z€FÝŒ5�2‰:€DØ�(‰]€FÝŒf�X Ñ&Ñ'Ô'€GØ�{�XÑ% s¨V¡|Ñ4Ñ4€GØ	ˆ!€H€H„H�Ñ€H€H�HÝŒf�f˜t‘m¨°©Ñ6¸ÑAÀFÑJÑKÔK€GØ�{�XÑ% s¨T¡zÑ2Ñ2€GØ	ˆ!€H€H„H�Ñ€H€H�HÝ”(˜1˜s™7¥B¤I­c°%©j¬jÑ$9Ô$9¸CÑ$?Ñ@Ô@€KØ	ˆ[Ñ€Eàð Ø�‰ˆØˆaˆˆŒ�A‰ˆˆ‰åˆu‰:Œ:€DØ€Kr   c                 ó|  — t          j        | ¦  «        r| S t          | ¦  «        | k    s| dk    rt           j        S |dk    rt	          dd|¬¦  «        S |dk    rt	          dd|¬¦  «        S | |z  }|dk    r¬|dk    rt	          dd|¬¦  «        S | dk    r:t          j        t          j        d| dz   ¦  «        d| z  z  d|z  dz
  z  ¦  «        }n?t          j        t          | ¦  «        | t          j	        d|z  dz
  ¦  «        z  z   ¦  «        }t	          |d|z
  |¬¦  «        S || dz
  k    r dd|z
  | z  z  }t	          d|z
  ||¬¦  «        S |dk    r8dt          j                             | |¦  «        z  }t	          d|z
  ||¬¦  «        S ||z  }| dk    r’|d	k    r't          | |d
¬¦  «        }t	          |d|z
  |¬¦  «        S |dk    r't          | |d
¬¦  «        }t	          |d|z
  |¬¦  «        S dt          j                             | |¦  «        z  }t	          d|z
  ||¬¦  «        S |s@|dk    rdS |dk    r2dt          j                             | |¦  «        z  }t          |¦  «        S |dk    rd}n7| dk    r| |dz  z  dk    rt          | |d
¬¦  «        }nt!          | |d
¬¦  «        }t	          |d|z
  |¬¦  «        S )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  s  € õ 
„x��{„{ð ØˆÝ
ˆ1�v„v�‚{€{�a˜1’f�fÝŒvˆØˆC‚x€xÝ$ S¨#°3Ð7Ñ7Ô7Ð7ØˆC‚x€xÝ$ S¨#°3Ð7Ñ7Ô7Ð7Ø	ˆA‰€AØˆC‚x€xØ�Š8ˆ8Ý(¨¨c°sÐ;Ñ;Ô;Ð;Ø�Š8ˆ8Ý”7�2œ9 Q¨¨!©Ñ,Ô,°°A±Ñ6¸!¸A¹#À¹'ÑBÑCÔCˆDˆDå”6Õ5°aÑ8Ô8¸1½r¼vÀaÈÁcÈ!Áe¹}¼}Ñ;LÑLÑMÔMˆDÝ$ T¨3°©:¸3Ð?Ñ?Ô?Ð?ØˆA�‰E‚z€zØ�C˜!‘G˜a‘<ÑˆÝ$ Q¨¡X¨t¸Ð=Ñ=Ô=Ð=ØˆC‚x€xØ•5”=×(Ò(¨¨AÑ.Ô.Ñ.ˆÝ$ S¨4¡Z°¸3Ð?Ñ?Ô?Ð?à�A‘€IØˆC‚x€xØ˜Ò Ð Ý   A¨4Ð0Ñ0Ô0ˆDÝ(¨¨s°T©z¸sÐCÑCÔCÐCØ˜Š>ˆ>Ý$ Q¨¨tÐ4Ñ4Ô4ˆDÝ(¨¨s°T©z¸sÐCÑCÔCÐCà•5”=×(Ò(¨¨AÑ.Ô.Ñ.ˆÝ$ S¨4¡Z°¸3Ð?Ñ?Ô?Ð?ð ð $Ø˜ÒÐØ�3Ø˜ÒÐØ•u”}×,Ò,¨Q°Ñ2Ô2Ñ2ˆDÝ˜dÑ#Ô#Ð#à�DÒÐØˆˆØ	
ˆfŠˆ˜˜Q ™V™ sÒ*Ð*Ý  1¨$Ð/Ñ/Ô/ˆˆå# A q¨dÐ3Ñ3Ô3ˆÝ  ¨#°©-¸SÐAÑAÔAÐAr   c                 óì  ‡ — t          j        ‰ ¦  «        r‰ S t          ‰ ¦  «        ‰ k    s‰ dk    rt           j        S |dk    s|dk    rdS ‰ |z  }|dk    r’|dk    rdS ‰ dk    r7t          j        t          j        d‰ ¦  «        d‰ z  z  d|z  dz
  z  ¦  «        }nBt          j        t          ‰ ¦  «        ‰ dz
  t          j        d|z  dz
  ¦  «        z  z   ¦  «        }|dz  ‰ dz  z  S |‰ dz
  k    rdd|z
  ‰ dz
  z  z  ‰ z  S |dk    r(dt          j
        j                             |‰ ¦  «        z  S |dz  }t          ||d‰ z  z
  ¦  «        }t          |d|z
  ¦  «        }ˆ fd	„}t          |||d
¬¦  «        S )zvComputes 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          ‰| ¦  «        S ©N)Úkolmogn)Ú_xr   s    €r   Ú_kkz_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Ã   ²  s­  ø€ õ
 
„x��{„{ð ØˆÝ
ˆ1�v„v�‚{€{�a˜1’f�fÝŒvˆØˆC‚x€x�1˜’6�6ØˆqØ	ˆA‰€AØˆC‚x€xà�Š8ˆ8Ø�3Ø�Š8ˆ8Ý”'�"œ) A q™/œ/¨S°1©WÑ5¸¸Q¹À¹ÑCÑDÔDˆCˆCå”&Õ4°QÑ7Ô7¸1¸Q¹3Å"Ä&ÈÈQÉÐQRÉÑBSÔBSÑ:SÑSÑTÔTˆCØ�Q‰w˜˜A™‰~ÐØˆA�‰E‚z€zà�C˜!‘G  1¡Ñ%Ñ%¨Ñ)Ð)ØˆC‚x€xØ•5”;Ô$×(Ò(¨¨AÑ.Ô.Ñ.Ð.ð �‰K€EÝ��q˜3˜q™5‘yÑ!Ô!€EÝ��s˜Q‘wÑÔ€Eðð ð ð ð õ �s˜A %¨qÐ1Ñ1Ô1Ð1r   c                 ó®  ‡ ‡— t          j        ‰ ¦  «        r‰ S t          ‰ ¦  «        ‰ k    s‰ dk    rt           j        S ‰dk    rd‰ z  S |dk    rdS t          j        t          j        ‰¦  «        t          j                             ‰ dz   ¦  «        z
  ‰ z  ¦  «        }|d‰ z  k    r|d‰ z  z   dz  S t          j	        t          j        |dz  ¦  «        ‰ z  ¦  «         }|dd‰ z  z
  k    r|S t          j        ‰¦  «        t          j        ‰ ¦  «        z  }t          |dd‰ z  z
  ¦  «        }ˆ ˆfd„}t          j                             |d‰ z  |d¬¦  «        S )	zeComputes 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          ‰| ¦  «        ‰z
  S r¸   )rµ   )rV   r   r   s    €€r   Ú_fz_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��{„{ð ØˆÝ
ˆ1�v„v�‚{€{�a˜1’f�fÝŒvˆØˆA‚v€vØ�1‰uˆØˆA‚v€vØˆsÝŒF•B”F˜1‘I”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                 ór  — t          j        | ||dgdgdt           j        t           j        t           j        g¬¦  «        }|D ]h\  }}}}t          j        |¦  «        r||d<   Œ!t          |¦  «        |k    rt          d|› �¦  «        ‚t          t          |¦  «        ||¬¦  «        |d<   Œi|j        d         }|S )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�q˜#˜tÐ$¨]¨OØ"¥B¤Jµ´½"¼*ÐEð
Gñ 
Gô 
G€Bàð 1ð 1‰ˆˆB��aÝŒ8�B‰<Œ<ð 	ØˆAˆc‰FØÝˆr‰7Œ7�bŠ=ˆ=ÝÐ7°2Ð7Ð7Ñ8Ô8Ð8Ý�#˜b™'œ' 2¨4Ð0Ñ0Ô0ˆˆ#‰ˆØŒ[˜Œ_€FØ€Mr   c                 ó  — t          j        | |dg¦  «        }|D ]e\  }}}t          j        |¦  «        r||d<   Œ t          |¦  «        |k    rt	          d|› �¦  «        ‚t          t          |¦  «        |¦  «        |d<   Œf|j        d         }|S )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�q˜$�<Ñ	 Ô	 €BØð )ð )‰	ˆˆB�ÝŒ8�B‰<Œ<ð 	ØˆAˆc‰FØÝˆr‰7Œ7�bŠ=ˆ=ÝÐ7°2Ð7Ð7Ñ8Ô8Ð8Ý�C ™GœG RÑ(Ô(ˆˆ#‰ˆØŒ[˜Œ_€FØ€Mr   c                 óJ  — t          j        | ||dg¦  «        }|D ]z\  }}}}t          j        |¦  «        r||d<   Œ!t          |¦  «        |k    rt	          d|› �¦  «        ‚|r|d|z
  fnd|z
  |f\  }}	t          t          |¦  «        ||	¦  «        |d<   Œ{|j        d         }
|
S )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�q˜#˜tÐ$Ñ	%Ô	%€BØð 1ð 1‰ˆˆB��aÝŒ8�B‰<Œ<ð 	ØˆAˆc‰FØÝˆr‰7Œ7�bŠ=ˆ=ÝÐ7°2Ð7Ð7Ñ8Ô8Ð8Ø$(Ð8�r˜1˜R™4�j�j¨q°©t°R¨j‰ˆˆtÝ�3˜r™7œ7 E¨4Ñ0Ô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Ð 7Ð 7Ð 7Ð 7Ð 7à€Ø	ˆŒ�-�"”- Ñ"Ô" EÑ	*Ô	*€Ø	ˆŒ�-�"”- Ñ"Ô" U FÑ	+Ô	+€àˆ2Œ7�1�r”u‘9ÑÔ€Øˆ2Œ6�!�b”e‘)ÑÔ€Ø€Ø	ˆŒ�‰Œ€ØŒe�q‰j€ØŒ5�A‰:€Ø
Œ%�1‰*€ðIð Ið IÐ ðRð Rð Rð ð  ð  ð
ð ð ð ðH0ð H0ð H0ð H0ðV&ð &ð &ð$Qð Qð Qð QðhPð Pð Pð Pðf9Bð 9Bð 9Bð 9Bðx'2ð '2ð '2ðT<ð <ð <ð:"ð "ð "ð "ðJð ð ð:ð ð ð ð ð r   