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
7#![allow(dead_code)]
8#![allow(clippy::type_complexity)]
9#![allow(clippy::needless_range_loop)]
10#![allow(clippy::assign_op_pattern)]
11#![allow(clippy::manual_range_contains)]
12#![allow(clippy::should_implement_trait)]
13#![allow(clippy::new_without_default)]
14#![allow(clippy::too_many_arguments)]
15#![allow(clippy::module_inception)]
16#![allow(clippy::clone_on_copy)]
17#![allow(clippy::op_ref)]
18#![allow(clippy::manual_flatten)]
19#![allow(clippy::map_clone)]
20#![allow(clippy::redundant_closure)]
21#![allow(clippy::needless_borrow)]
22#![allow(clippy::default_constructed_unit_structs)]
23#![allow(clippy::useless_vec)]
24#![allow(clippy::identity_op)]
25#![allow(clippy::single_match)]
26#![allow(clippy::vec_init_then_push)]
27#![allow(clippy::legacy_numeric_constants)]
28#![allow(clippy::unnecessary_min_or_max)]
29#![allow(clippy::manual_div_ceil)]
30#![allow(clippy::unwrap_or_default)]
31#![allow(clippy::derivable_impls)]
32#![allow(clippy::match_like_matches_macro)]
33#![allow(clippy::borrowed_box)]
34#![allow(clippy::explicit_auto_deref)]
35#![allow(clippy::await_holding_lock)]
36#![allow(clippy::unused_enumerate_index)]
37#![allow(clippy::large_enum_variant)]
38#![allow(clippy::needless_bool)]
39#![allow(clippy::field_reassign_with_default)]
40#![allow(clippy::upper_case_acronyms)]
41#![allow(clippy::needless_question_mark)]
42
43pub mod adaptive_precision;
44pub mod adiabatic;
45pub mod batch;
46pub mod bosonic;
47pub mod cartan;
48pub mod characterization;
49pub mod circuit_synthesis;
50pub mod compilation_cache;
51pub mod complex_ext;
52pub mod controlled;
53pub mod decomposition;
54pub mod distributed_quantum_networks;
55pub mod eigensolve;
56pub mod error;
57pub mod error_correction;
58pub mod fermionic;
59pub mod gate;
60pub mod gate_translation;
61pub mod gpu;
62pub mod hardware_compilation;
63pub mod hhl;
64pub mod holonomic;
65pub mod hybrid_learning;
66#[cfg(feature = "python")]
67pub mod jupyter_visualization;
68pub mod kak_multiqubit;
69pub mod matrix_ops;
70pub mod mbqc;
71pub mod memory_efficient;
72pub mod neutral_atom;
73pub mod operations;
74pub mod optimization;
75pub mod parametric;
76pub mod photonic;
77pub mod post_quantum_crypto;
78pub mod pulse;
79#[cfg(feature = "python")]
80pub mod python_bindings;
81pub mod qaoa;
82pub mod qml;
83pub mod qpca;
84pub mod quantum_algorithm_profiling;
85pub mod quantum_autodiff;
86pub mod quantum_aware_interpreter;
87pub mod quantum_cellular_automata;
88pub mod quantum_channels;
89#[cfg(feature = "python")]
90pub mod quantum_complexity_analysis;
91pub mod quantum_counting;
92pub mod quantum_debugging_profiling;
93pub mod quantum_game_theory;
94pub mod quantum_garbage_collection;
95pub mod quantum_hardware_abstraction;
96pub mod quantum_internet;
97// pub mod quantum_internet_enhancements;  // Temporarily disabled due to compilation issues
98pub mod quantum_memory_hierarchy;
99pub mod quantum_memory_integration;
100pub mod quantum_ml_accelerators;
101pub mod quantum_operating_system;
102pub mod quantum_process_isolation;
103pub mod quantum_resource_management;
104pub mod quantum_sensor_networks;
105pub mod quantum_supremacy_algorithms;
106pub mod quantum_universal_framework;
107pub mod quantum_walk;
108pub mod qubit;
109pub mod real_time_compilation;
110pub mod realtime_monitoring;
111pub mod register;
112pub mod shannon;
113pub mod silicon_quantum_dots;
114pub mod simd_ops;
115pub mod symbolic;
116pub mod symbolic_hamiltonian;
117pub mod symbolic_optimization;
118pub mod synthesis;
119pub mod tensor_network;
120pub mod testing;
121pub mod topological;
122pub mod trapped_ion;
123pub mod ultra_high_fidelity_synthesis;
124pub mod ultrathink_core;
125pub mod variational;
126pub mod variational_optimization;
127pub mod zx_calculus;
128pub mod zx_extraction;
129
130/// Re-exports of commonly used types and traits
131pub mod prelude {
132    // Import specific items from each module to avoid ambiguous glob re-exports
133    pub use crate::adiabatic::{
134        AdiabaticQuantumComputer, AnnealingSchedule, IsingProblem, ProblemGenerator, ProblemType,
135        QUBOProblem, QuantumAnnealer, QuantumAnnealingSnapshot,
136    };
137    pub use crate::batch::execution::{
138        create_optimized_executor, BatchCircuit, BatchCircuitExecutor,
139    };
140    pub use crate::batch::measurement::{
141        measure_batch, measure_batch_with_statistics, measure_expectation_batch,
142        measure_tomography_batch, BatchMeasurementStatistics, BatchTomographyResult,
143        MeasurementConfig, TomographyBasis,
144    };
145    pub use crate::batch::operations::{
146        apply_gate_sequence_batch, apply_single_qubit_gate_batch, apply_two_qubit_gate_batch,
147        compute_expectation_values_batch,
148    };
149    pub use crate::batch::optimization::{
150        BatchParameterOptimizer, BatchQAOA, BatchVQE,
151        OptimizationConfig as BatchOptimizationConfig, QAOAResult, VQEResult,
152    };
153    pub use crate::batch::{
154        create_batch, merge_batches, split_batch, BatchConfig, BatchExecutionResult, BatchGateOp,
155        BatchMeasurementResult, BatchStateVector,
156    };
157    pub use crate::bosonic::{
158        boson_to_qubit_encoding, BosonHamiltonian, BosonOperator, BosonOperatorType, BosonTerm,
159        GaussianState,
160    };
161    pub use crate::cartan::{
162        cartan_decompose, CartanCoefficients, CartanDecomposer, CartanDecomposition,
163        OptimizedCartanDecomposer,
164    };
165    pub use crate::characterization::{GateCharacterizer, GateEigenstructure, GateType};
166    pub use crate::compilation_cache::{
167        get_compilation_cache, initialize_compilation_cache, CacheConfig, CacheStatistics,
168        CompilationCache, CompiledGate,
169    };
170    pub use crate::complex_ext::{quantum_states, QuantumComplexExt};
171    pub use crate::controlled::{
172        make_controlled, make_multi_controlled, ControlledGate, FredkinGate, MultiControlledGate,
173        ToffoliGate,
174    };
175    pub use crate::decomposition::clifford_t::{
176        count_t_gates_in_sequence, optimize_gate_sequence as optimize_clifford_t_sequence,
177        CliffordGate, CliffordTDecomposer, CliffordTGate, CliffordTSequence,
178    };
179    pub use crate::decomposition::decompose_u_gate;
180    pub use crate::decomposition::solovay_kitaev::{
181        count_t_gates, BaseGateSet, SolovayKitaev, SolovayKitaevConfig,
182    };
183    pub use crate::decomposition::utils::{
184        clone_gate, decompose_circuit, optimize_gate_sequence, GateSequence,
185    };
186    pub use crate::distributed_quantum_networks::{
187        DistributedGateType, DistributedQuantumGate, EntanglementManager, EntanglementProtocol,
188        NetworkScheduler, QuantumNetwork, QuantumNode,
189    };
190    pub use crate::error::*;
191    pub use crate::error_correction::{
192        ColorCode, LookupDecoder, MWPMDecoder, Pauli, PauliString, StabilizerCode, SurfaceCode,
193        SyndromeDecoder,
194    };
195    pub use crate::fermionic::{
196        qubit_operator_to_gates, BravyiKitaev, FermionHamiltonian, FermionOperator,
197        FermionOperatorType, FermionTerm, JordanWigner, PauliOperator, QubitOperator, QubitTerm,
198    };
199    pub use crate::gate::*;
200    pub use crate::gpu::{
201        cpu_backend::CpuBackend, initialize_adaptive_simd, GpuBackend, GpuBackendFactory,
202        GpuBuffer, GpuConfig, GpuKernel, GpuStateVector, OptimizationConfig, SpecializedGpuKernels,
203    };
204    pub use crate::hhl::{hhl_example, HHLAlgorithm, HHLParams};
205    pub use crate::holonomic::{
206        // GeometricErrorCorrection, HolonomicGate, HolonomicGateSynthesis, HolonomicPath,
207        // HolonomicQuantumComputer, PathOptimizationConfig,
208        WilsonLoop,
209    };
210    pub use crate::kak_multiqubit::{
211        kak_decompose_multiqubit, DecompositionMethod, DecompositionStats, DecompositionTree,
212        KAKTreeAnalyzer, MultiQubitKAK, MultiQubitKAKDecomposer,
213    };
214    pub use crate::matrix_ops::{
215        matrices_approx_equal, partial_trace, tensor_product_many, DenseMatrix, QuantumMatrix,
216        SparseMatrix,
217    };
218    pub use crate::mbqc::{
219        CircuitToMBQC, ClusterState, Graph as MBQCGraph, MBQCComputation, MeasurementBasis,
220        MeasurementPattern,
221    };
222    pub use crate::memory_efficient::{EfficientStateVector, StateMemoryStats};
223    pub use crate::neutral_atom::{
224        AtomSpecies, AtomState, LaserSystem, NeutralAtom, NeutralAtomErrorModel, NeutralAtomGates,
225        NeutralAtomQC, OpticalTweezer, Position3D,
226    };
227    pub use crate::operations::{
228        apply_and_sample, sample_outcome, MeasurementOutcome, OperationResult, POVMMeasurement,
229        ProjectiveMeasurement, QuantumOperation, Reset,
230    };
231    pub use crate::optimization::compression::{
232        CompressedGate, CompressionConfig, CompressionStats, CompressionType, GateMetadata,
233        GateSequenceCompressor,
234    };
235    pub use crate::optimization::fusion::{CliffordFusion, GateFusion};
236    pub use crate::optimization::lazy_evaluation::{
237        LazyEvaluationConfig, LazyEvaluationStats, LazyGateContext, LazyOptimizationPipeline,
238        OptimizationResult as LazyOptimizationResult, OptimizationStats,
239    };
240    pub use crate::optimization::peephole::{PeepholeOptimizer, TCountOptimizer};
241    pub use crate::optimization::zx_optimizer::ZXOptimizationPass;
242    pub use crate::optimization::{
243        gates_are_disjoint, gates_can_commute, OptimizationChain, OptimizationPass,
244    };
245    pub use crate::parametric::{Parameter, ParametricGate, SymbolicParameter};
246    pub use crate::photonic::{
247        OpticalMode, PhotonicCircuit, PhotonicEncoding, PhotonicErrorCorrection, PhotonicGate,
248        PhotonicGateType, PhotonicSystem,
249    };
250    pub use crate::post_quantum_crypto::{
251        CompressionFunction, QKDProtocol, QKDResult, QuantumDigitalSignature, QuantumHashFunction,
252        QuantumKeyDistribution, QuantumSignature,
253    };
254    pub use crate::pulse::{
255        CouplingParams, HardwareCalibration, Pulse, PulseCompiler, PulseEnvelope, PulseNoiseModel,
256        PulseSequence, QubitControlParams, TimingConstraints,
257    };
258    pub use crate::qaoa::{
259        CostHamiltonian, MixerHamiltonian, QAOACircuit, QAOAOptimizer, QAOAParams,
260    };
261    pub use crate::qml::encoding::{DataEncoder, DataReuploader, FeatureMap, FeatureMapType};
262    pub use crate::qml::generative_adversarial::{
263        NoiseType, QGANConfig, QGANIterationMetrics, QGANTrainingStats, QuantumDiscriminator,
264        QuantumGenerator, QGAN,
265    };
266    pub use crate::qml::layers::{
267        EntanglingLayer, HardwareEfficientLayer, PoolingStrategy, QuantumPoolingLayer,
268        RotationLayer, StronglyEntanglingLayer,
269    };
270    pub use crate::qml::reinforcement_learning::{
271        Experience, QLearningStats, QuantumActorCritic, QuantumDQN, QuantumPolicyNetwork,
272        QuantumRLConfig, QuantumValueNetwork, ReplayBuffer, TrainingMetrics as RLTrainingMetrics,
273    };
274    pub use crate::qml::training::{
275        HPOStrategy, HyperparameterOptimizer, LossFunction, Optimizer, QMLTrainer, TrainingConfig,
276        TrainingMetrics,
277    };
278    pub use crate::qml::{
279        create_entangling_gates, natural_gradient, quantum_fisher_information, EncodingStrategy,
280        EntanglementPattern, QMLCircuit, QMLConfig, QMLLayer,
281    };
282    pub use crate::qpca::{DensityMatrixPCA, QPCAParams, QuantumPCA};
283    pub use crate::quantum_algorithm_profiling::{
284        AlgorithmType, ComplexityClass, ProfilingLevel, QuantumAdvantageCalculator,
285        QuantumAlgorithmProfiler, QuantumBenchmarkResult, QuantumBottleneckDetector,
286        QuantumComplexityAnalyzer, QuantumOptimizationAdvisor, QuantumPerformanceAnalyzer,
287        QuantumProfilingAdvantageReport, QuantumProfilingReport, QuantumResourceMonitor,
288    };
289    pub use crate::quantum_aware_interpreter::{
290        ExecutionStrategy, OperationResult as InterpreterOperationResult, QuantumAwareInterpreter,
291        QuantumJITCompiler, QuantumStateTracker, RuntimeOptimizationEngine,
292    };
293    pub use crate::quantum_cellular_automata::{
294        BoundaryCondition, QCARule, QCAType, QuantumCellularAutomaton1D,
295        QuantumCellularAutomaton2D, UnitaryRule,
296    };
297    pub use crate::quantum_channels::{
298        ChoiRepresentation, KrausRepresentation, ProcessTomography, QuantumChannel,
299        QuantumChannels, StinespringRepresentation,
300    };
301    pub use crate::quantum_counting::{
302        amplitude_estimation_example, quantum_counting_example, QuantumAmplitudeEstimation,
303        QuantumCounting, QuantumPhaseEstimation,
304    };
305    pub use crate::quantum_debugging_profiling::{
306        CircuitAnalysisReport, ProfilingReport, QuantumCircuitAnalyzer, QuantumDebugProfiling,
307        QuantumDebugProfilingReport, QuantumDebugger, QuantumErrorTracker,
308        QuantumPerformanceProfiler, QuantumStateInspector, StateInspectionReport,
309    };
310    pub use crate::quantum_game_theory::{
311        GameOutcome, GameType, QuantumGame, QuantumMechanism, QuantumPlayer, QuantumStrategy,
312    };
313    pub use crate::quantum_garbage_collection::{
314        CoherenceBasedGC, GCCollectionMode, GCCollectionResult, QuantumAllocationRequest,
315        QuantumAllocationResult, QuantumGCAdvantageReport, QuantumGarbageCollector,
316        QuantumLifecycleManager, QuantumReferenceCounter,
317    };
318    pub use crate::quantum_hardware_abstraction::{
319        AdaptiveMiddleware, CalibrationEngine, ErrorMitigationLayer, ExecutionRequirements,
320        HardwareCapabilities, HardwareResourceManager, HardwareType, QuantumHardwareAbstraction,
321        QuantumHardwareBackend,
322    };
323    pub use crate::quantum_internet::{
324        DistributedQuantumComputing, GlobalQuantumKeyDistribution, QuantumInternet,
325        QuantumInternetAdvantageReport, QuantumInternetNode, QuantumInternetSecurity,
326        QuantumNetworkInfrastructure, QuantumRouting,
327    };
328    pub use crate::quantum_memory_hierarchy::{
329        CacheReplacementPolicy, L1QuantumCache, L2QuantumCache, L3QuantumCache,
330        MemoryOperationType, OptimizationResult as MemoryOptimizationResult, QuantumMainMemory,
331        QuantumMemoryAdvantageReport, QuantumMemoryHierarchy, QuantumMemoryOperation,
332        QuantumMemoryResult,
333    };
334    pub use crate::quantum_memory_integration::{
335        CoherenceManager, MemoryAccessController, QuantumMemory, QuantumMemoryErrorCorrection,
336        QuantumState, QuantumStorageLayer,
337    };
338    pub use crate::quantum_ml_accelerators::{
339        HardwareEfficientMLLayer, ParameterShiftOptimizer, QuantumFeatureMap,
340        QuantumKernelOptimizer, QuantumNaturalGradient, TensorNetworkMLAccelerator,
341    };
342    pub use crate::quantum_operating_system::{
343        QuantumMemoryManager, QuantumOSAdvantageReport, QuantumOperatingSystem,
344        QuantumProcessManager, QuantumScheduler, QuantumSecurityManager,
345    };
346    pub use crate::quantum_process_isolation::{
347        IsolatedProcessResult, IsolatedQuantumProcess, IsolationLevel, QuantumAccessController,
348        QuantumProcessIsolation, QuantumSandbox, QuantumSecurityAdvantageReport,
349        QuantumStateIsolator, SecureQuantumOperation, SecurityDomain, VirtualQuantumMachine,
350    };
351    pub use crate::quantum_resource_management::{
352        AdvancedQuantumScheduler, AdvancedSchedulingResult, CoherenceAwareManager,
353        OptimizationLevel, QuantumProcess, QuantumResourceAdvantageReport,
354        QuantumResourceAllocator, QuantumResourceManager, QuantumWorkloadOptimizer,
355        SchedulingPolicy,
356    };
357    pub use crate::quantum_sensor_networks::{
358        DistributedSensingResult, EntanglementDistribution, EnvironmentalMonitoringResult,
359        QuantumMetrologyEngine, QuantumSensor, QuantumSensorAdvantageReport, QuantumSensorNetwork,
360        QuantumSensorType,
361    };
362    pub use crate::quantum_supremacy_algorithms::{
363        BosonSampling, BosonSamplingSupremacyResult, IQPSampling, QuantumSimulationAdvantageResult,
364        QuantumSupremacyBenchmarkReport, QuantumSupremacyEngine, RandomCircuitSampling,
365        RandomCircuitSupremacyResult,
366    };
367    pub use crate::quantum_universal_framework::{
368        AdaptiveExecutionResult, AdaptiveQuantumRuntime, ArchitectureType, CrossPlatformOptimizer,
369        QuantumHardwareRegistry, QuantumPortabilityEngine, UniversalCompilationResult,
370        UniversalFrameworkAdvantageReport, UniversalQuantumCircuit, UniversalQuantumCompiler,
371        UniversalQuantumFramework,
372    };
373    pub use crate::quantum_walk::{
374        CoinOperator, ContinuousQuantumWalk, DecoherentQuantumWalk, DiscreteQuantumWalk, Graph,
375        GraphType, MultiWalkerQuantumWalk, QuantumWalkSearch, SearchOracle, SzegedyQuantumWalk,
376    };
377    pub use crate::qubit::*;
378    pub use crate::real_time_compilation::{
379        CompilationContext, HardwareTarget, OptimizationPipeline, PerformanceMonitor,
380        RealTimeQuantumCompiler,
381    };
382    pub use crate::register::*;
383    pub use crate::shannon::{shannon_decompose, OptimizedShannonDecomposer, ShannonDecomposer};
384    pub use crate::silicon_quantum_dots::{
385        DeviceParams, QuantumDotParams, QuantumDotType, SiliconQuantumDot, SiliconQuantumDotGates,
386        SiliconQuantumDotSystem,
387    };
388    pub use crate::simd_ops::{
389        apply_phase_simd, controlled_phase_simd, expectation_z_simd, inner_product, normalize_simd,
390    };
391    #[cfg(feature = "symbolic")]
392    pub use crate::symbolic::calculus::{diff, expand, integrate, limit, simplify};
393    pub use crate::symbolic::{matrix::SymbolicMatrix, SymbolicExpression};
394    pub use crate::symbolic_hamiltonian::{
395        hamiltonians::{
396            heisenberg, maxcut, molecular_h2, number_partitioning, transverse_field_ising,
397        },
398        PauliOperator as SymbolicPauliOperator, PauliString as SymbolicPauliString,
399        SymbolicHamiltonian, SymbolicHamiltonianTerm,
400    };
401    pub use crate::symbolic_optimization::{
402        circuit_optimization::{extract_circuit_parameters, optimize_parametric_circuit},
403        HamiltonianExpectation, OptimizationResult, QAOACostFunction, SymbolicObjective,
404        SymbolicOptimizationConfig, SymbolicOptimizer,
405    };
406    pub use crate::synthesis::{
407        decompose_single_qubit_xyx, decompose_single_qubit_zyz, decompose_two_qubit_kak,
408        identify_gate, synthesize_unitary, KAKDecomposition, SingleQubitDecomposition,
409    };
410    pub use crate::tensor_network::{
411        contraction_optimization::DynamicProgrammingOptimizer, Tensor, TensorEdge, TensorNetwork,
412        TensorNetworkBuilder, TensorNetworkSimulator,
413    };
414    pub use crate::testing::{
415        QuantumAssert, QuantumTest, QuantumTestSuite, TestResult, TestSuiteResult,
416        DEFAULT_TOLERANCE,
417    };
418    pub use crate::topological::{
419        AnyonModel, AnyonType, AnyonWorldline, BraidingOperation, FibonacciModel, FusionTree,
420        IsingModel, TopologicalGate, TopologicalQC, ToricCode,
421    };
422    pub use crate::trapped_ion::{
423        IonLevel, IonSpecies, LaserPulse, MotionalMode, MotionalModeType, TrappedIon,
424        TrappedIonGates, TrappedIonSystem,
425    };
426    pub use crate::ultra_high_fidelity_synthesis::{
427        ErrorSuppressedSequence, ErrorSuppressionSynthesis, GateOperation, GrapeOptimizer,
428        GrapeResult, NoiseModel, QuantumGateRL, RLResult, SynthesisConfig, SynthesisMethod,
429        UltraFidelityResult, UltraHighFidelitySynthesis,
430    };
431    pub use crate::ultrathink_core::{
432        DistributedQuantumNetwork, HolonomicProcessor, QuantumAdvantageReport,
433        QuantumMLAccelerator, QuantumMemoryCore, RealTimeCompiler, UltraThinkQuantumComputer,
434    };
435    pub use crate::variational::{
436        ComputationGraph, DiffMode, Dual, Node, Operation, VariationalCircuit, VariationalGate,
437        VariationalOptimizer,
438    };
439    pub use crate::variational_optimization::{
440        create_natural_gradient_optimizer, create_qaoa_optimizer, create_spsa_optimizer,
441        create_vqe_optimizer, ConstrainedVariationalOptimizer,
442        HyperparameterOptimizer as VariationalHyperparameterOptimizer,
443        OptimizationConfig as VariationalOptimizationConfig, OptimizationHistory,
444        OptimizationMethod, OptimizationResult as VariationalOptimizationResult,
445        VariationalQuantumOptimizer,
446    };
447    pub use crate::zx_calculus::{
448        CircuitToZX, Edge, EdgeType, Spider, SpiderType, ZXDiagram, ZXOptimizer,
449    };
450    pub use crate::zx_extraction::{ZXExtractor, ZXPipeline};
451
452    #[cfg(feature = "python")]
453    pub use crate::python_bindings::{
454        PyCartanDecomposition, PyNumRS2Array, PyQuantumGate, PyQuantumInternet,
455        PyQuantumSensorNetwork, PyQubitId, PySingleQubitDecomposition, PyVariationalCircuit,
456    };
457
458    #[cfg(feature = "python")]
459    pub use crate::jupyter_visualization::{
460        PyQuantumCircuitVisualizer, PyQuantumPerformanceMonitor, PyQuantumStateVisualizer,
461    };
462
463    #[cfg(feature = "python")]
464    pub use crate::quantum_complexity_analysis::PyQuantumComplexityAnalyzer;
465
466    #[cfg(feature = "python")]
467    pub use crate::python_bindings::{
468        PyAggregatedStats, PyAlert, PyMetricMeasurement, PyMonitoringConfig, PyMonitoringStatus,
469        PyOptimizationRecommendation, PyRealtimeMonitor,
470    };
471}