docstr: Performs a single matrix decomposition step.
docstr_tok: ["Performs","a","single","matrix","decomposition","step","."]
code: def update_(self, eps: float = 1e-10) -> None:
      r"""Performs a single matrix decomposition step."""
      i = self.step
      L = self.tril
      Lii = self.tril[..., i, i].clone().clip(min=0).sqrt()
  
      # Finalize `i-th` row and column of Cholesky factor
      L[..., i, i] = Lii
      L[..., i, i + 1 :] = 0
      L[..., i + 1 :, i] = L[..., i + 1 :, i].clone() / Lii.unsqueeze(
          -1
      )
  
      # Update `tril(L[i + 1:, i + 1:])` to be the lower triangular part
      # of the Schur complement of `cov` with respect to `cov[:i, :i]`.
      rank1 = L[..., i + 1 :, i : i + 1].clone()
      rank1 = (rank1 * rank1.transpose(-1, -2)).tril()
      L[..., i + 1 :, i + 1 :] = (
          L[..., i + 1 :, i + 1 :].clone() - rank1
      )
      L[Lii <= i * eps, i:, i] = 0  # numerical stability clause
      self.step += 1
  
file_path: botorch/botorch/utils/probability/linalg.py
imports: from __future__ import annotations
  from dataclasses import dataclass, InitVar
  from itertools import chain
  from typing import Any, Optional, Sequence
  import torch
  from botorch.utils.probability.utils import swap_along_dim_
  from linear_operator.utils.errors import NotPSDError
  from torch import LongTensor, Tensor
  from torch.nn.functional import pad
label_desc: Use image node_id 3 for calling the PivotedCholesky obj's underlying member method code with example usage: obj.update_(eps) without return types