docs: def corrcoef(x, y=None, rowvar=1, bias=0, ddof=None, weights=None,
               repeat_weights=0):
      """
      Return correlation coefficients.
  
      Please refer to the documentation for `cov` for more detail.  The
      relationship between the correlation coefficient matrix, `P`, and the
      covariance matrix, `C`, is
  
      .. math:: P_{ij} = \\frac{ C_{ij} } { \\sqrt{ C_{ii} * C_{jj} } }
  
      The values of `P` are between -1 and 1, inclusive.
  
      Parameters
      ----------
      x : array_like
          A 1-D or 2-D array containing multiple variables and observations.
          Each row of `m` represents a variable, and each column a single
          observation of all those variables. Also see `rowvar` below.
      y : array_like, optional
          An additional set of variables and observations. `y` has the same
          shape as `m`.
      rowvar : int, optional
          If `rowvar` is non-zero (default), then each row represents a
          variable, with observations in the columns. Otherwise, the relationship
          is transposed: each column represents a variable, while the rows
          contain observations.
      bias : int, optional
          Default normalization is by ``(N - 1)``, where ``N`` is the number of
          observations (unbiased estimate). If `bias` is 1, then
          normalization is by ``N``. These values can be overridden by using
          the keyword ``ddof`` in numpy versions >= 1.5.
      ddof : {None, int}, optional
          .. versionadded:: 1.5
          If not ``None`` normalization is by ``(N - ddof)``, where ``N`` is
          the number of observations; this overrides the value implied by
          ``bias``. The default value is ``None``.
      weights : array-like, optional
          A 1-D array of weights with a length equal to the number of
          observations.
      repeat_weights : int, optional
          The default treatment of weights in the weighted covariance is to first
          normalize them to unit sum and use the biased weighted covariance
          equation. If `repeat_weights` is 1 then the weights must represent an
          integer number of occurrences of each observation and both a biased and
          unbiased weighted covariance is defined because the total sample size
          can be determined.
  
      Returns
      -------
      out : ndarray
          The correlation coefficient matrix of the variables.
  
      See Also
      --------
      cov : Covariance matrix
  
      """
      import numpy as np
      c = cov(x, y, rowvar, bias, ddof, weights, repeat_weights)
      if c.size == 0:
          # handle empty arrays
          return c
      try:
          d = np.diag(c)
      except ValueError:  # scalar covariance
          return 1
      return c / np.sqrt(np.multiply.outer(d, d))