class_docstr: Preconditioner of the form :math:`Q=(Q_ff + σ²I)⁻¹`,
  where L is lower triangular with :math: `LLᵀ = Kᵤᵤ`
  :math:`A = σ⁻²L⁻¹Kᵤₓ` and :math:`B = AAᵀ + I = LᵦLᵦᵀ`
class_docstr_tok: ["Preconditioner","of","the","form",":","math",":","`","Q=","(","Q_ff","+","\u03c3\u00b2I",")","\u207b\u00b9","`",",","where","L","is","lower","triangular","with",":","math",":","`","LL\u1d40","=","K\u1d64\u1d64","`",":","math",":","`","A","=","\u03c3\u207b\u00b2L\u207b\u00b9K\u1d64\u2093","`","and",":","math",":","`","B","=","AA\u1d40","+","I","=","L\u1d66L\u1d66\u1d40","`"]
docstr: Computes :math:`vᵀQ^{-1}` and `vᵀQ^{-1}v`. Note that this is
  implemented as multipication of a row vector on the right.
  
  :param v: Vector we want to backsolve.
docstr_tok: ["Computes",":","math",":","`","v\u1d40Q^","{","-1","}","`","and","`","v\u1d40Q^","{","-1","}","v","`",".","Note","that","this","is","implemented","as","multipication","of","a","row","vector","on","the","right",".",":","param","v",":","Vector","we","want","to","backsolve","."]
code: def __call__(self, v: TensorType) -> Tuple[tf.Tensor, tf.Tensor]:
      """
      Computes :math:`vᵀQ^{-1}` and `vᵀQ^{-1}v`. Note that this is
      implemented as multipication of a row vector on the right.
  
      :param v: Vector we want to backsolve.
      """
      sigma_sq = self.sigma_sq
      A = self.A
      LB = self.LB
  
      trans = tf.transpose
      trisolve = tf.linalg.triangular_solve
      matmul = tf.linalg.matmul
  
      v = trans(v)
      Av = matmul(A, v)
      LBinvAv = trisolve(LB, Av)
      LBinvtLBinvAv = trisolve(trans(LB), LBinvAv, lower=False)
  
      rv = v - matmul(A, LBinvtLBinvAv, transpose_a=True)
      vtrv = tf.reduce_sum(rv * v)
      return trans(rv) / sigma_sq, vtrv / sigma_sq
  
imports: from typing import Any, List, NamedTuple, Optional, Tuple
  import tensorflow
  from check_shapes import check_shapes, inherit_check_shapes
  from ..base import InputData, MeanAndVariance, Parameter, RegressionData, TensorType
  from ..config import default_float, default_int
  from ..covariances import Kuf
  from ..utilities import add_noise_cov, assert_params_false, to_default_float
  from .sgpr import SGPR
label_desc: Use image node_id 2 for calling the NystromPreconditioner obj's underlying member method code with example usage: obj.__call__(v) and returns: unknown,  unknown