cirq.final_density_matrix(program: cirq.CIRCUIT_LIKE, *, noise: cirq.NOISE_MODEL_LIKE = None, initial_state: Union[int, Sequence[Union[int, float, complex]], numpy.ndarray] = 0, param_resolver: Optional[Union[cirq.ParamResolver, Dict[Union[str, sympy.core.symbol.Symbol], Union[float, str, sympy.core.basic.Basic]]]] = None, qubit_order: Union[cirq.ops.qubit_order.QubitOrder, Iterable[cirq.ops.raw_types.Qid]] = <cirq.ops.qubit_order.QubitOrder object>, dtype: Type[numpy.number] = <class 'numpy.complex64'>, seed: Optional[Union[int, numpy.random.mtrand.RandomState]] = None, ignore_measurement_results: bool = True) → np.ndarray[source]

Returns the density matrix resulting from simulating the circuit.

Note that, unlike cirq.final_wavefunction, terminal measurements
are not omitted. Instead, all measurements are treated as sources
of decoherence (i.e. measurements do not collapse, they dephase). See
ignore_measurement_results for details.
  • program – The circuit, gate, operation, or tree of operations to apply to the initial state in order to produce the result.

  • noise – Noise model to use while running the simulation.

  • param_resolver – Parameters to run with the program.

  • qubit_order – Determines the canonical ordering of the qubits. This is often used in specifying the initial state, i.e. the ordering of the computational basis states.

  • initial_state – If an int, the state is set to the computational basis state corresponding to this state. Otherwise if this is a np.ndarray it is the full initial state. In this case it must be the correct size, be normalized (an L2 norm of 1), and be safely castable to an appropriate dtype for the simulator.

  • dtype – The numpy.dtype used by the simulation. Typically one of numpy.complex64 or numpy.complex128.

  • seed – The random seed to use for this simulator.

  • ignore_measurement_results – Defaults to True. When True, the returned density matrix is not conditioned on any measurement results. For example, this effectively replaces computational basis measurement with dephasing noise. The result density matrix in this case should be unique. When False, the result will be conditioned on sampled (but unreported) measurement results. In this case the result may vary from call to call.


The density matrix for the state which results from applying the given operations to the desired initial state.