Ë
    iKêj´%  ã                   óÂ   — d dl Z d dlZd dlmZ dededefd„Zddd	œded
edededef
d„Z G d„ de j                  «      Z	 G d„ de	«      Z
 G d„ de	«      Z G d„ d«      Zy)é    N)ÚclampÚdfÚtÚreturnc                 ó^  — t        | t        «      sJ ‚| dk  rt        d| › �«      ‚|dk(  ryt        |«      }d||z  | z  z   }| dz  dk(  rƒ|t	        j
                  | «      z  }t	        j                  |«      }| dkD  r:d}d}d}|| dz
  k  r!||dz
  ||z  z  z  }||z  }|dz  }|| dz
  k  rŒ!|||z  |z  z  }|dt        j                  z  z  }nMd}d}d}|| dz
  k  r!||dz
  ||z  z  z  }||z  }|dz  }|| dz
  k  rŒ!||z  t	        j
                  || z  «      z  }|d	k  rdd|z  z
  S dd|z  z   S )
zxStudent's t CDF for integer df >= 1, evaluated at t.

    Closed-form finite sum from Abramowitz & Stegun 26.7.7-8.
    é   z$stdtr requires integer df >= 1, got ç        ç      à?ç      ð?é   é   g       @r   )Ú
isinstanceÚintÚ
ValueErrorÚabsÚmathÚsqrtÚatanÚpi)	r   r   Úabs_tÚzÚuÚpÚfÚtzÚjs	            úc/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/hypothesis/internal/statistics.pyÚstdtrr      sŠ  € ô
 �bœ#ÔÐÐØ	ˆA‚vÜÐ?À¸tÐDÓEÐEØˆC‚xØÜ�‹F€EØˆe�e‰m˜bÑ Ñ €AØ	ˆA�v�‚{à”D—I‘I˜b“MÑ!ˆÜ�I‰I�a‹LˆØ�Š6ØˆAØˆBØˆAØ�r˜A‘v’+Ø�q˜1‘u  Q¡Ñ'Ñ'�Ø�R‘�Ø�Q‘�ð �r˜A‘v“+ð ��Q‘˜‘‰NˆAØ	ˆS”4—7‘7‰]Ñ‰ð ˆØˆØˆØ�2˜‘6ŠkØ�1�q‘5˜Q ™UÑ#Ñ#ˆBØ�‰GˆAØ�‰FˆAð �2˜‘6‹kð �‰IœŸ	™	 ! b¡&Ó)Ñ)ˆØ šEˆ3��q‘‰=Ð4 s¨S°1©W¡}Ð4ó    g»½×Ùß|Û=é2   )ÚepsÚmax_iterr   r!   r"   c                óÊ  — | dk  rt        d| › �«      ‚|dk(  ryd|cxk  rdk  sn t        d|› �«      ‚| dk(  r¦|dkD  rSt        j                  t        j                  d|z
  z  «      t        j                  t        j                  d|z
  z  «      z  S t        j                  t        j                  |z  «       t        j                  t        j                  |z  «      z  S | dk(  r'd|z  dz
  t        j
                  d|z  d|z
  z  «      z  S |dkD  rdnd}|dkD  r|nd|z
  }d	\  }}t        | |«      |k  r|dz  }t        | |«      |k  rŒt        j                  d| dz   z  «      dt        j                  | t        j                  z  «      z  z
  t        j                  d| z  «      z
  }d||z   z  }	t        |«      D ]¢  }
t        | |	«      }||k  r|	}n|	}|d| dz   z  t        j                  |	|	z  | z  «      z  z
  }t        j                  |«      }|dk(  r	d||z   z  }	n#|	||z
  |z  z
  }||cxk  r|k  rn n|nd||z   z  }	||z
  |dt        |	«      z   z  k  sŒž ||	z  S  ||	z  S )
uJ  Inverse Student's t CDF (quantile) for integer df >= 1.

    df âˆˆ {1, 2}: closed-form analytic quantile (Shaw 2006, eq 35-36).

    df >= 3: bracketed Newton iteration on stdtr â€” doubling search from t=1
    to bracket the target, then Newton steps with bisection fallback. Always
    converges; ~5-10 iterations typical.
    r   z&stdtrit requires integer df >= 1, got r
   r	   r   z stdtrit requires 0 < p < 1, got r   g      ð¿)r	   r   )r   r   Úcosr   Úsinr   r   ÚlgammaÚlogÚrangeÚlog1pÚexpr   )r   r   r!   r"   ÚsignÚqÚloÚhiÚlog_normr   Ú_ÚFÚlog_fr   Út_newtons                  r   Ústdtritr4   ?   sk  € ð 
