pub mod analysis;
pub mod circuits;
pub mod config;
pub mod executor;
pub mod hardware;
pub mod noise;
pub mod objectives;
pub mod optimization;
pub mod statistical;
pub use analysis::*;
pub use circuits::*;
pub use config::{
AdaptiveShotConfig, ConvergenceCriterion, GradientMethod, MultiStartConfig, VQAAlgorithmType,
VQAConfig, VQAHardwareConfig, VQANoiseMitigation, VQAOptimizationConfig, VQAOptimizer,
VQAStatisticalConfig, VQAValidationConfig,
}; pub use executor::{VQAExecutor, VQAExecutorConfig, VQAResult}; pub use hardware::*;
pub use noise::*;
pub use objectives::*;
pub use optimization::*;
pub use statistical::*;
pub type DeviceResult<T> = crate::DeviceResult<T>;
pub type DeviceError = crate::DeviceError;
#[cfg(feature = "scirs2")]
pub use scirs2_graph;
#[cfg(feature = "scirs2")]
pub use scirs2_linalg;
#[cfg(feature = "scirs2")]
pub use scirs2_optimize;
#[cfg(feature = "scirs2")]
pub use scirs2_stats;
#[cfg(not(feature = "scirs2"))]
pub mod fallback_scirs2 {
use scirs2_core::ndarray::{Array1, Array2, ArrayView1, ArrayView2};
pub fn mean(_data: &ArrayView1<f64>) -> Result<f64, String> {
Ok(0.0)
}
pub fn std(_data: &ArrayView1<f64>, _ddof: i32) -> Result<f64, String> {
Ok(1.0)
}
pub fn var(_data: &ArrayView1<f64>, _ddof: i32) -> Result<f64, String> {
Ok(1.0)
}
pub fn pearsonr(
_x: &ArrayView1<f64>,
_y: &ArrayView1<f64>,
_alt: &str,
) -> Result<(f64, f64), String> {
Ok((0.0, 0.5))
}
pub fn trace(_matrix: &ArrayView2<f64>) -> Result<f64, String> {
Ok(1.0)
}
pub fn inv(_matrix: &ArrayView2<f64>) -> Result<Array2<f64>, String> {
Ok(Array2::eye(2))
}
pub struct OptimizeResult {
pub x: Array1<f64>,
pub fun: f64,
pub success: bool,
pub nit: usize,
pub nfev: usize,
pub message: String,
}
pub fn minimize(
_func: fn(&Array1<f64>) -> f64,
_x0: &Array1<f64>,
_method: &str,
) -> Result<OptimizeResult, String> {
Ok(OptimizeResult {
x: Array1::zeros(2),
fun: 0.0,
success: true,
nit: 0,
nfev: 0,
message: "Fallback optimization".to_string(),
})
}
pub fn differential_evolution(
_func: fn(&Array1<f64>) -> f64,
_bounds: &[(f64, f64)],
) -> Result<OptimizeResult, String> {
Ok(OptimizeResult {
x: Array1::zeros(2),
fun: 0.0,
success: true,
nit: 0,
nfev: 0,
message: "Fallback optimization".to_string(),
})
}
}
#[cfg(not(feature = "scirs2"))]
pub use fallback_scirs2::*;
pub fn execute_vqa(
config: VQAConfig,
ansatz: &circuits::ParametricCircuit,
objective_function: &dyn ObjectiveFunction,
) -> DeviceResult<VQAResult> {
let mut executor =
VQAExecutor::new(config, crate::calibration::CalibrationManager::new(), None);
Err(DeviceError::NotImplemented(
"Async execution not implemented in modular interface".to_string(),
))
}
pub fn vqe_config() -> VQAConfig {
VQAConfig::new(VQAAlgorithmType::VQE)
}
pub fn qaoa_config(num_layers: usize) -> VQAConfig {
let mut config = VQAConfig::new(VQAAlgorithmType::QAOA);
config.optimization_config.max_iterations = num_layers * 100;
config
}