class_docstr: Density operator for representing mixed states.
  
  TODO: Density operator support for Qubits
  
  Parameters
  ==========
  
  values : tuples/lists
  Each tuple/list should be of form (state, prob) or [state,prob]
  
  Examples
  ========
  
  Create a density operator with 2 states represented by Kets.
  
  >>> from sympy.physics.quantum.state import Ket
  >>> from sympy.physics.quantum.density import Density
  >>> d = Density([Ket(0), 0.5], [Ket(1),0.5])
  >>> d
  Density((|0>, 0.5),(|1>, 0.5))
code: def _generate_outer_prod(self, arg1, arg2):
      c_part1, nc_part1 = arg1.args_cnc()
      c_part2, nc_part2 = arg2.args_cnc()
  
      if len(nc_part1) == 0 or len(nc_part2) == 0:
          raise ValueError(
              "Atleast one-pair of"
              " Non-commutative instance required"
              " for outer product."
          )
  
      # Muls of Tensor Products should be expanded
      # before this function is called
      if (
          isinstance(nc_part1[0], TensorProduct)
          and len(nc_part1) == 1
          and len(nc_part2) == 1
      ):
          op = tensor_product_simp(nc_part1[0] * Dagger(nc_part2[0]))
      else:
          op = Mul(*nc_part1) * Dagger(Mul(*nc_part2))
  
      return Mul(*c_part1) * Mul(*c_part2) * op
  
imports: from itertools import product
  from sympy.core.add import Add
  from sympy.core.containers import Tuple
  from sympy.core.function import expand
  from sympy.core.mul import Mul
  from sympy.core.singleton import S
  from sympy.functions.elementary.exponential import log
  from sympy.matrices.dense import MutableDenseMatrix
  from sympy.printing.pretty.stringpict import prettyForm
  from sympy.physics.quantum.dagger import Dagger
  from sympy.physics.quantum.operator import HermitianOperator
  from sympy.physics.quantum.represent import represent
  from sympy.physics.quantum.matrixutils import numpy_ndarray, scipy_sparse_matrix, to_numpy
  from sympy.physics.quantum.tensorproduct import TensorProduct, tensor_product_simp
  from sympy.physics.quantum.trace import Tr
label_desc: Use image node_id 8 for calling the Density obj's underlying member method code with example usage: obj._generate_outer_prod(arg1, arg2) and returns: unknown