code: def cumulative_distribution(self, X):
          
          self.check_fit()
  
          U, V = self.split_matrix(X)
  
          if (V == 0).all() or (U == 0).all():
              return np.zeros(V.shape[0])
  
          else:
              cdfs = [
                  np.power(
                      np.power(U[i], -self.theta) + np.power(V[i], -self.theta) - 1,
                      -1.0 / self.theta
                  )
                  if (U[i] > 0 and V[i] > 0) else 0
                  for i in range(len(U))
              ]
  
              return np.array([max(x, 0) for x in cdfs])
docs: Computes the cumulative distribution function for the copula, :math:`C(u, v)`
  
          Args:
              X: `np.ndarray`
  
          Returns:
              np.array: cumulative probability