ó
    Eñiù  ã                   ól   • S SK r S SKJrJr  S SKrS SKJrJr  S SKJrJ	r	  S SK
Jr  S/r " S S\	5      rg)é    N)ÚNumberÚReal)ÚinfÚnan)ÚconstraintsÚDistribution)Úbroadcast_allÚGeneralizedParetoc                   ó>  ^ • \ rS rSrSr\R                  \R                  \R                  S.rSr	SU 4S jjr
SU 4S jjr\R                  " 5       4S jrS rS	 rS
 rS rS rS r\S 5       r\S 5       rS r\S 5       r\R4                  " SSS9S 5       rSrU =r$ )r
   é   a]  
Creates a Generalized Pareto distribution parameterized by :attr:`loc`, :attr:`scale`, and :attr:`concentration`.

The Generalized Pareto distribution is a family of continuous probability distributions on the real line.
Special cases include Exponential (when :attr:`loc` = 0, :attr:`concentration` = 0), Pareto (when :attr:`concentration` > 0,
:attr:`loc` = :attr:`scale` / :attr:`concentration`), and Uniform (when :attr:`concentration` = -1).

This distribution is often used to model the tails of other distributions. This implementation is based on the
implementation in TensorFlow Probability.

Example::

    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = GeneralizedPareto(torch.tensor([0.1]), torch.tensor([2.0]), torch.tensor([0.4]))
    >>> m.sample()  # sample from a Generalized Pareto distribution with loc=0.1, scale=2.0, and concentration=0.4
    tensor([ 1.5623])

