class_docstr: Linear Elliptical Slice Sampler.
  
  Ideas:
  - Add batch support, broadcasting over parallel chains.
  - Optimize computations if possible, potentially with torch.compile.
  - Extend fixed features constraint to general linear equality constraints.
class_docstr_tok: ["Linear","Elliptical","Slice","Sampler",".","Ideas",":","-","Add","batch","support",",","broadcasting","over","parallel","chains",".","-","Optimize","computations","if","possible",",","potentially","with","torch.compile",".","-","Extend","fixed","features","constraint","to","general","linear","equality","constraints","."]
docstr: Take a step, return the new sample, update the internal state.
  
  Returns:
      A `d x 1`-dim sample from the domain.
docstr_tok: ["Take","a","step",",","return","the","new","sample",",","update","the","internal","state",".","Returns",":","A","`","d","x","1","`","-dim","sample","from","the","domain","."]
code: def step(self) -> Tensor:
      r"""Take a step, return the new sample, update the internal state.
  
      Returns:
          A `d x 1`-dim sample from the domain.
      """
      nu = torch.randn_like(self._z)
      theta = self._draw_angle(nu=nu)
      z = self._get_cart_coords(nu=nu, theta=theta)
      self._z[:] = z
      x = self._untransform(z)
      self._x[:] = x
      self._lifetime_samples += 1
      if self.check_feasibility and (not self._is_feasible(self._x)):
          Axmb = self.A @ self._x - self.b
          violated_indices = Axmb > 0
          raise RuntimeError(
              "Sampling resulted in infeasible point. \n\t- Number "
              f"of violated constraints: {violated_indices.sum()}."
              f"\n\t- Magnitude of violations: {Axmb[violated_indices]}"
              "\n\t- If the error persists, please report this bug on GitHub."
          )
      return x
  
imports: from __future__ import annotations
  import math
  from typing import List, Optional, Tuple, Union
  import torch
  from botorch.utils.sampling import PolytopeSampler
  from torch import Tensor
label_desc: Use image node_id 6 for calling the LinearEllipticalSliceSampler obj's underlying member method code with example usage: obj.step() and returns: x