+
    –°³j—³  ã                   ót  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIt^ RIHu Ht	 ^ RIH
t
 ^ RIHt ^ RIHt ^ RIHtHtHtHtHt ^ RIHtHt ^ RIHt . R2Ot ! R R4      t ! R R]4      t ! R R]4      t]! . 4      t ! R  R]4      t ! R! R]4      t ! R" R]4      t  ! R# R]4      t!R$ t" ! R% R]4      t# ! R& R]4      t$ ! R' R]4      t% ! R( R	]4      t& ! R) R
]4      t' ! R* R]4      t( ! R+ R]4      t) ! R, R]4      t* ! R- R]4      t+ ! R. R]4      t, ! R/ R]4      t- ! R0 R]4      t. ! R1 R]4      t/R# )3é    N)ÚSequence)ÚTensor)Úconstraints)ÚDistribution)Ú_sum_rightmostÚbroadcast_allÚlazy_propertyÚtril_matrix_to_vecÚvec_to_tril_matrix)ÚpadÚsoftplus)Ú_NumberÚAbsTransformÚAffineTransformÚCatTransformÚComposeTransformÚCorrCholeskyTransformÚCumulativeDistributionTransformÚExpTransformÚIndependentTransformÚLowerCholeskyTransformÚPositiveDefiniteTransformÚPowerTransformÚReshapeTransformÚSigmoidTransformÚSoftplusTransformÚTanhTransformÚSoftmaxTransformÚStackTransformÚStickBreakingTransformÚ	Transformc                   óö   a a€ ] tR t^/t oRtRtRV3R lV 3R llltR t]V3R lR l4       t	]V3R lR	 l4       t
]V3R
 lR l4       tRR ltR tR tR tR tR tR tR tR tR tR tV3R ltRtVtV ;t# )r!   ac  
Abstract class for invertible transformations with computable log
det jacobians. They are primarily used in
:class:`torch.distributions.TransformedDistribution`.

Caching is useful for transforms whose inverses are either expensive or
numerically unstable. Note that care must be taken with memoized values
since the autograd graph may be reversed. For example while the following
works with or without caching::

    y = t(x)
    t.log_abs_det_jacobian(x, y).backward()  # x will receive gradients.

However the following will error when caching due to dependency reversal::

    y = t(x)
    z = t.inv(y)
    grad(z.sum(), [y])  # error because z is x

Derived classes should implement one or both of :meth:`_call` or
:meth:`_inverse`. Derived classes that set `bijective=True` should also
implement :meth:`log_abs_det_jacobian`.

Args:
    cache_size (int): Size of cache. If zero, no caching is done. If one,
        the latest single value is cached. Only 0 and 1 are supported.

Attributes:
    domain (:class:`~torch.distributions.constraints.Constraint`):
        The constraint representing valid inputs to this transform.
    codomain (:class:`~torch.distributions.constraints.Constraint`):
        The constraint representing valid outputs to this transform
        which are inputs to the inverse transform.
    bijective (bool): Whether this transform is bijective. A transform
        ``t`` is bijective iff ``t.inv(t(x)) == x`` and
        ``t(t.inv(y)) == y`` for every ``x`` in the domain and ``y`` in
        the codomain. Transforms that are not bijective should at least
        maintain the weaker pseudoinverse properties
        ``t(t.inv(t(x)) == t(x)`` and ``t.inv(t(t.inv(y))) == t.inv(y)``.
    sign (int or Tensor): For bijective univariate transforms, this
        should be +1 or -1 depending on whether transform is monotone
        increasing or decreasing.
Fc                ó$   <€ V ^8„  d   QhRS[ RR/# )é   Ú
cache_sizeÚreturnN©Úint)ÚformatÚ__classdict__s   "€Ú_/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributions/transforms.pyÚ__annotate__ÚTransform.__annotate__`   s   ø€ ÷ 	ñ 	¡3ð 	¨tñ 	ó    c                ó‚   <€ Wn         R V n        V^ 8X  d   MV^8X  d	   RV n        M\        R4      h\        SV `  4        R # )Nzcache_size must be 0 or 1)NN)Ú_cache_sizeÚ_invÚ_cached_x_yÚ
ValueErrorÚsuperÚ__init__)Úselfr%   Ú	__class__s   &&€r+   r5   ÚTransform.__init__`   s@   ø€ Ø%ÔØ&*ˆŒ	Ø˜Œ?ØØ˜1Œ_Ø)ˆDÕäÐ8Ó9Ð9Ü‰ÑÖr.   c                óD   € V P                   P                  4       pR VR&   V# )Nr1   )Ú__dict__Úcopy)r6   Ústates   & r+   Ú__getstate__ÚTransform.__getstate__k   s"   € Ø—‘×"Ñ"Ó$ˆØˆˆf‰Øˆr.   c                ó    <€ V ^8„  d   QhRS[ /# ©r$   r&   r'   )r)   r*   s   "€r+   r,   r-   q   s   ø€ ÷ Wñ W™3ñ Wr.   c                ó¢   € V P                   P                  V P                  P                  8X  d   V P                   P                  # \        R 4      h)z:Please use either .domain.event_dim or .codomain.event_dim)ÚdomainÚ	event_dimÚcodomainr3   ©r6   s   &r+   rC   ÚTransform.event_dimp   s:   € à�;‰;× Ñ  D§M¡M×$;Ñ$;Ô;Ø—;‘;×(Ñ(Ð(ÜÐUÓVÐVr.   c                ó   <€ V ^8„  d   QhRR/# )r$   r&   r!   © )r)   r*   s   "€r+   r,   r-   w   s   ø€ ÷ 	ñ 	�[ñ 	r.   c                óH   € V P                   pVf   \        V 4      pWn         V# )zc
Returns the inverse :class:`Transform` of this transform.
This should satisfy ``t.inv.inv is t``.
)r1   Ú_InverseTransform)r6   Úinvs   & r+   rK   ÚTransform.invv   s&   € ð �i‰iˆØŠ;Ü# DÓ)ˆCØŒIØˆ
r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   r-   ƒ   s   ø€ ÷ "ñ "‘cñ "r.   c                ó   € \         h)z€
Returns the sign of the determinant of the Jacobian, if applicable.
In general this only makes sense for bijective transforms.
©ÚNotImplementedErrorrE   s   &r+   ÚsignÚTransform.sign‚   s
   € ô "Ð!r.   c                óÈ   € V P                   V8X  d   V # \        V 4      P                  \        P                  J d   \        V 4      ! VR 7      # \	        \        V 4       R24      h)©r%   z.with_cache is not implemented)r0   Útyper5   r!   rP   ©r6   r%   s   &&r+   Ú
with_cacheÚTransform.with_cacheŠ   sS   € Ø×Ñ˜zÔ)ØˆKÜ�‹:×Ñ¤)×"4Ñ"4Ó4Ü˜”:¨Ô4Ð4Ü!¤T¨$£Z LÐ0NÐ"OÓPÐPr.   c                ó   € WJ # ©NrH   ©r6   Úothers   &&r+   Ú__eq__ÚTransform.__eq__‘   s
   € Øˆ}Ðr.   c                ó.   € V P                  V4      '       * # rZ   )r]   r[   s   &&r+   Ú__ne__ÚTransform.__ne__”   s   € à—;‘;˜uÓ%Ô%Ð%r.   c                ó¦   € V P                   ^ 8X  d   V P                  V4      # V P                  w  r#WJ d   V# V P                  V4      pW3V n        V# )z"
Computes the transform `x => y`.
)r0   Ú_callr2   )r6   ÚxÚx_oldÚy_oldÚys   &&   r+   Ú__call__ÚTransform.__call__˜   sS   € ð ×Ñ˜qÔ Ø—:‘:˜a“=Ð Ø×'Ñ'‰ˆØ‹:ØˆLØ�J‰J�q‹MˆØ˜4ˆÔØˆr.   c                ó¦   € V P                   ^ 8X  d   V P                  V4      # V P                  w  r#WJ d   V# V P                  V4      pWA3V n        V# )z!
Inverts the transform `y => x`.
)r0   Ú_inverser2   )r6   rg   re   rf   rd   s   &&   r+   Ú	_inv_callÚTransform._inv_call¥   sU   € ð ×Ñ˜qÔ Ø—=‘= Ó#Ð#Ø×'Ñ'‰ˆØ‹:ØˆLØ�M‰M˜!ÓˆØ˜4ˆÔØˆr.   c                ó   € \         h)z4
Abstract method to compute forward transformation.
rO   ©r6   rd   s   &&r+   rc   ÚTransform._call²   ó
   € ô "Ð!r.   c                ó   € \         h)z4
Abstract method to compute inverse transformation.
rO   ©r6   rg   s   &&r+   rk   ÚTransform._inverse¸   rq   r.   c                ó   € \         h)zE
Computes the log det jacobian `log |dy/dx|` given input and output.
rO   ©r6   rd   rg   s   &&&r+   Úlog_abs_det_jacobianÚTransform.log_abs_det_jacobian¾   rq   r.   c                ó<   € V P                   P                  R ,           # )z())r7   Ú__name__rE   s   &r+   Ú__repr__ÚTransform.__repr__Ä   s   € Ø�~‰~×&Ñ&¨Õ-Ð-r.   c                ó   € V# )zc
Infers the shape of the forward computation, given the input shape.
Defaults to preserving shape.
rH   ©r6   Úshapes   &&r+   Úforward_shapeÚTransform.forward_shapeÇ   ó	   € ð
 ˆr.   c                ó   € V# )ze
Infers the shapes of the inverse computation, given the output shape.
Defaults to preserving shape.
rH   r~   s   &&r+   Úinverse_shapeÚTransform.inverse_shapeÎ   r‚   r.   c                óZ   <€ V ^8„  d   Qh/ S[ P                  ;R&   S[ P                  ;R&   # )r$   rB   rD   ©r   Ú
Constraint)r)   r*   s   "€r+   r,   r-   /   s/   ø‡ ‚ ñ\ ×"Ñ"Ñ"ñ] ñ^ ×$Ñ$Ñ$ò_ r.   )r0   r2   r1   ©r   ©é   )rz   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	bijectiver5   r=   ÚpropertyrC   rK   rQ   rW   r]   r`   rh   rl   rc   rk   rw   r{   r€   r„   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r7   r*   s   @@r+   r!   r!   /   sŸ   ù‡ € ñ*ðX €I÷	õ 	òð
 ÷Wó ðWð
 ÷	ó ð	ð ÷"ó ð"ôQòò&òòò"ò"ò"ò.òò÷ … r.   c                   ó(  a a€ ] tR t^Öt oRtV3R lV 3R llt]P                  ! RR7      R 4       t]P                  ! RR7      R 4       t	]
V3R lR	 l4       t]
V3R
 lR l4       t]
