Skip to main content

quantrs2_circuit/
lib.rs

1// Allow specific lints that are intentional design decisions or would require breaking changes
2#![allow(clippy::too_many_arguments)] // Quantum operations naturally have many parameters
3#![allow(clippy::module_inception)] // Module organization matches quantum circuit hierarchy
4#![allow(clippy::large_enum_variant)] // Quantum state representations require large variants
5#![allow(unexpected_cfgs)]
6// Allow cfg feature gates for future SciRS2 features
7// Architectural decisions - these are intentional design patterns
8#![allow(clippy::unnecessary_wraps)] // Result return types for API consistency
9#![allow(clippy::unused_self)] // Trait implementations require &self
10#![allow(clippy::unused_async)]
11// Async placeholders for future implementation
12// Performance-related (not safety issues, can be optimized later)
13#![allow(clippy::significant_drop_tightening)] // Lock scope optimization TODO
14// Style-related (low priority)
15#![allow(clippy::match_same_arms)] // Sometimes intentional for clarity
16#![allow(clippy::option_if_let_else)] // Style preference
17#![allow(clippy::return_self_not_must_use)] // Builder pattern
18#![allow(clippy::needless_range_loop)] // Sometimes clearer with index
19// Additional suppressions for remaining warnings
20#![allow(clippy::branches_sharing_code)] // Sometimes intentional
21#![allow(clippy::type_complexity)] // Quantum types are complex
22#![allow(clippy::missing_const_for_fn)] // Not always beneficial
23#![allow(clippy::format_push_string)] // Performance optimization TODO
24#![allow(clippy::cast_possible_truncation)] // Platform-specific, validated
25#![allow(clippy::future_not_send)] // Async architecture decision
26#![allow(clippy::needless_pass_by_ref_mut)] // API consistency
27#![allow(clippy::cast_precision_loss)] // Acceptable for quantum simulation
28#![allow(clippy::uninlined_format_args)] // Style preference
29#![allow(clippy::assigning_clones)] // Sometimes clearer
30#![allow(clippy::zero_sized_map_values)] // Intentional for set-like maps
31#![allow(clippy::used_underscore_binding)] // Sometimes needed for unused captures
32#![allow(clippy::collection_is_never_read)] // Builder pattern / lazy evaluation
33#![allow(clippy::wildcard_in_or_patterns)] // Sometimes intentional
34#![allow(clippy::ptr_arg)] // API consistency with slices
35#![allow(clippy::implicit_hasher)] // Generic hasher not always needed
36#![allow(clippy::ref_option)] // Sometimes needed for lifetime reasons
37#![allow(clippy::expect_fun_call)] // Clearer error messages
38#![allow(clippy::if_not_else)] // Sometimes clearer
39#![allow(clippy::iter_on_single_items)] // Sometimes intentional
40#![allow(clippy::trivially_copy_pass_by_ref)] // API consistency
41#![allow(clippy::empty_line_after_doc_comments)] // Formatting preference
42#![allow(clippy::manual_let_else)] // Style preference
43#![allow(clippy::await_holding_lock)] // Async architecture
44// Full clippy category suppressions
45#![allow(clippy::pedantic)]
46#![allow(clippy::nursery)]
47#![allow(clippy::cargo)]
48// Additional specific suppressions
49#![allow(clippy::large_enum_variant)]
50#![allow(clippy::borrowed_box)]
51#![allow(clippy::manual_map)]
52#![allow(clippy::non_send_fields_in_send_ty)]
53#![allow(clippy::if_same_then_else)]
54#![allow(clippy::manual_clamp)]
55#![allow(clippy::double_must_use)]
56#![allow(clippy::only_used_in_recursion)]
57#![allow(clippy::same_item_push)]
58#![allow(clippy::format_in_format_args)]
59#![allow(clippy::implied_bounds_in_impls)]
60#![allow(clippy::explicit_counter_loop)]
61#![allow(clippy::duplicated_attributes)]
62#![allow(clippy::new_ret_no_self)]
63#![allow(clippy::must_use_unit)]
64#![allow(clippy::redundant_pattern_matching)]
65#![allow(clippy::redundant_guards)]
66#![allow(clippy::wrong_self_convention)]
67#![allow(clippy::iter_next_slice)]
68#![allow(clippy::create_dir)]
69#![allow(clippy::enum_variant_names)]
70// Additional specific suppressions (correct lint names)
71#![allow(clippy::should_implement_trait)] // Methods like default(), from_str(), next()
72#![allow(clippy::upper_case_acronyms)] // VQE, QAOA, QFT, CNOT, SGD
73#![allow(clippy::unnecessary_map_or)] // map_or simplification suggestions
74#![allow(clippy::derivable_impls)] // Impl can be derived
75#![allow(clippy::or_fun_call)] // unwrap_or_else with default value
76#![allow(clippy::cloned_ref_to_slice_refs)] // clone can be replaced with from_ref
77#![allow(clippy::collapsible_match)]
78#![allow(clippy::len_without_is_empty)]
79#![allow(clippy::arc_with_non_send_sync)]
80#![allow(clippy::std_instead_of_core)] // Allow std usage
81#![allow(clippy::match_like_matches_macro)] // Sometimes match is clearer
82#![allow(clippy::suspicious_open_options)] // File open options
83#![allow(clippy::new_without_default)] // new() without Default impl
84
85//! # QuantRS2-Circuit
86//!
87//! Quantum circuit representation and DSL for the `QuantRS2` framework.
88//!
89//! This crate provides a comprehensive toolkit for creating, manipulating,
90//! and analyzing quantum circuits with a fluent API and modern Rust patterns.
91//!
92//! ## Recent Updates (v0.2.0)
93//!
94//! - Enhanced code quality with clippy warning fixes
95//! - **SciRS2 v0.5.0 Stable Release Integration** with unified patterns
96//! - Enhanced graph-based circuit optimization algorithms (60+ strategies)
97//! - Improved hardware-aware compilation with `SciRS2` graph algorithms
98//! - Comprehensive policy documentation for quantum circuit development
99//! - Added refactoring recommendations for large modules
100//!
101//! ## Features
102//!
103//! - **50,055 lines** of production Rust code
104//! - **237 test functions** providing comprehensive coverage
105//! - **16 example programs** demonstrating key features
106//! - Type-safe circuit construction with const generics
107//! - Fluent builder API for intuitive circuit creation
108//! - QASM 2.0 / 3.0 import and export
109//! - Circuit optimization passes (60+ strategies)
110//! - Hardware-aware transpilation for IBM, Google, Rigetti
111//! - SciRS2-powered performance analysis and profiling
112//! - Advanced debugging and verification tools
113//!
114//! ## Module Organization
115//!
116//! - **Core**: `builder`, `classical`, `measurement`
117//! - **Optimization**: `optimization`, `optimizer`, `graph_optimizer`
118//! - **Hardware**: `transpiler`, `routing`, `pulse`, `crosstalk`
119//! - **Analysis**: `profiler`, `debugger`, `equivalence`, `validation`
120//! - **Advanced**: `synthesis`, `zx_calculus`, `tensor_network`, `topological`
121//!
122//! ## Quick Start
123//!
124//! ```rust
125//! use quantrs2_circuit::builder::Circuit;
126//!
127//! // Build a 3-qubit GHZ state circuit
128//! let mut circ: Circuit<3> = Circuit::new();
129//! circ.h(0).expect("h")
130//!     .cnot(0, 1).expect("cnot 0-1")
131//!     .cnot(0, 2).expect("cnot 0-2");
132//! assert_eq!(circ.num_gates(), 3);
133//! ```
134pub mod buffer_manager;
135pub mod builder;
136pub mod circuit_cache;
137pub mod classical;
138pub mod commutation;
139pub mod crosstalk;
140pub mod dag;
141pub mod debugger;
142pub mod distributed;
143pub mod equivalence;
144pub mod fault_tolerant;
145pub mod formatter;
146pub mod gate_applier;
147pub mod graph_optimizer;
148pub mod linter;
149pub mod measurement;
150pub mod ml_optimization;
151pub mod noise_models;
152pub mod optimization;
153pub mod optimizer;
154pub mod photonic;
155pub mod profiler;
156pub mod pulse;
157pub mod qasm;
158pub mod qc_co_optimization;
159pub mod resource_estimator;
160pub mod routing;
161pub mod scirs2_benchmarking;
162pub mod scirs2_cross_compilation_enhanced;
163pub mod scirs2_integration;
164pub mod scirs2_ir_tools;
165pub mod scirs2_matrices;
166pub mod scirs2_optimization;
167pub mod scirs2_pulse_control_enhanced;
168pub mod scirs2_qasm_compiler_enhanced;
169pub mod scirs2_similarity;
170pub mod scirs2_transpiler_enhanced;
171pub mod simulator_interface;
172pub mod slicing;
173pub mod solovay_kitaev;
174pub mod synthesis;
175pub mod template_matching;
176pub mod tensor_network;
177pub mod topological;
178pub mod topology;
179pub mod transpiler;
180pub mod validation;
181pub mod verifier;
182pub mod vqe;
183pub mod zx_calculus;
184
185// Re-exports of commonly used types and traits
186pub mod prelude {
187    pub use crate::builder::{CircuitStats, *};
188    // Convenience re-export
189    pub use crate::circuit_cache::{
190        CacheConfig, CacheEntry, CacheManager, CacheStats, CircuitCache, CircuitSignature,
191        CompiledCircuitCache, EvictionPolicy, ExecutionResultCache, SignatureGenerator,
192        TranspilationCache,
193    };
194    pub use crate::classical::{
195        CircuitOp, ClassicalBit, ClassicalCircuit, ClassicalCircuitBuilder, ClassicalCondition,
196        ClassicalOp, ClassicalRegister, ClassicalValue, ComparisonOp, ConditionalGate, MeasureOp,
197    };
198    pub use crate::commutation::{
199        CommutationAnalyzer, CommutationOptimization, CommutationResult, CommutationRules, GateType,
200    };
201    pub use crate::crosstalk::{
202        CrosstalkAnalysis, CrosstalkAnalyzer, CrosstalkModel, CrosstalkSchedule,
203        CrosstalkScheduler, SchedulingStrategy, TimeSlice,
204    };
205    pub use crate::dag::{circuit_to_dag, CircuitDag, DagEdge, DagNode, EdgeType};
206    pub use crate::debugger::{
207        AnalysisDepth, BlochVector, BottleneckType as DebuggerBottleneckType, BreakpointAction,
208        BreakpointCondition, BreakpointManager, ConditionalBreakpoint, ConnectionType,
209        ConnectionVisualization, CorrelationType, DebugError, DebuggerConfig, Difficulty,
210        ErrorAnalysisResults, ErrorCorrelation, ErrorDetectionConfig, ErrorDetector, ErrorPattern,
211        ErrorSeverity, ErrorStatistics, ErrorType as DebuggerErrorType, ExecutionHistory,
212        ExecutionState, ExecutionStatus as DebuggerExecutionStatus, ExecutionSummary,
213        ExportFormat as DebuggerExportFormat, ExportOptions as DebuggerExportOptions,
214        ExpressionResult, ExpressionType, ExpressionValue, GateAttributes, GateExecutionMetrics,
215        GateExecutionResult, GateProperties as DebuggerGateProperties, GateSnapshot,
216        GateType as DebuggerGateType, GateVisualization, HistoryEntry, HistoryStatistics,
217        ImpactAssessment, MemorySnapshot, MemoryStatistics, MemoryUsage, MetricSnapshot,
218        OptimizationSuggestion as DebuggerOptimizationSuggestion, PatternType, PerformanceAnalysis,
219        PerformanceBottleneck, PerformanceProfiler, PerformanceSample, PredictionResult,
220        Priority as DebuggerPriority, ProfilerConfig, ProfilingStatistics, QuantumDebugger,
221        RenderingQuality, RenderingStatistics, RootCause, Solution, StateBreakpoint, StatePattern,
222        StateSnapshot, StepResult, SuggestionType as DebuggerSuggestionType, TimingInfo,
223        TimingStatistics, TrendAnalysis, TrendDirection, Visualization, VisualizationConfig,
224        VisualizationData, VisualizationEngine, VisualizationMetadata, VisualizationSnapshot,
225        VisualizationType, WatchConfig, WatchExpression, WatchManager, WatchedGate, WatchedMetric,
226        WatchedState,
227    };
228    pub use crate::distributed::{
229        BackendType, DistributedExecutor, DistributedJob, DistributedResult, ExecutionBackend,
230        ExecutionParameters, ExecutionStatus, LoadBalancingStrategy, Priority, SystemHealthStatus,
231    };
232    pub use crate::equivalence::{
233        circuits_equivalent, circuits_structurally_equal, EquivalenceChecker, EquivalenceOptions,
234        EquivalenceResult, EquivalenceType,
235    };
236    pub use crate::fault_tolerant::{
237        FaultTolerantCircuit, FaultTolerantCompiler, LogicalQubit, MagicState, QECCode,
238        ResourceOverhead, SyndromeMeasurement, SyndromeType,
239    };
240    pub use crate::formatter::{
241        AlignmentConfig, AlignmentEngine, AlignmentGroup, AlignmentItem, AlignmentOptimization,
242        AlignmentState, AlignmentStatistics, AutoCorrectionConfig, ChangeType, CodeOrganizer,
243        CodeSection, CodeStructure, CommentAlignment, CommentConfig, CommentFormatter,
244        CommentFormatterState, CommentRule, ComplianceLevel as FormatterComplianceLevel,
245        ConsistencyMetrics, FormattedCircuit, FormatterConfig, FormattingChange, FormattingResult,
246        FormattingStatistics, GroupingStrategy, IndentationConfig, IndentationStyle,
247        LayoutOptimizer, OptimizationConfig as FormatterOptimizationConfig, OrganizationConfig,
248        Position, QualityMetrics, QuantumFormatter, SciRS2AnalysisConfig,
249        SeverityLevel as FormatterSeverityLevel, SpacingConfig, SpacingStyle, StyleCompliance,
250        StyleEnforcementConfig, StyleEnforcer, StyleInformation, StyleIssue, WhitespaceManager,
251        WhitespaceOptimization, WhitespaceState, WhitespaceStatistics,
252    };
253    pub use crate::graph_optimizer::{CircuitDAG, GraphGate, GraphOptimizer, OptimizationStats};
254    pub use crate::linter::{
255        AnalysisScope, AntiPatternDetectionResult, AntiPatternDetector, AutoFix, AutoFixType,
256        BarrierUsageStyle, BestPracticeResult, BestPracticeRule, BestPracticeViolation,
257        BestPracticesChecker, BestPracticesCompliance, CircuitLocation, ComplexityAnalysisResult,
258        ComplexityAnalyzer, ComplexityClassification, ComplexityMetric,
259        ComplexityMetrics as LinterComplexityMetrics, ComplexityTrend, ComplianceLevel,
260        ConnectivityPattern, ConstraintType as LinterConstraintType, CustomGuideline,
261        Difficulty as LinterDifficulty, GateGroupingStyle, Importance,
262        IndentationStyle as LinterIndentationStyle, InteractionType, IssueType, LintIssue,
263        LinterConfig, LintingMetadata, LintingResult, LintingStatistics, MeasurementPlacementStyle,
264        NamingConvention, OptimizationAnalysisResult, OptimizationAnalyzer,
265        OptimizationImprovement as LinterOptimizationImprovement, OptimizationRule,
266        OptimizationSuggestion as LinterOptimizationSuggestion, OptimizationType,
267        ParameterConstraint, PatternAnalysisResult, PatternDetectionResult, PatternDetector,
268        PatternFlexibility, PatternInteraction, PatternMatcher, PatternPerformanceProfile,
269        PatternStatistics, PerformanceImpact, PerformanceMetrics as LinterPerformanceMetrics,
270        PerformanceProjection, PracticeGuidelines, QuantumAntiPattern, QuantumLinter,
271        QuantumPattern, QubitOrderingStyle, Risk, SafetyLevel,
272        ScalingBehavior as LinterScalingBehavior, Severity, SimplificationSuggestion,
273        SimplificationType, StyleAnalysisResult, StyleCheckResult, StyleChecker, StyleConfig,
274        StyleRule, StyleStrictness, StyleViolation, TrendDirection as LinterTrendDirection,
275    };
276    pub use crate::measurement::{
277        CircuitOp as MeasurementCircuitOp, FeedForward, Measurement, MeasurementCircuit,
278        MeasurementCircuitBuilder, MeasurementDependencies,
279    };
280    pub use crate::ml_optimization::{
281        AcquisitionFunction, FeatureExtractor, ImprovementMetrics, MLCircuitOptimizer,
282        MLCircuitRepresentation, MLOptimizationResult, MLStrategy, TrainingExample,
283    };
284    pub use crate::noise_models::{
285        DecoherenceParams, ErrorSource, LeakageError, NoiseAnalysisResult, NoiseAnalyzer,
286        ReadoutError, SingleQubitError, ThermalNoise, TwoQubitError,
287    };
288    pub use crate::optimization::{
289        AbstractCostModel, CircuitAnalyzer, CircuitOptimizer2, CircuitRewriting,
290        CoherenceOptimization, CommutationTable, CostBasedOptimization, CostModel,
291        DecompositionOptimization, DecouplingSequence, DynamicalDecoupling, GateCancellation,
292        GateCommutation, GateCost, GateError, GateMerging, GateProperties, HardwareCostModel,
293        NoiseAwareCostModel, NoiseAwareMapping, NoiseAwareOptimizer, NoiseModel, OptimizationLevel,
294        OptimizationPass, OptimizationReport, PassConfig, PassManager, RotationMerging,
295        TemplateMatching, TwoQubitOptimization,
296    };
297    pub use crate::optimizer::{
298        CircuitOptimizer, HardwareOptimizer, OptimizationPassType, OptimizationResult,
299        RedundantGateElimination, SingleQubitGateFusion,
300    };
301    pub use crate::photonic::{
302        CVCircuit, CVGate, CVMeasurement, PhotonicCircuit, PhotonicCircuitBuilder,
303        PhotonicConverter, PhotonicGate, PhotonicMeasurement, PhotonicMode, Polarization,
304        PolarizationBasis,
305    };
306    pub use crate::profiler::{
307        AccuracyMeasurement, AccuracyTracking, AggregationFunction, AggregationRule, Alert,
308        AlertChannel, AlertChannelType, AlertCondition, AlertLevel, AlertRule, AlertSystem,
309        AllocationEvent, AllocationEventType, AllocationInfo, AllocationStatistics,
310        AllocationTracker, AllocationType, AnalysisConfig, AnalysisDepth as ProfilerAnalysisDepth,
311        AnalyticsConfig, AnomalyAlgorithmType, AnomalyDetectionAlgorithm, AnomalyDetectionConfig,
312        AnomalyDetector, AnomalyType, AnomySeverity, ArchivalPolicy, BackupConfig, BaselineManager,
313        BaselineUpdatePolicy, BaselineValidationResults,
314        BenchmarkConfig as ProfilerBenchmarkConfig, BenchmarkEngine, BenchmarkResult,
315        BenchmarkSuite, BenchmarkSuiteConfig, BenchmarkTest, BenchmarkTestType,
316        BottleneckAnalysis as ProfilerBottleneckAnalysis, BottleneckImpactAnalysis,
317        BottleneckSeverity, CacheMissRates, CascadingEffect, ChecksumAlgorithm, ComparisonOperator,
318        ComparisonResults, ComparisonSummary, CompressionAlgorithm, CompressionSettings,
319        ConnectionStatistics, CostBenefitAnalysis, CpuOptimization, CpuOptimizationType,
320        CpuProfilingData, CpuState, DataRetentionPolicy, DetailedAnalysis, EnvironmentInfo,
321        ErrorAnalysis, ErrorCharacteristics, ErrorDistribution,
322        ErrorPattern as ProfilerErrorPattern, ErrorSeverity as ProfilerErrorSeverity,
323        ExportFormat as ProfilerExportFormat, GateProfile, GateProfiler, GpuInfo, GpuOptimization,
324        GpuOptimizationType, GpuProfilingData, HardwareConfig, HistoricalPerformanceData,
325        InsightType, IntegrityChecks, IoOptimization, IoOptimizationType, IoProfilingData, IoState,
326        LatencyDistribution, LeakAnalysisResults, LeakDetector, LeakSeverity, LogicalOperator,
327        MemoryLeak, MemoryOptimization as ProfilerMemoryOptimization, MemoryOptimizationType,
328        MemoryPattern, MemoryProfiler, MemorySnapshot as ProfilerMemorySnapshot, MemoryState,
329        MemoryTransferTimes, MetricCategory, MetricStream, MetricsCollector,
330        MitigationStrategy as ProfilerMitigationStrategy, MitigationStrategyType, MlModel,
331        NetworkOptimization, NetworkOptimizationType, NetworkProfilingData, NetworkState,
332        PerformanceAnalyzer, PerformanceAnomaly, PerformanceBaseline,
333        PerformanceInsight as ProfilerPerformanceInsight, PerformanceMetric, PerformanceRegression,
334        PerformanceSnapshot, PerformanceSummary, PrecisionLevel, PredictionConfig,
335        PredictionEngine, PredictionModel as ProfilerPredictionModel, PredictionModelType,
336        PredictionResult as ProfilerPredictionResult, ProfilerConfig as ProfilerConfiguration,
337        ProfilingReport, ProfilingSession, QuantumProfiler, RealtimeMetrics, RecoveryStatistics,
338        RegressionAlgorithmType, RegressionAnalysisResults, RegressionDetectionAlgorithm,
339        RegressionDetectionConfig, RegressionDetector, RegressionSeverity, ResourceBottleneck,
340        ResourceBottleneckType, ResourceProfiler,
341        ResourceRequirements as ProfilerResourceRequirements, ResourceUtilization,
342        SerializationConfig, SerializationFormat, SessionAnalytics, SessionConfig, SessionData,
343        SessionManager, SessionStatistics, SessionStatus, SessionStorage, SessionTrendAnalysis,
344        SeverityLevel, StatisticalMethod, StorageBackend, StorageConfig, StorageInfo, StorageType,
345        StreamStatistics, SuppressionCondition, SuppressionRule, SystemState, TestResult,
346        ThroughputStatistics, TimingStatistics as ProfilerTimingStatistics, TrainingStatus,
347        TrendAnalysisResults, ValidationStatus,
348    };
349    pub use crate::pulse::{
350        Channel, DeviceConfig, PulseCalibration, PulseCompiler, PulseInstruction, PulseOptimizer,
351        PulseSchedule, Waveform,
352    };
353    pub use crate::qasm::exporter::ExportError;
354    pub use crate::qasm::{
355        export_qasm3, parse_qasm3, validate_qasm3, ExportOptions, ParseError, QasmExporter,
356        QasmGate, QasmParser, QasmProgram, QasmRegister, QasmStatement, ValidationError,
357    };
358    pub use crate::qc_co_optimization::{
359        ClassicalProcessingStep, ClassicalStepType, DataFlowGraph, DataType,
360        HybridOptimizationAlgorithm, HybridOptimizationProblem, HybridOptimizationResult,
361        HybridOptimizer, LearningRateSchedule, ObjectiveFunction as HybridObjectiveFunction,
362        ObjectiveFunctionType, ParameterizedQuantumComponent, RegularizationType,
363    };
364    pub use crate::resource_estimator::{
365        AlgorithmClass, CircuitMetrics as ResourceCircuitMetrics, ComplexityAnalysis,
366        ComplexityClass, ExecutionTimeEstimate, HardwareRequirements, MemoryRequirements,
367        OptimizationSuggestion as ResourceOptimizationSuggestion, PlatformRecommendation,
368        ResourceEstimate, ScalabilityAnalysis, ScalingBehavior, ScalingFunction,
369    };
370    pub use crate::routing::{
371        CircuitRouter, CouplingMap, Distance, LookaheadConfig, LookaheadRouter, RoutedCircuit,
372        RoutingPassType, RoutingResult, RoutingStatistics, RoutingStrategy, SabreConfig,
373        SabreRouter, SwapLayer, SwapNetwork,
374    };
375    pub use crate::scirs2_benchmarking::{
376        BaselineComparison, BenchmarkConfig, BenchmarkReport, BenchmarkRun, CircuitBenchmark,
377        CircuitMetrics as BenchmarkCircuitMetrics, DescriptiveStats, Distribution, DistributionFit,
378        HypothesisTestResult, InsightCategory, OutlierAnalysis, OutlierDetectionMethod,
379        PerformanceInsight, PracticalSignificance, RegressionAnalysis, StatisticalAnalyzer,
380        StatisticalTest,
381    };
382    pub use crate::scirs2_cross_compilation_enhanced::{
383        AppliedOptimization, BatchCompilationReport, BatchCompilationResult, BatchPerformanceStats,
384        CircuitMetrics, CircuitSize, CircuitVisualization, ClassicalOpType, ClassicalOperation,
385        CodeFormat, ComparisonVisualization, CompilationComplexity, CompilationRecommendation,
386        CompilationReport, CompilationStage, CompilationStrategy, CompilationSummary,
387        CrossCompilationConfig, CrossCompilationResult, DataFlow, Difference, DifferenceType,
388        EnhancedCrossCompilationConfig, EnhancedCrossCompiler, FailedCompilation, FlowEdge,
389        FlowNode, GraphLayout, IRClassicalOp, IRClassicalOpType, IREdge, IRGate, IRGraph, IRNode,
390        IROperation, IROperationType, IRVisualization, NodeType, OperationType, OptimizationImpact,
391        OptimizationImprovement, OptimizationTimeline, OptimizationVisualization, ParsedCircuit,
392        QuantumFramework, QuantumIR, QuantumOperation,
393        RecommendationCategory as CompilationRecommendationCategory, ResourceUsage, SourceCircuit,
394        StageAnalysis, StageImpact, StagePerformance, TargetCode, TargetPlatform, TimelineEvent,
395        ValidationError as CrossValidationError, ValidationErrorType,
396        ValidationResult as CrossValidationResult, ValidationWarning as CrossValidationWarning,
397        ValidationWarningType, VisualCompilationFlow,
398    };
399    pub use crate::scirs2_integration::{
400        AnalysisResult, AnalyzerConfig, GraphMetrics, GraphMotif, OptimizationSuggestion,
401        SciRS2CircuitAnalyzer, SciRS2CircuitGraph, SciRS2Edge, SciRS2Node, SciRS2NodeType,
402    };
403    pub use crate::scirs2_matrices::{
404        CircuitToSparseMatrix, Complex64, SparseFormat, SparseGate, SparseGateLibrary,
405        SparseMatrix, SparseOptimizer,
406    };
407    pub use crate::scirs2_optimization::{
408        CircuitTemplate, EarlyStoppingCriteria, KernelType, ObjectiveFunction,
409        OptimizationAlgorithm, OptimizationConfig, OptimizationHistory, Parameter,
410        ParameterizedGate, QAOAObjective, QuantumCircuitOptimizer, VQEObjective,
411    };
412    pub use crate::scirs2_pulse_control_enhanced::{
413        AWGSpecifications, AmplitudeNoiseSpec, CosinePulse, CustomPulseShape, DRAGPulse,
414        EnhancedPulseConfig, EnhancedPulseController, ErfPulse, FilterState, FilterType,
415        GateAnalysis, GaussianPulse, HardwareConstraints, IQMixerSpecifications,
416        MitigationStrategy, OptimizationFeedback, OptimizationStep, PhaseNoiseSpec,
417        PredistortionModel, PulseChannel, PulseConstraints, PulseControlConfig, PulseExportFormat,
418        PulseLibrary, PulseMetadata, PulseOptimizationModel, PulseOptimizationObjective,
419        PulseSequence, SechPulse, SignalProcessingConfig, SignalProcessor, SignalProcessorConfig,
420        Waveform as EnhancedWaveform, WindowType,
421    };
422    pub use crate::scirs2_qasm_compiler_enhanced::{
423        ASTNode, ASTStatistics, AnalysisOptions, BinaryOp, CompilationResult,
424        CompilationStatistics, CompilationTarget, CompilationVisualizations, CompilationWarning,
425        EnhancedQASMCompiler, EnhancedQASMConfig, ErrorType, ExportFormat, Expression,
426        GateDefinition, GeneratedCode, Location, OptimizedQASM, ParsedQASM, QASMCompilerConfig,
427        QASMVersion, Token, TokenType, TypeCheckingLevel, UnaryOp, ValidationResult,
428        ValidationWarning, WarningType, AST,
429    };
430    pub use crate::scirs2_similarity::{
431        BatchSimilarityComputer, CircuitDistanceMetrics, CircuitFeatures,
432        CircuitSimilarityAnalyzer, CircuitSimilarityMetrics, EntanglementStructure,
433        GraphKernelType, GraphSimilarityAlgorithm, MLModelType, SciRS2Graph, SimilarityAlgorithm,
434        SimilarityConfig, SimilarityWeights,
435    };
436    pub use crate::scirs2_transpiler_enhanced::{
437        AdvancedHardwareFeatures, Bottleneck, BottleneckType, CircuitAnalysis,
438        CircuitFeatures as EnhancedCircuitFeatures, CompatibilityReport, DecomposedGate,
439        DecompositionResult, DecompositionStrategy, EnhancedTranspiler, EnhancedTranspilerConfig,
440        ErrorMitigationSupport, GateDecomposition, GateStatistics, HardwareBackend, ImpactLevel,
441        MitigationResult, NativeGateSet as EnhancedNativeGateSet, ParallelismAnalysis, PassResult,
442        PerformanceConstraints, PerformanceMetrics, PerformancePrediction, PredictionModel,
443        RoutingFeedback, RoutingModel, SuggestionType, SwapGate, TopologyAnalysis, TopologyType,
444        TranspilationPass, TranspilationResult as EnhancedTranspilationResult,
445        VisualRepresentation,
446    };
447    pub use crate::simulator_interface::{
448        CircuitCompiler, CompiledCircuit, ContractionStrategy, ExecutionResult, InstructionSet,
449        MemoryOptimization, OptimizationLevel as SimulatorOptimizationLevel, ResourceRequirements,
450        SimulatorBackend, SimulatorExecutor,
451    };
452    pub use crate::slicing::{CircuitSlice, CircuitSlicer, SlicingResult, SlicingStrategy};
453    pub use crate::synthesis::{
454        GateSet, MultiQubitSynthesizer, SingleQubitSynthesizer, SynthesisConfig,
455        TwoQubitSynthesizer, UnitaryOperation, UnitarySynthesizer,
456    };
457    pub use crate::tensor_network::{
458        CircuitToTensorNetwork, CompressedCircuit, CompressionMethod, MatrixProductState, Tensor,
459        TensorNetwork, TensorNetworkCompressor,
460    };
461    pub use crate::topological::{
462        Anyon, AnyonModel, AnyonType, BraidingOperation, BraidingOptimizer, OptimizationStrategy,
463        TopologicalCircuit, TopologicalCompiler, TopologicalGate,
464    };
465    pub use crate::topology::{TopologicalAnalysis, TopologicalAnalyzer, TopologicalStrategy};
466    pub use crate::transpiler::{
467        DeviceTranspiler, HardwareSpec, NativeGateSet, TranspilationOptions, TranspilationResult,
468        TranspilationStats, TranspilationStrategy,
469    };
470    pub use crate::validation::{
471        CircuitValidator, ClassicalConstraints, ConnectivityConstraints, DepthLimits,
472        GateRestrictions, MeasurementConstraints, ResourceLimits, ValidationRules, ValidationStats,
473        ValidationSuggestion,
474    };
475    pub use crate::verifier::{
476        BinaryOperator, CircuitInvariant, CircuitLocation as VerifierCircuitLocation,
477        ComplexityClass as VerifierComplexityClass, ConfidenceStatistics,
478        ConstraintSatisfactionResult, ConstraintType, CorrectnessChecker, CorrectnessCriterion,
479        CorrectnessResult, Counterexample, CustomInvariantChecker, CustomPredicate,
480        EntanglementType, ErrorBounds, ErrorModel, EvidenceType, ExecutionTrace, ExpectedOutput,
481        FormalProof, InvariantCheckResult, InvariantChecker, IssueSeverity,
482        IssueType as VerifierIssueType, ModelCheckResult, ModelChecker, NumericalEvidence,
483        ProofComplexityMetrics, ProofNode, ProofObligation, ProofStatus, ProofStep, ProofStrategy,
484        ProofTree, PropertyChecker, PropertyVerificationResult, QuantumProperty, QuantumState,
485        QuantumTheorem, QuantumVerifier, StateSpace, StateSpaceStatistics, StateTransition,
486        SuperpositionType, SymbolicConstraint, SymbolicExecutionConfig, SymbolicExecutionResult,
487        SymbolicExecutionStatus, SymbolicExecutor, SymbolicExpression, SymbolicState, SymbolicType,
488        SymbolicVariable, TemporalProperty, TestCase, TestOutcome, TheoremProver, TheoremResult,
489        UnaryOperator, VerificationIssue, VerificationMetadata, VerificationOutcome,
490        VerificationResult, VerificationStatistics, VerificationStatus, VerifierConfig,
491        VerifierTestResult, ViolationSeverity,
492    };
493    pub use crate::vqe::{
494        PauliOperator, VQEAnsatz, VQECircuit, VQEObservable, VQEOptimizer, VQEOptimizerType,
495        VQEResult,
496    };
497    pub use crate::zx_calculus::{
498        OptimizedZXResult, ZXDiagram, ZXEdge, ZXNode, ZXOptimizationResult, ZXOptimizer,
499    };
500    pub use quantrs2_core::qubit::QubitId as Qubit;
501}
502
503// The following should be proc macros, but we'll implement them later
504// for now they're just stubs
505
506/// Creates a qubit set for quantum operations
507///
508/// # Example
509///
510/// ```
511/// use quantrs2_circuit::qubits;
512/// let qs = qubits![0, 1, 2];
513/// ```
514#[macro_export]
515macro_rules! qubits {
516    ($($id:expr),* $(,)?) => {
517        {
518            use quantrs2_core::qubit::QubitSet;
519
520            let mut qs = QubitSet::new();
521            $(qs.add($id);)*
522            qs
523        }
524    };
525}
526
527/// Constructs a quantum circuit with a fixed number of qubits
528///
529/// # Example
530///
531/// ```
532/// use quantrs2_circuit::circuit;
533/// let circuit = circuit![4];
534/// ```
535#[macro_export]
536macro_rules! circuit {
537    ($n:expr) => {
538        quantrs2_circuit::builder::Circuit::<$n>::new()
539    };
540}
541
542/// Provides a DSL for constructing quantum circuits
543///
544/// # Example
545///
546/// ```
547/// use quantrs2_circuit::quantum;
548///
549/// let my_circuit = quantum! {
550///     let qc = circuit(4);  // 4 qubits
551///     qc.h(0);
552///     qc.cnot(0, 1);
553///     qc.measure_all();
554/// };
555/// ```
556#[macro_export]
557macro_rules! quantum {
558    (
559        let $var:ident = circuit($n:expr);
560        $( $stmt_var:ident . $method:ident ( $( $args:expr ),* $(,)? ) ; )*
561    ) => {
562        {
563            let mut $var = quantrs2_circuit::builder::Circuit::<$n>::new();
564            $(
565                $stmt_var.$method($($args),*).expect("Quantum gate operation failed");
566            )*
567            $var
568        }
569    };
570}