Crate quant_iron

Crate quant_iron 

Source
Expand description

A high-performance, hardware-accelerated modular quantum computing library with a focus on physical applications.

Quant-Iron provides tools to represent quantum states, apply standard quantum gates, perform measurements, build quantum circuits, and implement quantum algorithms.

§Features

  • Quantum State Representation: Create and manipulate predefined or custom quantum states of arbitrary qubit count.
  • Standard Operations: Hadamard (H), Pauli (X, Y, Z), CNOT, SWAP, Toffoli, Phase shifts, Rotations, and custom unitary operations.
  • Parametric Gates: Support for parametrised gates allowing for dynamic adjustment of gate parameters.
  • Hardware Acceleration: Optimised for parallel execution (CPU and GPU) and low memory overhead, with OpenCL-accelerated operations for enhanced performance on compatible hardware. (Requires gpu feature flag).
  • Circuit Builder: High-level interface for constructing quantum circuits with a fluent API and the circuit! macro with support for subroutines.
  • Measurement: Collapse wavefunction in the measurement basis with single or repeated measurements in the Computational, X, Y, and custom bases.
  • Pauli String Algebra:
    • Represent products of Pauli operators with complex coefficients (PauliString).
    • Construct sums of Pauli strings (SumOp) to define Hamiltonians and other observables.
    • Apply Pauli strings and their sums to quantum states.
    • Calculate expectation values of SumOp with respect to a quantum state.
    • Apply exponentials of PauliString instances to states.
  • Predefined Quantum Models:
    • Heisenberg Model: Generate Hamiltonians for 1D and 2D anisotropic Heisenberg models using SumOp.
    • Ising Model: Generate Hamiltonians for 1D and 2D Ising models with configurable site-specific or uniform interactions and fields using SumOp.
  • Predefined Quantum Algorithms:
    • Quantum Fourier Transform (QFT): Efficiently compute the QFT for a given number of qubits.
    • Inverse Quantum Fourier Transform (IQFT): Efficiently compute the inverse QFT for a given number of qubits.
  • OpenQASM 3.0 Support: Convert circuits to OpenQASM 3.0 for interoperability with other quantum computing platforms.
  • Extensibility: Easily extensible for custom gates and measurement bases.
  • Error Handling: Comprehensive error handling for invalid operations and state manipulations.
  • Quality of Life: Implementation of std and arithmetic traits for easy, intuitive usage.

§Important Components

  • Circuit: Provides the Circuit and CircuitBuilder for constructing quantum circuits.
  • Circuit! - Provides a macro for easily constructing circuits.
  • Components: Contains the core components of the library:
    • Operator: Contains standard quantum gates and operators like Hadamard
    • State: Represents quantum states and provides methods for state manipulation.
    • PauliString: Represents products of Pauli operators with complex coefficients.
    • SumOp: Represents sums of Pauli strings for defining Hamiltonians and other observables.
    • MeasurementResult: Represents the result of a measurement operation, including indices, basis, outcomes, and new state.
  • Subroutine: Contains the Subroutine for defining reusable quantum subroutines.
  • Models: Contains predefined quantum models like the Heisenberg and Ising models.
  • Algorithms: Contains predefined quantum algorithms like time evolution.

Refer to the examples in the examples directory for practical usage of the library.

§Feature Flags

  • gpu: Enables OpenCL support for hardware acceleration for operations on compatible hardware.

Re-exports§

pub use crate::components::measurement::MeasurementBasis;
pub use crate::components::measurement::MeasurementResult;
pub use crate::components::operator::CNOT;
pub use crate::components::operator::Hadamard;
pub use crate::components::operator::Identity;
pub use crate::components::operator::Operator;
pub use crate::components::operator::Pauli;
pub use crate::components::operator::PhaseS;
pub use crate::components::operator::PhaseSdag;
pub use crate::components::operator::PhaseShift;
pub use crate::components::operator::PhaseT;
pub use crate::components::operator::PhaseTdag;
pub use crate::components::operator::RotateX;
pub use crate::components::operator::RotateY;
pub use crate::components::operator::RotateZ;
pub use crate::components::operator::SWAP;
pub use crate::components::operator::Toffoli;
pub use crate::components::operator::Unitary2;
pub use crate::components::operator::Matchgate;
pub use crate::components::state::ChainableState;
pub use crate::components::state::State;
pub use crate::components::pauli_string::PauliString;
pub use crate::components::pauli_string::SumOp;
pub use crate::circuit::Circuit;
pub use crate::circuit::CircuitBuilder;
pub use crate::subroutine::Subroutine;
pub use crate::models::heisenberg;
pub use crate::models::ising;
pub use crate::algorithms::time_evolution;
pub use crate::components::parametric::parameter;
pub use crate::components::parametric::parametric_gate;

Modules§

algorithms
Algorithms
circuit
components
Components
errors
models
Models
subroutine

Macros§

circuit
Creates a Circuit object using a domain-specific language.