pub trait UnitaryBuilder<P: Precision>: CircuitBuilder {
    // Required method
    fn vec_matrix_to_circuitobject(
        n: usize,
        data: Vec<Complex<P>>
    ) -> Self::CircuitObject;

    // Provided methods
    fn apply_vec_matrix(
        &mut self,
        r: Self::Register,
        data: Vec<Complex<P>>
    ) -> CircuitResult<Self::Register> { ... }
    fn apply_matrix<const N: usize>(
        &mut self,
        r: Self::Register,
        data: [Complex<P>; N]
    ) -> CircuitResult<Self::Register> { ... }
    fn broadcast_single_qubit_matrix(
        &mut self,
        r: Self::Register,
        data: [Complex<P>; 4]
    ) -> Self::Register { ... }
    fn matrix_to_circuitobject<const N: usize>(
        n: usize,
        data: [Complex<P>; N]
    ) -> Self::CircuitObject { ... }
}
Expand description

Standard functions for building unitary circuits.

Required Methods§

source

fn vec_matrix_to_circuitobject( n: usize, data: Vec<Complex<P>> ) -> Self::CircuitObject

Make a circuit object out of an arbitrary matrix Single Qubit matrix is organized as |0><0|, |0><1|, |1><0|, |1><1|

Provided Methods§

source

fn apply_vec_matrix( &mut self, r: Self::Register, data: Vec<Complex<P>> ) -> CircuitResult<Self::Register>

Apply an arbitrary matrix to the circuit given by a vector.

source

fn apply_matrix<const N: usize>( &mut self, r: Self::Register, data: [Complex<P>; N] ) -> CircuitResult<Self::Register>

Apply an arbitrary matrix to the circuit given by an array.

source

fn broadcast_single_qubit_matrix( &mut self, r: Self::Register, data: [Complex<P>; 4] ) -> Self::Register

Single qubit matrices can be applied to each qubit in a register unambiguously. Matrix is organized as |0><0|, |0><1|, |1><0|, |1><1|

source

fn matrix_to_circuitobject<const N: usize>( n: usize, data: [Complex<P>; N] ) -> Self::CircuitObject

Make a circuit object out of an arbitrary matrix Single Qubit matrix is organized as |0><0|, |0><1|, |1><0|, |1><1|

Implementors§