class_docstr: A multivariate t-distributed random variable.
  
  The `loc` parameter specifies the location. The `shape` parameter specifies
  the positive semidefinite shape matrix. The `df` parameter specifies the
  degrees of freedom.
  
  In addition to calling the methods below, the object itself may be called
  as a function to fix the location, shape matrix, and degrees of freedom
  parameters, returning a "frozen" multivariate t-distribution random.
  
  Methods
  -------
  ``pdf(x, loc=None, shape=1, df=1, allow_singular=False)``
      Probability density function.
  ``logpdf(x, loc=None, shape=1, df=1, allow_singular=False)``
      Log of the probability density function.
  ``rvs(loc=None, shape=1, df=1, size=1, random_state=None)``
      Draw random samples from a multivariate t-distribution.
  
  Parameters
  ----------
  x : array_like
      Quantiles, with the last axis of `x` denoting the components.
  %(_mvt_doc_default_callparams)s
  %(_doc_random_state)s
  
  Notes
  -----
  %(_mvt_doc_callparams_note)s
  The matrix `shape` must be a (symmetric) positive semidefinite matrix. The
  determinant and inverse of `shape` are computed as the pseudo-determinant
  and pseudo-inverse, respectively, so that `shape` does not need to have
  full rank.
  
  The probability density function for `multivariate_t` is
  
  .. math::
  
      f(x) = \frac{\Gamma(\nu + p)/2}{\Gamma(\nu/2)\nu^{p/2}\pi^{p/2}|\Sigma|^{1/2}}
             \exp\left[1 + \frac{1}{\nu} (\mathbf{x} - \boldsymbol{\mu})^{\top}
             \boldsymbol{\Sigma}^{-1}
             (\mathbf{x} - \boldsymbol{\mu}) \right]^{-(\nu + p)/2},
  
  where :math:`p` is the dimension of :math:`\mathbf{x}`,
  :math:`\boldsymbol{\mu}` is the :math:`p`-dimensional location,
  :math:`\boldsymbol{\Sigma}` the :math:`p \times p`-dimensional shape
  matrix, and :math:`\nu` is the degrees of freedom.
  
  .. versionadded:: 1.6.0
  
  Examples
  --------
  >>> import matplotlib.pyplot as plt
  >>> from scipy.stats import multivariate_t
  >>> x, y = np.mgrid[-1:3:.01, -2:1.5:.01]
  >>> pos = np.dstack((x, y))
  >>> rv = multivariate_t([1.0, -0.5], [[2.1, 0.3], [0.3, 1.5]], df=2)
  >>> fig, ax = plt.subplots(1, 1)
  >>> ax.set_aspect('equal')
  >>> plt.contourf(x, y, rv.pdf(pos))
docstr: Utility method `pdf`, `logpdf` for parameters.
  
  Parameters
  ----------
  x : ndarray
      Points at which to evaluate the log of the probability density
      function.
  loc : ndarray
      Location of the distribution.
  prec_U : ndarray
      A decomposition such that `np.dot(prec_U, prec_U.T)` is the inverse
      of the shape matrix.
  log_pdet : float
      Logarithm of the determinant of the shape matrix.
  df : float
      Degrees of freedom of the distribution.
  dim : int
      Dimension of the quantiles x.
  rank : int
      Rank of the shape matrix.
  
  Notes
  -----
  As this function does no argument checking, it should not be called
  directly; use 'logpdf' instead.
docstr_tok: ["Utility","method","`","pdf","`",",","`","logpdf","`","for","parameters",".","Parameters","--","--","--","--","--","x",":","ndarray","Points","at","which","to","evaluate","the","log","of","the","probability","density","function",".","loc",":","ndarray","Location","of","the","distribution",".","prec_U",":","ndarray","A","decomposition","such","that","`","np.dot","(","prec_U",",","prec_U.T",")","`","is","the","inverse","of","the","shape","matrix",".","log_pdet",":","float","Logarithm","of","the","determinant","of","the","shape","matrix",".","df",":","float","Degrees","of","freedom","of","the","distribution",".","dim",":","int","Dimension","of","the","quantiles","x.","rank",":","int","Rank","of","the","shape","matrix",".","Notes","--","--","-","As","this","function","does","no","argument","checking",",","it","should","not","be","called","directly",";","use","'logpdf","'","instead","."]
code: def _logpdf(self, x, loc, prec_U, log_pdet, df, dim, rank):
      """Utility method `pdf`, `logpdf` for parameters.
  
      Parameters
      ----------
      x : ndarray
          Points at which to evaluate the log of the probability density
          function.
      loc : ndarray
          Location of the distribution.
      prec_U : ndarray
          A decomposition such that `np.dot(prec_U, prec_U.T)` is the inverse
          of the shape matrix.
      log_pdet : float
          Logarithm of the determinant of the shape matrix.
      df : float
          Degrees of freedom of the distribution.
      dim : int
          Dimension of the quantiles x.
      rank : int
          Rank of the shape matrix.
  
      Notes
      -----
      As this function does no argument checking, it should not be called
      directly; use 'logpdf' instead.
  
      """
      if df == np.inf:
          return multivariate_normal._logpdf(
              x, loc, prec_U, log_pdet, rank
          )
  
      dev = x - loc
      maha = np.square(np.dot(dev, prec_U)).sum(axis=-1)
  
      t = 0.5 * (df + dim)
      A = gammaln(t)
      B = gammaln(0.5 * df)
      C = dim / 2.0 * np.log(df * np.pi)
      D = 0.5 * log_pdet
      E = -t * np.log(1 + (1.0 / df) * maha)
  
      return _squeeze_output(A - B - C - D + E)
  
imports: import numpy
  import scipy.linalg
  from scipy._lib import doccer
  from scipy.special import gammaln
  from scipy._lib._util import check_random_state
  from scipy.stats import mvn
label_desc: Use image node_id 5 for calling the multivariate_t_gen obj's underlying member method code with example usage: obj._logpdf(x, loc, prec_U, log_pdet, df, dim, rank) and returns: _squeeze_output, multivariate_normal