ParametricGate

Trait ParametricGate 

Source
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§

Source

fn name(&self) -> &str

Get gate name

Source

fn qubits(&self) -> Vec<usize>

Get qubits this gate acts on

Source

fn parameter_indices(&self) -> Vec<usize>

Get parameter indices this gate depends on

Source

fn matrix(&self, params: &[f64]) -> Result<Array2<Complex64>>

Evaluate gate matrix given parameter values

Source

fn gradient( &self, params: &[f64], param_idx: usize, ) -> Result<Array2<Complex64>>

Compute gradient of gate matrix with respect to each parameter

Provided Methods§

Source

fn parameter_shift_gradient( &self, params: &[f64], param_idx: usize, ) -> Result<(Array2<Complex64>, Array2<Complex64>)>

Apply parameter-shift rule for this gate

Implementors§