V3R lR l4       tRR ltR tR tR tR tR tR tRtVtV ;t# )rJ   zp
Inverts a single :class:`Transform`.
This class is private; please instead use the ``Transform.inv`` property.
c                ó$   <€ V ^8„  d   QhRS[ RR/# )r$   Ú	transformr&   N©r!   )r)   r*   s   "€r+   r,   Ú_InverseTransform.__annotate__Ü   s   ø€ ÷ 0ñ 0¡)ð 0°ñ 0r.   c                óH   <€ \         SV `  VP                  R 7       Wn        R# ©rT   N)r4   r5   r0   r1   )r6   r™   r7   s   &&€r+   r5   Ú_InverseTransform.__init__Ü   s   ø€ Ü‰Ñ I×$9Ñ$9ÐÔ:Ø&/Ž	r.   F©Úis_discretec                ó`   € V P                   f   \        R4      hV P                   P                  # ©Nú_inv must not be None)r1   ÚAssertionErrorrD   rE   s   &r+   rB   Ú_InverseTransform.domainà   s*   € ð �9‰9ÒÜ Ð!8Ó9Ð9Ø�y‰y×!Ñ!Ð!r.   c                ó`   € V P                   f   \        R4      hV P                   P                  # r¢   )r1   r¤   rB   rE   s   &r+   rD   Ú_InverseTransform.codomainç   s*   € ð �9‰9ÒÜ Ð!8Ó9Ð9Ø�y‰y×ÑÐr.   c                ó    <€ V ^8„  d   QhRS[ /# r@   ©Úbool)r)   r*   s   "€r+   r,   r›   ï   s   ø€ ÷ #ñ #™4ñ #r.   c                ó`   € V P                   f   \        R4      hV P                   P                  # r¢   )r1   r¤   r�   rE   s   &r+   r�   Ú_InverseTransform.bijectiveî   s(   € à�9‰9ÒÜ Ð!8Ó9Ð9Ø�y‰y×"Ñ"Ð"r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   r›   õ   s   ø€ ÷ ñ ‘cñ r.   c                ó`   € V P                   f   \        R4      hV P                   P                  # r¢   )r1   r¤   rQ   rE   s   &r+   rQ   Ú_InverseTransform.signô   s&   € à�9‰9ÒÜ Ð!8Ó9Ð9Ø�y‰y�~‰~Ðr.   c                ó    <€ V ^8„  d   QhRS[ /# r@   rš   )r)   r*   s   "€r+   r,   r›   û   s   ø€ ÷ ñ ‘Yñ r.   c                ó   € V P                   # rZ   ©r1   rE   s   &r+   rK   Ú_InverseTransform.invú   s   € à�y‰yÐr.   c                ó~   € V P                   f   \        R4      hV P                  P                  V4      P                  # r¢   )r1   r¤   rK   rW   rV   s   &&r+   rW   Ú_InverseTransform.with_cacheþ   s3   € Ø�9‰9ÒÜ Ð!8Ó9Ð9Ø�x‰x×"Ñ" :Ó.×2Ñ2Ð2r.   c                ó–   € \        V\        4      '       g   R # V P                  f   \        R4      hV P                  VP                  8H  # )Fr£   )Ú
isinstancerJ   r1   r¤   r[   s   &&r+   r]   Ú_InverseTransform.__eq__  s<   € Ü˜%Ô!2×3Ò3ÙØ�9‰9ÒÜ Ð!8Ó9Ð9Ø�y‰y˜EŸJ™JÑ&Ð&r.   c                ó`   € V P                   P                   R \        V P                  4       R2# )Ú(Ú))r7   rz   Úreprr1   rE   s   &r+   r{   Ú_InverseTransform.__repr__
  s)   € Ø—.‘.×)Ñ)Ð*¨!¬D°·±«OÐ+<¸AÐ>Ð>r.   c                ój   € V P                   f   \        R4      hV P                   P                  V4      # r¢   )r1   r¤   rl   ro   s   &&r+   rh   Ú_InverseTransform.__call__  s-   € Ø�9‰9ÒÜ Ð!8Ó9Ð9Ø�y‰y×"Ñ" 1Ó%Ð%r.   c                ól   € V P                   f   \        R4      hV P                   P                  W!4      ) # r¢   )r1   r¤   rw   rv   s   &&&r+   rw   Ú&_InverseTransform.log_abs_det_jacobian  s0   € Ø�9‰9ÒÜ Ð!8Ó9Ð9Ø—	‘	×.Ñ.¨qÓ4Ð4Ð4r.   c                ó8   € V P                   P                  V4      # rZ   )r1   r„   r~   s   &&r+   r€   Ú_InverseTransform.forward_shape  ó   € Ø�y‰y×&Ñ& uÓ-Ð-r.   c                ó8   € V P                   P                  V4      # rZ   )r1   r€   r~   s   &&r+   r„   Ú_InverseTransform.inverse_shape  rÄ   r.   r²   rŠ   )rz   rŒ   r�   rŽ   r�   r5   r   Údependent_propertyrB   rD   r‘   r�   rQ   rK   rW   r]   r{   rh   rw   r€   r„   r“   r”   r•   r–   s   @@r+   rJ   rJ   Ö   s¶   ù‡ € ñ÷
0ó 0ð ×#Ò#°Ô6ñ"ó 7ð"ð
 ×#Ò#°Ô6ñ ó 7ð ð
 ÷#ó ð#ð
 ÷ó ðð
 ÷ó ðô3ò
'ò?ò&ò
5ò
.÷.ò .r.   rJ   c                   ó,  a a€ ] tR tRt oRtRV3R lV 3R llltR t]P                  ! RR7      R 4       t	]P                  ! RR7      R	 4       t
]V3R
 lR l4       t]V3R lR l4       t]V3R lR l4       tRR ltR tR tR tR tR tRtVtV ;t# )r   i  aF  
Composes multiple transforms in a chain.
The transforms being composed are responsible for caching.

Args:
    parts (list of :class:`Transform`): A list of transforms to compose.
    cache_size (int): Size of cache. If zero, no caching is done. If one,
        the latest single value is cached. Only 0 and 1 are supported.
c                ó:   <€ V ^8„  d   QhRS[ S[,          RS[RR/# )r$   Úpartsr%   r&   N)Úlistr!   r(   )r)   r*   s   "€r+   r,   ÚComposeTransform.__annotate__)  s&   ø€ ÷ ñ ™d¡9�oð ¹3ð Àtñ r.   c                óŒ   <€ V'       d    V Uu. uF  q3P                  V4      NK  	  pp\        SV `	  VR 7       Wn        R# u upi r�   )rW   r4   r5   rÊ   )r6   rÊ   r%   Úpartr7   s   &&& €r+   r5   ÚComposeTransform.__init__)  s<   ø€ ßÙ=BÓC¹U°T—_‘_ ZÖ0¹UˆEÐCÜ‰Ñ JÐÔ/ØŽ
ùò Ds   ŽAc                ód   € \        V\        4      '       g   R # V P                  VP                  8H  # ©F)r·   r   rÊ   r[   s   &&r+   r]   ÚComposeTransform.__eq__/  s&   € Ü˜%Ô!1×2Ò2ÙØ�z‰z˜UŸ[™[Ñ(Ð(r.   FrŸ   c                óz  € V P                   '       g   \        P                  # V P                   ^ ,          P                  pV P                   R,          P                  P
                  p\        V P                   4       FY  pW#P                  P
                  VP                  P
                  ,
          ,          p\        W#P                  P
                  4      pK[  	  W!P
                  8  d   \        RV RVP
                   24      hW!P
                  8”  d(   \        P                  ! WVP
                  ,
          4      pV# )r   ú
event_dim z must be >= domain.event_dim éÿÿÿÿ)
rÊ   r   ÚrealrB   rD   rC   ÚreversedÚmaxr¤   Úindependent)r6   rB   rC   rÎ   s   &   r+   rB   ÚComposeTransform.domain4  sî   € ð �z�zˆzÜ×#Ñ#Ð#Ø—‘˜A•×%Ñ%ˆà—J‘J˜r•N×+Ñ+×5Ñ5ˆ	Ü˜TŸZ™ZÖ(ˆDØŸ™×.Ñ.°·±×1HÑ1HÕHÕHˆIÜ˜I§{¡{×'<Ñ'<Ó=ŠIñ )ð ×'Ñ'Ô'Ü Ø˜Y˜KÐ'DÀV×EUÑEUÐDVÐWóð ð ×'Ñ'Ô'Ü ×,Ò,¨VÀ×AQÑAQÕ5QÓRˆFØˆr.   c                óh  € V P                   '       g   \        P                  # V P                   R,          P                  pV P                   ^ ,          P                  P
                  pV P                    FY  pW#P                  P
                  VP                  P
                  ,
          ,          p\        W#P                  P
                  4      pK[  	  W!P
                  8  d   \        RV RVP
                   24      hW!P
                  8”  d(   \        P                  ! WVP
                  ,
          4      pV# )r‹   rÔ   z must be >= codomain.event_dim rÕ   )	rÊ   r   rÖ   rD   rB   rC   rØ   r¤   rÙ   )r6   rD   rC   rÎ   s   &   r+   rD   ÚComposeTransform.codomainG  sé   € ð �z�zˆzÜ×#Ñ#Ð#Ø—:‘:˜b•>×*Ñ*ˆà—J‘J˜q•M×(Ñ(×2Ñ2ˆ	Ø—J”JˆDØŸ™×0Ñ0°4·;±;×3HÑ3HÕHÕHˆIÜ˜I§}¡}×'>Ñ'>Ó?ŠIñ ð ×)Ñ)Ô)Ü Ø˜Y˜KÐ'FÀx×GYÑGYÐFZÐ[óð ð ×)Ñ)Ô)Ü"×.Ò.¨xÀX×EWÑEWÕ9WÓXˆHØˆr.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r©   )r)   r*   s   "€r+   r,   rÌ   [  s   ø€ ÷ 4ñ 4™4ñ 4r.   c                ó’   € \         ;QJ d&    R  V P                   4       F  '       d   K   R# 	  R# ! R  V P                   4       4      # )c              3   ó8   "  € T F  qP                   x € K  	  R # 5irZ   ©r�   )Ú.0Úps   & r+   Ú	<genexpr>Ú-ComposeTransform.bijective.<locals>.<genexpr>\  s   é € Ð3©
 1—;–;«
ùó   ‚FT)ÚallrÊ   rE   s   &r+   r�   ÚComposeTransform.bijectiveZ  s3   € ç‹sÑ3¨¯
ª
Ó3�sŒsÐ3ŠsÐ3ˆsÑ3¨¯
ª
Ó3Ó3Ð3r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   rÌ   _  s   ø€ ÷ ñ ‘cñ r.   c                óT   € ^pV P                    F  pWP                  ,          pK  	  V# rŠ   )rÊ   rQ   )r6   rQ   râ   s   &  r+   rQ   ÚComposeTransform.sign^  s%   € àˆØ—”ˆAØŸ&™&•=ŠDñ àˆr.   c                ó    <€ V ^8„  d   QhRS[ /# r@   rš   )r)   r*   s   "€r+   r,   rÌ   f  s   ø€ ÷ ñ ‘Yñ r.   c                ó¶   € V P                   pVfD   \        \        V P                  4       Uu. uF  q"P                  NK  	  up4      pWn         Wn         V# u upi rZ   )r1   r   r×   rÊ   rK   )r6   rK   râ   s   &  r+   rK   ÚComposeTransform.inve  sK   € à�i‰iˆØŠ;Ü"´8¸D¿J¹JÔ3GÓ#HÑ3G¨a§E¤EÑ3GÑ#HÓIˆCØŒIØŒHØˆ
ùò $Is   ­Ac                óV   € V P                   V8X  d   V # \        V P                  VR 7      # ©rT   )r0   r   rÊ   rV   s   &&r+   rW   ÚComposeTransform.with_cachen  s&   € Ø×Ñ˜zÔ)ØˆKÜ §
¡
°zÔBÐBr.   c                ó<   € V P                    F  pV! V4      pK  	  V# rZ   )rÊ   )r6   rd   rÎ   s   && r+   rh   ÚComposeTransform.__call__s  s   € Ø—J”JˆDÙ�Q“ŠAñ àˆr.   c           	     ó¨  € V P                   '       g   \        P                  ! V4      # V.pV P                   R R  F!  pVP                  V! VR,          4      4       K#  	  VP                  V4       . pV P                  P
                  p\        V P                   VR R VR,          4       F�  w  rApVP                  \        VP                  W4      WdP                  P
                  ,
          4      4       WdP                  P
                  VP                  P
                  ,
          ,          pKƒ  	  \        P                  ! \        P                  V4      # )N:r‹   NNrÕ   )rÊ   ÚtorchÚ
zeros_likeÚappendrB   rC   Úzipr   rw   rD   Ú	functoolsÚreduceÚoperatorÚadd)r6   rd   rg   ÚxsrÎ   ÚtermsrC   s   &&&    r+   rw   Ú%ComposeTransform.log_abs_det_jacobianx  sþ   € Ø�z�zˆzÜ×#Ò# AÓ&Ð&ð ˆSˆØ—J‘J˜s “OˆDØ�I‰I‘d˜2˜b�6“lÖ#ñ $à
�	‰	�!ŒàˆØ—K‘K×)Ñ)ˆ	Ü˜dŸj™j¨"¨S¨b¨'°2°bµ6Ö:‰JˆD�QØ�L‰LÜØ×-Ñ-¨aÓ3°YÇÁ×AVÑAVÕ5Vóôð
 Ÿ™×0Ñ0°4·;±;×3HÑ3HÕHÕHŠIñ ;ô ×Ò¤§¡¨eÓ4Ð4r.   c                óN   € V P                    F  pVP                  V4      pK  	  V# rZ   )rÊ   r€   ©r6   r   rÎ   s   && r+   r€   ÚComposeTransform.forward_shape�  s%   € Ø—J”JˆDØ×&Ñ& uÓ-ŠEñ àˆr.   c                ó`   € \        V P                  4       F  pVP                  V4      pK  	  V# rZ   )r×   rÊ   r„   r   s   && r+   r„   ÚComposeTransform.inverse_shape’  s*   € Ü˜TŸZ™ZÖ(ˆDØ×&Ñ& uÓ-ŠEñ )àˆr.   c                óÚ   € V P                   P                  R ,           pTRP                  V P                   Uu. uF  q"P	                  4       NK  	  up4      ,          pVR,          pV# u upi )z(
    z,
    z
))r7   rz   ÚjoinrÊ   r{   )r6   Ú
fmt_stringrâ   s   &  r+   r{   ÚComposeTransform.__repr__—  sV   € Ø—^‘^×,Ñ,¨yÕ8ˆ
Ø�i—n‘n¸D¿JºJÓ%G¹J°q§j¡j¦l¹JÑ%GÓHÕHˆ
Ø�eÕˆ
ØÐùò &Hs   ¸A(
)r1   rÊ   r‰   rŠ   )rz   rŒ   r�   rŽ   r�   r5   r]   r   rÇ   rB   rD   r	   r�   rQ   r‘   rK   rW   rh   rw   r€   r„   r{   r“   r”   r•   r–   s   @@r+   r   r     s·   ù‡ € ñ÷õ ò)ð
 ×#Ò#°Ô6ñó 7ðð" ×#Ò#°Ô6ñó 7ðð" ÷4ó ð4ð ÷ó ðð ÷ó ðôCò
