use scirs2_core::numeric::{Float, NumCast, One, Zero};
use scirs2_core::{parallel_ops::*, simd_ops::SimdUnifiedOps, validation::*};
use super::types::{AdvancedQuantumAnalyzer, QuantumConfig};
#[inline(always)]
pub(super) fn const_f64<F: Float + NumCast>(value: f64) -> F {
F::from(value).expect("Failed to convert constant to target float type")
}
#[cfg(test)]
mod tests {
use super::*;
use scirs2_core::ndarray::array;
#[test]
fn test_quantum_analyzer_creation() {
let config = QuantumConfig::default();
let analyzer = AdvancedQuantumAnalyzer::<f64>::new(config);
assert_eq!(analyzer.config.num_qubits, 10);
}
#[test]
fn test_quantum_amplitude_estimation() {
let config = QuantumConfig::default();
let mut analyzer = AdvancedQuantumAnalyzer::<f64>::new(config);
let data = array![[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]];
let result = analyzer.quantum_amplitude_estimation(&data.view());
assert!(result.is_ok());
}
#[test]
fn test_quantum_pca() {
let config = QuantumConfig::default();
let mut analyzer = AdvancedQuantumAnalyzer::<f64>::new(config);
let data = array![[1.0, 2.0], [3.0, 4.0], [5.0, 6.0]];
let result = analyzer.quantum_pca(&data.view());
assert!(result.is_ok());
}
}