quantrs2_core/
lib.rs

1//! Core types and traits for the QuantRS2 quantum computing framework.
2//!
3//! This crate provides the foundational types and traits used throughout
4//! the QuantRS2 ecosystem, including qubit identifiers, quantum gates,
5//! and register representations.
6
7pub mod batch;
8pub mod bosonic;
9pub mod cartan;
10pub mod characterization;
11pub mod complex_ext;
12pub mod controlled;
13pub mod decomposition;
14pub mod eigensolve;
15pub mod error;
16pub mod error_correction;
17pub mod fermionic;
18pub mod gate;
19pub mod gpu;
20pub mod hhl;
21pub mod kak_multiqubit;
22pub mod matrix_ops;
23pub mod mbqc;
24pub mod memory_efficient;
25pub mod operations;
26pub mod optimization;
27pub mod parametric;
28pub mod qaoa;
29pub mod qml;
30pub mod qpca;
31pub mod quantum_channels;
32pub mod quantum_counting;
33pub mod quantum_walk;
34pub mod qubit;
35pub mod register;
36pub mod shannon;
37pub mod simd_ops;
38pub mod synthesis;
39pub mod tensor_network;
40pub mod testing;
41pub mod topological;
42pub mod variational;
43pub mod variational_optimization;
44pub mod zx_calculus;
45pub mod zx_extraction;
46
47/// Re-exports of commonly used types and traits
48pub mod prelude {
49    // Import specific items from each module to avoid ambiguous glob re-exports
50    pub use crate::batch::execution::{
51        create_optimized_executor, BatchCircuit, BatchCircuitExecutor,
52    };
53    pub use crate::batch::measurement::{
54        measure_batch, measure_batch_with_statistics, measure_expectation_batch,
55        measure_tomography_batch, BatchMeasurementStatistics, BatchTomographyResult,
56        MeasurementConfig, TomographyBasis,
57    };
58    pub use crate::batch::operations::{
59        apply_gate_sequence_batch, apply_single_qubit_gate_batch, apply_two_qubit_gate_batch,
60        compute_expectation_values_batch,
61    };
62    pub use crate::batch::optimization::{
63        BatchParameterOptimizer, BatchQAOA, BatchVQE,
64        OptimizationConfig as BatchOptimizationConfig, QAOAResult, VQEResult,
65    };
66    pub use crate::batch::{
67        create_batch, merge_batches, split_batch, BatchConfig, BatchExecutionResult, BatchGateOp,
68        BatchMeasurementResult, BatchStateVector,
69    };
70    pub use crate::bosonic::{
71        boson_to_qubit_encoding, BosonHamiltonian, BosonOperator, BosonOperatorType, BosonTerm,
72        GaussianState,
73    };
74    pub use crate::cartan::{
75        cartan_decompose, CartanCoefficients, CartanDecomposer, CartanDecomposition,
76        OptimizedCartanDecomposer,
77    };
78    pub use crate::characterization::{GateCharacterizer, GateEigenstructure, GateType};
79    pub use crate::complex_ext::{quantum_states, QuantumComplexExt};
80    pub use crate::controlled::{
81        make_controlled, make_multi_controlled, ControlledGate, FredkinGate, MultiControlledGate,
82        ToffoliGate,
83    };
84    pub use crate::decomposition::clifford_t::{
85        count_t_gates_in_sequence, optimize_gate_sequence as optimize_clifford_t_sequence,
86        CliffordGate, CliffordTDecomposer, CliffordTGate, CliffordTSequence,
87    };
88    pub use crate::decomposition::decompose_u_gate;
89    pub use crate::decomposition::solovay_kitaev::{
90        count_t_gates, BaseGateSet, SolovayKitaev, SolovayKitaevConfig,
91    };
92    pub use crate::decomposition::utils::{
93        clone_gate, decompose_circuit, optimize_gate_sequence, GateSequence,
94    };
95    pub use crate::error::*;
96    pub use crate::error_correction::{
97        ColorCode, LookupDecoder, MWPMDecoder, Pauli, PauliString, StabilizerCode, SurfaceCode,
98        SyndromeDecoder,
99    };
100    pub use crate::fermionic::{
101        qubit_operator_to_gates, BravyiKitaev, FermionHamiltonian, FermionOperator,
102        FermionOperatorType, FermionTerm, JordanWigner, PauliOperator, QubitOperator, QubitTerm,
103    };
104    pub use crate::gate::*;
105    pub use crate::gpu::{
106        cpu_backend::CpuBackend, GpuBackend, GpuBackendFactory, GpuBuffer, GpuConfig, GpuKernel,
107        GpuStateVector,
108    };
109    pub use crate::hhl::{hhl_example, HHLAlgorithm, HHLParams};
110    pub use crate::kak_multiqubit::{
111        kak_decompose_multiqubit, DecompositionMethod, DecompositionStats, DecompositionTree,
112        KAKTreeAnalyzer, MultiQubitKAK, MultiQubitKAKDecomposer,
113    };
114    pub use crate::matrix_ops::{
115        matrices_approx_equal, partial_trace, tensor_product_many, DenseMatrix, QuantumMatrix,
116        SparseMatrix,
117    };
118    pub use crate::mbqc::{
119        CircuitToMBQC, ClusterState, Graph as MBQCGraph, MBQCComputation, MeasurementBasis,
120        MeasurementPattern,
121    };
122    pub use crate::memory_efficient::{EfficientStateVector, StateMemoryStats};
123    pub use crate::operations::{
124        apply_and_sample, sample_outcome, MeasurementOutcome, OperationResult, POVMMeasurement,
125        ProjectiveMeasurement, QuantumOperation, Reset,
126    };
127    pub use crate::optimization::compression::{
128        CompressedGate, CompressionConfig, CompressionStats, GateSequenceCompressor,
129    };
130    pub use crate::optimization::fusion::{CliffordFusion, GateFusion};
131    pub use crate::optimization::peephole::{PeepholeOptimizer, TCountOptimizer};
132    pub use crate::optimization::zx_optimizer::ZXOptimizationPass;
133    pub use crate::optimization::{
134        gates_are_disjoint, gates_can_commute, OptimizationChain, OptimizationPass,
135    };
136    pub use crate::parametric::{Parameter, ParametricGate, SymbolicParameter};
137    pub use crate::qaoa::{
138        CostHamiltonian, MixerHamiltonian, QAOACircuit, QAOAOptimizer, QAOAParams,
139    };
140    pub use crate::qml::encoding::{DataEncoder, DataReuploader, FeatureMap, FeatureMapType};
141    pub use crate::qml::layers::{
142        EntanglingLayer, HardwareEfficientLayer, PoolingStrategy, QuantumPoolingLayer,
143        RotationLayer, StronglyEntanglingLayer,
144    };
145    pub use crate::qml::training::{
146        HPOStrategy, HyperparameterOptimizer, LossFunction, Optimizer, QMLTrainer, TrainingConfig,
147        TrainingMetrics,
148    };
149    pub use crate::qml::{
150        create_entangling_gates, natural_gradient, quantum_fisher_information, EncodingStrategy,
151        EntanglementPattern, QMLCircuit, QMLConfig, QMLLayer,
152    };
153    pub use crate::qpca::{DensityMatrixPCA, QPCAParams, QuantumPCA};
154    pub use crate::quantum_channels::{
155        ChoiRepresentation, KrausRepresentation, ProcessTomography, QuantumChannel,
156        QuantumChannels, StinespringRepresentation,
157    };
158    pub use crate::quantum_counting::{
159        amplitude_estimation_example, quantum_counting_example, QuantumAmplitudeEstimation,
160        QuantumCounting, QuantumPhaseEstimation,
161    };
162    pub use crate::quantum_walk::{
163        CoinOperator, ContinuousQuantumWalk, DiscreteQuantumWalk, Graph, GraphType,
164        QuantumWalkSearch, SearchOracle,
165    };
166    pub use crate::qubit::*;
167    pub use crate::register::*;
168    pub use crate::shannon::{shannon_decompose, OptimizedShannonDecomposer, ShannonDecomposer};
169    pub use crate::simd_ops::{
170        apply_phase_simd, controlled_phase_simd, expectation_z_simd, inner_product, normalize_simd,
171    };
172    pub use crate::synthesis::{
173        decompose_single_qubit_xyx, decompose_single_qubit_zyz, decompose_two_qubit_kak,
174        identify_gate, synthesize_unitary, KAKDecomposition, SingleQubitDecomposition,
175    };
176    pub use crate::tensor_network::{
177        contraction_optimization::DynamicProgrammingOptimizer, Tensor, TensorEdge, TensorNetwork,
178        TensorNetworkBuilder, TensorNetworkSimulator,
179    };
180    pub use crate::testing::{
181        QuantumAssert, QuantumTest, QuantumTestSuite, TestResult, TestSuiteResult,
182        DEFAULT_TOLERANCE,
183    };
184    pub use crate::topological::{
185        AnyonModel, AnyonType, AnyonWorldline, BraidingOperation, FibonacciModel, FusionTree,
186        IsingModel, TopologicalGate, TopologicalQC, ToricCode,
187    };
188    pub use crate::variational::{
189        ComputationGraph, DiffMode, Dual, Node, Operation, VariationalCircuit, VariationalGate,
190        VariationalOptimizer,
191    };
192    pub use crate::variational_optimization::{
193        create_natural_gradient_optimizer, create_qaoa_optimizer, create_spsa_optimizer,
194        create_vqe_optimizer, ConstrainedVariationalOptimizer,
195        HyperparameterOptimizer as VariationalHyperparameterOptimizer,
196        OptimizationConfig as VariationalOptimizationConfig, OptimizationHistory,
197        OptimizationMethod, OptimizationResult, VariationalQuantumOptimizer,
198    };
199    pub use crate::zx_calculus::{
200        CircuitToZX, Edge, EdgeType, Spider, SpiderType, ZXDiagram, ZXOptimizer,
201    };
202    pub use crate::zx_extraction::{ZXExtractor, ZXPipeline};
203}