qml.devices.qubit.simulate

simulate(circuit, debugger=None, state_cache=None, **execution_kwargs)[source]

Simulate a single quantum script.

This is an internal function that is used by``default.qubit``.

Parameters
  • circuit (QuantumTape) – The single circuit to simulate

  • debugger (_Debugger) – The debugger to use

  • state_cache=None (Optional[dict]) – A dictionary mapping the hash of a circuit to the pre-rotated state. Used to pass the state between forward passes and vjp calculations.

  • rng (Optional[numpy.random._generator.Generator]) – A NumPy random number generator.

  • prng_key (Optional[jax.random.PRNGKey]) – An optional jax.random.PRNGKey. This is the key to the JAX pseudo random number generator. If None, a random key will be generated. Only for simulation using JAX.

  • interface (str) – The machine learning interface to create the initial state with

  • postselect_mode (str) – Configuration for handling shots with mid-circuit measurement postselection. Use "hw-like" to discard invalid shots and "fill-shots" to keep the same number of shots. Default is None.

  • mcm_method (str) – Strategy to use when executing circuits with mid-circuit measurements. "deferred" is ignored. If mid-circuit measurements are found in the circuit, the device will use "tree-traversal" if specified and the "one-shot" method otherwise. For usage details, please refer to the main measurements page.

Returns

The results of the simulation

Return type

tuple(TensorLike)

Note that this function can return measurements for non-commuting observables simultaneously.

This function assumes that all operations provide matrices.

>>> qs = qml.tape.QuantumScript([qml.RX(1.2, wires=0)], [qml.expval(qml.Z(0)), qml.probs(wires=(0,1))])
>>> simulate(qs)
(0.36235775447667357,
tensor([0.68117888, 0.        , 0.31882112, 0.        ], requires_grad=True))

Contents

Using PennyLane

Release news

Development

API

Internals