unitaria.Simulator

class unitaria.Simulator(scheme: str = 'exact', default_precision: float | None = None, default_failure_probability: float | None = None, seed: SeedSequence | None = None, count_gates: bool = False, qubits: int = 100)[source]

Bases: Estimator

Estimator based on matrix-arithmetic simulation

Parameters:
  • scheme – The measurement scheme, which is simulated. Should be one of "exact" or "monte-carlo".

  • default_precision – Default for the precision parameter in estimate_norm.

  • default_failure_probability – Default for the failure_probability parameter in estimate_norm.

  • count_gates – Wether to count the number of gates. May be much slower.

  • qubits – Determines how many ancillae are passed to Node.circuit. Specifically, the total qubits passed to that function will be the maximum of qubits or the qubits required to encode the node. If you want to estimate gates for a specific device, set qubits to the number of qubits in that device. This parameter is ignored if count_gates is not set.

count_gates(node: Node, precision: float | None = None, failure_probability: float | None = None, samples: int | None = None)[source]

Count the number of gates required to measure the norm of the given block encoding.

Parameters:
  • node – The node representing the vector of which to compute the norm.

  • precision – The absolute precision, with which the norm should be computed. If None, self.default_precision is used instead.

  • failure_probability – The maximum allowed failure probability, with which the absolute error of the estimate may exceed the given precision. If None, self.default_failure_probability is used instead.

  • samples – Number of times that the block encoding is executed. If given, overrides the number of samples computed from precision and failure_probability.

Raises:

ValueError – If the scheme is invalid or if arguments are incompatible with the scheme.

estimate_norm(node: Node, precision: float | None = None, failure_probability: float | None = None) → float[source]

Estimate the norm of the given block encoding.

The block encoding must represent a vector. The returned value is guaranteed to lie in the range [0, node.normalization].

The implementors of this method are free to interpret the precision``argument loosely, and ignore the ``failure_probability argument.

Parameters:
  • node – The node representing the vector of which to compute the norm.

  • precision – The absolute precision, with which the norm should be computed. If None, self.default_precision is used instead.

  • failure_probability – The maximum allowed failure probability, with which the absolute error of the estimate may exceed the given precision. If None, self.default_failure_probability is used instead.

Raises:

NotImplementedError – If the method is not implemented.