ò
5ò*ò
÷
ò r.   c                   ó  a a€ ] tR tRt oRtRV3R lV 3R llltRR lt]P                  ! RR7      R 4       t	]P                  ! RR7      R	 4       t
]V3R
 lR l4       t]V3R lR l4       tR tR tR tR tR tR tRtVtV ;t# )r   i¡  aÙ  
Wrapper around another transform to treat
``reinterpreted_batch_ndims``-many extra of the right most dimensions as
dependent. This has no effect on the forward or backward transforms, but
does sum out ``reinterpreted_batch_ndims``-many of the rightmost dimensions
in :meth:`log_abs_det_jacobian`.

Args:
    base_transform (:class:`Transform`): A base transform.
    reinterpreted_batch_ndims (int): The number of extra rightmost
        dimensions to treat as dependent.
c                ó0   <€ V ^8„  d   QhRS[ RS[RS[RR/# )r$   Úbase_transformÚreinterpreted_batch_ndimsr%   r&   N)r!   r(   )r)   r*   s   "€r+   r,   Ú!IndependentTransform.__annotate__¯  s9   ø€ ÷ Cñ Cá!ðCñ $'ðCñ ð	Cð
 
ñCr.   c                ó`   <€ \         SV `  VR 7       VP                  V4      V n        W n        R# r�   )r4   r5   rW   r
  r  )r6   r
  r  r%   r7   s   &&&&€r+   r5   ÚIndependentTransform.__init__¯  s.   ø€ ô 	‰Ñ JÐÔ/Ø,×7Ñ7¸
ÓCˆÔØ)BÖ&r.   c                ól   € V P                   V8X  d   V # \        V P                  V P                  VR 7      # rï   )r0   r   r
  r  rV   s   &&r+   rW   ÚIndependentTransform.with_cache¹  s5   € Ø×Ñ˜zÔ)ØˆKÜ#Ø×Ñ ×!?Ñ!?ÈJô
