Qx.Validation (Qx - Quantum Computing Simulator v0.8.0)

View Source

Centralized 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

Validates a single qubit state.

Validates a quantum register state.

Functions

valid_qubit?(state, tolerance \\ 1.0e-6)

@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 state
  • tolerance - 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

valid_register?(map, tolerance \\ 1.0e-6)

@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