parameters: (self, method: str, lin, y, x0, rtol, atol, max_iter, trj: bool)
docstring: Solve the system of linear equations A · x = y.
          This method need not provide a gradient for the operation.
  
          Args:
              method: Which algorithm to use. One of `('auto', 'CG', 'CG-adaptive')`.
              lin: Linear operation. One of
                  * sparse/dense matrix valid for all instances
                  * tuple/list of sparse/dense matrices for varying matrices along batch, must have the same nonzero locations.
                  * linear function A(x), must be called on all instances in parallel
              y: target result of A * x. 2nd order tensor (batch, vector) or list of vectors.
              x0: Initial guess of size (batch, parameters)
              rtol: Relative tolerance of size (batch,)
              atol: Absolute tolerance of size (batch,)
              max_iter: Maximum number of iterations of size (batch,)
              trj: Whether to record and return the optimization trajectory as a `List[SolveResult]`.
  
          Returns:
              result: `SolveResult` or `List[SolveResult]`, depending on `trj`.
docstring_summary: Solve the system of linear equations A · x = y.
          This method need not provide a gradient for the operation.
docstring_tokens: Solve the system of linear equations A · x = y . This method need not provide a gradient for the operation .
function: def linear_solve(self, method: str, lin, y, x0, rtol, atol, max_iter, trj: bool) -> SolveResult or List[SolveResult]:
          """
          Solve the system of linear equations A · x = y.
          This method need not provide a gradient for the operation.
  
          Args:
              method: Which algorithm to use. One of `('auto', 'CG', 'CG-adaptive')`.
              lin: Linear operation. One of
                  * sparse/dense matrix valid for all instances
                  * tuple/list of sparse/dense matrices for varying matrices along batch, must have the same nonzero locations.
                  * linear function A(x), must be called on all instances in parallel
              y: target result of A * x. 2nd order tensor (batch, vector) or list of vectors.
              x0: Initial guess of size (batch, parameters)
              rtol: Relative tolerance of size (batch,)
              atol: Absolute tolerance of size (batch,)
              max_iter: Maximum number of iterations of size (batch,)
              trj: Whether to record and return the optimization trajectory as a `List[SolveResult]`.
  
          Returns:
              result: `SolveResult` or `List[SolveResult]`, depending on `trj`.
          """
          if method == 'auto':
              return self.conjugate_gradient_adaptive(lin, y, x0, rtol, atol, max_iter, trj)
          elif method == 'CG':
              return self.conjugate_gradient(lin, y, x0, rtol, atol, max_iter, trj)
          elif method == 'CG-adaptive':
              return self.conjugate_gradient_adaptive(lin, y, x0, rtol, atol, max_iter, trj)
          else:
              raise NotImplementedError(f"Method '{method}' not supported for linear solve.")
function_tokens: def linear_solve ( self , method : str , lin , y , x0 , rtol , atol , max_iter , trj : bool ) -> SolveResult or List [ SolveResult ] : if method == 'auto' : return self . conjugate_gradient_adaptive ( lin , y , x0 , rtol , atol , max_iter , trj ) elif method == 'CG' : return self . conjugate_gradient ( lin , y , x0 , rtol , atol , max_iter , trj ) elif method == 'CG-adaptive' : return self . conjugate_gradient_adaptive ( lin , y , x0 , rtol , atol , max_iter , trj ) else : raise NotImplementedError ( f"Method '{method}' not supported for linear solve." )