Struct quantum::gate::Gate [] [src]

pub struct Gate {
    // some fields omitted
}

Represents a quantum gate: a quantum regster transformation.

This gate is tagged with a width, and contains a unitary matrix representing the numerical transformation in the computational basis.

This gate may be applied to a ket to update the ket's state.

Currently we do not check whether the matrix is unitary.

See Wikipedia for more information.

Methods

impl Gate
[src]

fn new(width: usize, matrix: Matrix) -> Gate

Construct a new quantum gate, given width and computational basis matrix.

Currently we do not check whether the matrix is unitary.

Panics

We panic if the supplied matrix is non-square or not of dimension width.

fn width(&self) -> usize

Width of the gate.

fn matrix(&self) -> &Matrix

Representative matrix.

fn permute(&self, permutation: Vec<usize>) -> Gate

Permute the qubits on which we act.

Qubit i will be acted on as qubit permutation[i] was before.

TODO: The consumer has to work out the (complicated) matrix permutation. We ought to be able to compute this ourselves from a qubit permutation.

Panics

We panic if set(permutation) != {0, ..., self.size - 1}.

Trait Implementations

Derived Implementations

impl PartialEq for Gate
[src]

fn eq(&self, __arg_0: &Gate) -> bool

This method tests for self and other values to be equal, and is used by ==. Read more

fn ne(&self, __arg_0: &Gate) -> bool

This method tests for !=.

impl Debug for Gate
[src]

fn fmt(&self, __arg_0: &mut Formatter) -> Result

Formats the value using the given formatter.