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
gpufeature 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
SumOpwith respect to a quantum state. - Apply exponentials of
PauliStringinstances to states.
- Represent products of Pauli operators with complex coefficients (
- 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.
- Heisenberg Model: Generate Hamiltonians for 1D and 2D anisotropic Heisenberg models using
- 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
stdand arithmetic traits for easy, intuitive usage.
§Important Components
- Circuit: Provides the
CircuitandCircuitBuilderfor 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
Subroutinefor 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
Circuitobject using a domain-specific language.