class_docstr: Pairwise likelihood using probit function
  
  Given two items v and u with utilities f(v) and f(u), the probability that we
  prefer v over u with probability std_normal_cdf((f(v) - f(u))/sqrt(2)). Note
  that this formulation implicitly assume the noise term is fixed at 1.
code: def p(self, utility: Tensor, D: Tensor, log: bool = False) -> Tensor:
      z = self._calc_z(utility=utility, D=D)
      std_norm = torch.distributions.normal.Normal(
          torch.zeros(1, dtype=z.dtype, device=z.device),
          torch.ones(1, dtype=z.dtype, device=z.device),
      )
      return std_norm.cdf(z)
  
imports: from __future__ import annotations
  import math
  from abc import ABC, abstractmethod
  from typing import Any, Tuple
  import torch
  from botorch.utils.probability.utils import log_ndtr, log_phi, standard_normal_log_hazard
  from gpytorch.likelihoods import Likelihood
  from torch import Tensor
  from torch.distributions import Bernoulli
label_desc: Use image node_id 3 for calling the PairwiseProbitLikelihood obj's underlying member method code with example usage: obj.p(utility, D, log) and returns: std_norm