ð 	
r.   FrŸ   c                ól   € \         P                  ! V P                  P                  V P                  4      # rZ   )r   rÙ   r
  rB   r  rE   s   &r+   rB   ÚIndependentTransform.domainÀ  s.   € ô ×&Ò&Ø×Ñ×&Ñ&¨×(FÑ(Fó
ð 	
r.   c                ól   € \         P                  ! V P                  P                  V P                  4      # rZ   )r   rÙ   r
  rD   r  rE   s   &r+   rD   ÚIndependentTransform.codomainÇ  s.   € ô ×&Ò&Ø×Ñ×(Ñ(¨$×*HÑ*Hó
ð 	
r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r©   )r)   r*   s   "€r+   r,   r  Ï  s   ø€ ÷ -ñ -™4ñ -r.   c                ó.   € V P                   P                  # rZ   )r
  r�   rE   s   &r+   r�   ÚIndependentTransform.bijectiveÎ  s   € à×"Ñ"×,Ñ,Ð,r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   r  Ó  s   ø€ ÷ (ñ (‘cñ (r.   c                ó.   € V P                   P                  # rZ   )r
  rQ   rE   s   &r+   rQ   ÚIndependentTransform.signÒ  s   € à×"Ñ"×'Ñ'Ð'r.   c                óŒ   € VP                  4       V P                  P                  8  d   \        R 4      hV P	                  V4      # ©úToo few dimensions on input)ÚdimrB   rC   r3   r
  ro   s   &&r+   rc   ÚIndependentTransform._callÖ  s7   € Ø�5‰5‹7�T—[‘[×*Ñ*Ô*ÜÐ:Ó;Ð;Ø×"Ñ" 1Ó%Ð%r.   c                ó    € VP                  4       V P                  P                  8  d   \        R 4      hV P                  P                  V4      # r  )r  rD   rC   r3   r
  rK   rs   s   &&r+   rk   ÚIndependentTransform._inverseÛ  s=   € Ø�5‰5‹7�T—]‘]×,Ñ,Ô,ÜÐ:Ó;Ð;Ø×"Ñ"×&Ñ& qÓ)Ð)r.   c                óf   € V P                   P                  W4      p\        W0P                  4      pV# rZ   )r
  rw   r   r  )r6   rd   rg   Úresults   &&& r+   rw   Ú)IndependentTransform.log_abs_det_jacobianà  s-   € Ø×$Ñ$×9Ñ9¸!Ó?ˆÜ ×(FÑ(FÓGˆØˆr.   c                óz   € V P                   P                   R \        V P                  4       RV P                   R2# )rº   z, r»   )r7   rz   r¼   r
  r  rE   s   &r+   r{   ÚIndependentTransform.__repr__å  s:   € Ø—.‘.×)Ñ)Ð*¨!¬D°×1DÑ1DÓ,EÐ+FÀbÈ×IgÑIgÐHhÐhiÐjÐjr.   c                ó8   € V P                   P                  V4      # rZ   )r
  r€   r~   s   &&r+   r€   Ú"IndependentTransform.forward_shapeè  ó   € Ø×"Ñ"×0Ñ0°Ó7Ð7r.   c                ó8   € V P                   P                  V4      # rZ   )r
  r„   r~   s   &&r+   r„   Ú"IndependentTransform.inverse_shapeë  r)  r.   )r
  r  r‰   rŠ   )rz   rŒ   r�   rŽ   r�   r5   rW   r   rÇ   rB   rD   r‘   r�   rQ   rc   rk   rw   r{   r€   r„   r“   r”   r•   r–   s   @@r+   r   r   ¡  s¥   ù‡ € ñ÷Cõ Cô
ð ×#Ò#°Ô6ñ
ó 7ð
ð
 ×#Ò#°Ô6ñ
ó 7ð
ð
 ÷-ó ð-ð ÷(ó ð(ò&ò
*ò
ò
kò8÷8ò 8r.   c                   óº   a a€ ] tR tRt oRtRtRV3R lV 3R lllt]P                  R 4       t	]P                  R 4       t
RR ltR	 tR
 tR tR tR tRtVtV ;t# )r   iï  aÏ  
Unit Jacobian transform to reshape the rightmost part of a tensor.

Note that ``in_shape`` and ``out_shape`` must have the same number of
elements, just as for :meth:`torch.Tensor.reshape`.

Arguments:
    in_shape (torch.Size): The input event shape.
    out_shape (torch.Size): The output event shape.
    cache_size (int): Size of cache. If zero, no caching is done. If one,
        the latest single value is cached. Only 0 and 1 are supported. (Default 0.)
Tc                óX   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[RR/# )r$   Úin_shapeÚ	out_shaper%   r&   N)rô   ÚSizer(   )r)   r*   s   "€r+   r,   ÚReshapeTransform.__annotate__ÿ  s;   ø€ ÷ 
0ñ 
0á—*‘*ð
0ñ —:‘:ð
0ñ ð	
0ð
 
ñ
0r.   c                ó  <€ \         P                  ! V4      V n        \         P                  ! V4      V n        V P                  P	                  4       V P                  P	                  4       8w  d   \        R 4      h\        SV `  VR7       R# )z6in_shape, out_shape have different numbers of elementsrT   N)rô   r0  r.  r/  Únumelr3   r4   r5   )r6   r.  r/  r%   r7   s   &&&&€r+   r5   ÚReshapeTransform.__init__ÿ  sc   ø€ ô Ÿ
š
 8Ó,ˆŒÜŸš IÓ.ˆŒØ�=‰=×ÑÓ  D§N¡N×$8Ñ$8Ó$:Ô:ÜÐUÓVÐVÜ‰Ñ JÐÖ/r.   c                ór   € \         P                  ! \         P                  \        V P                  4      4      # rZ   )r   rÙ   rÖ   Úlenr.  rE   s   &r+   rB   ÚReshapeTransform.domain  s&   € ô ×&Ò&¤{×'7Ñ'7¼¸T¿]¹]Ó9KÓLÐLr.   c                ór   € \         P                  ! \         P                  \        V P                  4      4      # rZ   )r   rÙ   rÖ   r6  r/  rE   s   &r+   rD   ÚReshapeTransform.codomain  s&   € ô ×&Ò&¤{×'7Ñ'7¼¸T¿^¹^Ó9LÓMÐMr.   c                ól   € V P                   V8X  d   V # \        V P                  V P                  VR 7      # rï   )r0   r   r.  r/  rV   s   &&r+   rW   ÚReshapeTransform.with_cache  s,   € Ø×Ñ˜zÔ)ØˆKÜ §¡¨t¯~©~È*ÔUÐUr.   c                ó²   € VP                   R VP                  4       \        V P                  4      ,
           pVP	                  W P
                  ,           4      # rZ   )r   r  r6  r.  Úreshaper/  )r6   rd   Úbatch_shapes   && r+   rc   ÚReshapeTransform._call  s=   € Ø—g‘gÐ< §¡£¬#¨d¯m©mÓ*<Õ <Ð=ˆØ�y‰y˜§~¡~Õ5Ó6Ð6r.   c                ó²   € VP                   R VP                  4       \        V P                  4      ,
           pVP	                  W P
                  ,           4      # rZ   )r   r  r6  r/  r=  r.  )r6   rg   r>  s   && r+   rk   ÚReshapeTransform._inverse  s=   € Ø—g‘gÐ= §¡£¬#¨d¯n©nÓ*=Õ =Ð>ˆØ�y‰y˜§}¡}Õ4Ó5Ð5r.   c                ó’   € VP                   R VP                  4       \        V P                  4      ,
           pVP	                  V4      # rZ   )r   r  r6  r.  Ú	new_zeros)r6   rd   rg   r>  s   &&& r+   rw   Ú%ReshapeTransform.log_abs_det_jacobian"  s6   € Ø—g‘gÐ< §¡£¬#¨d¯m©mÓ*<Õ <Ð=ˆØ�{‰{˜;Ó'Ð'r.   c                ó4  € \        V4      \        V P                  4      8  d   \        R 4      h\        V4      \        V P                  4      ,
          pWR V P                  8w  d   \        RWR  RV P                   24      hVRV V P                  ,           # ©r  NzShape mismatch: expected z	 but got )r6  r.  r3   r/  ©r6   r   Úcuts   && r+   r€   ÚReshapeTransform.forward_shape&  s†   € Üˆu‹:œ˜DŸM™MÓ*Ô*ÜÐ:Ó;Ð;Ü�%‹jœ3˜tŸ}™}Ó-Õ-ˆØ�ˆ;˜$Ÿ-™-Ô'ÜØ+¨E°$¨K¨=¸	À$Ç-Á-ÀÐQóð ð �T�cˆ{˜TŸ^™^Õ+Ð+r.   c                ó4  € \        V4      \        V P                  4      8  d   \        R 4      h\        V4      \        V P                  4      ,
          pWR V P                  8w  d   \        RWR  RV P                   24      hVRV V P                  ,           # rF  )r6  r/  r3   r.  rG  s   && r+   r„   ÚReshapeTransform.inverse_shape0  s‡   € Üˆu‹:œ˜DŸN™NÓ+Ô+ÜÐ:Ó;Ð;Ü�%‹jœ3˜tŸ~™~Ó.Õ.ˆØ�ˆ;˜$Ÿ.™.Ô(ÜØ+¨E°$¨K¨=¸	À$Ç.Á.ÐAQÐRóð ð �T�cˆ{˜TŸ]™]Õ*Ð*r.   )r.  r/  r‰   rŠ   )rz   rŒ   r�   rŽ   r�   r�   r5   r   rÇ   rB   rD   rW   rc   rk   rw   r€   r„   r“   r”   r•   r–   s   @@r+   r   r   ï  sw   ù‡ € ñð €I÷
0õ 
0ð ×#Ñ#ñMó $ðMð ×#Ñ#ñNó $ðNôVò
7ò6ò(ò,÷+ò +r.   c                   ót   a € ] tR tRt o Rt]P                  t]P                  t	Rt
^tR tR tR tR tRtV tR	# )
r   i;  z0
Transform via the mapping :math:`y = \exp(x)`.
Tc                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   ÚExpTransform.__eq__E  ó   € Ü˜%¤Ó.Ð.r.   c                ó"   € VP                  4       # rZ   )Úexpro   s   &&r+   rc   ÚExpTransform._callH  ó   € Ø�u‰u‹wˆr.   c                ó"   € VP                  4       # rZ   ©Úlogrs   s   &&r+   rk   ÚExpTransform._inverseK  rS  r.   c                ó   € V# rZ   rH   rv   s   &&&r+   rw   Ú!ExpTransform.log_abs_det_jacobianN  ó   € Øˆr.   rH   N©rz   rŒ   r�   rŽ   r�   r   rÖ   rB   ÚpositiverD   r�   rQ   r]   rc   rk   rw   r“   r”   ©r*   s   @r+   r   r   ;  sE   ø‡ € ñð ×Ñ€FØ×#Ñ#€HØ€IØ€Dò/òò÷ð r.   c                   óÄ   a a€ ] tR tRt oRt]P                  t]P                  tRt	RV3R lV 3R lllt
RR lt]V3R lR l4       tR	 tR
 tR tR tR tR tRtVtV ;t# )r   iR  z<
Transform via the mapping :math:`y = x^{\text{exponent}}`.
Tc                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r$   Úexponentr%   r&   N©r   r(   )r)   r*   s   "€r+   r,   ÚPowerTransform.__annotate__[  s"   ø€ ÷ 3ñ 3¡ð 3±Sð 3Àñ 3r.   c                óL   <€ \         SV `  VR 7       \        V4      w  V n        R# r�   )r4   r5   r   r`  )r6   r`  r%   r7   s   &&&€r+   r5   ÚPowerTransform.__init__[  s"   ø€ Ü‰Ñ JÐÔ/Ü(¨Ó2ÑˆŽr.   c                óV   € V P                   V8X  d   V # \        V P                  VR 7      # rï   )r0   r   r`  rV   s   &&r+   rW   ÚPowerTransform.with_cache_  s&   € Ø×Ñ˜zÔ)ØˆKÜ˜dŸm™m¸
ÔCÐCr.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   rb  e  s   ø€ ÷ $ñ $‘cñ $r.   c                ó6   € V P                   P                  4       # rZ   )r`  rQ   rE   s   &r+   rQ   ÚPowerTransform.signd  s   € à�}‰}×!Ñ!Ó#Ð#r.   c                ó´   € \        V\        4      '       g   R # V P                  P                  VP                  4      P	                  4       P                  4       # rÑ   )r·   r   r`  Úeqræ   Úitemr[   s   &&r+   r]   ÚPowerTransform.__eq__h  s=   € Ü˜%¤×0Ò0ÙØ�}‰}×Ñ §¡Ó/×3Ñ3Ó5×:Ñ:Ó<Ð<r.   c                ó8   € VP                  V P                  4      # rZ   ©Úpowr`  ro   s   &&r+   rc   ÚPowerTransform._callm  s   € Ø�u‰u�T—]‘]Ó#Ð#r.   c                óF   € VP                  ^V P                  ,          4      # rŠ   ro  rs   s   &&r+   rk   ÚPowerTransform._inversep  s   € Ø�u‰u�Q˜Ÿ™Õ&Ó'Ð'r.   c                ón   € V P                   V,          V,          P                  4       P                  4       # rZ   )r`  ÚabsrV  rv   s   &&&r+   rw   Ú#PowerTransform.log_abs_det_jacobians  s(   € Ø—‘ Õ! AÕ%×*Ñ*Ó,×0Ñ0Ó2Ð2r.   c                óZ   € \         P                  ! V\        V P                  R R4      4      # ©r   rH   ©rô   Úbroadcast_shapesÚgetattrr`  r~   s   &&r+   r€   ÚPowerTransform.forward_shapev  ó"   € Ü×%Ò% e¬W°T·]±]ÀGÈRÓ-PÓQÐQr.   c                óZ   € \         P                  ! V\        V P                  R R4      4      # rx  ry  r~   s   &&r+   r„   ÚPowerTransform.inverse_shapey  r}  r.   )r`  r‰   rŠ   )rz   rŒ   r�   rŽ   r�   r   r\  rB   rD   r�   r5   rW   r	   rQ   r]   rc   rk   rw   r€   r„   r“   r”   r•   r–   s   @@r+   r   r   R  sq   ù‡ € ñð ×!Ñ!€FØ×#Ñ#€HØ€I÷3õ 3ôDð
 ÷$ó ð$ò=ò
$ò(ò3òR÷Rò Rr.   c                 óÒ   € \         P                  ! V P                  4      p\         P                  ! \         P                  ! V 4      VP
                  R VP                  ,
          R7      # ©ç      ð?©ÚminrØ   )rô   ÚfinfoÚdtypeÚclampÚsigmoidÚtinyÚeps)rd   r…  s   & r+   Ú_clipped_sigmoidr‹  }  s<   € Ü�KŠK˜Ÿ™Ó €EÜ�;Š;”u—}’} QÓ'¨U¯Z©Z¸SÀ5Ç9Á9½_ÔMÐMr.   c                   ót   a € ] tR tRt o Rt]P                  t]P                  t	Rt
^tR tR tR tR tRtV tR	# )
r   i‚  z_
Transform via the mapping :math:`y = \frac{1}{1 + \exp(-x)}` and :math:`x = \text{logit}(y)`.
Tc                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   ÚSigmoidTransform.__eq__Œ  ó   € Ü˜%Ô!1Ó2Ð2r.   c                ó   € \        V4      # rZ   )r‹  ro   s   &&r+   rc   ÚSigmoidTransform._call�  s   € Ü Ó"Ð"r.   c                óê   € \         P                  ! VP                  4      pVP                  VP                  R VP
                  ,
          R7      pVP                  4       V) P                  4       ,
          # r�  )rô   r…  r†  r‡  r‰  rŠ  rV  Úlog1p)r6   rg   r…  s   && r+   rk   ÚSigmoidTransform._inverse’  sK   € Ü—’˜AŸG™GÓ$ˆØ�G‰G˜Ÿ
™
¨¨e¯i©i­ˆGÓ8ˆØ�u‰u‹w˜1˜"Ÿ™›Õ%Ð%r.   c                óh   € \         P                  ! V) 4      ) \         P                  ! V4      ,
          # rZ   )ÚFr   rv   s   &&&r+   rw   Ú%SigmoidTransform.log_abs_det_jacobian—  s!   € Ü—
’
˜A˜2“ˆ¤§¢¨A£Õ.Ð.r.   rH   N)rz   rŒ   r�   rŽ   r�   r   rÖ   rB   Úunit_intervalrD   r�   rQ   r]   rc   rk   rw   r“   r”   r]  s   @r+   r   r   ‚  sE   ø‡ € ñð ×Ñ€FØ×(Ñ(€HØ€IØ€Dò3ò#ò&÷
/ð /r.   c                   ót   a € ] tR tRt o Rt]P                  t]P                  t	Rt
^tR tR tR tR tRtV tR	# )
r   i›  z’
Transform via the mapping :math:`\text{Softplus}(x) = \log(1 + \exp(x))`.
The implementation reverts to the linear function when :math:`x > 20`.
Tc                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   ÚSoftplusTransform.__eq__¦  s   € Ü˜%Ô!2Ó3Ð3r.   c                ó   € \        V4      # rZ   ©r   ro   s   &&r+   rc   ÚSoftplusTransform._call©  s   € Ü˜‹{Ðr.   c                ój   € V) P                  4       P                  4       P                  4       V,           # rZ   )Úexpm1ÚnegrV  rs   s   &&r+   rk   ÚSoftplusTransform._inverse¬  s'   € Ø��z‰z‹|×ÑÓ!×%Ñ%Ó'¨!Õ+Ð+r.   c                ó   € \        V) 4      ) # rZ   r�  rv   s   &&&r+   rw   Ú&SoftplusTransform.log_abs_det_jacobian¯  s   € Ü˜!˜“ˆ}Ðr.   rH   Nr[  r]  s   @r+   r   r   ›  sE   ø‡ € ñð
 ×Ñ€FØ×#Ñ#€HØ€IØ€Dò4òò,÷ð r.   c                   ó‚   a € ] tR tRt o Rt]P                  t]P                  ! RR4      t	Rt
^tR tR tR tR tR	tV tR
# )r   i³  a±  
Transform via the mapping :math:`y = \tanh(x)`.

It is equivalent to

.. code-block:: python

    ComposeTransform(
        [
            AffineTransform(0.0, 2.0),
            SigmoidTransform(),
            AffineTransform(-1.0, 2.0),
        ]
    )

However this might not be numerically stable, thus it is recommended to use `TanhTransform`
instead.

Note that one should use `cache_size=1` when it comes to `NaN/Inf` values.

