Qx.Behaviours.QuantumState behaviour (Qx - Quantum Computing Simulator v0.6.0)

View Source

Behaviour for quantum state manipulation.

This behaviour ensures consistent API across Circuit and Calculation modes. Any module implementing this behaviour must provide a complete set of quantum gate operations and state inspection functions.

Example

defmodule MyQuantumState do
  @behaviour Qx.Behaviours.QuantumState

  @impl true
  def h(state, qubit), do: # ... implementation

  @impl true
  def state_vector(state), do: # ... implementation

  # ... other required callbacks
end

Summary

Types

angle()

@type angle() :: number()

qubit_index()

@type qubit_index() :: non_neg_integer()

state()

@type state() :: any()

Callbacks

ccx(state, qubit_index, qubit_index, qubit_index)

@callback ccx(state(), qubit_index(), qubit_index(), qubit_index()) :: state()

cx(state, qubit_index, qubit_index)

@callback cx(state(), qubit_index(), qubit_index()) :: state()

cz(state, qubit_index, qubit_index)

@callback cz(state(), qubit_index(), qubit_index()) :: state()

h(state, qubit_index)

@callback h(state(), qubit_index()) :: state()

phase(state, qubit_index, angle)

@callback phase(state(), qubit_index(), angle()) :: state()

rx(state, qubit_index, angle)

@callback rx(state(), qubit_index(), angle()) :: state()

ry(state, qubit_index, angle)

@callback ry(state(), qubit_index(), angle()) :: state()

rz(state, qubit_index, angle)

@callback rz(state(), qubit_index(), angle()) :: state()

s(state, qubit_index)

@callback s(state(), qubit_index()) :: state()

state_vector(state)

@callback state_vector(state()) :: Nx.Tensor.t()

t(state, qubit_index)

@callback t(state(), qubit_index()) :: state()

valid?(state)

@callback valid?(state()) :: boolean()

x(state, qubit_index)

@callback x(state(), qubit_index()) :: state()

y(state, qubit_index)

@callback y(state(), qubit_index()) :: state()

z(state, qubit_index)

@callback z(state(), qubit_index()) :: state()