ˆA‚vÜÐAÀ"ÀÐFÓGÐGØˆC‚xØØ�Œ=�SŒ=ÜÐ;¸A¸3Ð?Ó@Ð@Ø	ˆQ‚wð ˆsŠ7Ü—8‘8œDŸG™G q¨1¡uÑ-Ó.´·±¼$¿'¹'ÀQÈÁUÑ:KÓ1LÑLÐLÜ—‘œŸ™ 1™Ó%Ð%¬¯©´·±¸1±Ó(=Ñ=Ð=Ø	ˆQ‚wØ�A‘˜‘	œTŸY™Y q¨1¡u°°A±¡Ó7Ñ7Ð7à�c’'‰3˜t€DØ�ŠW‰˜!˜a™%€Aà�F€BˆÜ
��B‹-˜!Ò
Ø
ˆa‰ˆô ��B‹-˜!Ó
ô 	�‰�C˜2 ™6‘NÓ#Ø
”—‘˜œdŸg™g™Ó&Ñ
&ñ	'ä
�+‰+�c˜B‘hÓ
ñ	 ð ð
 	ˆr�B‰w‰€AÜ�8‹_ò ˆÜ�"�a‹LˆØˆqŠ5Ø‰BàˆBØ˜3 " q¡&™>¬D¯J©J°q¸1±u¸r±zÓ,BÑBÑBˆÜ�H‰H�U‹OˆØ�Š8Ø�r˜B‘w‘‰Aà˜A ™E Q™;‘ˆHØ (Ô0¨bÕ0‘°c¸RÀ"¹W±oˆAØ�‰7�S˜A¤ A£™JÑ'Ó'ØØ�!‰8€Oðð �!‰8€Or   c                   ó–   — e Zd Zej                  dedefd„«       Zej                  dedefd„«       Zej                  dedefd„«       Zy)Ú_DistributionÚxr   c                 ó   — t         ‚©N©ÚNotImplementedError©Úselfr7   s     r   Úcdfz_Distribution.cdf�   ó   € ä!Ð!r   r   c                 ó   — t         ‚r9   r:   ©r=   r   s     r   Úinverse_cdfz_Distribution.inverse_cdf…   r?   r   c                 ó   — t         ‚r9   r:   r<   s     r   Úpdfz_Distribution.pdf‰   r?   r   N)	Ú__name__Ú
__module__Ú__qualname__ÚabcÚabstractmethodÚfloatr>   rB   rD   © r   r   r6   r6   €   sx   „ Ø×Ñð"�Uð "˜uò "ó ð"ð 	×Ñð"˜Uð " uò "ó ð"ð 	×Ñð"�Uð "˜uò "ó ñ"r   r6   c                   óP   — e Zd ZdZdeddfd„Zdedefd„Zdedefd	„Zdedefd
„Zy)ÚUniformDistributionz2Uniform distribution on [-half_width, half_width].Ú
half_widthr   Nc                ó   — || _         y r9   ©rN   )r=   rN   s     r   Ú__init__zUniformDistribution.__init__‘   s	   € Ø$ˆ�r   r7   c                 ó‚   — || j                    k  ry|| j                   kD  ry|| j                   z   d| j                   z  z  S )Nr	   r   r   rP   r<   s     r   r>   zUniformDistribution.cdf”   s@   € Ø�—‘ÐÒØØˆt�‰ÒØØ�D—O‘OÑ#¨¨D¯O©OÑ(;Ñ<Ð<r   r   c                 óB   — | j                    d| j                   z  |z  z   S )Nr   rP   rA   s     r   rB   zUniformDistribution.inverse_cdf›   s"   € Ø—‘Ð ! d§o¡oÑ"5¸Ñ"9Ñ9Ð9r   c                 ón   — | j                    |cxk  r| j                   k  rn ydd| j                   z  z  S y)Nr   r   r	   rP   r<   s     r   rD   zUniformDistribution.pdfž   s6   € Ø�O‰OÐ˜qÔ3 D§O¡OÔ3àð ˜˜DŸO™OÑ+Ñ,Ð,Ør   )	rE   rF   rG   Ú__doc__rJ   rQ   r>   rB   rD   rK   r   r   rM   rM   Ž   sQ   „ Ù<ð% eð %°ó %ð=�Uð =˜uó =ð:˜Uð : uó :ð�Uð ˜uô r   rM   c                   óx   — e Zd ZdZ ej
                  d«      Zdededdfd„Z	dedefd	„Z
