Ë
    âQ(h«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&y)é    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/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/stats/_ksstats.pyÚ_log_nfactorial_div_n_pow_nr   ]   sF   € ð 
ˆQ‰€BÜ�6‰6�!‹9�Q‰;˜‰?œX a™ZÑ'¨"¬r¯z©zÔ:JÈBÈqÉDÓ/QÑ*QÑQÐQó    c                 ó0   — t        j                  | dd«      S )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   — 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                 óì  — |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kD  r|dz  rt        j                  ||«      }||z  }t        j                  ||«      }|dz  }t        j                  ||dz
  |dz
  f   «      t        kD  r|t        z  }|t        z  }|dz  }|dkD  rŒ||dz
  |dz
  f   }t        d| dz   «      D ]9  }||z  | z  }t        j                  |«      t         k  sŒ(|t        z  }|t        z  }Œ; |dk7  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Ü$ S¨#¨sÓ3Ð3Ø	
ˆQ‰€BØ	ˆS‚yÜ$ S¨#¨sÓ3Ð3ÜŒB�G‰G�B‹KÓ€AØ	ˆB‰€AØ	ˆA‰�‰	€Aä
�‰�!�Q�Ó€Aô �9‰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ˆ€d�GÜ�w‰w�q˜qÔ!€A€bŠ!€e�Hä�6‰6”"—(‘(˜1“+˜a‘.Ó!€DØ	
€BØ€EØ€FØ
ˆqŠ&Ø�Š6Ü—9‘9˜T 1Ó%ˆDØ�V‰OˆEÜ�I‰I�a˜‹OˆØ�!‰ˆä�6‰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‰6�!‹9”vÓØ”‰KˆAØ”U‰N‰Eð	ð �‚zÜ�H‰H�Q˜Óˆä   C¨¡E¨3Ó/Ð/r   c                 ó8  — | dk(  r| |z
  dz
  ||z   dz
  }}nit        | 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Ø��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kD  rdnd}|dkD  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 ]5  }|
|dz
     |z  |z  |