Args:
    loc (float or Tensor): Location parameter of the distribution
    scale (float or Tensor): Scale parameter of the distribution
    concentration (float or Tensor): Concentration parameter of the distribution
)ÚlocÚscaleÚconcentrationTc                 ó<  >• [        XU5      u  U l        U l        U l        [	        U[
        5      (       a@  [	        U[
        5      (       a+  [	        U[
        5      (       a  [        R                  " 5       nOU R                  R                  5       n[        TU ])  XTS9  g )N©Úvalidate_args)r	   r   r   r   Ú
isinstancer   ÚtorchÚSizeÚsizeÚsuperÚ__init__)Úselfr   r   r   r   Úbatch_shapeÚ	__class__s         €Úc/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributions/generalized_pareto.pyr   ÚGeneralizedPareto.__init__.   ss   ø€ Ü3@Ø˜ó4
Ñ0ˆŒ�$”*˜dÔ0ô �sœF×#Ñ#Ü˜5¤&×)Ñ)Ü˜=¬&×1Ñ1äŸ*š*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜ÐÒBó    c                 óf  >• U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        U R                  R                  U5      Ul        [        [        U]'  USS9  U R                  Ul
        U$ )NFr   )Ú_get_checked_instancer
   r   r   r   Úexpandr   r   r   r   Ú_validate_args)r   r   Ú	_instanceÚnewr   s       €r   r!   ÚGeneralizedPareto.expand<   s�   ø€ Ø×(Ñ(Ô):¸IÓFˆÜ—j’j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—J‘J×%Ñ% kÓ2ˆŒ	Ø ×.Ñ.×5Ñ5°kÓBˆÔÜÔ Ñ.¨{È%Ð.ÑPØ!×0Ñ0ˆÔØˆ
r   c                 óÀ   • U R                  U5      n[        R                  " X R                  R                  U R                  R
                  S9nU R                  U5      $ )N)ÚdtypeÚdevice)Ú_extended_shaper   Úrandr   r'   r(   Úicdf)r   Úsample_shapeÚshapeÚus       r   ÚrsampleÚGeneralizedPareto.rsampleF   s@   € Ø×$Ñ$ \Ó2ˆÜ�JŠJ�u§H¡H§N¡N¸4¿8¹8¿?¹?ÑKˆØ�y‰y˜‹|Ðr   c           	      óØ  • U R                   (       a  U R                  U5        U R                  U5      n[        R                  " U R
                  [        R                  " S5      5      n[        R                  " U[        R                  " U R
                  5      U R
                  5      nSU-  [        R                  " U5      -   n[        R                  " US:H  XU[        R                  " XB-  5      -  5      n[        U R                  [        5      (       a   [        R                  " U R                  5      OU R                  R                  5       nU* [        R                  " X2U5      -
  $ )Nç        é   r   )r"   Ú_validate_sampleÚ_zr   Úiscloser   ÚtensorÚwhereÚ	ones_likeÚlog1pr   r   r   ÚmathÚlog)r   ÚvalueÚzÚeq_zeroÚ	safe_concÚyÚwhere_nonzeroÚ	log_scales           r   Úlog_probÚGeneralizedPareto.log_probK   sø   € Ø××Ø×!Ñ! %Ô(Ø�G‰G�E‹NˆÜ—-’- × 2Ñ 2´E·L²LÀÓ4EÓFˆÜ—K’KØ”U—_’_ T×%7Ñ%7Ó8¸$×:LÑ:Ló
ˆ	ð �	‰MœEŸOšO¨AÓ.Ñ.ˆÜŸš A¨¡F¨A´5·;²;¸y¹}Ó3MÑ/MÓNˆä$.¨t¯z©z¼4×$@Ñ$@ŒD�HŠH�T—Z‘ZÔ ÀdÇjÁjÇnÁnÓFVð 	ð ˆzœEŸKšK¨°MÓBÑBÐBr   c                 óº  • U R                   (       a  U R                  U5        U R                  U5      n[        R                  " U R
                  [        R                  " S5      5      n[        R                  " U[        R                  " U R
                  5      U R
                  5      n[        R                  " XB-  5      * U-  n[        R                  " X2* U5      $ )Nr2   )
r"   r4   r5   r   r6   r   r7   r8   r9   r:   )r   r=   r>   r?   r@   rB   s         r   Úlog_survival_functionÚ'GeneralizedPareto.log_survival_functionZ   sœ   € Ø××Ø×!Ñ! %Ô(Ø�G‰G�E‹NˆÜ—-’- × 2Ñ 2´E·L²LÀÓ4EÓFˆÜ—K’KØ”U—_’_ T×%7Ñ%7Ó8¸$×:LÑ:Ló
ˆ	ô Ÿš Y¡]Ó3Ð3°iÑ?ˆÜ�{Š{˜7 B¨Ó6Ð6r   c                 óv   • [         R                  " [         R                  " U R                  U5      5      * 5      $ ©N)r   r:   ÚexprG   ©r   r=   s     r   Úlog_cdfÚGeneralizedPareto.log_cdfe   s(   € Ü�{Š{œEŸIšI d×&@Ñ&@ÀÓ&GÓHÐHÓIÐIr   c                 óL   • [         R                  " U R                  U5      5      $ rJ   )r   rK   rM   rL   s     r   ÚcdfÚGeneralizedPareto.cdfh   s   € Ü�yŠy˜Ÿ™ eÓ,Ó-Ð-r   c                 ó¦  • U R                   nU R                  nU R                  n[        R                  " U[        R
                  " U5      5      n[        R                  " U[        R                  " U5      U5      n[        R                  " U* 5      nX#U-  [        R                  " U* U-  5      -  -   nX#U-  -
  n	[        R                  " XYU5      $ rJ   )
r   r   r   r   r6   Ú
zeros_liker8   r9   r:   Úexpm1)
r   r=   r   r   r   r?   r@   ÚlogurB   Ú
where_zeros
             r   r+   ÚGeneralizedPareto.icdfk   s¤   € Ø�h‰hˆØ—
‘
ˆØ×*Ñ*ˆÜ—-’- ¬u×/?Ò/?ÀÓ/NÓOˆÜ—K’K ¬¯ª¸Ó)GÈÓWˆ	Ü�{Š{˜E˜6Ó"ˆØ iÑ/´%·+²+¸y¸jÈ4Ñ>OÓ2PÑPÑPˆØ 4™<Ñ'ˆ
Ü�{Š{˜7°Ó>Ð>r   c                 ó8   • XR                   -
  U R                  -  $ rJ   )r   r   )r   Úxs     r   r5   ÚGeneralizedPareto._zv   s   € Ø—H‘H‘ §
¡
Ñ*Ð*r   c                 óÆ   • U R                   nUS:  n[        R                  " X!S5      nU R                  U R                  SU-
  -  -   n[        R                  " X$[
        5      $ )Nr3   ç      à?)r   r   r8   r   r   r   ©r   r   Úvalidr@   Úresults        r   ÚmeanÚGeneralizedPareto.meany   sS   € à×*Ñ*ˆØ Ñ!ˆÜ—K’K °cÓ:ˆ	Ø—‘˜DŸJ™J¨!¨i©-Ñ8Ñ8ˆÜ�{Š{˜5¬#Ó.Ð.r   c                 óÊ   • U R                   nUS:  n[        R                  " X!S5      nU R                  S-  SU-
  S-  SSU-  -
  -  -  n[        R                  " X$[        5      $ )Nr\   g      Ð?é   r3   )r   r   r8   r   r   r]   s        r   ÚvarianceÚGeneralizedPareto.variance�   sa   € à×*Ñ*ˆØ Ñ#ˆÜ—K’K °dÓ;ˆ	à—‘˜Q‘ 1 y¡=°QÑ"6¸!¸aÀ)¹mÑ:KÑ"LÑMˆÜ�{Š{˜5¬#Ó.Ð.r   c                 ó¢   • [         R                  " U R                  5      U R                  -   S-   n[         R                  " XR
                  5      $ )Nr3   )r   r<   r   r   Úbroadcast_toÚ_batch_shape)r   Úanss     r   ÚentropyÚGeneralizedPareto.entropyŠ   s;   € Ü�iŠi˜Ÿ
™
Ó# d×&8Ñ&8Ñ8¸1Ñ<ˆÜ×!Ò! #×'8Ñ'8Ó9Ð9r   c                 ó   • U R                   $ rJ   )r   )r   s    r   ÚmodeÚGeneralizedPareto.modeŽ   s   € à�x‰xˆr   Fr   )Úis_discreteÚ	event_dimc                 óÊ   • U R                   n[        R                  " U R                  S:  XR                  U R                  -  -
  [
        5      n[        R                  " X5      $ )Nr   )r   r   r8   r   r   r   r   Úinterval)r   ÚlowerÚuppers      r   ÚsupportÚGeneralizedPareto.support’   sR   € ð —‘ˆÜ—’Ø×Ñ Ñ" E¯J©J¸×9KÑ9KÑ,KÑ$KÌSó
ˆô ×#Ò# EÓ1Ð1r   )r   r   r   rJ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   ÚrealÚpositiveÚarg_constraintsÚhas_rsampler   r!   r   r   r/   rD   rG   rM   rP   r+   r5   Úpropertyr`   rd   rj   rm   Údependent_propertyru   Ú__static_attributes__Ú__classcell__)r   s   @r   r
   r
      sÑ   ø† ñð2 ×ÑØ×%Ñ%Ø$×)Ñ)ñ€Oð
 €K÷C÷ð $)§:¢:£<ô ò
Cò	7òJò.ò	?ò+ð ñ/ó ð/ð ñ/ó ð/ò:ð ñó ðð ×#Ò#°ÀÑCñ2ó Dö2r   )r;   Únumbersr   r   r   r   r   Útorch.distributionsr   r   Útorch.distributions.utilsr	   Ú__all__r
   © r   r   Ú<module>r‰      s/   ðã ß  ã ß ß 9Ý 3ð Ð
€ôK2˜õ K2r   