+
    –°³jÀ'  ã                   ó”   € ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	 ^ RI
HtHt ^ RIHt R.tR	 tR
 tR t ! R R]4      tR# )é    N©ÚTensor)Úconstraints)ÚDistribution)Ú_batch_mahalanobisÚ	_batch_mv)Ú_standard_normalÚlazy_property)Ú_sizeÚLowRankMultivariateNormalc                ó\  € V P                  R4      pV P                  VP                  R4      ,          p\        P                  ! W04      P                  4       pVP                  RW",          4      RRRV^,           13;;,          ^,          uu&   \        P                  P                  V4      # )zw
Computes Cholesky of :math:`I + W.T @ inv(D) @ W` for a batch of matrices :math:`W`
and a batch of vectors :math:`D`.
ºNNNNéÿÿÿÿéþÿÿÿ)	ÚsizeÚmTÚ	unsqueezeÚtorchÚmatmulÚ
contiguousÚviewÚlinalgÚcholesky)ÚWÚDÚmÚWt_DinvÚKs   &&   Úp/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/distributions/lowrank_multivariate_normal.pyÚ_batch_capacitance_trilr       s|   € ð
 	
�‰ˆr‹
€AØ�d‰d�Q—[‘[ “_Õ$€GÜ�Š�WÓ ×+Ñ+Ó-€AØ‡F�Fˆ2ˆq�uÓ�a™˜A �E˜�k×" aÕ'Ó"Ü�<‰<× Ñ  Ó#Ð#ó    c                ó¸   € ^VP                  RRR7      P                  4       P                  R4      ,          VP                  4       P                  R4      ,           # )z³
Uses "matrix determinant lemma"::
    log|W @ W.T + D| = log|C| + log|D|,
where :math:`C` is the capacitance matrix :math:`I + W.T @ inv(D) @ W`, to compute
the log determinant.
)Údim1Údim2r   r   )ÚdiagonalÚlogÚsum)r   r   Úcapacitance_trils   &&&r   Ú_batch_lowrank_logdetr)      sP   € ð Ð×(Ñ(¨b°rÐ(Ó:×>Ñ>Ó@×DÑDÀRÓHÕHÈ1Ï5É5Ë7Ï;É;Ø
óLõ ð r!   c                óÐ   € V P                   VP                  R4      ,          p\        WB4      pVP                  ^4      V,          P	                  R4      p\        W54      pWg,
          # )zÿ
Uses "Woodbury matrix identity"::
    inv(W @ W.T + D) = inv(D) - inv(D) @ W @ inv(C) @ W.T @ inv(D),
where :math:`C` is the capacitance matrix :math:`I + W.T @ inv(D) @ W`, to compute the squared
Mahalanobis distance :math:`x.T @ inv(W @ W.T + D) @ x`.
r   r   )r   r   r   Úpowr'   r   )r   r   Úxr(   r   Ú	Wt_Dinv_xÚmahalanobis_term1Úmahalanobis_term2s   &&&&    r   Ú_batch_lowrank_mahalanobisr0   (   sV   € ð �d‰d�Q—[‘[ “_Õ$€GÜ˜'Ó%€IØŸ™˜q› A�×*Ñ*¨2Ó.ÐÜ*Ð+;ÓGÐØÕ0Ð0r!   c            	       óì  a a€ ] tR t^6t oRtR]P                  R]P                  ! ]P                  ^4      R]P                  ! ]P                  ^4      /t
]P                  tRtRV3R lV 3R llltRV 3R ll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]V3R lR l4       t]V3R lR l4       t]V3R lR l4       t]P0                  ! 4       3V3R lR lltR tR tRtVtV ;t# )r   a³  
Creates a multivariate normal distribution with covariance matrix having a low-rank form
parameterized by :attr:`cov_factor` and :attr:`cov_diag`::

    covariance_matrix = cov_factor @ cov_factor.T + cov_diag