r‚  Tc                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   ÚTanhTransform.__eq__Ï  s   € Ü˜%¤Ó/Ð/r.   c                ó"   € VP                  4       # rZ   )Útanhro   s   &&r+   rc   ÚTanhTransform._callÒ  s   € Ø�v‰v‹xˆr.   c                ó.   € \         P                  ! V4      # rZ   )rô   Úatanhrs   s   &&r+   rk   ÚTanhTransform._inverseÕ  s   € ô �{Š{˜1‹~Ðr.   c                óx   € R \         P                  ! R 4      V,
          \        RV,          4      ,
          ,          # )ç       @g       À)ÚmathrV  r   rv   s   &&&r+   rw   Ú"TanhTransform.log_abs_det_jacobianÚ  s*   € ð ”d—h’h˜s“m aÕ'¬(°4¸!µ8Ó*<Õ<Õ=Ð=r.   rH   Ng      ð¿)rz   rŒ   r�   rŽ   r�   r   rÖ   rB   ÚintervalrD   r�   rQ   r]   rc   rk   rw   r“   r”   r]  s   @r+   r   r   ³  sL   ø‡ € ñð, ×Ñ€FØ×#Ò# D¨#Ó.€HØ€IØ€Dò0òò÷
>ð >r.   c                   óf   a € ] tR tRt o Rt]P                  t]P                  t	R t
R tR tRtV tR# )r   ià  z*Transform via the mapping :math:`y = |x|`.c                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   ÚAbsTransform.__eq__æ  rO  r.   c                ó"   € VP                  4       # rZ   )ru  ro   s   &&r+   rc   ÚAbsTransform._callé  rS  r.   c                ó   € V# rZ   rH   rs   s   &&r+   rk   ÚAbsTransform._inverseì  rZ  r.   rH   N)rz   rŒ   r�   rŽ   r�   r   rÖ   rB   r\  rD   r]   rc   rk   r“   r”   r]  s   @r+   r   r   à  s2   ø‡ € Ù5à×Ñ€FØ×#Ñ#€Hò/ò÷ð r.   c                   ó  a a€ ] tR tRt oRtRtRV3R lV 3R lllt]V3R lR l4       t]	P                  ! RR	7      R
 4       t]	P                  ! RR	7      R 4       tRR ltR t]V3R lR l4       tR tR tR tR tR tRtVtV ;t# )r   ið  a„  
Transform via the pointwise affine mapping :math:`y = \text{loc} + \text{scale} \times x`.

Args:
    loc (Tensor or float): Location parameter.
    scale (Tensor or float): Scale parameter.
    event_dim (int): Optional size of `event_shape`. This should be zero
        for univariate random variables, 1 for distributions over vectors,
        2 for distributions over matrices, etc.
