a matrix on the left by the inverse, as:
    linalg.solve(A, B) == linalg.inv(A) @ B  # When B is a matrix

 It is always preferred to use "solve()" when possible, as it is
 faster and more numerically stable than computing the inverse
 explicitly.

See also:
 "torch.linalg.pinv()" computes the pseudoinverse (Moore-Penrose
 inverse) of matrices of any shape.

 "torch.linalg.solve()" computes "A"*.inv() @ *"B" with a
 numerically stable algorithm.

Parameters:
      A (Tensor) -- tensor of shape (, n, n)* where *** is
      zero or more batch dimensions consisting of invertible matrices.
Keyword Arguments:
      out (Tensor, optional) -- output tensor. Ignored if
      None. Default: None.
Raises:
      RuntimeError -- if the matrix "A" or any matrix in the batch
      of matrices "A" is not invertible.
Examples:
  >>> A = torch.randn(4, 4)
  >>> Ainv = torch.linalg.inv(A)
  >>> torch.dist(A @ Ainv, torch.eye(4))