Example:
    >>> # xdoctest: +REQUIRES(env:TORCH_DOCTEST_LAPACK)
    >>> # xdoctest: +IGNORE_WANT("non-deterministic")
    >>> m = LowRankMultivariateNormal(
    ...     torch.zeros(2), torch.tensor([[1.0], [0.0]]), torch.ones(2)
    ... )
    >>> m.sample()  # normally distributed with mean=`[0,0]`, cov_factor=`[[1],[0]]`, cov_diag=`[1,1]`
    tensor([-0.2102, -0.5429])

Args:
    loc (Tensor): mean of the distribution with shape `batch_shape + event_shape`
    cov_factor (Tensor): factor part of low-rank form of covariance matrix with shape
        `batch_shape + event_shape + (rank,)`
    cov_diag (Tensor): diagonal part of low-rank form of covariance matrix with shape
        `batch_shape + event_shape`

Note:
    The computation for determinant and inverse of covariance matrix is avoided when
    `cov_factor.shape[1] << cov_factor.shape[0]` thanks to `Woodbury matrix identity
    <https://en.wikipedia.org/wiki/Woodbury_matrix_identity>`_ and
    `matrix determinant lemma <https://en.wikipedia.org/wiki/Matrix_determinant_lemma>`_.
    Thanks to these formulas, we just need to compute the determinant and inverse of
    the small size "capacitance" matrix::

        capacitance = I + cov_factor.T @ inv(cov_diag) @ cov_factor