Tc          
      óV   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          RS[RS[RR/# )r$   ÚlocÚscalerC   r%   r&   N)r   Úfloatr(   )r)   r*   s   "€r+   r,   ÚAffineTransform.__annotate__þ  sE   ø€ ÷ 
$ñ 
$á‘e�^ð
$ñ ™�~ð
$ñ ð	
$ñ
 ð
$ð 
ñ
$r.   c                óL   <€ \         SV `  VR 7       Wn        W n        W0n        R# r�   )r4   r5   r¼  r½  Ú
_event_dim)r6   r¼  r½  rC   r%   r7   s   &&&&&€r+   r5   ÚAffineTransform.__init__þ  s$   ø€ ô 	‰Ñ JÐÔ/ØŒØŒ
Ø#Žr.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   r¿    s   ø€ ÷ ñ ™3ñ r.   c                ó   € V P                   # rZ   )rÁ  rE   s   &r+   rC   ÚAffineTransform.event_dim
  s   € à�‰Ðr.   FrŸ   c                ó¢   € V P                   ^ 8X  d   \        P                  # \        P                  ! \        P                  V P                   4      # r‰   ©rC   r   rÖ   rÙ   rE   s   &r+   rB   ÚAffineTransform.domain  ó9   € ð �>‰>˜QÔÜ×#Ñ#Ð#Ü×&Ò&¤{×'7Ñ'7¸¿¹ÓHÐHr.   c                ó¢   € V P                   ^ 8X  d   \        P                  # \        P                  ! \        P                  V P                   4      # r‰   rÇ  rE   s   &r+   rD   ÚAffineTransform.codomain  rÉ  r.   c                ó‚   € V P                   V8X  d   V # \        V P                  V P                  V P                  VR 7      # rï   )r0   r   r¼  r½  rC   rV   s   &&r+   rW   ÚAffineTransform.with_cache  s7   € Ø×Ñ˜zÔ)ØˆKÜØ�H‰H�d—j‘j $§.¡.¸Zô
ð 	
r.   c                ó¦  € \        V\        4      '       g   R # \        V P                  \        4      '       d?   \        VP                  \        4      '       d   V P                  VP                  8w  d   R # M=V P                  VP                  8H  P	                  4       P                  4       '       g   R # \        V P                  \        4      '       dA   \        VP                  \        4      '       d!   V P                  VP                  8w  d   R #  R# V P                  VP                  8H  P	                  4       P                  4       '       g   R # R# )FT)r·   r   r¼  r   ræ   rl  r½  r[   s   &&r+   r]   ÚAffineTransform.__eq__#  sà   € Ü˜%¤×1Ò1Ùä�d—h‘h¤×(Ò(¬Z¸¿	¹	Ä7×-KÒ-KØ�x‰x˜5Ÿ9™9Ô$Ùð %ð —H‘H §	¡	Ñ)×.Ñ.Ó0×5Ñ5×7Ò7Ùä�d—j‘j¤'×*Ò*¬z¸%¿+¹+Äw×/OÒ/OØ�z‰z˜UŸ[™[Ô(Ùð )ñ ð —J‘J %§+¡+Ñ-×2Ñ2Ó4×9Ñ9×;Ò;Ùár.   c                ó0   <€ V ^8„  d   QhRS[ S[,          /# r@   ra  )r)   r*   s   "€r+   r,   r¿  8  s   ø€ ÷ !ñ !‘f™s•lñ !r.   c                óê   € \        V P                  \        4      '       d;   \        V P                  4      ^ 8”  d   ^# \        V P                  4      ^ 8  d   R# ^ # V P                  P	                  4       # )r   rÕ   )r·   r½  r   r¾  rQ   rE   s   &r+   rQ   ÚAffineTransform.sign7  sU   € ä�d—j‘j¤'×*Ò*Ü˜dŸj™jÓ)¨AÔ-�1ÐU¼¸t¿z¹zÓ9JÈQÔ9N°2ÐUÐTUÐUØ�z‰z�‰Ó Ð r.   c                óJ   € V P                   V P                  V,          ,           # rZ   ©r¼  r½  ro   s   &&r+   rc   ÚAffineTransform._call=  s   € Ø�x‰x˜$Ÿ*™* q�.Õ(Ð(r.   c                óH   € WP                   ,
          V P                  ,          # rZ   rÔ  rs   s   &&r+   rk   ÚAffineTransform._inverse@  s   € Ø—H‘H• §
¡
Õ*Ð*r.   c                ó   € VP                   pV P                  p\        V\        4      '       d6   \        P
                  ! V\        P                  ! \        V4      4      4      pM$\        P                  ! V4      P                  4       pV P                  '       dV   VP                  4       R V P                  )  R,           pVP                  V4      P                  R4      pVR V P                  )  pVP                  V4      # )NrÕ   )rÕ   )r   r½  r·   r   rô   Ú	full_liker°  rV  ru  rC   ÚsizeÚviewÚsumÚexpand)r6   rd   rg   r   r½  r#  Úresult_sizes   &&&    r+   rw   Ú$AffineTransform.log_abs_det_jacobianC  s·   € Ø—‘ˆØ—
‘
ˆÜ�eœW×%Ò%Ü—_’_ Q¬¯ª´°U³Ó(<Ó=‰Fä—Y’Y˜uÓ%×)Ñ)Ó+ˆFØ�>�>ˆ>Ø Ÿ+™+›-Ð(9¨4¯>©>¨/Ð:¸UÕBˆKØ—[‘[ Ó-×1Ñ1°"Ó5ˆFØÐ+˜TŸ^™^˜OÐ,ˆEØ�}‰}˜UÓ#Ð#r.   c           	     ó†   € \         P                  ! V\        V P                  R R4      \        V P                  R R4      4      # rx  ©rô   rz  r{  r¼  r½  r~   s   &&r+   r€   ÚAffineTransform.forward_shapeP  ó7   € Ü×%Ò%Ø”7˜4Ÿ8™8 W¨bÓ1´7¸4¿:¹:ÀwÐPRÓ3Só
ð 	
r.   c           	     ó†   € \         P                  ! V\        V P                  R R4      \        V P                  R R4      4      # rx  rá  r~   s   &&r+   r„   ÚAffineTransform.inverse_shapeU  rã  r.   )rÁ  r¼  r½  ©r   r   rŠ   )rz   rŒ   r�   rŽ   r�   r�   r5   r‘   rC   r   rÇ   rB   rD   rW   r]   rQ   rc   rk   rw   r€   r„   r“   r”   r•   r–   s   @@r+   r   r   ð  s­   ù‡ € ñ	ð €I÷
$õ 
$ð ÷ó ðð ×#Ò#°Ô6ñIó 7ðIð
 ×#Ò#°Ô6ñIó 7ðIô

òð( ÷!ó ð!ò
)ò+ò$ò
÷

ò 
r.   c                   óz   a € ] tR tRt o Rt]P                  t]P                  t	Rt
R tR tRR ltR tR	 tR
tV tR# )r   i[  a|  
Transforms an unconstrained real vector :math:`x` with length :math:`D*(D-1)/2` into the
Cholesky factor of a D-dimension correlation matrix. This Cholesky factor is a lower
triangular matrix with positive diagonals and unit Euclidean norm for each row.
The transform is processed as follows:

    1. First we convert x into a lower triangular matrix in row order.
    2. For each row :math:`X_i` of the lower triangular part, we apply a *signed* version of
       class :class:`StickBreakingTransform` to transform :math:`X_i` into a
       unit Euclidean length vector using the following steps:
       - Scales into the interval :math:`(-1, 1)` domain: :math:`r_i = \tanh(X_i)`.
       - Transforms into an unsigned domain: :math:`z_i = r_i^2`.
       - Applies :math:`s_i = StickBreakingTransform(z_i)`.
       - Transforms back into signed domain: :math:`y_i = sign(r_i) * \sqrt{s_i}`.
Tc                ó  € \         P                  ! V4      p\         P                  ! VP                  4      P                  pVP                  RV,           ^V,
          R7      p\        VRR7      pV^,          p^V,
          P                  4       P                  R4      pV\         P                  ! VP                  R,          VP                  VP                  R7      ,           pV\        VRRR13,          ^^ .^R7      ,          pV# )r‹   rƒ  ©Údiag)r†  Údevice.N©ÚvaluerÕ   )rô   r©  r…  r†  rŠ  r‡  r   ÚsqrtÚcumprodÚeyer   rë  r   )r6   rd   rŠ  ÚrÚzÚz1m_cumprod_sqrtrg   s   &&     r+   rc   ÚCorrCholeskyTransform._callp  sÄ   € Ü�JŠJ�q‹MˆÜ�kŠk˜!Ÿ'™'Ó"×&Ñ&ˆØ�G‰G˜˜S� a¨#¥gˆGÓ.ˆÜ˜q rÔ*ˆð ˆq�DˆØ �EŸ<™<›>×1Ñ1°"Ó5Ðà”—	’	˜!Ÿ'™' "�+¨Q¯W©W¸Q¿X¹XÔFÕFˆØ”Ð$ S¨#¨2¨# XÕ.°°A°¸aÔ@Õ@ˆØˆr.   c                óZ  € ^\         P                  ! W,          RR7      ,
          p\        VRRR13,          ^^ .^R7      p\        VRR7      p\        VRR7      pWEP	                  4       ,          pVP                  4       VP                  4       P                  4       ,
          ^,          pV# )r‹   ©r  .Nrì  ré  rÕ   )rô   Úcumsumr   r
   rî  r“  r¡  )r6   rg   Úy_cumsumÚy_cumsum_shiftedÚy_vecÚy_cumsum_vecÚtrd   s   &&      r+   rk   ÚCorrCholeskyTransform._inverse  s‹   € ð ”u—|’| A¥E¨rÔ2Õ2ˆÜ˜x¨¨S¨b¨S¨Õ1°A°q°6ÀÔCÐÜ" 1¨2Ô.ˆÜ)Ð*:ÀÔDˆØ×'Ñ'Ó)Õ)ˆà�W‰W‹Y˜Ÿ™›Ÿ™›Õ(¨AÕ-ˆØˆr.   Nc                óL  € ^W",          P                  RR7      ,
          p\        VRR7      pRVP                  4       P                  R4      ,          pRV\	        RV,          4      ,           \
        P                  ! R4      ,
          P                  RR7      ,          pWg,           # )r‹   rö  ré  ç      à?r¯  rÕ   éþÿÿÿ)r÷  r
   rV  rÜ  r   r°  )r6   rd   rg   ÚintermediatesÚ
y1m_cumsumÚy1m_cumsum_trilÚstick_breaking_logdetÚtanh_logdets   &&&&    r+   rw   Ú*CorrCholeskyTransform.log_abs_det_jacobian‹  s„   € ð ˜!�%Ÿ™¨B˜Ó/Õ/ˆ
ô -¨Z¸bÔAˆØ # ×&;Ñ&;Ó&=×&AÑ&AÀ"Ó&EÕ EÐØ˜A¤¨¨a­Ó 0Õ0´4·8²8¸C³=Õ@×EÑEÈ"ÐEÓMÕMˆØ$Õ2Ð2r.   c                óþ   € \        V4      ^8  d   \        R4      hVR,          p\        R^V,          ,           R,          R,           4      pW3^,
          ,          ^,          V8w  d   \        R4      hVRR W33,           # )r‹   r  g      Ð?rÿ  z.Input is not a flattened lower-diagonal numberNrÕ   )r6  r3   Úround)r6   r   ÚNÚDs   &&  r+   r€   Ú#CorrCholeskyTransform.forward_shape™  sp   € äˆu‹:˜Œ>ÜÐ:Ó;Ð;Ø�"�IˆÜ�4˜!˜a�%•< CÕ'¨#Õ-Ó.ˆØ�A•�;˜!Õ˜qÔ ÜÐMÓNÐNØ�S�bˆz˜Q˜FÕ"Ð"r.   c                óÐ   € \        V4      ^8  d   \        R4      hVR,          VR,          8w  d   \        R4      hVR,          pW"^,
          ,          ^,          pVRR V3,           # )r$   r  zInput is not squareNr   rÕ   ©r6  r3   )r6   r   r
  r	  s   &&  r+   r„   Ú#CorrCholeskyTransform.inverse_shape£  sa   € äˆu‹:˜Œ>ÜÐ:Ó;Ð;Ø��9˜˜b�	Ô!ÜÐ2Ó3Ð3Ø�"�IˆØ�Q•�K˜1ÕˆØ�S�bˆz˜Q˜DÕ Ð r.   rH   rZ   )rz   rŒ   r�   rŽ   r�   r   Úreal_vectorrB   Úcorr_choleskyrD   r�   rc   rk   rw   r€   r„   r“   r”   r]  s   @r+   r   r   [  sE   ø‡ € ñð  ×$Ñ$€FØ×(Ñ(€HØ€Iòò
ô3ò#÷!ð !r.   c                   ór   a € ] tR tRt o Rt]P                  t]P                  t	R t
R tR tR tR tRtV tR	# )
r   i®  a$  
Transform from unconstrained space to the simplex via :math:`y = \exp(x)` then
normalizing.

This is not bijective and cannot be used for HMC. However this acts mostly
coordinate-wise (except for the final normalization), and thus is
appropriate for coordinate-wise optimization algorithms.
c                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   ÚSoftmaxTransform.__eq__»  r�  r.   c                ó�   € TpW"P                  RR4      ^ ,          ,
          P                  4       pW3P                  RR4      ,          # )r‹   TrÕ   )rØ   rQ  rÜ  )r6   rd   ÚlogprobsÚprobss   &&  r+   rc   ÚSoftmaxTransform._call¾  s<   € ØˆØŸL™L¨¨TÓ2°1Õ5Õ5×:Ñ:Ó<ˆØ—y‘y  TÓ*Õ*Ð*r.   c                ó&   € TpVP                  4       # rZ   rU  )r6   rg   r  s   && r+   rk   ÚSoftmaxTransform._inverseÃ  s   € ØˆØ�y‰y‹{Ðr.   c                ó<   € \        V4      ^8  d   \        R4      hV# ©r‹   r  r  r~   s   &&r+   r€   ÚSoftmaxTransform.forward_shapeÇ  ó   € Üˆu‹:˜Œ>ÜÐ:Ó;Ð;Øˆr.   c                ó<   € \        V4      ^8  d   \        R4      hV# r  r  r~   s   &&r+   r„   ÚSoftmaxTransform.inverse_shapeÌ  r  r.   rH   N)rz   rŒ   r�   rŽ   r�   r   r  rB   ÚsimplexrD   r]   rc   rk   r€   r„   r“   r”   r]  s   @r+   r   r   ®  s@   ø‡ € ñð ×$Ñ$€FØ×"Ñ"€Hò3ò+ò
ò÷
ð r.   c                   ó|   a € ] tR tRt o Rt]P                  t]P                  t	Rt
R tR tR tR tR tR	 tR
tV tR# )r    iÒ  aõ  
Transform from unconstrained space to the simplex of one additional
dimension via a stick-breaking process.

This transform arises as an iterated sigmoid transform in a stick-breaking
construction of the `Dirichlet` distribution: the first logit is
transformed via sigmoid to the first probability and the probability of
everything else, and then the process recurses.

This is bijective and appropriate for use in HMC; however it mixes
coordinates together and is less appropriate for optimization.
Tc                ó"   € \        V\        4      # rZ   )r·   r    r[   s   &&r+   r]   ÚStickBreakingTransform.__eq__ä  ó   € Ü˜%Ô!7Ó8Ð8r.   c                ó^  € VP                   R,          ^,           VP                  VP                   R,          4      P                  R4      ,
          p\        WP	                  4       ,
          4      p^V,
          P                  R4      p\        V^ ^.^R7      \        V^^ .^R7      ,          pV# )r‹   rì  rÕ   )r   Únew_onesr÷  r‹  rV  rï  r   )r6   rd   Úoffsetrò  Ú	z_cumprodrg   s   &&    r+   rc   ÚStickBreakingTransform._callç  s‚   € Ø—‘˜•˜q• 1§:¡:¨a¯g©g°b­kÓ#:×#AÑ#AÀ"Ó#EÕEˆÜ˜Q§¡£Õ-Ó.ˆØ˜•U—O‘O BÓ'ˆ	Ü��A�q�6 Ô#¤c¨)°a¸°VÀ1Ô&EÕEˆØˆr.   c                óÖ  € VR RR13,          pVP                   R,          VP                  VP                   R,          4      P                  R4      ,
          p^VP                  R4      ,
          p\        P                  ! V\        P
                  ! VP                  4      P                  R7      pVP                  4       VP                  4       ,
          VP                  4       ,           pV# ).N)r„  rÕ   )	r   r&  r÷  rô   r‡  r…  r†  r‰  rV  )r6   rg   Úy_cropr'  Úsfrd   s   &&    r+   rk   ÚStickBreakingTransform._inverseî  s    € Ø�3˜˜˜�8•ˆØ—‘˜•˜qŸz™z¨&¯,©,°rÕ*:Ó;×BÑBÀ2ÓFÕFˆØ�—‘˜rÓ"Õ"ˆô �[Š[˜¤§¢¨Q¯W©WÓ!5×!:Ñ!:Ô;ˆØ�J‰J‹L˜2Ÿ6™6›8Õ# f§j¡j£lÕ2ˆØˆr.   c                ól  € VP                   R,          ^,           VP                  VP                   R,          4      P                  R4      ,
          pWP                  4       ,
          pV) \        P
                  ! V4      ,           VRRR13,          P                  4       ,           P                  R4      pV# )r‹   .NrÕ   )r   r&  r÷  rV  r–  Ú
logsigmoidrÜ  )r6   rd   rg   r'  ÚdetJs   &&&  r+   rw   Ú+StickBreakingTransform.log_abs_det_jacobianø  s~   € Ø—‘˜•˜q• 1§:¡:¨a¯g©g°b­kÓ#:×#AÑ#AÀ"Ó#EÕEˆØ—
‘
“Õˆà�”Q—\’\ !“_Õ$ q¨¨c¨r¨c¨¥{§¡Ó'8Õ8×=Ñ=¸bÓAˆØˆr.   c                ón   € \        V4      ^8  d   \        R4      hVRR VR,          ^,           3,           # ©r‹   r  NrÕ   r  r~   s   &&r+   r€   Ú$StickBreakingTransform.forward_shapeÿ  ó5   € Üˆu‹:˜Œ>ÜÐ:Ó;Ð;Ø�S�bˆz˜U 2�Y¨�]Ð,Õ,Ð,r.   c                ón   € \        V4      ^8  d   \        R4      hVRR VR,          ^,
          3,           # r3  r  r~   s   &&r+   r„   Ú$StickBreakingTransform.inverse_shape  r5  r.   rH   N)rz   rŒ   r�   rŽ   r�   r   r  rB   r   rD   r�   r]   rc   rk   rw   r€   r„   r“   r”   r]  s   @r+   r    r    Ò  sJ   ø‡ € ñð ×$Ñ$€FØ×"Ñ"€HØ€Iò9òòòò-÷
-ð -r.   c                   óˆ   a € ] tR tRt o Rt]P                  ! ]P                  ^4      t]P                  t
R tR tR tRtV tR# )r   i
  zÏ
Transform from unconstrained matrices to lower-triangular matrices with
nonnegative diagonal entries.

This is useful for parameterizing positive definite matrices in terms of
their Cholesky factorization.
c                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   ÚLowerCholeskyTransform.__eq__  r$  r.   c                óŒ   € VP                  R4      VP                  RRR7      P                  4       P                  4       ,           # ©r‹   )Údim1Údim2rÕ   r   )ÚtrilÚdiagonalrQ  Ú
diag_embedro   s   &&r+   rc   ÚLowerCholeskyTransform._call  ó4   € Ø�v‰v�b‹z˜AŸJ™J¨B°R˜JÓ8×<Ñ<Ó>×IÑIÓKÕKÐKr.   c                óŒ   € VP                  R4      VP                  RRR7      P                  4       P                  4       ,           # r<  )r?  r@  rV  rA  rs   s   &&r+   rk   ÚLowerCholeskyTransform._inverse  rC  r.   rH   N)rz   rŒ   r�   rŽ   r�   r   rÙ   rÖ   rB   Úlower_choleskyrD   r]   rc   rk   r“   r”   r]  s   @r+   r   r   
  sF   ø‡ € ñð ×$Ò$ [×%5Ñ%5°qÓ9€FØ×)Ñ)€Hò9òL÷Lð Lr.   c                   óˆ   a € ] tR tRt o Rt]P                  ! ]P                  ^4      t]P                  t
R tR tR tRtV tR# )r   i   zF
Transform from unconstrained matrices to positive-definite matrices.
c                ó"   € \        V\        4      # rZ   )r·   r   r[   s   &&r+   r]   Ú PositiveDefiniteTransform.__eq__(  s   € Ü˜%Ô!:Ó;Ð;r.   c                óF   € \        4       ! V4      pWP                  ,          # rZ   )r   ÚmTro   s   &&r+   rc   ÚPositiveDefiniteTransform._call+  s   € Ü"Ô$ QÓ'ˆØ—4‘4�xˆr.   c                ór   € \         P                  P                  V4      p\        4       P	                  V4      # rZ   )rô   ÚlinalgÚcholeskyr   rK   rs   s   &&r+   rk   Ú"PositiveDefiniteTransform._inverse/  s*   € Ü�L‰L×!Ñ! !Ó$ˆÜ%Ó'×+Ñ+¨AÓ.Ð.r.   rH   N)rz   rŒ   r�   rŽ   r�   r   rÙ   rÖ   rB   Úpositive_definiterD   r]   rc   rk   r“   r”   r]  s   @r+   r   r      sC   ø‡ € ñð ×$Ò$ [×%5Ñ%5°qÓ9€FØ×,Ñ,€Hò<ò÷/ð /r.   c                   ó
  a a€ ] tR tRt oRtRV3R lV 3R lllt]V3R lR l4       t]V3R lR l4       tRR	 lt	R
 t
R tR t]V3R lR l4       t]P                   R 4       t]P                   R 4       tV3R ltRtVtV ;t# )r   i4  a¹  
Transform functor that applies a sequence of transforms `tseq`
component-wise to each submatrix at `dim`, of length `lengths[dim]`,
in a way compatible with :func:`torch.cat`.

Example::

   x0 = torch.cat([torch.range(1, 10), torch.range(1, 10)], dim=0)
   x = torch.cat([x0, x0], dim=0)
   t0 = CatTransform([ExpTransform(), identity_transform], dim=0, lengths=[10, 10])
   t = CatTransform([t0, t0], dim=0, lengths=[20, 20])
   y = t(x)
c          
      ód   <€ V ^8„  d   QhRS[ S[,          RS[RS[ S[,          R,          RS[RR/# )r$   Útseqr  ÚlengthsNr%   r&   ©r   r!   r(   )r)   r*   s   "€r+   r,   ÚCatTransform.__annotate__E  sK   ø€ ÷ ñ á‘yÕ!ðñ ðñ ™#• Õ%ð	ñ
 ðð 
ñr.   c                ób  <€ \         ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   \        R4      hV'       d    V Uu. uF  qUP                  V4      NK  	  pp\        SV `  VR7       \        V4      V n        Vf   ^.\        V P                  4      ,          p\        V4      V n        \        V P                  4      \        V P                  4      8w  d9   \        R\        V P                  4       R\        V P                  4       R24      hW n	        R# u upi )	c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5irZ   ©r·   r!   ©rá   rü  s   & r+   rã   Ú(CatTransform.__init__.<locals>.<genexpr>L  ó   é € Ð:±T°”:˜a¤×+Ð+³Tùó   ‚FTú0All elements of tseq must be Transform instancesrT   Nz	lengths (z) must match transforms (r»   )
ræ   r¤   rW   r4   r5   rË   Ú
transformsr6  rU  r  )r6   rT  r  rU  r%   rü  r7   s   &&&&& €r+   r5   ÚCatTransform.__init__E  së   ø€ ÷ ‹sÑ:±TÓ:�s�sŠsÑ:±TÓ:×:Ò:Ü Ð!SÓTÐTßÙ6:Ó;±d°—L‘L Ö,±dˆDÐ;Ü‰Ñ JÐÔ/Ü˜t›*ˆŒØŠ?Ø�cœC §¡Ó0Õ0ˆGÜ˜G“}ˆŒÜˆt�|‰|Ó¤ D§O¡OÓ 4Ô4Ü ØœC §¡Ó-Ð.Ð.GÌÈDÏOÉOÓH\ÐG]Ð]^Ð_óð ð Žùò <s   ÁD,c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   rW  \  s   ø€ ÷ 9ñ 9™3ñ 9r.   c                ó:   € \        R  V P                   4       4      # )c              3   ó8   "  € T F  qP                   x € K  	  R # 5irZ   )rC   r[  s   & r+   rã   Ú)CatTransform.event_dim.<locals>.<genexpr>]  ó   é € Ð8© 1—;–;«ùrå   )rØ   r`  rE   s   &r+   rC   ÚCatTransform.event_dim[  s   € äÑ8¨¯ªÓ8Ó8Ð8r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r'   )r)   r*   s   "€r+   r,   rW  `  s   ø€ ÷ !ñ !™ñ !r.   c                ó,   € \        V P                  4      # rZ   )rÜ  rU  rE   s   &r+   ÚlengthÚCatTransform.length_  s   € ä�4—<‘<Ó Ð r.   c                ó€   € V P                   V8X  d   V # \        V P                  V P                  V P                  V4      # rZ   )r0   r   r`  r  rU  rV   s   &&r+   rW   ÚCatTransform.with_cachec  s2   € Ø×Ñ˜zÔ)ØˆKÜ˜DŸO™O¨T¯X©X°t·|±|ÀZÓPÐPr.   c                ó®  € VP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      V P                  8w  dB   \        RV P                    RVP                  V P                   4       RV P                   24      h. p^ p\	        V P
                  V P                  4       F@  w  rEVP                  V P                   W54      pVP                  V! V4      4       W5,           pKB  	  \        P                  ! W P                   R7      # )údim ú out of range for tensor with ú dimensionsúx.size(ú) = ú must equal length rö  )r  r¤   rÚ  rj  r÷   r`  rU  Únarrowrö   rô   Úcat)r6   rd   ÚyslicesÚstartÚtransrj  Úxslices   &&     r+   rc   ÚCatTransform._callh  s  € Ø—‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ >¸q¿u¹u»w¸iÀ{ÐSóð ð �6‰6�$—(‘(Ó˜tŸ{™{Ô*Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9LÈTÏ[É[ÈMÐZóð ð ˆØˆÜ  §¡°$·,±,Ö?‰MˆEØ—X‘X˜dŸh™h¨Ó6ˆFØ�N‰N™5 ›=Ô)Ø•NŠEñ @ô �yŠy˜§h¡hÔ/Ð/r.   c                óÀ  € VP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      V P                  8w  dB   \        RV P                    RVP                  V P                   4       RV P                   24      h. p^ p\	        V P
                  V P                  4       FI  w  rEVP                  V P                   W54      pVP                  VP                  V4      4       W5,           pKK  	  \        P                  ! W P                   R7      # )ro  rp  rq  úy.size(rs  rt  rö  )r  r¤   rÚ  rj  r÷   r`  rU  ru  rö   rK   rô   rv  )r6   rg   Úxslicesrx  ry  rj  Úyslices   &&     r+   rk   ÚCatTransform._inversey  s  € Ø—‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ >¸q¿u¹u»w¸iÀ{ÐSóð ð �6‰6�$—(‘(Ó˜tŸ{™{Ô*Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9LÈTÏ[É[ÈMÐZóð ð ˆØˆÜ  §¡°$·,±,Ö?‰MˆEØ—X‘X˜dŸh™h¨Ó6ˆFØ�N‰N˜5Ÿ9™9 VÓ,Ô-Ø•NŠEñ @ô �yŠy˜§h¡hÔ/Ð/r.   c                óž  € VP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      V P                  8w  dB   \        RV P                    RVP                  V P                   4       RV P                   24      hVP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      V P                  8w  dB   \        RV P                    RVP                  V P                   4       RV P                   24      h. p^ p\	        V P
                  V P                  4       F¨  w  rVVP                  V P                   WF4      pVP                  V P                   WF4      pVP                  Wx4      p	VP                  V P                  8  d'   \        W�P                  VP                  ,
          4      p	VP                  V	4       WF,           pKª  	  V P                   p