d
edefd„Zdedefd„Zy)ÚLogStudentTDistributiona�  Student's t distribution, in the transformed domain of log_2(x).

    Y = sign(x) * log_2(1 + |x|) ~ scale_bits * t(df).

    Note that we only support integer df. This is to reduce surface area in the vendored
    mathematical functions, which are simpler when df is an integer. There is no
    fundamental difficulty to supporting float df, other than the necessary due diligence
    for the vendored code.
    r   Ú
scale_bitsr   r   Nc                óà   — || _         || _        t        j                  |dz   dz  «      t        j                  |t        j
                  z  «      t        j                  |dz  «      z  z  | _        y ©Nr   r   )rX   r   r   Úgammar   r   Ú_t_coef)r=   rX   r   s      r   rQ   z LogStudentTDistribution.__init__±   sS   € Ø$ˆŒØˆŒÜ—z‘z 2¨¡6¨Q¡,Ó/Ü�I‰I�bœ4Ÿ7™7‘lÓ#¤d§j¡j°°a±Ó&8Ñ8ñ
ˆ�r   r7   c                 óÄ   — t        j                  t        j                  dt        |«      z   «      |«      | j                  z  }t        t        | j                  |«      «      S )Nr   )r   ÚcopysignÚlog2r   rX   rJ   r   r   )r=   r7   Úys      r   r>   zLogStudentTDistribution.cdf¸   sB   € Ü�M‰Mœ$Ÿ)™) A¬¨A«¡JÓ/°Ó3°d·o±oÑEˆÜ”U˜4Ÿ7™7 AÓ&Ó'Ð'r   r   c                 óò   — | j                   t        t        | j                  |«      «      z  }t	        d|d«      }t        j                  t        j                  t        |«      | j                  z  «      |«      S )Niüÿÿiÿ  )
rX   rJ   r4   r   r   r   r^   Úexpm1r   ÚLN2)r=   r   r`   s      r   rB   z#LogStudentTDistribution.inverse_cdf¼   sW   € Ø�O‰Oœe¤G¨D¯G©G°QÓ$7Ó8Ñ8ˆô
 �%˜˜DÓ!ˆÜ�}‰}œTŸZ™Z¬¨A«°·±Ñ(9Ó:¸AÓ>Ð>r   c                 óH  — t        j                  t        j                  dt        |«      z   «      |«      | j                  z  }| j
                  d||z  | j                  z  z   | j                  dz    dz  z  z  }|| j                  dt        |«      z   z  | j                  z  z  S rZ   )r   r^   r_   r   rX   r\   r   rc   )r=   r7   r`   Úf_ts       r   rD   zLogStudentTDistribution.pdfÅ   s„   € Ü�M‰Mœ$Ÿ)™) A¬¨A«¡JÓ/°Ó3°d·o±oÑEˆØ�l‰l˜a ! a¡%¨$¯'©'¡/Ñ1¸¿¹À1¹°~ÈÑ7IÑJÑJˆØ�d—o‘o¨¬S°«V©Ñ4°t·x±xÑ?Ñ@Ð@r   )rE   rF   rG   rU   r   r'   rc   rJ   r   rQ   r>   rB   rD   rK   r   r   rW   rW   ¤   sn   „ ñð ˆ$�(‰(�1‹+€Cð
 eð 
°ð 
¸ó 
ð(�Uð (˜uó (ð?˜Uð ? uó ?ðA�Uð A˜uô Ar   rW   c                   óH   — e Zd ZdZdedededdfd„Zdedefd	„Zd
edefd„Zy)ÚPiecewiseDistributionu  Two-region splice: `inner` on (-switchover, switchover),
    `outer` on |x| >= switchover.

    Each region is normalized so that the resulting density is continuous at
    Â±switchover and integrates to 1. Both inner and outer must be symmetric around 0.
    ÚinnerÚouterÚ
switchoverr   Nc                óh  — || _         || _        || _        |j                  | «      | _        |j                  |«      | _        |j                  | «      | _        |j                  |«      | _        d| j                  | j                  z
  z
  }| j
                  | j                  z
  }|j                  |«      }|j                  |«      }|dk7  sJ d|› d�«       ‚d||z  |z  |z   z  | _	        | j                  |z  |z  | _
        | j                  |z  | _        | j                  | j                  z  | _        y )Nr   r   zinner.pdf(switchover=zF) == 0; cannot density-match. inner must have support at the boundary.)rh   ri   rj   r>   Ú_inner_g_negÚ_inner_g_posÚ_outer_g_negÚ_outer_g_posrD   Ú_alphaÚ_betaÚ_inner_massÚ
