Qx.Validation (Qx - Quantum Computing Simulator v0.8.0)
View SourceCentralized validation functions for quantum operations.
Provides consistent error handling and validation across all Qx modules.
Examples
# Validate single qubit state
iex> q = Qx.Qubit.new()
iex> Qx.Validation.valid_qubit?(q)
true
# Validate qubit index
iex> Qx.Validation.validate_qubit_index!(0, 3)
:ok
iex> Qx.Validation.validate_qubit_index!(5, 3)
** (Qx.QubitIndexError) Qubit index 5 out of range (0..2)
Summary
Functions
@spec valid_qubit?(Nx.Tensor.t(), float()) :: boolean()
Validates a single qubit state.
A valid qubit must:
- Have shape
{2} - Be normalized (|α|² + |β|² = 1)
Parameters
state- Nx tensor representing qubit statetolerance- Normalization tolerance (default: 1.0e-6)
Examples
iex> q = Qx.Qubit.new()
iex> Qx.Validation.valid_qubit?(q)
true
iex> invalid = Nx.tensor([Complex.new(1.0, 0.0), Complex.new(1.0, 0.0)], type: :c64)
iex> Qx.Validation.valid_qubit?(invalid)
false
iex> wrong_shape = Nx.tensor([Complex.new(1.0, 0.0)], type: :c64)
iex> Qx.Validation.valid_qubit?(wrong_shape)
false
@spec valid_register?(%{state: Nx.Tensor.t(), num_qubits: integer()}, float()) :: boolean()
Validates a quantum register state.
Requirements:
- Shape must be
{2^num_qubits} - Must be normalized
Examples
iex> reg = Qx.Register.new(2)
iex> Qx.Validation.valid_register?(reg)
true