pub trait ParametricGate: Send + Sync {
// Required methods
fn name(&self) -> &str;
fn qubits(&self) -> Vec<usize>;
fn parameter_indices(&self) -> Vec<usize>;
fn matrix(&self, params: &[f64]) -> Result<Array2<Complex64>>;
fn gradient(
&self,
params: &[f64],
param_idx: usize,
) -> Result<Array2<Complex64>>;
// Provided method
fn parameter_shift_gradient(
&self,
params: &[f64],
param_idx: usize,
) -> Result<(Array2<Complex64>, Array2<Complex64>)> { ... }
}
Expand description
Parametric quantum gate that supports automatic differentiation
Required Methods§
Sourcefn parameter_indices(&self) -> Vec<usize>
fn parameter_indices(&self) -> Vec<usize>
Get parameter indices this gate depends on