_left_mass)r=   rh   ri   rj   Úouter_outer_massÚinner_inner_massÚ	inner_pdfÚ	outer_pdfs           r   rQ   zPiecewiseDistribution.__init__Ó   s2  € ð ˆŒ
ØˆŒ
Ø$ˆŒØ!ŸI™I z kÓ2ˆÔØ!ŸI™I jÓ1ˆÔØ!ŸI™I z kÓ2ˆÔØ!ŸI™I jÓ1ˆÔØ × 1Ñ 1°D×4EÑ4EÑ EÑFÐØ×,Ñ,¨t×/@Ñ/@Ñ@Ðð —I‘I˜jÓ)ˆ	Ø—I‘I˜jÓ)ˆ	Ø˜AŠ~ð 	
Ø# J <ð 01ð 1ó	
ˆ~ð ˜9Ð'7Ñ7¸)ÑCÐFVÑVÑWˆŒØ—[‘[ 9Ñ,¨yÑ8ˆŒ
ØŸ:™:Ð(8Ñ8ˆÔØŸ+™+¨×(9Ñ(9Ñ9ˆ�r   r7   c                 ó²  — || j                    k  r(| j                  | j                  j                  |«      z  S || j                   k  rB| j                  | j
                  | j                  j                  |«      | j                  z
  z  z   S | j                  | j                  z   | j                  | j                  j                  |«      | j                  z
  z  z   S r9   )
rj   rp   ri   r>   rs   rq   rh   rl   rr   ro   r<   s     r   r>   zPiecewiseDistribution.cdfï   s¶   € Ø�—‘Ð Ò Ø—;‘; §¡§¡°Ó!2Ñ2Ð2Øˆt�‰ÒØ—?‘? T§Z¡ZØ—
‘
—‘˜qÓ! D×$5Ñ$5Ñ5ñ&ñ ð ð �O‰OØ×Ññà�k‰k˜TŸZ™ZŸ^™^¨AÓ.°×1BÑ1BÑBÑCñDð	
r   r   c                 óÎ  — || j                   k  r(| j                  j                  || j                  z  «      S || j                   | j                  z   k  rD| j
                  || j                   z
  | j                  z  z   }| j                  j                  |«      S | j                  j                  || j                   z
  | j                  z
  | j                  z  | j                  z   «      S r9   )	rs   ri   rB   rp   rr   rl   rq   rh   ro   )r=   r   Útargets      r   rB   z!PiecewiseDistribution.inverse_cdfü   s»   € Ø�—‘ÒØ—:‘:×)Ñ)¨!¨d¯k©k©/Ó:Ð:Øˆt�‰ ×!1Ñ!1Ñ1Ò1Ø×&Ñ&¨!¨d¯o©oÑ*=ÀÇÁÑ)KÑKˆFØ—:‘:×)Ñ)¨&Ó1Ð1Ø�z‰z×%Ñ%Ø�—‘Ñ  4×#3Ñ#3Ñ3°t·{±{ÑBÀT×EVÑEVÑVó
ð 	
r   )	rE   rF   rG   rU   r6   rJ   rQ   r>   rB   rK   r   r   rg   rg   Ë   sR   „ ñð:Ø%ð:Ø.;ð:ØINð:à	ó:ð8
�Uð 
˜uó 
ð
˜Uð 
 uô 
r   rg   )rH   r   Úhypothesis.internal.floatsr   r   rJ   r   r4   ÚABCr6   rM   rW   rg   rK   r   r   ú<module>r}      s•   ðó Û å ,ð$5ˆcð $5�eð $5 ó $5ðP (-¸bò6Øð6Øð6Ø$ð6Ø8;ð6à
ó6ôB"�C—G‘Gô "ô˜-ô ô,$A˜mô $A÷N9
ò 9
r   