ÚlocÚ
cov_factorÚcov_diagTc          
      óD   <€ V ^8„  d   QhRS[ RS[ RS[ RS[R,          RR/# )é   r2   r3   r4   Úvalidate_argsNÚreturn)r   Úbool)ÚformatÚ__classdict__s   "€r   Ú__annotate__Ú&LowRankMultivariateNormal.__annotate__a   sH   ø€ ÷ *Pñ *Páð*Pñ ð*Pñ ð	*Pñ
 ˜d•{ð*Pð 
ñ*Pr!   c           	     ó  <€ VP                  4       ^8  d   \        R4      hVP                  RR pVP                  4       ^8  d   \        R4      hVP                  RR V8w  d   \        RV^ ,           R24      hVP                  RR V8w  d   \        RV 24      hVP                  R4      pVP                  R4      p \        P
                  ! WbV4      w  q`n        pTR,          T n        TR,          T n	        T P                  P                  RR p	Y n
        Y0n        \        Y#4      T n        \        S
T `=  Y•TR
7       R#   \         d9   p\        RTP                   RTP                   R	TP                   24      ThRp?ii ; i)é   z%loc must be at least one-dimensional.NzScov_factor must be at least two-dimensional, with optional leading batch dimensionsz2cov_factor must be a batch of matrices with shape z x mz/cov_diag must be a batch of vectors with shape zIncompatible batch shapes: loc z, cov_factor z, cov_diag ©r7   r   r   ).r   )ÚdimÚ
ValueErrorÚshaper   r   Úbroadcast_tensorsr3   ÚRuntimeErrorr2   r4   Ú_unbroadcasted_cov_factorÚ_unbroadcasted_cov_diagr    Ú_capacitance_trilÚsuperÚ__init__)Úselfr2   r3   r4   r7   Úevent_shapeÚloc_Ú	cov_diag_ÚeÚbatch_shapeÚ	__class__s   &&&&&     €r   rJ   Ú"LowRankMultivariateNormal.__init__a   s–  ø€ ð �7‰7‹9�qŒ=ÜÐDÓEÐEØ—i‘i  �nˆØ�>‰>Ó˜aÔÜð9óð ð ×Ñ˜B˜rÐ" kÔ1ÜØDÀ[ÐQRÅ^ÐDTÐTXÐYóð ð �>‰>˜"˜#Ð +Ô-ÜØAÀ+ÀÐOóð ð �}‰}˜RÓ ˆØ×&Ñ& rÓ*ˆ	ð	Ü/4×/FÒ/FØ )ó0Ñ,ˆD”/ 9ð ˜•<ˆŒØ! &Õ)ˆŒØ—h‘h—n‘n S bÐ)ˆà)3Ô&Ø'/Ô$Ü!8¸Ó!NˆÔä‰Ñ˜ÀÐÖOøô ô 	ÜØ1°#·)±)°¸MÈ*×JZÑJZÐI[Ð[fÐgo×guÑguÐfvÐwóàðûð	ús   Ã E ÅFÅ3FÆFc                óD  <€ V P                  \        V4      p\        P                  ! V4      pWP                  ,           pV P
                  P                  V4      Vn        V P                  P                  V4      Vn        V P                  P                  W@P                  P                  RR ,           4      Vn        V P                  Vn
        V P                  Vn        V P                  Vn        \        \        V`;  WP                  RR7       V P                  Vn        V# )r?   NFr@   r   )Ú_get_checked_instancer   r   ÚSizerL   r2   Úexpandr4   r3   rC   rF   rG   rH   rI   rJ   Ú_validate_args)rK   rP   Ú	_instanceÚnewÚ	loc_shaperQ   s   &&&  €r   rV   Ú LowRankMultivariateNormal.expand�   sç   ø€ Ø×(Ñ(Ô)BÀIÓNˆÜ—j’j Ó-ˆØ×"2Ñ"2Õ2ˆ	Ø—(‘(—/‘/ )Ó,ˆŒØ—}‘}×+Ñ+¨IÓ6ˆŒØŸ™×/Ñ/°	¿O¹O×<QÑ<QÐRTÐRUÐ<VÕ0VÓWˆŒØ(,×(FÑ(FˆÔ%Ø&*×&BÑ&BˆÔ#Ø $× 6Ñ 6ˆÔÜÔ'¨Ñ6Ø×)Ñ)¸ð 	7ô 	
ð "×0Ñ0ˆÔØˆ
r!   c                ó    <€ V ^8„  d   QhRS[ /# ©r6   r8   r   )r:   r;   s   "€r   r<   r=   ž   ó   ø€ ÷ ñ ‘fñ r!   c                ó   € V P                   # ©N©r2   ©rK   s   &r   ÚmeanÚLowRankMultivariateNormal.mean�   ó   € à�x‰xˆr!   c                ó    <€ V ^8„  d   QhRS[ /# r]   r   )r:   r;   s   "€r   r<   r=   ¢   r^   r!   c                ó   € V P                   # r`   ra   rb   s   &r   ÚmodeÚLowRankMultivariateNormal.mode¡   re   r!   c                ó    <€ V ^8„  d   QhRS[ /# r]   r   )r:   r;   s   "€r   r<   r=   ¦   s   ø€ ÷ 8ñ 8™&ñ 8r!   c                óÌ   € V P                   P                  ^4      P                  R4      V P                  ,           P	                  V P
                  V P                  ,           4      # )r6   r   )rF   r+   r'   rG   rV   Ú_batch_shapeÚ_event_shaperb   s   &r   ÚvarianceÚ"LowRankMultivariateNormal.variance¥   sN   € ð ×*Ñ*×.Ñ.¨qÓ1×5Ñ5°bÓ9¸D×<XÑ<XÕXß
‰&�×"Ñ" T×%6Ñ%6Õ6Ó
7ð	8r!   c                ó    <€ V ^8„  d   QhRS[ /# r]   r   )r:   r;   s   "€r   r<   r=   ¬   s   ø€ ÷ 
ñ 
™Fñ 
r!   c                ó0  € V P                   ^ ,          pV P                  P                  4       P                  R4      pV P                  V,          p\
        P                  ! W3P                  4      P                  4       pVP                  RW,          4      RRRV^,           13;;,          ^,          uu&   V\
        P                  P                  V4      ,          pVP                  V P                  V P                   ,           V P                   ,           4      # )r   r   Nr   )rm   rG   Úsqrtr   rF   r   r   r   r   r   r   r   rV   rl   )rK   ÚnÚcov_diag_sqrt_unsqueezeÚ
Dinvsqrt_Wr   Ú
scale_trils   &     r   rv   Ú$LowRankMultivariateNormal.scale_tril«   sÕ   € ð ×Ñ˜aÕ ˆØ"&×">Ñ">×"CÑ"CÓ"E×"OÑ"OÐPRÓ"SÐØ×3Ñ3Ð6MÕMˆ
Ü�LŠL˜§]¡]Ó3×>Ñ>Ó@ˆØ	�‰ˆr�1•5Ó˜!™X  A¥˜X˜+×&¨!Õ+Ó&Ø,¬u¯|©|×/DÑ/DÀQÓ/GÕGˆ
Ø× Ñ Ø×Ñ × 1Ñ 1Õ1°D×4EÑ4EÕEó
ð 	
r!   c                ó    <€ V ^8„  d   QhRS[ /# r]   r   )r:   r;   s   "€r   r<   r=   ½   s   ø€ ÷ 
ñ 
¡6ñ 
r!   c                ó0  € \         P                  ! V P                  V P                  P                  4      \         P                  ! V P
                  4      ,           pVP                  V P                  V P                  ,           V P                  ,           4      # r`   )	r   r   rF   r   Ú
diag_embedrG   rV   rl   rm   )rK   Úcovariance_matrixs   & r   r{   Ú+LowRankMultivariateNormal.covariance_matrix¼   su   € ä!ŸLšLØ×*Ñ*¨D×,JÑ,J×,MÑ,Mó
ä×Ò˜T×9Ñ9Ó:õ;Ðð !×'Ñ'Ø×Ñ × 1Ñ 1Õ1°D×4EÑ4EÕEó
ð 	
r!   c                ó    <€ V ^8„  d   QhRS[ /# r]   r   )r:   r;   s   "€r   r<   r=   Æ   s   ø€ ÷ 
ñ 
¡&ñ 
r!   c                óÌ  € V P                   P                  V P                  P                  R4      ,          p\        P
                  P                  V P                  VRR7      p\        P                  ! V P                  P                  4       4      VP                  V,          ,
          pVP                  V P                  V P                  ,           V P                  ,           4      # )r6   F)Úupperr   )rF   r   rG   r   r   r   Úsolve_triangularrH   rz   Ú
reciprocalrV   rl   rm   )rK   r   ÚAÚprecision_matrixs   &   r   rƒ   Ú*LowRankMultivariateNormal.precision_matrixÅ   s¹   € ð ×*Ñ*×-Ñ-Ø×*Ñ*×4Ñ4°RÓ8õ9ð 	ô �L‰L×)Ñ)¨$×*@Ñ*@À'ÐQVÐ)ÓWˆä×Ò˜T×9Ñ9×DÑDÓFÓGÈ!Ï$É$ÐQRÍ(ÕRð 	ð  ×&Ñ&Ø×Ñ × 1Ñ 1Õ1°D×4EÑ4EÕEó
ð 	
r!   c                ó&   <€ V ^8„  d   QhRS[ RS[/# )r6   Úsample_shaper8   )r   r   )r:   r;   s   "€r   r<   r=   Ö   s   ø€ ÷ 	
ñ 	
¡Eð 	
¹Vñ 	
r!   c                óØ  € V P                  V4      pVR R V P                  P                  RR  ,           p\        W0P                  P
                  V P                  P                  R7      p\        W P                  P
                  V P                  P                  R7      pV P                  \        V P                  V4      ,           V P                  P                  4       V,          ,           # )N)ÚdtypeÚdevicer   )Ú_extended_shaper3   rC   r	   r2   rˆ   r‰   r   rF   rG   rr   )rK   r†   rC   ÚW_shapeÚeps_WÚeps_Ds   &&    r   ÚrsampleÚ!LowRankMultivariateNormal.rsampleÖ   s¨   € Ø×$Ñ$ \Ó2ˆØ˜˜�*˜tŸ™×4Ñ4°R°SÐ9Õ9ˆÜ  ·±·±ÀtÇxÁxÇÁÔWˆÜ  ¯h©h¯n©nÀTÇXÁXÇ_Á_ÔUˆà�H‰HÜ˜×6Ñ6¸Ó>õ?à×*Ñ*×/Ñ/Ó1°EÕ9õ:ð	
r!   c                óÊ  € V P                   '       d   V P                  V4       WP                  ,
          p\        V P                  V P
                  VV P                  4      p\        V P                  V P
                  V P                  4      pRV P                  ^ ,          \        P                  ! ^\        P                  ,          4      ,          V,           V,           ,          # )ç      à?g      à¿)rW   Ú_validate_sampler2   r0   rF   rG   rH   r)   rm   Úmathr&   Úpi)rK   ÚvalueÚdiffÚMÚlog_dets   &&   r   Úlog_probÚ"LowRankMultivariateNormal.log_probá   s°   € Ø××ÐØ×!Ñ! %Ô(Ø—x‘xÕˆÜ&Ø×*Ñ*Ø×(Ñ(ØØ×"Ñ"ó	
ˆô (Ø×*Ñ*Ø×(Ñ(Ø×"Ñ"ó
ˆð
 �t×(Ñ(¨Õ+¬d¯hªh°q¼4¿7¹7µ{Ó.CÕCÀgÕMÐPQÕQÕRÐRr!   c                óv  € \        V P                  V P                  V P                  4      pR V P                  ^ ,          R\
        P                  ! ^\
        P                  ,          4      ,           ,          V,           ,          p\        V P                  4      ^ 8X  d   V# VP                  V P                  4      # )r‘   g      ð?)r)   rF   rG   rH   rm   r“   r&   r”   Úlenrl   rV   )rK   r˜   ÚHs   &  r   ÚentropyÚ!LowRankMultivariateNormal.entropyò   s‹   € Ü'Ø×*Ñ*Ø×(Ñ(Ø×"Ñ"ó
ˆð
 �4×$Ñ$ QÕ'¨3´·²¸!¼d¿g¹g½+Ó1FÕ+FÕGÈ'ÕQÕRˆÜˆt× Ñ Ó! QÔ&ØˆHà—8‘8˜D×-Ñ-Ó.Ð.r!   )rH   rG   rF   r4   r3   r2   r`   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Úreal_vectorÚindependentÚrealÚpositiveÚarg_constraintsÚsupportÚhas_rsamplerJ   rV   Úpropertyrc   rh   r
   rn   rv   r{   rƒ   r   rU   rŽ   r™   rž   Ú__static_attributes__Ú__classdictcell__Ú__classcell__)rQ   r;   s   @@r   r   r   6   s  ù‡ € ñðF 	ˆ{×&Ñ&Ø�k×-Ò-¨k×.>Ñ.>ÀÓBØ�K×+Ò+¨K×,@Ñ,@À!ÓDð€Oð
 ×%Ñ%€GØ€K÷*Põ *P÷Xð  ÷ó ðð ÷ó ðð ÷8ó ð8ð
 ÷
ó ð
ð  ÷
ó ð
ð ÷
ó ð
ð  -2¯JªJ«L÷ 	
ò 	
òS÷"
/ò 
/r!   )r“   r   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Ú'torch.distributions.multivariate_normalr   r   Útorch.distributions.utilsr	   r
   Útorch.typesr   Ú__all__r    r)   r0   r   © r!   r   Ú<module>r·      sD   ðã ã Ý Ý +Ý 9ß Qß EÝ ð 'Ð
'€ò	$ò	ò1ôF/ ö F/r!   