|<   ||dz
     |z  |z  ||<   ||dz
     |z  |z  ||<   Œ7 t        j                  |	g«      }t        j                  |	g«      }d|d<   d\  }}t        d| |||«      \  }}t        dd| z  dz   «      D ]Õ  }|}||}}||}}|j                  d«       t        || |||«      \  }}|dk(  s|d| z  dz   k(  r|
}n	|dz  r|n|}||z
  dz   }|dkD  sŒZt        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 ]5  }t        j                  |«      t        kD  r|t        z  }|t        z  }||z  }Œ7 |dk7  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‰X�a‹[Ó	€BØˆq�2‰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°q±S¸!¸A¹#¸a¹%À!ÀaÈÁcÁ'È1ÁÐ2ˆl€HÜ�1�e‹_ò IˆØ˜1˜q™5‘M HÑ,¨qÑ0ˆˆq‰	Ø   Q¡Ñ'¨,Ñ6¸Ñ:ˆ	�!‰Ø$ Q¨¡UÑ+Ð.DÑDÀqÑHˆ�AŠðIô
 
�‰�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�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           	      óº  — |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 ]y  }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  }Œ{ ||	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Ü$ S¨#°3Ô7Ð7ØˆC‚xÜ$ S¨#°3Ô7Ð7ä
�‰�‹
�Q‰€AØ$% q¡D¨!¨Q©$°°1±°a¸±dÐ$:Ñ!€Hˆf�e˜Täˆ<˜!Ñ˜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                 óâ  — t        j                  | «      r| S t        | «      | k7  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\  r4dt        j                  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                  j                  | |«      z  }t	        d|z
  ||¬«      S |s9|dk\  ry|dk\  r.dt        j                  j                  | |«      z  }t        |«      S |dk\  rd}n-| 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�x�„{ØˆÜ
ˆ1ƒv�‚{�a˜1’fÜ�v‰vˆØˆC‚xÜ$ S¨#°3Ô7Ð7ØˆC‚xÜ$ S¨#°3Ô7Ð7Ø	ˆA‰€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Ô?Ð?ØˆA�‰E‚zØ�C˜!‘G˜a‘<ÑˆÜ$ Q¨¡X¨t¸Ô=Ð=ØˆC‚xØ”5—=‘=×(Ñ(¨¨AÓ.Ñ.ˆÜ$ S¨4¡Z°¸3Ô?Ð?à�A‘€IØˆC‚xØ˜Ò Ü   A¨4Ô0ˆDÜ(¨¨s°T©z¸sÔCÐCØ˜Š>Ü$ Q¨¨tÔ4ˆDÜ(¨¨s°T©z¸sÔCÐCà”5—=‘=×(Ñ(¨¨AÓ.Ñ.ˆÜ$ S¨4¡Z°¸3Ô?Ð?ñ Ø˜ÒØØ˜ÒØ”u—}‘}×,Ñ,¨Q°Ó2Ñ2ˆDÜ˜dÓ#Ð#à�DÒØ‰Ø	
ˆfŠ˜˜Q ™V™ sÒ*Ü  1¨$Ô/‰ä# A q¨dÔ3ˆÜ  ¨#°©-¸SÔAÐAr   c                 óÊ  ‡ — t        j                  ‰ «      r‰ S t        ‰ «      ‰ k7  s‰ dk  rt         j                  S |dk\  s|dk  ry‰ |z  }|dk  r�|dk  ry‰ dk  r9t        j                  t        j
                  d‰ «      d‰ z  z  d|z  dz
  z  «      }n@t        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                  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Ã   ²  sl  ø€ ô
 
‡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Ü��q˜3˜q™5‘yÓ!€EÜ��s˜Q‘wÓ€Eôô �s˜A %¨qÔ1Ð1r   c                 ó¦  ‡ ‡— t        j                  ‰ «      r‰ S t        ‰ «      ‰ k7  s‰ dk  rt         j                  S ‰dk  rd‰ z  S |dk  ryt        j                  t        j
                  ‰«      t        j                  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                  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�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  — t        j                  | ||dgdgdt         j                  t         j                  t         j                  g¬«      }|D ]X  \  }}}}t        j                  |«      r||d<   Œ#t        |«      |k7  rt        d|› �«      ‚t        t        |«      ||¬«      |d<   ŒZ |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¡J´·±¼"¿*¹*ÐEô
G€Bàò 1‰ˆˆB��aÜ�8‰8�BŒ<ØˆAˆc‰FØÜˆr‹7�bŠ=ÜÐ2°2°$Ð7Ó8Ð8Üœ#˜b›' 2¨4Ô0ˆˆ#Šð1ð �[‰[˜‰_€FØ€Mr   c                 ó  — t        j                  | |dg«      }|D ]U  \  }}}t        j                  |«      r||d<   Œ"t        |«      |k7  rt	        d|› �«      ‚t        t        |«      |«      |d<   ŒW |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‰8�BŒ<ØˆAˆc‰FØÜˆr‹7�bŠ=ÜÐ2°2°$Ð7Ó8Ð8ÜœC ›G RÓ(ˆˆ#Šð)ð �[‰[˜‰_€FØ€Mr   c                 ó4  — t        j                  | ||dg«      }|D ]j  \  }}}}t        j                  |«      r||d<   Œ#t        |«      |k7  rt	        d|› �«      ‚|r|d|z
  fnd|z
  |f\  }}	t        t        |«      ||	«      |d<   Œl |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‰ˆˆB��aÜ�8‰8�BŒ<ØˆAˆc‰FØÜˆr‹7�bŠ=ÜÐ2°2°$Ð7Ó8Ð8Ù$(�r˜1˜R™4‘j¨q°©t°R¨j‰ˆˆtÜœ3˜r›7 E¨4Ó0ˆˆ#Šð1ð �[‰[˜‰_€FØ€Mr   )T)'Únumpyr   Úscipy.specialr°   Úscipy.special._ufuncsr±   Ú_ufuncsrÊ   Úscipy._lib._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 Û ß #Ð #Ý 6à€Ø	ˆ�‰�-�"—-‘- Ó" EÓ	*€Ø	ˆ�‰�-�"—-‘- Ó" U FÓ	+€àˆ2�7‰7�1�r—u‘u‘9Ó€Øˆ2�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   