V
^ 8¼  d   W¡P                  4       ,
          p
W P                  ,           p
V
^ 8  d   \        P                  ! W:R7      # \        V4      # )	ro  ú out of range for x with rq  rr  rs  rt  ú out of range for y with r}  rö  )r  r¤   rÚ  rj  r÷   r`  rU  ru  rw   rC   r   rö   rô   rv  rÜ  )r6   rd   rg   Ú
logdetjacsrx  ry  rj  rz  r  Ú	logdetjacr  s   &&&        r+   rw   Ú!CatTransform.log_abs_det_jacobianŠ  s'  € Ø—‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ 9¸!¿%¹%»'¸À+ÐNóð ð �6‰6�$—(‘(Ó˜tŸ{™{Ô*Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9LÈTÏ[É[ÈMÐZóð ð —‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ 9¸!¿%¹%»'¸À+ÐNóð ð �6‰6�$—(‘(Ó˜tŸ{™{Ô*Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9LÈTÏ[É[ÈMÐZóð ð ˆ
ØˆÜ  §¡°$·,±,Ö?‰MˆEØ—X‘X˜dŸh™h¨Ó6ˆFØ—X‘X˜dŸh™h¨Ó6ˆFØ×2Ñ2°6ÓBˆIØ�‰ §¡Ô/Ü*¨9·n±nÀuÇÁÕ6VÓW�	Ø×Ñ˜iÔ(Ø•NŠEñ @ð �h‰hˆØ�!Œ8ØŸ™›•-ˆCØ—N‘NÕ"ˆØ�Œ7Ü—9’9˜ZÔ1Ð1ä�z“?Ð"r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r©   )r)   r*   s   "€r+   r,   rW  °  ó   ø€ ÷ 9ñ 9™4ñ 9r.   c                ó’   € \         ;QJ d&    R  V P                   4       F  '       d   K   R# 	  R# ! R  V P                   4       4      # )c              3   ó8   "  € T F  qP                   x € K  	  R # 5irZ   rà   r[  s   & r+   rã   Ú)CatTransform.bijective.<locals>.<genexpr>±  rf  rå   FT©ræ   r`  rE   s   &r+   r�   ÚCatTransform.bijective¯  ó3   € ç‹sÑ8¨¯ªÓ8�sŒsÐ8ŠsÐ8ˆsÑ8¨¯ªÓ8Ó8Ð8r.   c                óª   € \         P                  ! V P                   Uu. uF  qP                  NK  	  upV P                  V P
                  4      # u upi rZ   )r   rv  r`  rB   r  rU  ©r6   rü  s   & r+   rB   ÚCatTransform.domain³  s<   € ô �ŠØ#ŸšÓ/™˜!�XŒX™Ñ/°·±¸4¿<¹<ó
ð 	
ùÚ/ó   ŸAc                óª   € \         P                  ! V P                   Uu. uF  qP                  NK  	  upV P                  V P
                  4      # u upi rZ   )r   rv  r`  rD   r  rU  r�  s   & r+   rD   ÚCatTransform.codomainº  s<   € ô �ŠØ!%§¢Ó1¡˜A�ZŒZ¡Ñ1°4·8±8¸T¿\¹\ó
ð 	
ùÚ1r’  c                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # ©r$   r`  ©rË   r!   )r)   r*   s   "€r+   r,   rW  4  s   ø‡ ‚ ñ ‘Y•Ñò r.   )r  rU  r`  )r   Nr   rŠ   )rz   rŒ   r�   rŽ   r�   r5   r	   rC   rj  rW   rc   rk   rw   r‘   r�   r   rÇ   rB   rD   r’   r“   r”   r•   r–   s   @@r+   r   r   4  s¢   ù‡ € ñ÷ õ ð, ÷9ó ð9ð ÷!ó ð!ôQò
0ò"0ò"##ðJ ÷9ó ð9ð ×#Ñ#ñ
ó $ð
ð
 ×#Ñ#ñ
ó $ð
÷Q … r.   c                   óØ   a a€ ] tR tRt oRtRV3R lV 3R llltRR ltR tR tR t	R	 t
]V3R
 lR l4       t]P                  R 4       t]P                  R 4       tV3R ltRtVtV ;t# )r   iÂ  a7  
Transform functor that applies a sequence of transforms `tseq`
component-wise to each submatrix at `dim`
in a way compatible with :func:`torch.stack`.

Example::

   x = torch.stack([torch.range(1, 10), torch.range(1, 10)], dim=1)
   t = StackTransform([ExpTransform(), identity_transform], dim=1)
   y = t(x)
c                ó@   <€ V ^8„  d   QhRS[ S[,          RS[RS[RR/# )r$   rT  r  r%   r&   NrV  )r)   r*   s   "€r+   r,   ÚStackTransform.__annotate__Ñ  s2   ø€ ÷ 	ñ 	Ù™YÕ'ð	Ù.1ð	ÙCFð	à	ñ	r.   c                ó6  <€ \         ;QJ d    R  V 4       F  '       d   K   RM	  RM! R  V 4       4      '       g   \        R4      hV'       d    V Uu. uF  qDP                  V4      NK  	  pp\        SV `  VR7       \        V4      V n        W n        R# u upi )c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5irZ   rZ  r[  s   & r+   rã   Ú*StackTransform.__init__.<locals>.<genexpr>Ô  r]  r^  FTr_  rT   N)ræ   r¤   rW   r4   r5   rË   r`  r  )r6   rT  r  r%   rü  r7   s   &&&& €r+   r5   ÚStackTransform.__init__Ñ  su   ø€ ÷ ‹sÑ:±TÓ:�s�sŠsÑ:±TÓ:×:Ò:Ü Ð!SÓTÐTßÙ6:Ó;±d°—L‘L Ö,±dˆDÐ;Ü‰Ñ JÐÔ/Ü˜t›*ˆŒØŽùò <s   ÁBc                ój   € V P                   V8X  d   V # \        V P                  V P                  V4      # rZ   )r0   r   r`  r  rV   s   &&r+   rW   ÚStackTransform.with_cacheÜ  s,   € Ø×Ñ˜zÔ)ØˆKÜ˜dŸo™o¨t¯x©x¸ÓDÐDr.   c                ó¦   € \        VP                  V P                  4      4       Uu. uF  q!P                  V P                  V4      NK   	  up# u upi rZ   )ÚrangerÚ  r  Úselect)r6   rò  Úis   && r+   Ú_sliceÚStackTransform._sliceá  s;   € Ü/4°Q·V±V¸D¿H¹HÓ5EÔ/FÓGÑ/F¨!—‘˜Ÿ™ 1Ö%Ñ/FÑGÐGùÒGs   §$Ac           
     ó�  € VP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      \        V P                  4      8w  dK   \        RV P                    RVP                  V P                   4       R\        V P                  4       24      h. p\        V P                  V4      V P                  4       F  w  r4VP                  V! V4      4       K  	  \        P                  ! W P                   R7      # )ro  rp  rq  rr  rs  ú must equal len(transforms) rö  )
r  r¤   rÚ  r6  r`  r÷   r¥  rö   rô   Ústack)r6   rd   rw  rz  ry  s   &&   r+   rc   ÚStackTransform._callä  sù   € Ø—‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ >¸q¿u¹u»w¸iÀ{ÐSóð ð �6‰6�$—(‘(Óœs 4§?¡?Ó3Ô3Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9UÔVYÐZ^×ZiÑZiÓVjÐUkÐlóð ð ˆÜ  §¡¨Q£°·±ÖA‰MˆFØ�N‰N™5 ›=Ö)ñ Bä�{Š{˜7¯©Ô1Ð1r.   c           
     ó¢  € VP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      \        V P                  4      8w  dK   \        RV P                    RVP                  V P                   4       R\        V P                  4       24      h. p\        V P                  V4      V P                  4       F%  w  r4VP                  VP                  V4      4       K'  	  \        P                  ! W P                   R7      # )ro  rp  rq  r}  rs  r¨  rö  )r  r¤   rÚ  r6  r`  r÷   r¥  rö   rK   rô   r©  )r6   rg   r~  r  ry  s   &&   r+   rk   ÚStackTransform._inverseò  sþ   € Ø—‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ >¸q¿u¹u»w¸iÀ{ÐSóð ð �6‰6�$—(‘(Óœs 4§?¡?Ó3Ô3Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9UÔVYÐZ^×ZiÑZiÓVjÐUkÐlóð ð ˆÜ  §¡¨Q£°·±ÖA‰MˆFØ�N‰N˜5Ÿ9™9 VÓ,Ö-ñ Bä�{Š{˜7¯©Ô1Ð1r.   c           
     óˆ  € VP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      \        V P                  4      8w  dK   \        RV P                    RVP                  V P                   4       R\        V P                  4       24      hVP                  4       ) V P                   u;8:  d   VP                  4       8  g-   M \        R V P                    RVP                  4        R24      hVP                  V P                   4      \        V P                  4      8w  dK   \        RV P                    RVP                  V P                   4       R\        V P                  4       24      h. pV P                  V4      pV P                  V4      p\        WTV P                  4       F&  w  rgpVP                  VP                  Wg4      4       K(  	  \        P                  ! W0P                   R7      # )	ro  r‚  rq  rr  rs  r¨  rƒ  r}  rö  )r  r¤   rÚ  r6  r`  r¥  r÷   rö   rw   rô   r©  )	r6   rd   rg   r„  rw  r~  rz  r  ry  s	   &&&      r+   rw   Ú#StackTransform.log_abs_det_jacobian   sÆ  € Ø—‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ 9¸!¿%¹%»'¸À+ÐNóð ð �6‰6�$—(‘(Óœs 4§?¡?Ó3Ô3Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9UÔVYÐZ^×ZiÑZiÓVjÐUkÐlóð ð —‘“�˜DŸH™HÖ. q§u¡u£wÖ.Ü Ø�t—x‘x�jÐ 9¸!¿%¹%»'¸À+ÐNóð ð �6‰6�$—(‘(Óœs 4§?¡?Ó3Ô3Ü Ø˜$Ÿ(™(˜ 4¨¯©¨t¯x©xÓ(8Ð'9Ð9UÔVYÐZ^×ZiÑZiÓVjÐUkÐlóð ð ˆ
Ø—+‘+˜a“.ˆØ—+‘+˜a“.ˆÜ%(¨¸4¿?¹?Ö%KÑ!ˆF˜EØ×Ñ˜e×8Ñ8¸ÓHÖIñ &Lä�{Š{˜:¯8©8Ô4Ð4r.   c                ó    <€ V ^8„  d   QhRS[ /# r@   r©   )r)   r*   s   "€r+   r,   rš    rˆ  r.   c                ó’   € \         ;QJ d&    R  V P                   4       F  '       d   K   R# 	  R# ! R  V P                   4       4      # )c              3   ó8   "  € T F  qP                   x € K  	  R # 5irZ   rà   r[  s   & r+   rã   Ú+StackTransform.bijective.<locals>.<genexpr>  rf  rå   FTrŒ  rE   s   &r+   r�   ÚStackTransform.bijective  rŽ  r.   c                ó”   € \         P                  ! V P                   Uu. uF  qP                  NK  	  upV P                  4      # u upi rZ   )r   r©  r`  rB   r  r�  s   & r+   rB   ÚStackTransform.domain  s3   € ô × Ò °D·O²OÓ!D±O¨q§(¤(±OÑ!DÀdÇhÁhÓOÐOùÒ!Dó   ŸAc                ó”   € \         P                  ! V P                   Uu. uF  qP                  NK  	  upV P                  4      # u upi rZ   )r   r©  r`  rD   r  r�  s   & r+   rD   ÚStackTransform.codomain!  s3   € ô × Ò °d·o²oÓ!F±o°§*¤*±oÑ!FÈÏÉÓQÐQùÒ!Fr¶  c                ó6   <€ V ^8„  d   Qh/ S[ S[,          ;R&   # r–  r—  )r)   r*   s   "€r+   r,   rš  Â  s   ø‡ ‚ ñ ‘Y•Ñò r.   )r  r`  ræ  rŠ   )rz   rŒ   r�   rŽ   r�   r5   rW   r¥  rc   rk   rw   r‘   r�   r   rÇ   rB   rD   r’   r“   r”   r•   r–   s   @@r+   r   r   Â  sƒ   ù‡ € ñ
÷	õ 	ôEò
Hò2ò2ò5ð0 ÷9ó ð9ð ×#Ñ#ñPó $ðPð ×#Ñ#ñRó $ðR÷C … r.   c                   óž   a a€ ] tR tRt oRtRt]P                  t^t	RV3R lV 3R lllt
]V3R lR l4       tR tR	 tR
 tRR ltRtVtV ;t# )r   i'  a  
Transform via the cumulative distribution function of a probability distribution.

Args:
    distribution (Distribution): Distribution whose cumulative distribution function to use for
        the transformation.

Example::

    # Construct a Gaussian copula from a multivariate normal.
    base_dist = MultivariateNormal(
        loc=torch.zeros(2),
        scale_tril=LKJCholesky(2).sample(),
    )
    transform = CumulativeDistributionTransform(Normal(0, 1))
    copula = TransformedDistribution(base_dist, [transform])
Tc                ó*   <€ V ^8„  d   QhRS[ RS[RR/# )r$   Údistributionr%   r&   N)r   r(   )r)   r*   s   "€r+   r,   Ú,CumulativeDistributionTransform.__annotate__>  s"   ø€ ÷ )ñ )¡\ð )¹sð )È4ñ )r.   c                ó4   <€ \         SV `  VR 7       Wn        R# r�   )r4   r5   r¼  )r6   r¼  r%   r7   s   &&&€r+   r5   Ú(CumulativeDistributionTransform.__init__>  s   ø€ Ü‰Ñ JÐÔ/Ø(Ör.   c                óB   <€ V ^8„  d   QhRS[ P                  R,          /# )r$   r&   Nr‡   )r)   r*   s   "€r+   r,   r½  C  s   ø€ ÷ )ñ )™×.Ñ.°Õ5ñ )r.   c                ó.   € V P                   P                  # rZ   )r¼  ÚsupportrE   s   &r+   rB   Ú&CumulativeDistributionTransform.domainB  s   € à× Ñ ×(Ñ(Ð(r.   c                ó8   € V P                   P                  V4      # rZ   )r¼  Úcdfro   s   &&r+   rc   Ú%CumulativeDistributionTransform._callF  s   € Ø× Ñ ×$Ñ$ QÓ'Ð'r.   c                ó8   € V P                   P                  V4      # rZ   )r¼  Úicdfrs   s   &&r+   rk   Ú(CumulativeDistributionTransform._inverseI  s   € Ø× Ñ ×%Ñ% aÓ(Ð(r.   c                ó8   € V P                   P                  V4      # rZ   )r¼  Úlog_probrv   s   &&&r+   rw   Ú4CumulativeDistributionTransform.log_abs_det_jacobianL  s   € Ø× Ñ ×)Ñ)¨!Ó,Ð,r.   c                óV   € V P                   V8X  d   V # \        V P                  VR 7      # rï   )r0   r   r¼  rV   s   &&r+   rW   Ú*CumulativeDistributionTransform.with_cacheO  s(   € Ø×Ñ˜zÔ)ØˆKÜ.¨t×/@Ñ/@ÈZÔXÐXr.   )r¼  r‰   rŠ   )rz   rŒ   r�   rŽ   r�   r�   r   r˜  rD   rQ   r5   r‘   rB   rc   rk   rw   rW   r“   r”   r•   r–   s   @@r+   r   r   '  sZ   ù‡ € ñð$ €IØ×(Ñ(€HØ€D÷)õ )ð ÷)ó ð)ò(ò)ò-÷Yô Yr.   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   Úidentity_transform)0rø   r°  rú   Úcollections.abcr   rô   Útorch.nn.functionalÚnnÚ
functionalr–  r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   r   r	   r
   r   r   r   Útorch.typesr   Ú__all__r!   rJ   r   rÏ  r   r   r   r   r‹  r   r   r   r   r   r   r   r    r   r   r   r   r   rH   r.   r+   Ú<module>rÙ     sd  ðã Û Û Ý $ã ß Ð Ý Ý +Ý 9÷õ ÷ .Ý ò€÷0dñ dôNE.˜	ô E.ôP}�yô }ñ@ & bÓ)Ð ôK8˜9ô K8ô\I+�yô I+ôX�9ô ô.(R�Yô (RòVNô
/�yô /ô2˜	ô ô0*>�Iô *>ôZ�9ô ô h
�iô h
ôVP!˜Iô P!ôf!�yô !ôH5-˜Yô 5-ôpL˜Yô Lô,/ 	ô /ô(K
�9ô K
ô\bR�Yô bRôJ+Y iö +Yr.   