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.1.0)
93//!
94//! - Enhanced code quality with clippy warning fixes
95//! - **SciRS2 v0.1.2 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`
121pub mod buffer_manager;
122pub mod builder;
123pub mod circuit_cache;
124pub mod classical;
125pub mod commutation;
126pub mod crosstalk;
127pub mod dag;
128pub mod debugger;
129pub mod distributed;
130pub mod equivalence;
131pub mod fault_tolerant;
132pub mod formatter;
133pub mod graph_optimizer;
134pub mod linter;
135pub mod measurement;
136pub mod ml_optimization;
137pub mod noise_models;
138pub mod optimization;
139pub mod optimizer;
140pub mod photonic;
141pub mod profiler;
142pub mod pulse;
143pub mod qasm;
144pub mod qc_co_optimization;
145pub mod resource_estimator;
146pub mod routing;
147pub mod scirs2_benchmarking;
148pub mod scirs2_cross_compilation_enhanced;
149pub mod scirs2_integration;
150pub mod scirs2_ir_tools;
151pub mod scirs2_matrices;
152pub mod scirs2_optimization;
153pub mod scirs2_pulse_control_enhanced;
154pub mod scirs2_qasm_compiler_enhanced;
155pub mod scirs2_similarity;
156pub mod scirs2_transpiler_enhanced;
157pub mod simulator_interface;
158pub mod slicing;
159pub mod synthesis;
160pub mod tensor_network;
161pub mod topological;
162pub mod topology;
163pub mod transpiler;
164pub mod validation;
165pub mod verifier;
166pub mod vqe;
167pub mod zx_calculus;
168
169// Re-exports of commonly used types and traits
170pub mod prelude {
171    pub use crate::builder::{CircuitStats, *};
172    // Convenience re-export
173    pub use crate::circuit_cache::{
174        CacheConfig, CacheEntry, CacheManager, CacheStats, CircuitCache, CircuitSignature,
175        CompiledCircuitCache, EvictionPolicy, ExecutionResultCache, SignatureGenerator,
176        TranspilationCache,
177    };
178    pub use crate::classical::{
179        CircuitOp, ClassicalBit, ClassicalCircuit, ClassicalCircuitBuilder, ClassicalCondition,
180        ClassicalOp, ClassicalRegister, ClassicalValue, ComparisonOp, ConditionalGate, MeasureOp,
181    };
182    pub use crate::commutation::{
183        CommutationAnalyzer, CommutationOptimization, CommutationResult, CommutationRules, GateType,
184    };
185    pub use crate::crosstalk::{
186        CrosstalkAnalysis, CrosstalkAnalyzer, CrosstalkModel, CrosstalkSchedule,
187        CrosstalkScheduler, SchedulingStrategy, TimeSlice,
188    };
189    pub use crate::dag::{circuit_to_dag, CircuitDag, DagEdge, DagNode, EdgeType};
190    pub use crate::debugger::{
191        AnalysisDepth, BlochVector, BottleneckType as DebuggerBottleneckType, BreakpointAction,
192        BreakpointCondition, BreakpointManager, ConditionalBreakpoint, ConnectionType,
193        ConnectionVisualization, CorrelationType, DebugError, DebuggerConfig, Difficulty,
194        ErrorAnalysisResults, ErrorCorrelation, ErrorDetectionConfig, ErrorDetector, ErrorPattern,
195        ErrorSeverity, ErrorStatistics, ErrorType as DebuggerErrorType, ExecutionHistory,
196        ExecutionState, ExecutionStatus as DebuggerExecutionStatus, ExecutionSummary,
197        ExportFormat as DebuggerExportFormat, ExportOptions as DebuggerExportOptions,
198        ExpressionResult, ExpressionType, ExpressionValue, GateAttributes, GateExecutionMetrics,
199        GateExecutionResult, GateProperties as DebuggerGateProperties, GateSnapshot,
200        GateType as DebuggerGateType, GateVisualization, HistoryEntry, HistoryStatistics,
201        ImpactAssessment, MemorySnapshot, MemoryStatistics, MemoryUsage, MetricSnapshot,
202        OptimizationSuggestion as DebuggerOptimizationSuggestion, PatternType, PerformanceAnalysis,
203        PerformanceBottleneck, PerformanceProfiler, PerformanceSample, PredictionResult,
204        Priority as DebuggerPriority, ProfilerConfig, ProfilingStatistics, QuantumDebugger,
205        RenderingQuality, RenderingStatistics, RootCause, Solution, StateBreakpoint, StatePattern,
206        StateSnapshot, StepResult, SuggestionType as DebuggerSuggestionType, TimingInfo,
207        TimingStatistics, TrendAnalysis, TrendDirection, Visualization, VisualizationConfig,
208        VisualizationData, VisualizationEngine, VisualizationMetadata, VisualizationSnapshot,
209        VisualizationType, WatchConfig, WatchExpression, WatchManager, WatchedGate, WatchedMetric,
210        WatchedState,
211    };
212    pub use crate::distributed::{
213        BackendType, DistributedExecutor, DistributedJob, DistributedResult, ExecutionBackend,
214        ExecutionParameters, ExecutionStatus, LoadBalancingStrategy, Priority, SystemHealthStatus,
215    };
216    pub use crate::equivalence::{
217        circuits_equivalent, circuits_structurally_equal, EquivalenceChecker, EquivalenceOptions,
218        EquivalenceResult, EquivalenceType,
219    };
220    pub use crate::fault_tolerant::{
221        FaultTolerantCircuit, FaultTolerantCompiler, LogicalQubit, MagicState, QECCode,
222        ResourceOverhead, SyndromeMeasurement, SyndromeType,
223    };
224    pub use crate::formatter::{
225        AlignmentConfig, AlignmentEngine, AlignmentGroup, AlignmentItem, AlignmentOptimization,
226        AlignmentState, AlignmentStatistics, AutoCorrectionConfig, ChangeType, CodeOrganizer,
227        CodeSection, CodeStructure, CommentAlignment, CommentConfig, CommentFormatter,
228        CommentFormatterState, CommentRule, ComplianceLevel as FormatterComplianceLevel,
229        ConsistencyMetrics, FormattedCircuit, FormatterConfig, FormattingChange, FormattingResult,
230        FormattingStatistics, GroupingStrategy, IndentationConfig, IndentationStyle,
231        LayoutOptimizer, OptimizationConfig as FormatterOptimizationConfig, OrganizationConfig,
232        Position, QualityMetrics, QuantumFormatter, SciRS2AnalysisConfig,
233        SeverityLevel as FormatterSeverityLevel, SpacingConfig, SpacingStyle, StyleCompliance,
234        StyleEnforcementConfig, StyleEnforcer, StyleInformation, StyleIssue, WhitespaceManager,
235        WhitespaceOptimization, WhitespaceState, WhitespaceStatistics,
236    };
237    pub use crate::graph_optimizer::{CircuitDAG, GraphGate, GraphOptimizer, OptimizationStats};
238    pub use crate::linter::{
239        AnalysisScope, AntiPatternDetectionResult, AntiPatternDetector, AutoFix, AutoFixType,
240        BarrierUsageStyle, BestPracticeResult, BestPracticeRule, BestPracticeViolation,
241        BestPracticesChecker, BestPracticesCompliance, CircuitLocation, ComplexityAnalysisResult,
242        ComplexityAnalyzer, ComplexityClassification, ComplexityMetric,
243        ComplexityMetrics as LinterComplexityMetrics, ComplexityTrend, ComplianceLevel,
244        ConnectivityPattern, ConstraintType as LinterConstraintType, CustomGuideline,
245        Difficulty as LinterDifficulty, GateGroupingStyle, Importance,
246        IndentationStyle as LinterIndentationStyle, InteractionType, IssueType, LintIssue,
247        LinterConfig, LintingMetadata, LintingResult, LintingStatistics, MeasurementPlacementStyle,
248        NamingConvention, OptimizationAnalysisResult, OptimizationAnalyzer,
249        OptimizationImprovement as LinterOptimizationImprovement, OptimizationRule,
250        OptimizationSuggestion as LinterOptimizationSuggestion, OptimizationType,
251        ParameterConstraint, PatternAnalysisResult, PatternDetectionResult, PatternDetector,
252        PatternFlexibility, PatternInteraction, PatternMatcher, PatternPerformanceProfile,
253        PatternStatistics, PerformanceImpact, PerformanceMetrics as LinterPerformanceMetrics,
254        PerformanceProjection, PracticeGuidelines, QuantumAntiPattern, QuantumLinter,
255        QuantumPattern, QubitOrderingStyle, Risk, SafetyLevel,
256        ScalingBehavior as LinterScalingBehavior, Severity, SimplificationSuggestion,
257        SimplificationType, StyleAnalysisResult, StyleCheckResult, StyleChecker, StyleConfig,
258        StyleRule, StyleStrictness, StyleViolation, TrendDirection as LinterTrendDirection,
259    };
260    pub use crate::measurement::{
261        CircuitOp as MeasurementCircuitOp, FeedForward, Measurement, MeasurementCircuit,
262        MeasurementCircuitBuilder, MeasurementDependencies,
263    };
264    pub use crate::ml_optimization::{
265        AcquisitionFunction, FeatureExtractor, ImprovementMetrics, MLCircuitOptimizer,
266        MLCircuitRepresentation, MLOptimizationResult, MLStrategy, TrainingExample,
267    };
268    pub use crate::noise_models::{
269        DecoherenceParams, ErrorSource, LeakageError, NoiseAnalysisResult, NoiseAnalyzer,
270        ReadoutError, SingleQubitError, ThermalNoise, TwoQubitError,
271    };
272    pub use crate::optimization::{
273        AbstractCostModel, CircuitAnalyzer, CircuitOptimizer2, CircuitRewriting,
274        CoherenceOptimization, CommutationTable, CostBasedOptimization, CostModel,
275        DecompositionOptimization, DecouplingSequence, DynamicalDecoupling, GateCancellation,
276        GateCommutation, GateCost, GateError, GateMerging, GateProperties, HardwareCostModel,
277        NoiseAwareCostModel, NoiseAwareMapping, NoiseAwareOptimizer, NoiseModel, OptimizationLevel,
278        OptimizationPass, OptimizationReport, PassConfig, PassManager, RotationMerging,
279        TemplateMatching, TwoQubitOptimization,
280    };
281    pub use crate::optimizer::{
282        CircuitOptimizer, HardwareOptimizer, OptimizationPassType, OptimizationResult,
283        RedundantGateElimination, SingleQubitGateFusion,
284    };
285    pub use crate::photonic::{
286        CVCircuit, CVGate, CVMeasurement, PhotonicCircuit, PhotonicCircuitBuilder,
287        PhotonicConverter, PhotonicGate, PhotonicMeasurement, PhotonicMode, Polarization,
288        PolarizationBasis,
289    };
290    pub use crate::profiler::{
291        AccuracyMeasurement, AccuracyTracking, AggregationFunction, AggregationRule, Alert,
292        AlertChannel, AlertChannelType, AlertCondition, AlertLevel, AlertRule, AlertSystem,
293        AllocationEvent, AllocationEventType, AllocationInfo, AllocationStatistics,
294        AllocationTracker, AllocationType, AnalysisConfig, AnalysisDepth as ProfilerAnalysisDepth,
295        AnalyticsConfig, AnomalyAlgorithmType, AnomalyDetectionAlgorithm, AnomalyDetectionConfig,
296        AnomalyDetector, AnomalyType, AnomySeverity, ArchivalPolicy, BackupConfig, BaselineManager,
297        BaselineUpdatePolicy, BaselineValidationResults,
298        BenchmarkConfig as ProfilerBenchmarkConfig, BenchmarkEngine, BenchmarkResult,
299        BenchmarkSuite, BenchmarkSuiteConfig, BenchmarkTest, BenchmarkTestType,
300        BottleneckAnalysis as ProfilerBottleneckAnalysis, BottleneckImpactAnalysis,
301        BottleneckSeverity, CacheMissRates, CascadingEffect, ChecksumAlgorithm, ComparisonOperator,
302        ComparisonResults, ComparisonSummary, CompressionAlgorithm, CompressionSettings,
303        ConnectionStatistics, CostBenefitAnalysis, CpuOptimization, CpuOptimizationType,
304        CpuProfilingData, CpuState, DataRetentionPolicy, DetailedAnalysis, EnvironmentInfo,
305        ErrorAnalysis, ErrorCharacteristics, ErrorDistribution,
306        ErrorPattern as ProfilerErrorPattern, ErrorSeverity as ProfilerErrorSeverity,
307        ExportFormat as ProfilerExportFormat, GateProfile, GateProfiler, GpuInfo, GpuOptimization,
308        GpuOptimizationType, GpuProfilingData, HardwareConfig, HistoricalPerformanceData,
309        InsightType, IntegrityChecks, IoOptimization, IoOptimizationType, IoProfilingData, IoState,
310        LatencyDistribution, LeakAnalysisResults, LeakDetector, LeakSeverity, LogicalOperator,
311        MemoryLeak, MemoryOptimization as ProfilerMemoryOptimization, MemoryOptimizationType,
312        MemoryPattern, MemoryProfiler, MemorySnapshot as ProfilerMemorySnapshot, MemoryState,
313        MemoryTransferTimes, MetricCategory, MetricStream, MetricsCollector,
314        MitigationStrategy as ProfilerMitigationStrategy, MitigationStrategyType, MlModel,
315        NetworkOptimization, NetworkOptimizationType, NetworkProfilingData, NetworkState,
316        PerformanceAnalyzer, PerformanceAnomaly, PerformanceBaseline,
317        PerformanceInsight as ProfilerPerformanceInsight, PerformanceMetric, PerformanceRegression,
318        PerformanceSnapshot, PerformanceSummary, PrecisionLevel, PredictionConfig,
319        PredictionEngine, PredictionModel as ProfilerPredictionModel, PredictionModelType,
320        PredictionResult as ProfilerPredictionResult, ProfilerConfig as ProfilerConfiguration,
321        ProfilingReport, ProfilingSession, QuantumProfiler, RealtimeMetrics, RecoveryStatistics,
322        RegressionAlgorithmType, RegressionAnalysisResults, RegressionDetectionAlgorithm,
323        RegressionDetectionConfig, RegressionDetector, RegressionSeverity, ResourceBottleneck,
324        ResourceBottleneckType, ResourceProfiler,
325        ResourceRequirements as ProfilerResourceRequirements, ResourceUtilization,
326        SerializationConfig, SerializationFormat, SessionAnalytics, SessionConfig, SessionData,
327        SessionManager, SessionStatistics, SessionStatus, SessionStorage, SessionTrendAnalysis,
328        SeverityLevel, StatisticalMethod, StorageBackend, StorageConfig, StorageInfo, StorageType,
329        StreamStatistics, SuppressionCondition, SuppressionRule, SystemState, TestResult,
330        ThroughputStatistics, TimingStatistics as ProfilerTimingStatistics, TrainingStatus,
331        TrendAnalysisResults, ValidationStatus,
332    };
333    pub use crate::pulse::{
334        Channel, DeviceConfig, PulseCalibration, PulseCompiler, PulseInstruction, PulseOptimizer,
335        PulseSchedule, Waveform,
336    };
337    pub use crate::qasm::exporter::ExportError;
338    pub use crate::qasm::{
339        export_qasm3, parse_qasm3, validate_qasm3, ExportOptions, ParseError, QasmExporter,
340        QasmGate, QasmParser, QasmProgram, QasmRegister, QasmStatement, ValidationError,
341    };
342    pub use crate::qc_co_optimization::{
343        ClassicalProcessingStep, ClassicalStepType, DataFlowGraph, DataType,
344        HybridOptimizationAlgorithm, HybridOptimizationProblem, HybridOptimizationResult,
345        HybridOptimizer, LearningRateSchedule, ObjectiveFunction as HybridObjectiveFunction,
346        ObjectiveFunctionType, ParameterizedQuantumComponent, RegularizationType,
347    };
348    pub use crate::resource_estimator::{
349        AlgorithmClass, CircuitMetrics as ResourceCircuitMetrics, ComplexityAnalysis,
350        ComplexityClass, ExecutionTimeEstimate, HardwareRequirements, MemoryRequirements,
351        OptimizationSuggestion as ResourceOptimizationSuggestion, PlatformRecommendation,
352        ResourceEstimate, ScalabilityAnalysis, ScalingBehavior, ScalingFunction,
353    };
354    pub use crate::routing::{
355        CircuitRouter, CouplingMap, Distance, LookaheadConfig, LookaheadRouter, RoutedCircuit,
356        RoutingPassType, RoutingResult, RoutingStatistics, RoutingStrategy, SabreConfig,
357        SabreRouter, SwapLayer, SwapNetwork,
358    };
359    pub use crate::scirs2_benchmarking::{
360        BaselineComparison, BenchmarkConfig, BenchmarkReport, BenchmarkRun, CircuitBenchmark,
361        CircuitMetrics as BenchmarkCircuitMetrics, DescriptiveStats, Distribution, DistributionFit,
362        HypothesisTestResult, InsightCategory, OutlierAnalysis, OutlierDetectionMethod,
363        PerformanceInsight, PracticalSignificance, RegressionAnalysis, StatisticalAnalyzer,
364        StatisticalTest,
365    };
366    pub use crate::scirs2_cross_compilation_enhanced::{
367        AppliedOptimization, BatchCompilationReport, BatchCompilationResult, BatchPerformanceStats,
368        CircuitMetrics, CircuitSize, CircuitVisualization, ClassicalOpType, ClassicalOperation,
369        CodeFormat, ComparisonVisualization, CompilationComplexity, CompilationRecommendation,
370        CompilationReport, CompilationStage, CompilationStrategy, CompilationSummary,
371        CrossCompilationConfig, CrossCompilationResult, DataFlow, Difference, DifferenceType,
372        EnhancedCrossCompilationConfig, EnhancedCrossCompiler, FailedCompilation, FlowEdge,
373        FlowNode, GraphLayout, IRClassicalOp, IRClassicalOpType, IREdge, IRGate, IRGraph, IRNode,
374        IROperation, IROperationType, IRVisualization, NodeType, OperationType, OptimizationImpact,
375        OptimizationImprovement, OptimizationTimeline, OptimizationVisualization, ParsedCircuit,
376        QuantumFramework, QuantumIR, QuantumOperation,
377        RecommendationCategory as CompilationRecommendationCategory, ResourceUsage, SourceCircuit,
378        StageAnalysis, StageImpact, StagePerformance, TargetCode, TargetPlatform, TimelineEvent,
379        ValidationError as CrossValidationError, ValidationErrorType,
380        ValidationResult as CrossValidationResult, ValidationWarning as CrossValidationWarning,
381        ValidationWarningType, VisualCompilationFlow,
382    };
383    pub use crate::scirs2_integration::{
384        AnalysisResult, AnalyzerConfig, GraphMetrics, GraphMotif, OptimizationSuggestion,
385        SciRS2CircuitAnalyzer, SciRS2CircuitGraph, SciRS2Edge, SciRS2Node, SciRS2NodeType,
386    };
387    pub use crate::scirs2_matrices::{
388        CircuitToSparseMatrix, Complex64, SparseFormat, SparseGate, SparseGateLibrary,
389        SparseMatrix, SparseOptimizer,
390    };
391    pub use crate::scirs2_optimization::{
392        CircuitTemplate, EarlyStoppingCriteria, KernelType, ObjectiveFunction,
393        OptimizationAlgorithm, OptimizationConfig, OptimizationHistory, Parameter,
394        ParameterizedGate, QAOAObjective, QuantumCircuitOptimizer, VQEObjective,
395    };
396    pub use crate::scirs2_pulse_control_enhanced::{
397        AWGSpecifications, AmplitudeNoiseSpec, CosinePulse, CustomPulseShape, DRAGPulse,
398        EnhancedPulseConfig, EnhancedPulseController, ErfPulse, FilterState, FilterType,
399        GateAnalysis, GaussianPulse, HardwareConstraints, IQMixerSpecifications,
400        MitigationStrategy, OptimizationFeedback, OptimizationStep, PhaseNoiseSpec,
401        PredistortionModel, PulseChannel, PulseConstraints, PulseControlConfig, PulseExportFormat,
402        PulseLibrary, PulseMetadata, PulseOptimizationModel, PulseOptimizationObjective,
403        PulseSequence, SechPulse, SignalProcessingConfig, SignalProcessor, SignalProcessorConfig,
404        Waveform as EnhancedWaveform, WindowType,
405    };
406    pub use crate::scirs2_qasm_compiler_enhanced::{
407        ASTNode, ASTStatistics, AnalysisOptions, BinaryOp, CompilationResult,
408        CompilationStatistics, CompilationTarget, CompilationVisualizations, CompilationWarning,
409        EnhancedQASMCompiler, EnhancedQASMConfig, ErrorType, ExportFormat, Expression,
410        GateDefinition, GeneratedCode, Location, OptimizedQASM, ParsedQASM, QASMCompilerConfig,
411        QASMVersion, Token, TokenType, TypeCheckingLevel, UnaryOp, ValidationResult,
412        ValidationWarning, WarningType, AST,
413    };
414    pub use crate::scirs2_similarity::{
415        BatchSimilarityComputer, CircuitDistanceMetrics, CircuitFeatures,
416        CircuitSimilarityAnalyzer, CircuitSimilarityMetrics, EntanglementStructure,
417        GraphKernelType, GraphSimilarityAlgorithm, MLModelType, SciRS2Graph, SimilarityAlgorithm,
418        SimilarityConfig, SimilarityWeights,
419    };
420    pub use crate::scirs2_transpiler_enhanced::{
421        AdvancedHardwareFeatures, Bottleneck, BottleneckType, CircuitAnalysis,
422        CircuitFeatures as EnhancedCircuitFeatures, CompatibilityReport, DecomposedGate,
423        DecompositionResult, DecompositionStrategy, EnhancedTranspiler, EnhancedTranspilerConfig,
424        ErrorMitigationSupport, GateDecomposition, GateStatistics, HardwareBackend, ImpactLevel,
425        MitigationResult, NativeGateSet as EnhancedNativeGateSet, ParallelismAnalysis, PassResult,
426        PerformanceConstraints, PerformanceMetrics, PerformancePrediction, PredictionModel,
427        RoutingFeedback, RoutingModel, SuggestionType, SwapGate, TopologyAnalysis, TopologyType,
428        TranspilationPass, TranspilationResult as EnhancedTranspilationResult,
429        VisualRepresentation,
430    };
431    pub use crate::simulator_interface::{
432        CircuitCompiler, CompiledCircuit, ContractionStrategy, ExecutionResult, InstructionSet,
433        MemoryOptimization, OptimizationLevel as SimulatorOptimizationLevel, ResourceRequirements,
434        SimulatorBackend, SimulatorExecutor,
435    };
436    pub use crate::slicing::{CircuitSlice, CircuitSlicer, SlicingResult, SlicingStrategy};
437    pub use crate::synthesis::{
438        GateSet, MultiQubitSynthesizer, SingleQubitSynthesizer, SynthesisConfig,
439        TwoQubitSynthesizer, UnitaryOperation, UnitarySynthesizer,
440    };
441    pub use crate::tensor_network::{
442        CircuitToTensorNetwork, CompressedCircuit, CompressionMethod, MatrixProductState, Tensor,
443        TensorNetwork, TensorNetworkCompressor,
444    };
445    pub use crate::topological::{
446        Anyon, AnyonModel, AnyonType, BraidingOperation, BraidingOptimizer, OptimizationStrategy,
447        TopologicalCircuit, TopologicalCompiler, TopologicalGate,
448    };
449    pub use crate::topology::{TopologicalAnalysis, TopologicalAnalyzer, TopologicalStrategy};
450    pub use crate::transpiler::{
451        DeviceTranspiler, HardwareSpec, NativeGateSet, TranspilationOptions, TranspilationResult,
452        TranspilationStats, TranspilationStrategy,
453    };
454    pub use crate::validation::{
455        CircuitValidator, ClassicalConstraints, ConnectivityConstraints, DepthLimits,
456        GateRestrictions, MeasurementConstraints, ResourceLimits, ValidationRules, ValidationStats,
457        ValidationSuggestion,
458    };
459    pub use crate::verifier::{
460        BinaryOperator, CircuitInvariant, CircuitLocation as VerifierCircuitLocation,
461        ComplexityClass as VerifierComplexityClass, ConfidenceStatistics,
462        ConstraintSatisfactionResult, ConstraintType, CorrectnessChecker, CorrectnessCriterion,
463        CorrectnessResult, Counterexample, CustomInvariantChecker, CustomPredicate,
464        EntanglementType, ErrorBounds, ErrorModel, EvidenceType, ExecutionTrace, ExpectedOutput,
465        FormalProof, InvariantCheckResult, InvariantChecker, IssueSeverity,
466        IssueType as VerifierIssueType, ModelCheckResult, ModelChecker, NumericalEvidence,
467        ProofComplexityMetrics, ProofNode, ProofObligation, ProofStatus, ProofStep, ProofStrategy,
468        ProofTree, PropertyChecker, PropertyVerificationResult, QuantumProperty, QuantumState,
469        QuantumTheorem, QuantumVerifier, StateSpace, StateSpaceStatistics, StateTransition,
470        SuperpositionType, SymbolicConstraint, SymbolicExecutionConfig, SymbolicExecutionResult,
471        SymbolicExecutionStatus, SymbolicExecutor, SymbolicExpression, SymbolicState, SymbolicType,
472        SymbolicVariable, TemporalProperty, TestCase, TestOutcome, TheoremProver, TheoremResult,
473        UnaryOperator, VerificationIssue, VerificationMetadata, VerificationOutcome,
474        VerificationResult, VerificationStatistics, VerificationStatus, VerifierConfig,
475        VerifierTestResult, ViolationSeverity,
476    };
477    pub use crate::vqe::{
478        PauliOperator, VQEAnsatz, VQECircuit, VQEObservable, VQEOptimizer, VQEOptimizerType,
479        VQEResult,
480    };
481    pub use crate::zx_calculus::{
482        OptimizedZXResult, ZXDiagram, ZXEdge, ZXNode, ZXOptimizationResult, ZXOptimizer,
483    };
484    pub use quantrs2_core::qubit::QubitId as Qubit;
485}
486
487// The following should be proc macros, but we'll implement them later
488// for now they're just stubs
489
490/// Creates a qubit set for quantum operations
491///
492/// # Example
493///
494/// ```
495/// use quantrs2_circuit::qubits;
496/// let qs = qubits![0, 1, 2];
497/// ```
498#[macro_export]
499macro_rules! qubits {
500    ($($id:expr),* $(,)?) => {
501        {
502            use quantrs2_core::qubit::QubitSet;
503
504            let mut qs = QubitSet::new();
505            $(qs.add($id);)*
506            qs
507        }
508    };
509}
510
511/// Constructs a quantum circuit with a fixed number of qubits
512///
513/// # Example
514///
515/// ```
516/// use quantrs2_circuit::circuit;
517/// let circuit = circuit![4];
518/// ```
519#[macro_export]
520macro_rules! circuit {
521    ($n:expr) => {
522        quantrs2_circuit::builder::Circuit::<$n>::new()
523    };
524}
525
526/// Provides a DSL for constructing quantum circuits
527///
528/// # Example
529///
530/// ```
531/// use quantrs2_circuit::quantum;
532///
533/// let my_circuit = quantum! {
534///     let qc = circuit(4);  // 4 qubits
535///     qc.h(0);
536///     qc.cnot(0, 1);
537///     qc.measure_all();
538/// };
539/// ```
540#[macro_export]
541macro_rules! quantum {
542    (
543        let $var:ident = circuit($n:expr);
544        $( $stmt_var:ident . $method:ident ( $( $args:expr ),* $(,)? ) ; )*
545    ) => {
546        {
547            let mut $var = quantrs2_circuit::builder::Circuit::<$n>::new();
548            $(
549                $stmt_var.$method($($args),*).expect("Quantum gate operation failed");
550            )*
551            $var
552        }
553    };
554}