1#![allow(clippy::unnecessary_wraps)] #![allow(clippy::unused_self)] #![allow(clippy::unused_async)]
5#![allow(clippy::significant_drop_tightening)] #![allow(clippy::match_same_arms)] #![allow(clippy::option_if_let_else)] #![allow(clippy::return_self_not_must_use)] #![allow(clippy::needless_range_loop)] #![allow(clippy::branches_sharing_code)] #![allow(clippy::type_complexity)] #![allow(clippy::missing_const_for_fn)] #![allow(clippy::format_push_string)] #![allow(clippy::cast_possible_truncation)] #![allow(clippy::future_not_send)] #![allow(clippy::needless_pass_by_ref_mut)] #![allow(clippy::cast_precision_loss)] #![allow(clippy::uninlined_format_args)] #![allow(clippy::assigning_clones)] #![allow(clippy::zero_sized_map_values)] #![allow(clippy::used_underscore_binding)] #![allow(clippy::collection_is_never_read)] #![allow(clippy::wildcard_in_or_patterns)] #![allow(clippy::ptr_arg)] #![allow(clippy::implicit_hasher)] #![allow(clippy::ref_option)] #![allow(clippy::expect_fun_call)] #![allow(clippy::if_not_else)] #![allow(clippy::iter_on_single_items)] #![allow(clippy::trivially_copy_pass_by_ref)] #![allow(clippy::empty_line_after_doc_comments)] #![allow(clippy::manual_let_else)] #![allow(clippy::await_holding_lock)] #![allow(clippy::pedantic)]
40#![allow(clippy::nursery)]
41#![allow(clippy::cargo)]
42#![allow(clippy::large_enum_variant)]
44#![allow(clippy::borrowed_box)]
45#![allow(clippy::manual_map)]
46#![allow(clippy::non_send_fields_in_send_ty)]
47#![allow(clippy::if_same_then_else)]
48#![allow(clippy::manual_clamp)]
49#![allow(clippy::double_must_use)]
50#![allow(clippy::only_used_in_recursion)]
51#![allow(clippy::same_item_push)]
52#![allow(clippy::format_in_format_args)]
53#![allow(clippy::implied_bounds_in_impls)]
54#![allow(clippy::explicit_counter_loop)]
55#![allow(clippy::duplicated_attributes)]
56#![allow(clippy::new_ret_no_self)]
57#![allow(clippy::must_use_unit)]
58#![allow(clippy::redundant_pattern_matching)]
59#![allow(clippy::redundant_guards)]
60#![allow(clippy::wrong_self_convention)]
61#![allow(clippy::iter_next_slice)]
62#![allow(clippy::create_dir)]
63#![allow(clippy::enum_variant_names)]
64#![allow(clippy::should_implement_trait)] #![allow(clippy::upper_case_acronyms)] #![allow(clippy::unnecessary_map_or)] #![allow(clippy::derivable_impls)] #![allow(clippy::or_fun_call)] #![allow(clippy::cloned_ref_to_slice_refs)] #![allow(clippy::collapsible_match)]
72#![allow(clippy::len_without_is_empty)]
73#![allow(clippy::arc_with_non_send_sync)]
74#![allow(clippy::std_instead_of_core)] #![allow(clippy::match_like_matches_macro)] #![allow(clippy::suspicious_open_options)] #![allow(clippy::new_without_default)] pub mod adaptive_noise_calibration;
164pub mod adaptive_optimization;
165pub mod advanced_error_mitigation;
166pub mod advanced_performance_analysis;
167pub mod advanced_problem_decomposition;
168pub mod advanced_visualization;
169pub mod ai_assisted_optimization;
170pub mod analysis;
171pub mod applications;
172pub mod auto_array;
173pub mod benchmark;
174pub mod coherent_ising_machine;
175pub mod compile;
176pub mod constraints;
177pub mod encoding;
178pub mod gpu;
179pub mod gpu_benchmark;
180pub mod gpu_kernels;
181pub mod gpu_memory_pool;
182pub mod gpu_performance;
183pub mod gpu_samplers;
184pub mod grover_amplitude_amplification;
185pub mod hybrid_algorithms;
186pub mod ml_guided_sampling;
187pub mod multi_objective_optimization;
188pub mod optimization;
189pub mod optimize;
190pub mod parallel_tempering;
191pub mod parallel_tempering_advanced;
192pub mod performance_optimization;
193pub mod performance_profiler;
194pub mod problem_decomposition;
195pub mod problem_dsl;
196pub mod quantum_adiabatic_path_optimization;
197pub mod quantum_advantage_analysis;
198pub mod quantum_advantage_prediction;
199pub mod quantum_annealing;
200pub mod quantum_circuit_annealing_compiler;
201pub mod quantum_classical_hybrid;
202pub mod quantum_error_correction;
203pub mod quantum_inspired_ml;
204pub mod quantum_ml_integration;
205pub mod quantum_neural_networks;
206pub mod quantum_optimization_extensions;
207pub mod quantum_state_tomography;
208pub mod realtime_performance_dashboard;
209pub mod realtime_quantum_integration;
210pub mod sampler;
211pub mod sampler_framework;
212pub mod scirs_stub;
213pub mod sensitivity_analysis;
214pub mod solution_clustering;
215pub mod solution_debugger;
216pub mod solution_statistics;
217pub mod symbol;
218pub mod tensor_network_sampler;
219pub mod testing_framework;
220pub mod topological_optimization;
221pub mod variable_correlation;
222pub mod variational_quantum_factoring;
223pub mod visual_problem_builder;
224pub mod visualization;
225
226pub use advanced_error_mitigation::{
228 create_advanced_error_mitigation_manager, create_lightweight_error_mitigation_manager,
229 AdvancedErrorMitigationManager, ErrorMitigationConfig,
230};
231pub use advanced_performance_analysis::{
232 create_comprehensive_analyzer, create_lightweight_analyzer, AdvancedPerformanceAnalyzer,
233 AnalysisConfig,
234};
235pub use advanced_visualization::{
236 create_advanced_visualization_manager, create_lightweight_visualization_manager,
237 AdvancedVisualizationManager, VisualizationConfig,
238};
239pub use analysis::{calculate_diversity, cluster_solutions, visualize_energy_distribution};
240#[cfg(feature = "dwave")]
241pub use auto_array::AutoArray;
242#[cfg(feature = "dwave")]
243pub use compile::{Compile, PieckCompile};
244#[cfg(feature = "gpu")]
245pub use gpu::{gpu_solve_hobo, gpu_solve_qubo, is_available as is_gpu_available_internal};
246pub use grover_amplitude_amplification::{
247 GroverAmplificationConfig, GroverAmplifiedSampler, GroverAmplifiedSolver,
248};
249pub use optimize::{calculate_energy, optimize_hobo, optimize_qubo};
250pub use quantum_adiabatic_path_optimization::{
251 AdiabaticPathConfig, PathInterpolation, QuantumAdiabaticPathOptimizer, QuantumAdiabaticSampler,
252};
253pub use sampler::{
254 ArminSampler, DWaveSampler, GASampler, MIKASAmpler, PopulationAnnealingSampler, SASampler,
255 SBSampler, SBVariant, TabuSampler,
256};
257pub use scirs_stub::SCIRS2_AVAILABLE;
258#[cfg(feature = "dwave")]
259pub use symbol::{symbols, symbols_define, symbols_list, symbols_nbit};
260pub use tensor_network_sampler::{
261 create_mera_sampler, create_mps_sampler, create_peps_sampler, TensorNetworkSampler,
262};
263pub use visual_problem_builder::{
264 BuilderConfig, ConstraintType, ExportFormat, ObjectiveExpression, VariableType, VisualProblem,
265 VisualProblemBuilder,
266};
267
268pub use quantrs2_anneal::{IsingError, IsingModel, IsingResult, QuboModel};
270pub use quantrs2_anneal::{QuboBuilder, QuboError, QuboFormulation, QuboResult};
271
272#[must_use]
277pub const fn is_available() -> bool {
278 true
279}
280
281#[cfg(feature = "gpu")]
285pub fn is_gpu_available() -> bool {
286 match ocl::Platform::list().first() {
289 Some(platform) => !ocl::Device::list_all(platform)
290 .unwrap_or_default()
291 .is_empty(),
292 None => false,
293 }
294}
295
296#[cfg(not(feature = "gpu"))]
297#[must_use]
298pub const fn is_gpu_available() -> bool {
299 false
300}
301
302#[must_use]
304pub const fn version() -> &'static str {
305 env!("CARGO_PKG_VERSION")
306}